{"id":"a594ef5a545e824ebe19e82c09187ae8","_format":"hh-sol-build-info-1","solcVersion":"0.7.6","solcLongVersion":"0.7.6+commit.7338295f","input":{"language":"Solidity","sources":{"base64-sol/base64.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0;\n\n/// @title Base64\n/// @author Brecht Devos - <brecht@loopring.org>\n/// @notice Provides functions for encoding/decoding base64\nlibrary Base64 {\n    string internal constant TABLE_ENCODE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n    bytes  internal constant TABLE_DECODE = hex\"0000000000000000000000000000000000000000000000000000000000000000\"\n                                            hex\"00000000000000000000003e0000003f3435363738393a3b3c3d000000000000\"\n                                            hex\"00000102030405060708090a0b0c0d0e0f101112131415161718190000000000\"\n                                            hex\"001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132330000000000\";\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_ENCODE;\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                // read 3 bytes\n                dataPtr := add(dataPtr, 3)\n                let input := mload(dataPtr)\n\n                // write 4 characters\n                mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F))))\n                resultPtr := add(resultPtr, 1)\n                mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F))))\n                resultPtr := add(resultPtr, 1)\n                mstore8(resultPtr, mload(add(tablePtr, and(shr( 6, input), 0x3F))))\n                resultPtr := add(resultPtr, 1)\n                mstore8(resultPtr, 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    function decode(string memory _data) internal pure returns (bytes memory) {\n        bytes memory data = bytes(_data);\n\n        if (data.length == 0) return new bytes(0);\n        require(data.length % 4 == 0, \"invalid base64 decoder input\");\n\n        // load the table into memory\n        bytes memory table = TABLE_DECODE;\n\n        // every 4 characters represent 3 bytes\n        uint256 decodedLen = (data.length / 4) * 3;\n\n        // add some extra buffer at the end required for the writing\n        bytes memory result = new bytes(decodedLen + 32);\n\n        assembly {\n            // padding with '='\n            let lastBytes := mload(add(data, mload(data)))\n            if eq(and(lastBytes, 0xFF), 0x3d) {\n                decodedLen := sub(decodedLen, 1)\n                if eq(and(lastBytes, 0xFFFF), 0x3d3d) {\n                    decodedLen := sub(decodedLen, 1)\n                }\n            }\n\n            // set the actual output length\n            mstore(result, decodedLen)\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, 4 characters at a time\n            for {} lt(dataPtr, endPtr) {}\n            {\n               // read 4 characters\n               dataPtr := add(dataPtr, 4)\n               let input := mload(dataPtr)\n\n               // write 3 bytes\n               let output := add(\n                   add(\n                       shl(18, and(mload(add(tablePtr, and(shr(24, input), 0xFF))), 0xFF)),\n                       shl(12, and(mload(add(tablePtr, and(shr(16, input), 0xFF))), 0xFF))),\n                   add(\n                       shl( 6, and(mload(add(tablePtr, and(shr( 8, input), 0xFF))), 0xFF)),\n                               and(mload(add(tablePtr, and(        input , 0xFF))), 0xFF)\n                    )\n                )\n                mstore(resultPtr, shl(232, output))\n                resultPtr := add(resultPtr, 3)\n            }\n        }\n\n        return result;\n    }\n}\n"},"contracts/elixir-core/ElixirFactory.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\r\npragma solidity =0.7.6;\r\n\r\nimport \"openzeppelin-contracts-solc-0.7/proxy/Clones.sol\";\r\n\r\nimport \"./interfaces/IElixirFactory.sol\";\r\nimport \"./interfaces/IElixirPool.sol\";\r\n\r\n/// @title Canonical Elixir factory\r\n/// @notice Deploys Elixir pools and manages ownership and control over pool protocol fees\r\ncontract ElixirFactory is IElixirFactory {\r\n    /// @inheritdoc IElixirFactory\r\n    address public immutable override implementation;\r\n\r\n    /// @inheritdoc IElixirFactory\r\n    address public override owner;\r\n\r\n    /// @inheritdoc IElixirFactory\r\n    mapping(uint24 => int24) public override feeAmountTickSpacing;\r\n    /// @inheritdoc IElixirFactory\r\n    mapping(address => mapping(address => mapping(uint24 => address)))\r\n        public\r\n        override getPool;\r\n\r\n    constructor(address _implementation) {\r\n        implementation = _implementation;\r\n\r\n        owner = msg.sender;\r\n        emit OwnerChanged(address(0), msg.sender);\r\n\r\n        feeAmountTickSpacing[500] = 10;\r\n        emit FeeAmountEnabled(500, 10);\r\n        feeAmountTickSpacing[3000] = 60;\r\n        emit FeeAmountEnabled(3000, 60);\r\n        feeAmountTickSpacing[10000] = 200;\r\n        emit FeeAmountEnabled(10000, 200);\r\n    }\r\n\r\n    /// @inheritdoc IElixirFactory\r\n    function createPool(\r\n        address tokenA,\r\n        address tokenB,\r\n        uint24 fee\r\n    ) external override returns (address pool) {\r\n        require(tokenA != tokenB);\r\n        (address token0, address token1) = tokenA < tokenB\r\n            ? (tokenA, tokenB)\r\n            : (tokenB, tokenA);\r\n        require(token0 != address(0));\r\n        int24 tickSpacing = feeAmountTickSpacing[fee];\r\n        require(tickSpacing != 0);\r\n        require(getPool[token0][token1][fee] == address(0));\r\n        pool = Clones.cloneDeterministic(\r\n            implementation,\r\n            keccak256(abi.encode(token0, token1, fee))\r\n        );\r\n        IElixirPool(pool).initialize(token0, token1, fee, tickSpacing);\r\n        getPool[token0][token1][fee] = pool;\r\n        // populate mapping in the reverse direction, deliberate choice to avoid the cost of comparing addresses\r\n        getPool[token1][token0][fee] = pool;\r\n        emit PoolCreated(token0, token1, fee, tickSpacing, pool);\r\n    }\r\n\r\n    /// @inheritdoc IElixirFactory\r\n    function setOwner(address _owner) external override {\r\n        require(msg.sender == owner);\r\n        emit OwnerChanged(owner, _owner);\r\n        owner = _owner;\r\n    }\r\n\r\n    /// @inheritdoc IElixirFactory\r\n    function enableFeeAmount(uint24 fee, int24 tickSpacing) public override {\r\n        require(msg.sender == owner);\r\n        require(fee < 1000000);\r\n        // tick spacing is capped at 16384 to prevent the situation where tickSpacing is so large that\r\n        // TickBitmap#nextInitializedTickWithinOneWord overflows int24 container from a valid tick\r\n        // 16384 ticks represents a >5x price change with ticks of 1 bips\r\n        require(tickSpacing > 0 && tickSpacing < 16384);\r\n        require(feeAmountTickSpacing[fee] == 0);\r\n\r\n        feeAmountTickSpacing[fee] = tickSpacing;\r\n        emit FeeAmountEnabled(fee, tickSpacing);\r\n    }\r\n}\r\n"},"contracts/elixir-core/ElixirPool.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\r\npragma solidity =0.7.6;\r\n\r\nimport './interfaces/IElixirPool.sol';\r\n\r\nimport './libraries/LowGasSafeMath.sol';\r\nimport './libraries/SafeCast.sol';\r\nimport './libraries/Tick.sol';\r\nimport './libraries/TickBitmap.sol';\r\nimport './libraries/Position.sol';\r\nimport './libraries/Oracle.sol';\r\n\r\nimport './libraries/FullMath.sol';\r\nimport './libraries/FixedPoint128.sol';\r\nimport './libraries/TransferHelper.sol';\r\nimport './libraries/TickMath.sol';\r\nimport './libraries/LiquidityMath.sol';\r\nimport './libraries/SqrtPriceMath.sol';\r\nimport './libraries/SwapMath.sol';\r\n\r\nimport './interfaces/IElixirFactory.sol';\r\nimport './interfaces/IERC20Minimal.sol';\r\nimport './interfaces/callback/IElixirMintCallback.sol';\r\nimport './interfaces/callback/IElixirSwapCallback.sol';\r\nimport './interfaces/callback/IElixirFlashCallback.sol';\r\n\r\ncontract ElixirPool is IElixirPool {\r\n    using LowGasSafeMath for uint256;\r\n    using LowGasSafeMath for int256;\r\n    using SafeCast for uint256;\r\n    using SafeCast for int256;\r\n    using Tick for mapping(int24 => Tick.Info);\r\n    using TickBitmap for mapping(int16 => uint256);\r\n    using Position for mapping(bytes32 => Position.Info);\r\n    using Position for Position.Info;\r\n    using Oracle for Oracle.Observation[65535];\r\n\r\n    /// @inheritdoc IElixirPoolImmutables\r\n    address public override factory;\r\n    /// @inheritdoc IElixirPoolImmutables\r\n    address public override token0;\r\n    /// @inheritdoc IElixirPoolImmutables\r\n    address public override token1;\r\n    /// @inheritdoc IElixirPoolImmutables\r\n    uint24 public override fee;\r\n\r\n    /// @inheritdoc IElixirPoolImmutables\r\n    int24 public override tickSpacing;\r\n\r\n    /// @inheritdoc IElixirPoolImmutables\r\n    uint128 public override maxLiquidityPerTick;\r\n\r\n    struct Slot0 {\r\n        // the current price\r\n        uint160 sqrtPriceX96;\r\n        // the current tick\r\n        int24 tick;\r\n        // the most-recently updated index of the observations array\r\n        uint16 observationIndex;\r\n        // the current maximum number of observations that are being stored\r\n        uint16 observationCardinality;\r\n        // the next maximum number of observations to store, triggered in observations.write\r\n        uint16 observationCardinalityNext;\r\n        // the current protocol fee as a percentage of the swap fee taken on withdrawal\r\n        // represented as an integer denominator (1/x)%\r\n        uint8 feeProtocol;\r\n        // whether the pool is locked\r\n        bool unlocked;\r\n    }\r\n    /// @inheritdoc IElixirPoolState\r\n    Slot0 public override slot0;\r\n\r\n    struct RewardSlot {\r\n        uint144 rewardPerSecondX48;\r\n        uint32 rewardRateEffectiveUntil;\r\n    }\r\n    /// @inheritdoc IElixirPoolState\r\n    RewardSlot public override rewardSlot;\r\n\r\n    /// @inheritdoc IElixirPoolState\r\n    uint256 public override feeGrowthGlobal0X128;\r\n    /// @inheritdoc IElixirPoolState\r\n    uint256 public override feeGrowthGlobal1X128;\r\n\r\n    // accumulated protocol fees in token0/token1 units\r\n    struct ProtocolFees {\r\n        uint128 token0;\r\n        uint128 token1;\r\n    }\r\n    /// @inheritdoc IElixirPoolState\r\n    ProtocolFees public override protocolFees;\r\n\r\n    /// @inheritdoc IElixirPoolState\r\n    uint128 public override liquidity;\r\n\r\n    /// @inheritdoc IElixirPoolState\r\n    mapping(int24 => Tick.Info) public override ticks;\r\n    /// @inheritdoc IElixirPoolState\r\n    mapping(int16 => uint256) public override tickBitmap;\r\n    /// @inheritdoc IElixirPoolState\r\n    mapping(bytes32 => Position.Info) public override positions;\r\n    /// @inheritdoc IElixirPoolState\r\n    Oracle.Observation[65535] public override observations;\r\n\r\n    /// @dev Mutually exclusive reentrancy protection into the pool to/from a method. This method also prevents entrance\r\n    /// to a function before the pool is initialized. The reentrancy guard is required throughout the contract because\r\n    /// we use balance checks to determine the payment status of interactions such as mint, swap and flash.\r\n    modifier lock() {\r\n        require(slot0.unlocked, 'LOK');\r\n        slot0.unlocked = false;\r\n        _;\r\n        slot0.unlocked = true;\r\n    }\r\n\r\n    /// @dev Prevents calling a function from anyone except the address returned by IElixirFactory#owner()\r\n    modifier onlyFactoryOwner() {\r\n        require(msg.sender == IElixirFactory(factory).owner());\r\n        _;\r\n    }\r\n\r\n    /// @inheritdoc IElixirPoolOwnerActions\r\n    function initialize(address _token0, address _token1, uint24 _fee, int24 _tickSpacing) external override {\r\n        require(factory == address(0));\r\n\r\n        factory = msg.sender;\r\n        token0 = _token0;\r\n        token1 = _token1;\r\n        fee = _fee;\r\n        tickSpacing = _tickSpacing;\r\n        maxLiquidityPerTick = Tick.tickSpacingToMaxLiquidityPerTick(_tickSpacing);\r\n    }\r\n\r\n    /// @dev Common checks for valid tick inputs.\r\n    function checkTicks(int24 tickLower, int24 tickUpper) private pure {\r\n        require(tickLower < tickUpper, 'TLU');\r\n        require(tickLower >= TickMath.MIN_TICK, 'TLM');\r\n        require(tickUpper <= TickMath.MAX_TICK, 'TUM');\r\n    }\r\n\r\n    /// @dev Returns the block timestamp truncated to 32 bits, i.e. mod 2**32. This method is overridden in tests.\r\n    function _blockTimestamp() internal view virtual returns (uint32) {\r\n        return uint32(block.timestamp); // truncation is desired\r\n    }\r\n\r\n    /// @dev Get the pool's balance of token\r\n    /// @dev This function is gas optimized to avoid a redundant extcodesize check in addition to the returndatasize\r\n    /// check\r\n    function balance(address token) private view returns (uint256) {\r\n        (bool success, bytes memory data) = token.staticcall(\r\n            abi.encodeWithSelector(IERC20Minimal.balanceOf.selector, address(this))\r\n        );\r\n        require(success && data.length >= 32);\r\n        return abi.decode(data, (uint256));\r\n    }\r\n\r\n    struct SnapshotCache {\r\n        int56 tickCumulative;\r\n        uint160 secondsPerLiquidityOutsideX128;\r\n        uint32 secondsOutside;\r\n        uint192 rewardPerLiquidityOutsideX64;\r\n        bool initialized;\r\n    }\r\n\r\n    /// @inheritdoc IElixirPoolDerivedState\r\n    function snapshotCumulativesInside(int24 tickLower, int24 tickUpper)\r\n        external\r\n        view\r\n        override\r\n        returns (\r\n            int56 tickCumulativeInside,\r\n            uint160 secondsPerLiquidityInsideX128,\r\n            uint32 secondsInside,\r\n            uint192 rewardPerLiquidityInsideX64\r\n        )\r\n    {\r\n        checkTicks(tickLower, tickUpper);\r\n\r\n        SnapshotCache memory cacheLower;\r\n        SnapshotCache memory cacheUpper;\r\n\r\n        {\r\n            Tick.Info storage lower = ticks[tickLower];\r\n            Tick.Info storage upper = ticks[tickUpper];\r\n            (\r\n                cacheLower.tickCumulative,\r\n                cacheLower.secondsPerLiquidityOutsideX128,\r\n                cacheLower.secondsOutside,\r\n                cacheLower.rewardPerLiquidityOutsideX64,\r\n                cacheLower.initialized\r\n            ) = (\r\n                lower.tickCumulativeOutside,\r\n                lower.secondsPerLiquidityOutsideX128,\r\n                lower.secondsOutside,\r\n                lower.rewardPerLiquidityOutsideX64,\r\n                lower.initialized\r\n            );\r\n            require(cacheLower.initialized);\r\n\r\n            (\r\n                cacheUpper.tickCumulative,\r\n                cacheUpper.secondsPerLiquidityOutsideX128,\r\n                cacheUpper.secondsOutside,\r\n                cacheUpper.rewardPerLiquidityOutsideX64,\r\n                cacheUpper.initialized\r\n            ) = (\r\n                upper.tickCumulativeOutside,\r\n                upper.secondsPerLiquidityOutsideX128,\r\n                upper.secondsOutside,\r\n                upper.rewardPerLiquidityOutsideX64,\r\n                upper.initialized\r\n            );\r\n            require(cacheUpper.initialized);\r\n        }\r\n\r\n        Slot0 memory _slot0 = slot0;\r\n\r\n        if (_slot0.tick < tickLower) {\r\n            return (\r\n                cacheLower.tickCumulative - cacheUpper.tickCumulative,\r\n                cacheLower.secondsPerLiquidityOutsideX128 - cacheUpper.secondsPerLiquidityOutsideX128,\r\n                cacheLower.secondsOutside - cacheUpper.secondsOutside,\r\n                cacheLower.rewardPerLiquidityOutsideX64 - cacheUpper.rewardPerLiquidityOutsideX64\r\n            );\r\n        } else if (_slot0.tick < tickUpper) {\r\n            uint32 time = _blockTimestamp();\r\n            (\r\n                int56 tickCumulative,\r\n                uint160 secondsPerLiquidityCumulativeX128,\r\n                uint192 rewardPerLiquidityCumulativeX64\r\n            ) = observations.observeSingle(\r\n                time,\r\n                0,\r\n                _slot0.tick,\r\n                _slot0.observationIndex,\r\n                liquidity,\r\n                rewardSlot.rewardPerSecondX48,\r\n                rewardSlot.rewardRateEffectiveUntil,\r\n                _slot0.observationCardinality\r\n            );\r\n            return (\r\n                tickCumulative - cacheLower.tickCumulative - cacheUpper.tickCumulative,\r\n                secondsPerLiquidityCumulativeX128 -\r\n                    cacheLower.secondsPerLiquidityOutsideX128 -\r\n                    cacheUpper.secondsPerLiquidityOutsideX128,\r\n                time - cacheLower.secondsOutside - cacheUpper.secondsOutside,\r\n                rewardPerLiquidityCumulativeX64 -\r\n                    cacheLower.rewardPerLiquidityOutsideX64 -\r\n                    cacheUpper.rewardPerLiquidityOutsideX64\r\n            );\r\n        } else {\r\n            return (\r\n                cacheUpper.tickCumulative - cacheLower.tickCumulative,\r\n                cacheUpper.secondsPerLiquidityOutsideX128 - cacheLower.secondsPerLiquidityOutsideX128,\r\n                cacheUpper.secondsOutside - cacheLower.secondsOutside,\r\n                cacheUpper.rewardPerLiquidityOutsideX64 - cacheLower.rewardPerLiquidityOutsideX64\r\n            );\r\n        }\r\n    }\r\n\r\n    /// @inheritdoc IElixirPoolDerivedState\r\n    function observe(uint32[] calldata secondsAgos)\r\n        external\r\n        view\r\n        override\r\n        returns (\r\n            int56[] memory tickCumulatives,\r\n            uint160[] memory secondsPerLiquidityCumulativeX128s,\r\n            uint192[] memory rewardPerLiquidityCumulativeX64s\r\n        )\r\n    {\r\n        return\r\n            observations.observe(\r\n                _blockTimestamp(),\r\n                secondsAgos,\r\n                slot0.tick,\r\n                slot0.observationIndex,\r\n                liquidity,\r\n                rewardSlot.rewardPerSecondX48,\r\n                rewardSlot.rewardRateEffectiveUntil,\r\n                slot0.observationCardinality\r\n            );\r\n    }\r\n\r\n    /// @inheritdoc IElixirPoolActions\r\n    function increaseObservationCardinalityNext(uint16 observationCardinalityNext)\r\n        external\r\n        override\r\n        lock\r\n    {\r\n        uint16 observationCardinalityNextOld = slot0.observationCardinalityNext; // for the event\r\n        uint16 observationCardinalityNextNew = observations.grow(\r\n            observationCardinalityNextOld,\r\n            observationCardinalityNext\r\n        );\r\n        slot0.observationCardinalityNext = observationCardinalityNextNew;\r\n        if (observationCardinalityNextOld != observationCardinalityNextNew)\r\n            emit IncreaseObservationCardinalityNext(observationCardinalityNextOld, observationCardinalityNextNew);\r\n    }\r\n\r\n    /// @inheritdoc IElixirPoolActions\r\n    /// @dev not locked because it initializes unlocked\r\n    function initialize(uint160 sqrtPriceX96) external override {\r\n        require(slot0.sqrtPriceX96 == 0, 'AI');\r\n\r\n        int24 tick = TickMath.getTickAtSqrtRatio(sqrtPriceX96);\r\n\r\n        (uint16 cardinality, uint16 cardinalityNext) = observations.initialize(_blockTimestamp());\r\n\r\n        slot0 = Slot0({\r\n            sqrtPriceX96: sqrtPriceX96,\r\n            tick: tick,\r\n            observationIndex: 0,\r\n            observationCardinality: cardinality,\r\n            observationCardinalityNext: cardinalityNext,\r\n            feeProtocol: 0,\r\n            unlocked: true\r\n        });\r\n\r\n        emit Initialize(sqrtPriceX96, tick);\r\n    }\r\n\r\n    struct ModifyPositionParams {\r\n        // the address that owns the position\r\n        address owner;\r\n        // the lower and upper tick of the position\r\n        int24 tickLower;\r\n        int24 tickUpper;\r\n        // any change in liquidity\r\n        int128 liquidityDelta;\r\n    }\r\n\r\n    /// @dev Effect some changes to a position\r\n    /// @param params the position details and the change to the position's liquidity to effect\r\n    /// @return position a storage pointer referencing the position with the given owner and tick range\r\n    /// @return amount0 the amount of token0 owed to the pool, negative if the pool should pay the recipient\r\n    /// @return amount1 the amount of token1 owed to the pool, negative if the pool should pay the recipient\r\n    function _modifyPosition(ModifyPositionParams memory params)\r\n        private\r\n        returns (\r\n            Position.Info storage position,\r\n            int256 amount0,\r\n            int256 amount1\r\n        )\r\n    {\r\n        checkTicks(params.tickLower, params.tickUpper);\r\n\r\n        Slot0 memory _slot0 = slot0; // SLOAD for gas optimization\r\n\r\n        position = _updatePosition(\r\n            params.owner,\r\n            params.tickLower,\r\n            params.tickUpper,\r\n            params.liquidityDelta,\r\n            _slot0.tick\r\n        );\r\n\r\n        if (params.liquidityDelta != 0) {\r\n            if (_slot0.tick < params.tickLower) {\r\n                // current tick is below the passed range; liquidity can only become in range by crossing from left to\r\n                // right, when we'll need _more_ token0 (it's becoming more valuable) so user must provide it\r\n                amount0 = SqrtPriceMath.getAmount0Delta(\r\n                    TickMath.getSqrtRatioAtTick(params.tickLower),\r\n                    TickMath.getSqrtRatioAtTick(params.tickUpper),\r\n                    params.liquidityDelta\r\n                );\r\n            } else if (_slot0.tick < params.tickUpper) {\r\n                // current tick is inside the passed range\r\n                uint128 liquidityBefore = liquidity; // SLOAD for gas optimization\r\n\r\n                // write an oracle entry\r\n                (slot0.observationIndex, slot0.observationCardinality) = observations.write(\r\n                    _slot0.observationIndex,\r\n                    _blockTimestamp(),\r\n                    _slot0.tick,\r\n                    liquidityBefore,\r\n                    rewardSlot.rewardPerSecondX48,\r\n                    rewardSlot.rewardRateEffectiveUntil,\r\n                    _slot0.observationCardinality,\r\n                    _slot0.observationCardinalityNext\r\n                );\r\n\r\n                amount0 = SqrtPriceMath.getAmount0Delta(\r\n                    _slot0.sqrtPriceX96,\r\n                    TickMath.getSqrtRatioAtTick(params.tickUpper),\r\n                    params.liquidityDelta\r\n                );\r\n                amount1 = SqrtPriceMath.getAmount1Delta(\r\n                    TickMath.getSqrtRatioAtTick(params.tickLower),\r\n                    _slot0.sqrtPriceX96,\r\n                    params.liquidityDelta\r\n                );\r\n\r\n                liquidity = LiquidityMath.addDelta(liquidityBefore, params.liquidityDelta);\r\n            } else {\r\n                // current tick is above the passed range; liquidity can only become in range by crossing from right to\r\n                // left, when we'll need _more_ token1 (it's becoming more valuable) so user must provide it\r\n                amount1 = SqrtPriceMath.getAmount1Delta(\r\n                    TickMath.getSqrtRatioAtTick(params.tickLower),\r\n                    TickMath.getSqrtRatioAtTick(params.tickUpper),\r\n                    params.liquidityDelta\r\n                );\r\n            }\r\n        }\r\n    }\r\n\r\n    /// @dev Gets and updates a position with the given liquidity delta\r\n    /// @param owner the owner of the position\r\n    /// @param tickLower the lower tick of the position's tick range\r\n    /// @param tickUpper the upper tick of the position's tick range\r\n    /// @param tick the current tick, passed to avoid sloads\r\n    function _updatePosition(\r\n        address owner,\r\n        int24 tickLower,\r\n        int24 tickUpper,\r\n        int128 liquidityDelta,\r\n        int24 tick\r\n    ) private returns (Position.Info storage position) {\r\n        position = positions.get(owner, tickLower, tickUpper);\r\n\r\n        uint256 _feeGrowthGlobal0X128 = feeGrowthGlobal0X128; // SLOAD for gas optimization\r\n        uint256 _feeGrowthGlobal1X128 = feeGrowthGlobal1X128; // SLOAD for gas optimization\r\n\r\n        // if we need to update the ticks, do it\r\n        bool flippedLower;\r\n        bool flippedUpper;\r\n        if (liquidityDelta != 0) {\r\n            uint32 time = _blockTimestamp();\r\n            (\r\n                int56 tickCumulative,\r\n                uint160 secondsPerLiquidityCumulativeX128,\r\n                uint192 rewardPerLiquidityCumulativeX64\r\n            ) = observations.observeSingle(\r\n                time,\r\n                0,\r\n                slot0.tick,\r\n                slot0.observationIndex,\r\n                liquidity,\r\n                rewardSlot.rewardPerSecondX48,\r\n                rewardSlot.rewardRateEffectiveUntil,\r\n                slot0.observationCardinality\r\n            );\r\n\r\n            uint128 _maxLiquidityPerTick = maxLiquidityPerTick; // SLOAD for gas optimization\r\n            flippedLower = ticks.update(\r\n                tickLower,\r\n                tick,\r\n                liquidityDelta,\r\n                _feeGrowthGlobal0X128,\r\n                _feeGrowthGlobal1X128,\r\n                secondsPerLiquidityCumulativeX128,\r\n                tickCumulative,\r\n                time,\r\n                false,\r\n                _maxLiquidityPerTick,\r\n                rewardPerLiquidityCumulativeX64\r\n            );\r\n            flippedUpper = ticks.update(\r\n                tickUpper,\r\n                tick,\r\n                liquidityDelta,\r\n                _feeGrowthGlobal0X128,\r\n                _feeGrowthGlobal1X128,\r\n                secondsPerLiquidityCumulativeX128,\r\n                tickCumulative,\r\n                time,\r\n                true,\r\n                _maxLiquidityPerTick,\r\n                rewardPerLiquidityCumulativeX64\r\n            );\r\n\r\n            int24 _tickSpacing = tickSpacing; // SLOAD for gas optimization\r\n            if (flippedLower) {\r\n                tickBitmap.flipTick(tickLower, _tickSpacing);\r\n            }\r\n            if (flippedUpper) {\r\n                tickBitmap.flipTick(tickUpper, _tickSpacing);\r\n            }\r\n        }\r\n\r\n        (uint256 feeGrowthInside0X128, uint256 feeGrowthInside1X128) = ticks.getFeeGrowthInside(\r\n            tickLower,\r\n            tickUpper,\r\n            tick,\r\n            _feeGrowthGlobal0X128,\r\n            _feeGrowthGlobal1X128\r\n        );\r\n\r\n        position.update(liquidityDelta, feeGrowthInside0X128, feeGrowthInside1X128);\r\n\r\n        // clear any tick data that is no longer needed\r\n        if (liquidityDelta < 0) {\r\n            if (flippedLower) {\r\n                ticks.clear(tickLower);\r\n            }\r\n            if (flippedUpper) {\r\n                ticks.clear(tickUpper);\r\n            }\r\n        }\r\n    }\r\n\r\n    /// @inheritdoc IElixirPoolActions\r\n    function mint(\r\n        address recipient,\r\n        int24 tickLower,\r\n        int24 tickUpper,\r\n        uint128 amount,\r\n        bytes calldata data\r\n    ) external override lock returns (uint256 amount0, uint256 amount1) {\r\n        require(amount > 0);\r\n        (, int256 amount0Int, int256 amount1Int) = _modifyPosition(\r\n            ModifyPositionParams({\r\n                owner: recipient,\r\n                tickLower: tickLower,\r\n                tickUpper: tickUpper,\r\n                liquidityDelta: int256(amount).toInt128()\r\n            })\r\n        );\r\n\r\n        amount0 = uint256(amount0Int);\r\n        amount1 = uint256(amount1Int);\r\n\r\n        uint256 balance0Before;\r\n        uint256 balance1Before;\r\n        address _token0 = token0;\r\n        address _token1 = token1;\r\n        if (amount0 > 0) balance0Before = balance(_token0);\r\n        if (amount1 > 0) balance1Before = balance(_token1);\r\n        IElixirMintCallback(msg.sender).elixirMintCallback(amount0, amount1, data);\r\n        if (amount0 > 0) require(balance0Before.add(amount0) <= balance(_token0), 'M0');\r\n        if (amount1 > 0) require(balance1Before.add(amount1) <= balance(_token1), 'M1');\r\n\r\n        emit Mint(msg.sender, recipient, tickLower, tickUpper, amount, amount0, amount1);\r\n    }\r\n\r\n    /// @inheritdoc IElixirPoolActions\r\n    function collect(\r\n        address recipient,\r\n        int24 tickLower,\r\n        int24 tickUpper,\r\n        uint128 amount0Requested,\r\n        uint128 amount1Requested\r\n    ) external override lock returns (uint128 amount0, uint128 amount1) {\r\n        // we don't need to checkTicks here, because invalid positions will never have non-zero tokensOwed{0,1}\r\n        Position.Info storage position = positions.get(msg.sender, tickLower, tickUpper);\r\n\r\n        amount0 = amount0Requested > position.tokensOwed0 ? position.tokensOwed0 : amount0Requested;\r\n        amount1 = amount1Requested > position.tokensOwed1 ? position.tokensOwed1 : amount1Requested;\r\n\r\n        if (amount0 > 0) {\r\n            position.tokensOwed0 -= amount0;\r\n            TransferHelper.safeTransfer(token0, recipient, amount0);\r\n        }\r\n        if (amount1 > 0) {\r\n            position.tokensOwed1 -= amount1;\r\n            TransferHelper.safeTransfer(token1, recipient, amount1);\r\n        }\r\n\r\n        emit Collect(msg.sender, recipient, tickLower, tickUpper, amount0, amount1);\r\n    }\r\n\r\n    /// @inheritdoc IElixirPoolActions\r\n    function burn(\r\n        int24 tickLower,\r\n        int24 tickUpper,\r\n        uint128 amount\r\n    ) external override lock returns (uint256 amount0, uint256 amount1) {\r\n        (Position.Info storage position, int256 amount0Int, int256 amount1Int) = _modifyPosition(\r\n            ModifyPositionParams({\r\n                owner: msg.sender,\r\n                tickLower: tickLower,\r\n                tickUpper: tickUpper,\r\n                liquidityDelta: -int256(amount).toInt128()\r\n            })\r\n        );\r\n\r\n        amount0 = uint256(-amount0Int);\r\n        amount1 = uint256(-amount1Int);\r\n\r\n        if (amount0 > 0 || amount1 > 0) {\r\n            (position.tokensOwed0, position.tokensOwed1) = (\r\n                position.tokensOwed0 + uint128(amount0),\r\n                position.tokensOwed1 + uint128(amount1)\r\n            );\r\n        }\r\n\r\n        emit Burn(msg.sender, tickLower, tickUpper, amount, amount0, amount1);\r\n    }\r\n\r\n    struct SwapCache {\r\n        // the protocol fee for the input token\r\n        uint8 feeProtocol;\r\n        // liquidity at the beginning of the swap\r\n        uint128 liquidityStart;\r\n        // the timestamp of the current block\r\n        uint32 blockTimestamp;\r\n        // the current value of the tick accumulator, computed only if we cross an initialized tick\r\n        int56 tickCumulative;\r\n        // the current value of seconds per liquidity accumulator, computed only if we cross an initialized tick\r\n        uint160 secondsPerLiquidityCumulativeX128;\r\n        // whether we've computed and cached the above two accumulators\r\n        bool computedLatestObservation;\r\n        // the reward per liquidity, i.e. sum of (reward rate_i * duration_i / liquidity_i) since the pool was first initialized\r\n\t      uint192 rewardPerLiquidityCumulativeX64; // Q128X64\r\n        // the pool's fee in hundredths of a bip, i.e. 1e-6\r\n        uint24 fee;\r\n        // the pool tick spacing\r\n        int24 tickSpacing;\r\n        // the first of the two tokens of the pool, sorted by address\r\n        address token0;\r\n        // the second of the two tokens of the pool, sorted by address\r\n        address token1;\r\n    }\r\n\r\n    // the top level state of the swap, the results of which are recorded in storage at the end\r\n    struct SwapState {\r\n        // the amount remaining to be swapped in/out of the input/output asset\r\n        int256 amountSpecifiedRemaining;\r\n        // the amount already swapped out/in of the output/input asset\r\n        int256 amountCalculated;\r\n        // current sqrt(price)\r\n        uint160 sqrtPriceX96;\r\n        // the tick associated with the current price\r\n        int24 tick;\r\n        // the global fee growth of the input token\r\n        uint256 feeGrowthGlobalX128;\r\n        // amount of input token paid as protocol fee\r\n        uint128 protocolFee;\r\n        // the current liquidity in range\r\n        uint128 liquidity;\r\n    }\r\n\r\n    struct StepComputations {\r\n        // the price at the beginning of the step\r\n        uint160 sqrtPriceStartX96;\r\n        // the next tick to swap to from the current tick in the swap direction\r\n        int24 tickNext;\r\n        // whether tickNext is initialized or not\r\n        bool initialized;\r\n        // sqrt(price) for the next tick (1/0)\r\n        uint160 sqrtPriceNextX96;\r\n        // how much is being swapped in in this step\r\n        uint256 amountIn;\r\n        // how much is being swapped out\r\n        uint256 amountOut;\r\n        // how much fee is being paid in\r\n        uint256 feeAmount;\r\n    }\r\n\r\n    /// @inheritdoc IElixirPoolActions\r\n    function swap(\r\n        address recipient,\r\n        bool zeroForOne,\r\n        int256 amountSpecified,\r\n        uint160 sqrtPriceLimitX96,\r\n        bytes calldata data\r\n    ) external override returns (int256 amount0, int256 amount1) {\r\n        require(amountSpecified != 0, 'AS');\r\n\r\n        Slot0 memory slot0Start = slot0;\r\n\r\n        require(slot0Start.unlocked, 'LOK');\r\n        require(\r\n            zeroForOne\r\n                ? sqrtPriceLimitX96 < slot0Start.sqrtPriceX96 && sqrtPriceLimitX96 > TickMath.MIN_SQRT_RATIO\r\n                : sqrtPriceLimitX96 > slot0Start.sqrtPriceX96 && sqrtPriceLimitX96 < TickMath.MAX_SQRT_RATIO,\r\n            'SPL'\r\n        );\r\n\r\n        slot0.unlocked = false;\r\n\r\n        SwapCache memory cache = SwapCache({\r\n            liquidityStart: liquidity,\r\n            blockTimestamp: _blockTimestamp(),\r\n            feeProtocol: zeroForOne ? (slot0Start.feeProtocol % 16) : (slot0Start.feeProtocol >> 4),\r\n            secondsPerLiquidityCumulativeX128: 0,\r\n            tickCumulative: 0,\r\n            computedLatestObservation: false,\r\n            rewardPerLiquidityCumulativeX64: 0,\r\n            fee: fee,\r\n            tickSpacing: tickSpacing,\r\n            token0: token0,\r\n            token1: token1\r\n        });\r\n\r\n        bool exactInput = amountSpecified > 0;\r\n\r\n        SwapState memory state = SwapState({\r\n            amountSpecifiedRemaining: amountSpecified,\r\n            amountCalculated: 0,\r\n            sqrtPriceX96: slot0Start.sqrtPriceX96,\r\n            tick: slot0Start.tick,\r\n            feeGrowthGlobalX128: zeroForOne ? feeGrowthGlobal0X128 : feeGrowthGlobal1X128,\r\n            protocolFee: 0,\r\n            liquidity: cache.liquidityStart\r\n        });\r\n\r\n        // continue swapping as long as we haven't used the entire input/output and haven't reached the price limit\r\n        while (state.amountSpecifiedRemaining != 0 && state.sqrtPriceX96 != sqrtPriceLimitX96) {\r\n            StepComputations memory step;\r\n\r\n            step.sqrtPriceStartX96 = state.sqrtPriceX96;\r\n\r\n            (step.tickNext, step.initialized) = tickBitmap.nextInitializedTickWithinOneWord(\r\n                state.tick,\r\n                cache.tickSpacing,\r\n                zeroForOne\r\n            );\r\n\r\n            // ensure that we do not overshoot the min/max tick, as the tick bitmap is not aware of these bounds\r\n            if (step.tickNext < TickMath.MIN_TICK) {\r\n                step.tickNext = TickMath.MIN_TICK;\r\n            } else if (step.tickNext > TickMath.MAX_TICK) {\r\n                step.tickNext = TickMath.MAX_TICK;\r\n            }\r\n\r\n            // get the price for the next tick\r\n            step.sqrtPriceNextX96 = TickMath.getSqrtRatioAtTick(step.tickNext);\r\n\r\n            // compute values to swap to the target tick, price limit, or point where input/output amount is exhausted\r\n            (state.sqrtPriceX96, step.amountIn, step.amountOut, step.feeAmount) = SwapMath.computeSwapStep(\r\n                state.sqrtPriceX96,\r\n                (zeroForOne ? step.sqrtPriceNextX96 < sqrtPriceLimitX96 : step.sqrtPriceNextX96 > sqrtPriceLimitX96)\r\n                    ? sqrtPriceLimitX96\r\n                    : step.sqrtPriceNextX96,\r\n                state.liquidity,\r\n                state.amountSpecifiedRemaining,\r\n                cache.fee\r\n            );\r\n\r\n            if (exactInput) {\r\n                state.amountSpecifiedRemaining -= (step.amountIn + step.feeAmount).toInt256();\r\n                state.amountCalculated = state.amountCalculated.sub(step.amountOut.toInt256());\r\n            } else {\r\n                state.amountSpecifiedRemaining += step.amountOut.toInt256();\r\n                state.amountCalculated = state.amountCalculated.add((step.amountIn + step.feeAmount).toInt256());\r\n            }\r\n\r\n            // if the protocol fee is on, calculate how much is owed, decrement feeAmount, and increment protocolFee\r\n            if (cache.feeProtocol > 0) {\r\n                uint256 delta = step.feeAmount / cache.feeProtocol;\r\n                step.feeAmount -= delta;\r\n                state.protocolFee += uint128(delta);\r\n            }\r\n\r\n            // update global fee tracker\r\n            if (state.liquidity > 0)\r\n                state.feeGrowthGlobalX128 += FullMath.mulDiv(step.feeAmount, FixedPoint128.Q128, state.liquidity);\r\n\r\n            // shift tick if we reached the next price\r\n            if (state.sqrtPriceX96 == step.sqrtPriceNextX96) {\r\n                // if the tick is initialized, run the tick transition\r\n                if (step.initialized) {\r\n                    // check for the placeholder value, which we replace with the actual value the first time the swap\r\n                    // crosses an initialized tick\r\n                    if (!cache.computedLatestObservation) {\r\n                        (\r\n                            cache.tickCumulative,\r\n                            cache.secondsPerLiquidityCumulativeX128,\r\n                            cache.rewardPerLiquidityCumulativeX64\r\n                        ) = observations.observeSingle(\r\n                            cache.blockTimestamp,\r\n                            0,\r\n                            slot0Start.tick,\r\n                            slot0Start.observationIndex,\r\n                            cache.liquidityStart,\r\n                            rewardSlot.rewardPerSecondX48,\r\n                            rewardSlot.rewardRateEffectiveUntil,\r\n                            slot0Start.observationCardinality\r\n                        );\r\n                        cache.computedLatestObservation = true;\r\n                    }\r\n                    int128 liquidityNet = ticks.cross(\r\n                        step.tickNext,\r\n                        (zeroForOne ? state.feeGrowthGlobalX128 : feeGrowthGlobal0X128),\r\n                        (zeroForOne ? feeGrowthGlobal1X128 : state.feeGrowthGlobalX128),\r\n                        cache.secondsPerLiquidityCumulativeX128,\r\n                        cache.tickCumulative,\r\n                        cache.blockTimestamp,\r\n                        cache.rewardPerLiquidityCumulativeX64\r\n                    );\r\n                    // if we're moving leftward, we interpret liquidityNet as the opposite sign\r\n                    // safe because liquidityNet cannot be type(int128).min\r\n                    if (zeroForOne) liquidityNet = -liquidityNet;\r\n\r\n                    state.liquidity = LiquidityMath.addDelta(state.liquidity, liquidityNet);\r\n                }\r\n\r\n                state.tick = zeroForOne ? step.tickNext - 1 : step.tickNext;\r\n            } else if (state.sqrtPriceX96 != step.sqrtPriceStartX96) {\r\n                // recompute unless we're on a lower tick boundary (i.e. already transitioned ticks), and haven't moved\r\n                state.tick = TickMath.getTickAtSqrtRatio(state.sqrtPriceX96);\r\n            }\r\n        }\r\n\r\n        // update tick and write an oracle entry if the tick change\r\n        if (state.tick != slot0Start.tick) {\r\n            (uint16 observationIndex, uint16 observationCardinality) = observations.write(\r\n                slot0Start.observationIndex,\r\n                cache.blockTimestamp,\r\n                slot0Start.tick,\r\n                cache.liquidityStart,\r\n                rewardSlot.rewardPerSecondX48,\r\n                rewardSlot.rewardRateEffectiveUntil,\r\n                slot0Start.observationCardinality,\r\n                slot0Start.observationCardinalityNext\r\n            );\r\n            (slot0.sqrtPriceX96, slot0.tick, slot0.observationIndex, slot0.observationCardinality) = (\r\n                state.sqrtPriceX96,\r\n                state.tick,\r\n                observationIndex,\r\n                observationCardinality\r\n            );\r\n        } else {\r\n            // otherwise just update the price\r\n            slot0.sqrtPriceX96 = state.sqrtPriceX96;\r\n        }\r\n\r\n        // update liquidity if it changed\r\n        if (cache.liquidityStart != state.liquidity) liquidity = state.liquidity;\r\n\r\n        // update fee growth global and, if necessary, protocol fees\r\n        // overflow is acceptable, protocol has to withdraw before it hits type(uint128).max fees\r\n        if (zeroForOne) {\r\n            feeGrowthGlobal0X128 = state.feeGrowthGlobalX128;\r\n            if (state.protocolFee > 0) protocolFees.token0 += state.protocolFee;\r\n        } else {\r\n            feeGrowthGlobal1X128 = state.feeGrowthGlobalX128;\r\n            if (state.protocolFee > 0) protocolFees.token1 += state.protocolFee;\r\n        }\r\n\r\n        (amount0, amount1) = zeroForOne == exactInput\r\n            ? (amountSpecified - state.amountSpecifiedRemaining, state.amountCalculated)\r\n            : (state.amountCalculated, amountSpecified - state.amountSpecifiedRemaining);\r\n\r\n        // do the transfers and collect payment\r\n        if (zeroForOne) {\r\n            if (amount1 < 0) TransferHelper.safeTransfer(cache.token1, recipient, uint256(-amount1));\r\n\r\n            uint256 balance0Before = balance(cache.token0);\r\n            IElixirSwapCallback(msg.sender).elixirSwapCallback(amount0, amount1, data);\r\n            require(balance0Before.add(uint256(amount0)) <= balance(cache.token0), 'IIA');\r\n        } else {\r\n            if (amount0 < 0) TransferHelper.safeTransfer(cache.token0, recipient, uint256(-amount0));\r\n\r\n            uint256 balance1Before = balance(cache.token1);\r\n            IElixirSwapCallback(msg.sender).elixirSwapCallback(amount0, amount1, data);\r\n            require(balance1Before.add(uint256(amount1)) <= balance(cache.token1), 'IIA');\r\n        }\r\n\r\n        emit Swap(msg.sender, recipient, amount0, amount1, state.sqrtPriceX96, state.liquidity, state.tick);\r\n        slot0.unlocked = true;\r\n    }\r\n\r\n    struct FlashCache {\r\n        // the first of the two tokens of the pool, sorted by address\r\n        address token0;\r\n        // the second of the two tokens of the pool, sorted by address\r\n        address token1;\r\n        // the pool's fee in hundredths of a bip, i.e. 1e-6\r\n        uint24 fee;\r\n        // the fee amount that will be taken from the first token\r\n        uint256 fee0;\r\n        // the fee amount that will be taken from the second token\r\n        uint256 fee1;\r\n    }\r\n\r\n    /// @inheritdoc IElixirPoolActions\r\n    function flash(\r\n        address recipient,\r\n        uint256 amount0,\r\n        uint256 amount1,\r\n        bytes calldata data\r\n    ) external override lock {\r\n        uint128 _liquidity = liquidity;\r\n        require(_liquidity > 0, 'L');\r\n\r\n        FlashCache memory cache = FlashCache({\r\n            token0: token0,\r\n            token1: token1,\r\n            fee: fee,\r\n            fee0: 0,\r\n            fee1: 0\r\n        });\r\n\r\n        cache.fee0 = FullMath.mulDivRoundingUp(amount0, cache.fee, 1e6);\r\n        cache.fee1 = FullMath.mulDivRoundingUp(amount1, cache.fee, 1e6);\r\n        uint256 balance0Before = balance(cache.token0);\r\n        uint256 balance1Before = balance(cache.token1);\r\n\r\n        if (amount0 > 0) TransferHelper.safeTransfer(cache.token0, recipient, amount0);\r\n        if (amount1 > 0) TransferHelper.safeTransfer(cache.token1, recipient, amount1);\r\n\r\n        IElixirFlashCallback(msg.sender).elixirFlashCallback(cache.fee0, cache.fee1, data);\r\n\r\n        uint256 balance0After = balance(cache.token0);\r\n        uint256 balance1After = balance(cache.token1);\r\n\r\n        require(balance0Before.add(cache.fee0) <= balance0After, 'F0');\r\n        require(balance1Before.add(cache.fee1) <= balance1After, 'F1');\r\n\r\n        // sub is safe because we know balanceAfter is gt balanceBefore by at least fee\r\n        uint256 paid0 = balance0After - balance0Before;\r\n        uint256 paid1 = balance1After - balance1Before;\r\n\r\n        if (paid0 > 0) {\r\n            uint8 feeProtocol0 = slot0.feeProtocol % 16;\r\n            uint256 fees0 = feeProtocol0 == 0 ? 0 : paid0 / feeProtocol0;\r\n            if (uint128(fees0) > 0) protocolFees.token0 += uint128(fees0);\r\n            feeGrowthGlobal0X128 += FullMath.mulDiv(paid0 - fees0, FixedPoint128.Q128, _liquidity);\r\n        }\r\n        if (paid1 > 0) {\r\n            uint8 feeProtocol1 = slot0.feeProtocol >> 4;\r\n            uint256 fees1 = feeProtocol1 == 0 ? 0 : paid1 / feeProtocol1;\r\n            if (uint128(fees1) > 0) protocolFees.token1 += uint128(fees1);\r\n            feeGrowthGlobal1X128 += FullMath.mulDiv(paid1 - fees1, FixedPoint128.Q128, _liquidity);\r\n        }\r\n\r\n        emit Flash(msg.sender, recipient, amount0, amount1, paid0, paid1);\r\n    }\r\n\r\n    /// @inheritdoc IElixirPoolOwnerActions\r\n    function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external override lock onlyFactoryOwner {\r\n        require(\r\n            (feeProtocol0 == 0 || (feeProtocol0 >= 4 && feeProtocol0 <= 10)) &&\r\n                (feeProtocol1 == 0 || (feeProtocol1 >= 4 && feeProtocol1 <= 10))\r\n        );\r\n        uint8 feeProtocolOld = slot0.feeProtocol;\r\n        slot0.feeProtocol = feeProtocol0 + (feeProtocol1 << 4);\r\n        emit SetFeeProtocol(feeProtocolOld % 16, feeProtocolOld >> 4, feeProtocol0, feeProtocol1);\r\n    }\r\n\r\n    /// @inheritdoc IElixirPoolOwnerActions\r\n    function collectProtocol(\r\n        address recipient,\r\n        uint128 amount0Requested,\r\n        uint128 amount1Requested\r\n    ) external override lock onlyFactoryOwner returns (uint128 amount0, uint128 amount1) {\r\n        amount0 = amount0Requested > protocolFees.token0 ? protocolFees.token0 : amount0Requested;\r\n        amount1 = amount1Requested > protocolFees.token1 ? protocolFees.token1 : amount1Requested;\r\n\r\n        if (amount0 > 0) {\r\n            if (amount0 == protocolFees.token0) amount0--; // ensure that the slot is not cleared, for gas savings\r\n            protocolFees.token0 -= amount0;\r\n            TransferHelper.safeTransfer(token0, recipient, amount0);\r\n        }\r\n        if (amount1 > 0) {\r\n            if (amount1 == protocolFees.token1) amount1--; // ensure that the slot is not cleared, for gas savings\r\n            protocolFees.token1 -= amount1;\r\n            TransferHelper.safeTransfer(token1, recipient, amount1);\r\n        }\r\n\r\n        emit CollectProtocol(msg.sender, recipient, amount0, amount1);\r\n    }\r\n\r\n    /// @inheritdoc IElixirPoolOwnerActions\r\n    function setRewardRate(\r\n        uint144 rewardPerSecondX48,\r\n        uint32 rewardRateEffectiveUntil\r\n    ) external override lock onlyFactoryOwner {\r\n        require(rewardRateEffectiveUntil >= block.timestamp);\r\n\r\n        (slot0.observationIndex, slot0.observationCardinality) = observations.write(\r\n            slot0.observationIndex,\r\n            _blockTimestamp(),\r\n            slot0.tick,\r\n            liquidity,\r\n            rewardSlot.rewardPerSecondX48,\r\n            rewardSlot.rewardRateEffectiveUntil,\r\n            slot0.observationCardinality,\r\n            slot0.observationCardinalityNext\r\n        );\r\n        rewardSlot = RewardSlot({\r\n            rewardPerSecondX48: rewardPerSecondX48,\r\n            rewardRateEffectiveUntil: rewardRateEffectiveUntil\r\n        });\r\n\r\n        emit SetRewardRate(rewardPerSecondX48, rewardRateEffectiveUntil);\r\n    }\r\n}\r\n"},"contracts/elixir-core/interfaces/callback/IElixirFlashCallback.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Callback for IElixirPoolActions#flash\r\n/// @notice Any contract that calls IElixirPoolActions#flash must implement this interface\r\ninterface IElixirFlashCallback {\r\n    /// @notice Called to `msg.sender` after transferring to the recipient from IElixirPool#flash.\r\n    /// @dev In the implementation you must repay the pool the tokens sent by flash plus the computed fee amounts.\r\n    /// The caller of this method must be checked to be a ElixirPool deployed by the canonical ElixirFactory.\r\n    /// @param fee0 The fee amount in token0 due to the pool by the end of the flash\r\n    /// @param fee1 The fee amount in token1 due to the pool by the end of the flash\r\n    /// @param data Any data passed through by the caller via the IElixirPoolActions#flash call\r\n    function elixirFlashCallback(\r\n        uint256 fee0,\r\n        uint256 fee1,\r\n        bytes calldata data\r\n    ) external;\r\n}\r\n"},"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Callback for IElixirPoolActions#mint\r\n/// @notice Any contract that calls IElixirPoolActions#mint must implement this interface\r\ninterface IElixirMintCallback {\r\n    /// @notice Called to `msg.sender` after minting liquidity to a position from IElixirPool#mint.\r\n    /// @dev In the implementation you must pay the pool tokens owed for the minted liquidity.\r\n    /// The caller of this method must be checked to be a ElixirPool deployed by the canonical ElixirFactory.\r\n    /// @param amount0Owed The amount of token0 due to the pool for the minted liquidity\r\n    /// @param amount1Owed The amount of token1 due to the pool for the minted liquidity\r\n    /// @param data Any data passed through by the caller via the IElixirPoolActions#mint call\r\n    function elixirMintCallback(\r\n        uint256 amount0Owed,\r\n        uint256 amount1Owed,\r\n        bytes calldata data\r\n    ) external;\r\n}\r\n"},"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Callback for IElixirPoolActions#swap\r\n/// @notice Any contract that calls IElixirPoolActions#swap must implement this interface\r\ninterface IElixirSwapCallback {\r\n    /// @notice Called to `msg.sender` after executing a swap via IElixirPool#swap.\r\n    /// @dev In the implementation you must pay the pool tokens owed for the swap.\r\n    /// The caller of this method must be checked to be a ElixirPool deployed by the canonical ElixirFactory.\r\n    /// amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\r\n    /// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by\r\n    /// the end of the swap. If positive, the callback must send that amount of token0 to the pool.\r\n    /// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by\r\n    /// the end of the swap. If positive, the callback must send that amount of token1 to the pool.\r\n    /// @param data Any data passed through by the caller via the IElixirPoolActions#swap call\r\n    function elixirSwapCallback(\r\n        int256 amount0Delta,\r\n        int256 amount1Delta,\r\n        bytes calldata data\r\n    ) external;\r\n}\r\n"},"contracts/elixir-core/interfaces/IElixirFactory.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title The interface for the Elixir Factory\r\n/// @notice The Elixir Factory facilitates creation of Elixir pools and control over the protocol fees\r\ninterface IElixirFactory {\r\n    /// @notice Emitted when the owner of the factory is changed\r\n    /// @param oldOwner The owner before the owner was changed\r\n    /// @param newOwner The owner after the owner was changed\r\n    event OwnerChanged(address indexed oldOwner, address indexed newOwner);\r\n\r\n    /// @notice Emitted when a pool is created\r\n    /// @param token0 The first token of the pool by address sort order\r\n    /// @param token1 The second token of the pool by address sort order\r\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\r\n    /// @param tickSpacing The minimum number of ticks between initialized ticks\r\n    /// @param pool The address of the created pool\r\n    event PoolCreated(\r\n        address indexed token0,\r\n        address indexed token1,\r\n        uint24 indexed fee,\r\n        int24 tickSpacing,\r\n        address pool\r\n    );\r\n\r\n    /// @notice Emitted when a new fee amount is enabled for pool creation via the factory\r\n    /// @param fee The enabled fee, denominated in hundredths of a bip\r\n    /// @param tickSpacing The minimum number of ticks between initialized ticks for pools created with the given fee\r\n    event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing);\r\n\r\n    /// @notice Returns the implementation contract of the pool\r\n    /// @return The address of the pool implementation\r\n    function implementation() external view returns (address);\r\n\r\n    /// @notice Returns the current owner of the factory\r\n    /// @dev Can be changed by the current owner via setOwner\r\n    /// @return The address of the factory owner\r\n    function owner() external view returns (address);\r\n\r\n    /// @notice Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled\r\n    /// @dev A fee amount can never be removed, so this value should be hard coded or cached in the calling context\r\n    /// @param fee The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee\r\n    /// @return The tick spacing\r\n    function feeAmountTickSpacing(uint24 fee) external view returns (int24);\r\n\r\n    /// @notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist\r\n    /// @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order\r\n    /// @param tokenA The contract address of either token0 or token1\r\n    /// @param tokenB The contract address of the other token\r\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\r\n    /// @return pool The pool address\r\n    function getPool(\r\n        address tokenA,\r\n        address tokenB,\r\n        uint24 fee\r\n    ) external view returns (address pool);\r\n\r\n    /// @notice Creates a pool for the given two tokens and fee\r\n    /// @param tokenA One of the two tokens in the desired pool\r\n    /// @param tokenB The other of the two tokens in the desired pool\r\n    /// @param fee The desired fee for the pool\r\n    /// @dev tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved\r\n    /// from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments\r\n    /// are invalid.\r\n    /// @return pool The address of the newly created pool\r\n    function createPool(\r\n        address tokenA,\r\n        address tokenB,\r\n        uint24 fee\r\n    ) external returns (address pool);\r\n\r\n    /// @notice Updates the owner of the factory\r\n    /// @dev Must be called by the current owner\r\n    /// @param _owner The new owner of the factory\r\n    function setOwner(address _owner) external;\r\n\r\n    /// @notice Enables a fee amount with the given tickSpacing\r\n    /// @dev Fee amounts may never be removed once enabled\r\n    /// @param fee The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)\r\n    /// @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount\r\n    function enableFeeAmount(uint24 fee, int24 tickSpacing) external;\r\n}\r\n"},"contracts/elixir-core/interfaces/IElixirPool.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\nimport './pool/IElixirPoolImmutables.sol';\r\nimport './pool/IElixirPoolState.sol';\r\nimport './pool/IElixirPoolDerivedState.sol';\r\nimport './pool/IElixirPoolActions.sol';\r\nimport './pool/IElixirPoolOwnerActions.sol';\r\nimport './pool/IElixirPoolEvents.sol';\r\n\r\n/// @title The interface for a Elixir Pool\r\n/// @notice A Pangolin pool facilitates swapping and automated market making between any two assets that strictly conform\r\n/// to the ERC20 specification\r\n/// @dev The pool interface is broken up into many smaller pieces\r\ninterface IElixirPool is\r\n    IElixirPoolImmutables,\r\n    IElixirPoolState,\r\n    IElixirPoolDerivedState,\r\n    IElixirPoolActions,\r\n    IElixirPoolOwnerActions,\r\n    IElixirPoolEvents\r\n{\r\n\r\n}\r\n"},"contracts/elixir-core/interfaces/IERC20Minimal.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Minimal ERC20 interface for Pangolin\r\n/// @notice Contains a subset of the full ERC20 interface that is used in Elixir\r\ninterface IERC20Minimal {\r\n    /// @notice Returns the balance of a token\r\n    /// @param account The account for which to look up the number of tokens it has, i.e. its balance\r\n    /// @return The number of tokens held by the account\r\n    function balanceOf(address account) external view returns (uint256);\r\n\r\n    /// @notice Transfers the amount of token from the `msg.sender` to the recipient\r\n    /// @param recipient The account that will receive the amount transferred\r\n    /// @param amount The number of tokens to send from the sender to the recipient\r\n    /// @return Returns true for a successful transfer, false for an unsuccessful transfer\r\n    function transfer(address recipient, uint256 amount) external returns (bool);\r\n\r\n    /// @notice Returns the current allowance given to a spender by an owner\r\n    /// @param owner The account of the token owner\r\n    /// @param spender The account of the token spender\r\n    /// @return The current allowance granted by `owner` to `spender`\r\n    function allowance(address owner, address spender) external view returns (uint256);\r\n\r\n    /// @notice Sets the allowance of a spender from the `msg.sender` to the value `amount`\r\n    /// @param spender The account which will be allowed to spend a given amount of the owners tokens\r\n    /// @param amount The amount of tokens allowed to be used by `spender`\r\n    /// @return Returns true for a successful approval, false for unsuccessful\r\n    function approve(address spender, uint256 amount) external returns (bool);\r\n\r\n    /// @notice Transfers `amount` tokens from `sender` to `recipient` up to the allowance given to the `msg.sender`\r\n    /// @param sender The account from which the transfer will be initiated\r\n    /// @param recipient The recipient of the transfer\r\n    /// @param amount The amount of the transfer\r\n    /// @return Returns true for a successful transfer, false for unsuccessful\r\n    function transferFrom(\r\n        address sender,\r\n        address recipient,\r\n        uint256 amount\r\n    ) external returns (bool);\r\n\r\n    /// @notice Event emitted when tokens are transferred from one address to another, either via `#transfer` or `#transferFrom`.\r\n    /// @param from The account from which the tokens were sent, i.e. the balance decreased\r\n    /// @param to The account to which the tokens were sent, i.e. the balance increased\r\n    /// @param value The amount of tokens that were transferred\r\n    event Transfer(address indexed from, address indexed to, uint256 value);\r\n\r\n    /// @notice Event emitted when the approval amount for the spender of a given owner's tokens changes.\r\n    /// @param owner The account that approved spending of its tokens\r\n    /// @param spender The account for which the spending allowance was modified\r\n    /// @param value The new allowance from the owner to the spender\r\n    event Approval(address indexed owner, address indexed spender, uint256 value);\r\n}\r\n"},"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Permissionless pool actions\r\n/// @notice Contains pool methods that can be called by anyone\r\ninterface IElixirPoolActions {\r\n    /// @notice Sets the initial price for the pool\r\n    /// @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\r\n    /// @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96\r\n    function initialize(uint160 sqrtPriceX96) external;\r\n\r\n    /// @notice Adds liquidity for the given recipient/tickLower/tickUpper position\r\n    /// @dev The caller of this method receives a callback in the form of IElixirMintCallback#elixirMintCallback\r\n    /// in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends\r\n    /// on tickLower, tickUpper, the amount of liquidity, and the current price.\r\n    /// @param recipient The address for which the liquidity will be created\r\n    /// @param tickLower The lower tick of the position in which to add liquidity\r\n    /// @param tickUpper The upper tick of the position in which to add liquidity\r\n    /// @param amount The amount of liquidity to mint\r\n    /// @param data Any data that should be passed through to the callback\r\n    /// @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\r\n    /// @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\r\n    function mint(\r\n        address recipient,\r\n        int24 tickLower,\r\n        int24 tickUpper,\r\n        uint128 amount,\r\n        bytes calldata data\r\n    ) external returns (uint256 amount0, uint256 amount1);\r\n\r\n    /// @notice Collects tokens owed to a position\r\n    /// @dev Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.\r\n    /// Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or\r\n    /// amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the\r\n    /// actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\r\n    /// @param recipient The address which should receive the fees collected\r\n    /// @param tickLower The lower tick of the position for which to collect fees\r\n    /// @param tickUpper The upper tick of the position for which to collect fees\r\n    /// @param amount0Requested How much token0 should be withdrawn from the fees owed\r\n    /// @param amount1Requested How much token1 should be withdrawn from the fees owed\r\n    /// @return amount0 The amount of fees collected in token0\r\n    /// @return amount1 The amount of fees collected in token1\r\n    function collect(\r\n        address recipient,\r\n        int24 tickLower,\r\n        int24 tickUpper,\r\n        uint128 amount0Requested,\r\n        uint128 amount1Requested\r\n    ) external returns (uint128 amount0, uint128 amount1);\r\n\r\n    /// @notice Burn liquidity from the sender and account tokens owed for the liquidity to the position\r\n    /// @dev Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0\r\n    /// @dev Fees must be collected separately via a call to #collect\r\n    /// @param tickLower The lower tick of the position for which to burn liquidity\r\n    /// @param tickUpper The upper tick of the position for which to burn liquidity\r\n    /// @param amount How much liquidity to burn\r\n    /// @return amount0 The amount of token0 sent to the recipient\r\n    /// @return amount1 The amount of token1 sent to the recipient\r\n    function burn(\r\n        int24 tickLower,\r\n        int24 tickUpper,\r\n        uint128 amount\r\n    ) external returns (uint256 amount0, uint256 amount1);\r\n\r\n    /// @notice Swap token0 for token1, or token1 for token0\r\n    /// @dev The caller of this method receives a callback in the form of IElixirSwapCallback#elixirSwapCallback\r\n    /// @param recipient The address to receive the output of the swap\r\n    /// @param zeroForOne The direction of the swap, true for token0 to token1, false for token1 to token0\r\n    /// @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\r\n    /// @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this\r\n    /// value after the swap. If one for zero, the price cannot be greater than this value after the swap\r\n    /// @param data Any data to be passed through to the callback\r\n    /// @return amount0 The delta of the balance of token0 of the pool, exact when negative, minimum when positive\r\n    /// @return amount1 The delta of the balance of token1 of the pool, exact when negative, minimum when positive\r\n    function swap(\r\n        address recipient,\r\n        bool zeroForOne,\r\n        int256 amountSpecified,\r\n        uint160 sqrtPriceLimitX96,\r\n        bytes calldata data\r\n    ) external returns (int256 amount0, int256 amount1);\r\n\r\n    /// @notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback\r\n    /// @dev The caller of this method receives a callback in the form of IElixirFlashCallback#elixirFlashCallback\r\n    /// @dev Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling\r\n    /// with 0 amount{0,1} and sending the donation amount(s) from the callback\r\n    /// @param recipient The address which will receive the token0 and token1 amounts\r\n    /// @param amount0 The amount of token0 to send\r\n    /// @param amount1 The amount of token1 to send\r\n    /// @param data Any data to be passed through to the callback\r\n    function flash(\r\n        address recipient,\r\n        uint256 amount0,\r\n        uint256 amount1,\r\n        bytes calldata data\r\n    ) external;\r\n\r\n    /// @notice Increase the maximum number of price and liquidity observations that this pool will store\r\n    /// @dev This method is no-op if the pool already has an observationCardinalityNext greater than or equal to\r\n    /// the input observationCardinalityNext.\r\n    /// @param observationCardinalityNext The desired minimum number of observations for the pool to store\r\n    function increaseObservationCardinalityNext(uint16 observationCardinalityNext) external;\r\n}\r\n"},"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Pool state that is not stored\r\n/// @notice Contains view functions to provide information about the pool that is computed rather than stored on the\r\n/// blockchain. The functions here may have variable gas costs.\r\ninterface IElixirPoolDerivedState {\r\n    /// @notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\r\n    /// @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing\r\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,\r\n    /// you must call it with secondsAgos = [3600, 0].\r\n    /// @dev The time weighted average tick represents the geometric time weighted average price of the pool, in\r\n    /// log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\r\n    /// @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned\r\n    /// @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp\r\n    /// @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block\r\n    /// timestamp\r\n    function observe(uint32[] calldata secondsAgos)\r\n        external\r\n        view\r\n        returns (\r\n            int56[] memory tickCumulatives,\r\n            uint160[] memory secondsPerLiquidityCumulativeX128s,\r\n            uint192[] memory rewardPerLiquidityCumulativeX64s\r\n        );\r\n\r\n    /// @notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\r\n    /// @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.\r\n    /// I.e., snapshots cannot be compared if a position is not held for the entire period between when the first\r\n    /// snapshot is taken and the second snapshot is taken.\r\n    /// @param tickLower The lower tick of the range\r\n    /// @param tickUpper The upper tick of the range\r\n    /// @return tickCumulativeInside The snapshot of the tick accumulator for the range\r\n    /// @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range\r\n    /// @return secondsInside The snapshot of seconds per liquidity for the range\r\n    function snapshotCumulativesInside(int24 tickLower, int24 tickUpper)\r\n        external\r\n        view\r\n        returns (\r\n            int56 tickCumulativeInside,\r\n            uint160 secondsPerLiquidityInsideX128,\r\n            uint32 secondsInside,\r\n            uint192 rewardPerLiquidityInsideX64\r\n        );\r\n}\r\n"},"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Events emitted by a pool\r\n/// @notice Contains all events emitted by the pool\r\ninterface IElixirPoolEvents {\r\n    /// @notice Emitted exactly once by a pool when #initialize is first called on the pool\r\n    /// @dev Mint/Burn/Swap cannot be emitted by the pool before Initialize\r\n    /// @param sqrtPriceX96 The initial sqrt price of the pool, as a Q64.96\r\n    /// @param tick The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool\r\n    event Initialize(uint160 sqrtPriceX96, int24 tick);\r\n\r\n    /// @notice Emitted when liquidity is minted for a given position\r\n    /// @param sender The address that minted the liquidity\r\n    /// @param owner The owner of the position and recipient of any minted liquidity\r\n    /// @param tickLower The lower tick of the position\r\n    /// @param tickUpper The upper tick of the position\r\n    /// @param amount The amount of liquidity minted to the position range\r\n    /// @param amount0 How much token0 was required for the minted liquidity\r\n    /// @param amount1 How much token1 was required for the minted liquidity\r\n    event Mint(\r\n        address sender,\r\n        address indexed owner,\r\n        int24 indexed tickLower,\r\n        int24 indexed tickUpper,\r\n        uint128 amount,\r\n        uint256 amount0,\r\n        uint256 amount1\r\n    );\r\n\r\n    /// @notice Emitted when fees are collected by the owner of a position\r\n    /// @dev Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\r\n    /// @param owner The owner of the position for which fees are collected\r\n    /// @param tickLower The lower tick of the position\r\n    /// @param tickUpper The upper tick of the position\r\n    /// @param amount0 The amount of token0 fees collected\r\n    /// @param amount1 The amount of token1 fees collected\r\n    event Collect(\r\n        address indexed owner,\r\n        address recipient,\r\n        int24 indexed tickLower,\r\n        int24 indexed tickUpper,\r\n        uint128 amount0,\r\n        uint128 amount1\r\n    );\r\n\r\n    /// @notice Emitted when a position's liquidity is removed\r\n    /// @dev Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\r\n    /// @param owner The owner of the position for which liquidity is removed\r\n    /// @param tickLower The lower tick of the position\r\n    /// @param tickUpper The upper tick of the position\r\n    /// @param amount The amount of liquidity to remove\r\n    /// @param amount0 The amount of token0 withdrawn\r\n    /// @param amount1 The amount of token1 withdrawn\r\n    event Burn(\r\n        address indexed owner,\r\n        int24 indexed tickLower,\r\n        int24 indexed tickUpper,\r\n        uint128 amount,\r\n        uint256 amount0,\r\n        uint256 amount1\r\n    );\r\n\r\n    /// @notice Emitted by the pool for any swaps between token0 and token1\r\n    /// @param sender The address that initiated the swap call, and that received the callback\r\n    /// @param recipient The address that received the output of the swap\r\n    /// @param amount0 The delta of the token0 balance of the pool\r\n    /// @param amount1 The delta of the token1 balance of the pool\r\n    /// @param sqrtPriceX96 The sqrt(price) of the pool after the swap, as a Q64.96\r\n    /// @param liquidity The liquidity of the pool after the swap\r\n    /// @param tick The log base 1.0001 of price of the pool after the swap\r\n    event Swap(\r\n        address indexed sender,\r\n        address indexed recipient,\r\n        int256 amount0,\r\n        int256 amount1,\r\n        uint160 sqrtPriceX96,\r\n        uint128 liquidity,\r\n        int24 tick\r\n    );\r\n\r\n    /// @notice Emitted by the pool for any flashes of token0/token1\r\n    /// @param sender The address that initiated the swap call, and that received the callback\r\n    /// @param recipient The address that received the tokens from flash\r\n    /// @param amount0 The amount of token0 that was flashed\r\n    /// @param amount1 The amount of token1 that was flashed\r\n    /// @param paid0 The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\r\n    /// @param paid1 The amount of token1 paid for the flash, which can exceed the amount1 plus the fee\r\n    event Flash(\r\n        address indexed sender,\r\n        address indexed recipient,\r\n        uint256 amount0,\r\n        uint256 amount1,\r\n        uint256 paid0,\r\n        uint256 paid1\r\n    );\r\n\r\n    /// @notice Emitted by the pool for increases to the number of observations that can be stored\r\n    /// @dev observationCardinalityNext is not the observation cardinality until an observation is written at the index\r\n    /// just before a mint/swap/burn.\r\n    /// @param observationCardinalityNextOld The previous value of the next observation cardinality\r\n    /// @param observationCardinalityNextNew The updated value of the next observation cardinality\r\n    event IncreaseObservationCardinalityNext(\r\n        uint16 observationCardinalityNextOld,\r\n        uint16 observationCardinalityNextNew\r\n    );\r\n\r\n    /// @notice Emitted when the protocol fee is changed by the pool\r\n    /// @param feeProtocol0Old The previous value of the token0 protocol fee\r\n    /// @param feeProtocol1Old The previous value of the token1 protocol fee\r\n    /// @param feeProtocol0New The updated value of the token0 protocol fee\r\n    /// @param feeProtocol1New The updated value of the token1 protocol fee\r\n    event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New);\r\n\r\n    /// @notice Emitted when the collected protocol fees are withdrawn by the factory owner\r\n    /// @param sender The address that collects the protocol fees\r\n    /// @param recipient The address that receives the collected protocol fees\r\n    /// @param amount0 The amount of token0 protocol fees that is withdrawn\r\n    /// @param amount0 The amount of token1 protocol fees that is withdrawn\r\n    event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1);\r\n\r\n    /// @notice Emitted when the reward rate is changed by the owner\r\n    /// @param rewardPerSecondX48 The new reward rate per second (in Q48)\r\n    /// @param rewardRateEffectiveUntil The timestamp when the new reward rate will expire\r\n    event SetRewardRate(uint144 rewardPerSecondX48, uint32 rewardRateEffectiveUntil);\r\n}\r\n"},"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Pool state that never changes\r\n/// @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same values\r\ninterface IElixirPoolImmutables {\r\n    /// @notice The contract that deployed the pool, which must adhere to the IElixirFactory interface\r\n    /// @return The contract address\r\n    function factory() external view returns (address);\r\n\r\n    /// @notice The first of the two tokens of the pool, sorted by address\r\n    /// @return The token contract address\r\n    function token0() external view returns (address);\r\n\r\n    /// @notice The second of the two tokens of the pool, sorted by address\r\n    /// @return The token contract address\r\n    function token1() external view returns (address);\r\n\r\n    /// @notice The pool's fee in hundredths of a bip, i.e. 1e-6\r\n    /// @return The fee\r\n    function fee() external view returns (uint24);\r\n\r\n    /// @notice The pool tick spacing\r\n    /// @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive\r\n    /// e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...\r\n    /// This value is an int24 to avoid casting even though it is always positive.\r\n    /// @return The tick spacing\r\n    function tickSpacing() external view returns (int24);\r\n\r\n    /// @notice The maximum amount of position liquidity that can use any tick in the range\r\n    /// @dev This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and\r\n    /// also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\r\n    /// @return The max amount of liquidity per tick\r\n    function maxLiquidityPerTick() external view returns (uint128);\r\n}\r\n"},"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Permissioned pool actions\r\n/// @notice Contains pool methods that may only be called by the factory owner\r\ninterface IElixirPoolOwnerActions {\r\n    /// @notice Initialize the pool to set immutable parameters\r\n    /// @param _token0 The first of the two tokens of the pool, sorted by address\r\n    /// @param _token1 The second of the two tokens of the pool, sorted by address\r\n    /// @param _fee The pool's fee in hundredths of a bip, i.e. 1e-6\r\n    /// @param _tickSpacing The pool tick spacing\r\n    function initialize(address _token0, address _token1, uint24 _fee, int24 _tickSpacing) external;\r\n\r\n    /// @notice Set the denominator of the protocol's % share of the fees\r\n    /// @param feeProtocol0 new protocol fee for token0 of the pool\r\n    /// @param feeProtocol1 new protocol fee for token1 of the pool\r\n    function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external;\r\n\r\n    /// @notice Collect the protocol fee accrued to the pool\r\n    /// @param recipient The address to which collected protocol fees should be sent\r\n    /// @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1\r\n    /// @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0\r\n    /// @return amount0 The protocol fee collected in token0\r\n    /// @return amount1 The protocol fee collected in token1\r\n    function collectProtocol(\r\n        address recipient,\r\n        uint128 amount0Requested,\r\n        uint128 amount1Requested\r\n    ) external returns (uint128 amount0, uint128 amount1);\r\n\r\n    /// @notice Set the reward rate the active liquidity receives per second\r\n    /// @param rewardPerSecondX48 The new reward rate per second (in Q48)\r\n    /// @param rewardRateEffectiveUntil The timestamp when the new reward rate will expire\r\n    function setRewardRate(uint144 rewardPerSecondX48, uint32 rewardRateEffectiveUntil) external;\r\n}\r\n"},"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Pool state that can change\r\n/// @notice These methods compose the pool's state, and can change with any frequency including multiple times\r\n/// per transaction\r\ninterface IElixirPoolState {\r\n    /// @notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas\r\n    /// when accessed externally.\r\n    /// @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value\r\n    /// tick The current tick of the pool, i.e. according to the last tick transition that was run.\r\n    /// This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick\r\n    /// boundary.\r\n    /// observationIndex The index of the last oracle observation that was written,\r\n    /// observationCardinality The current maximum number of observations stored in the pool,\r\n    /// observationCardinalityNext The next maximum number of observations, to be updated when the observation.\r\n    /// feeProtocol The protocol fee for both tokens of the pool.\r\n    /// Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0\r\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.\r\n    /// unlocked Whether the pool is currently locked to reentrancy\r\n    function slot0()\r\n        external\r\n        view\r\n        returns (\r\n            uint160 sqrtPriceX96,\r\n            int24 tick,\r\n            uint16 observationIndex,\r\n            uint16 observationCardinality,\r\n            uint16 observationCardinalityNext,\r\n            uint8 feeProtocol,\r\n            bool unlocked\r\n        );\r\n\r\n    /// @notice The rewardSlot storage slot in the pool stores variables necessary to update\r\n    /// Oracle.Observation.rewardPerLiquidityCumulativeX64 accumulator.\r\n    /// @dev Both of the variables can be set arbitrarily by the owner. The pool does not set any restrictions on the\r\n    /// values other than their variable types. The factory owner should relegate the setting of these variables to a\r\n    /// reward contract that will update these variables based on a proper reward distribution logic.\r\n    /// @return rewardPerSecondX48 The rewards per second promised to be distributed to the pool as a Q96.48 value\r\n    /// rewardRateEffectiveUntil The timestamp when the rewardPerSecondX48 is no longer effective\r\n    function rewardSlot()\r\n        external\r\n        view\r\n        returns (uint144 rewardPerSecondX48, uint32 rewardRateEffectiveUntil);\r\n\r\n    /// @notice The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\r\n    /// @dev This value can overflow the uint256\r\n    function feeGrowthGlobal0X128() external view returns (uint256);\r\n\r\n    /// @notice The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\r\n    /// @dev This value can overflow the uint256\r\n    function feeGrowthGlobal1X128() external view returns (uint256);\r\n\r\n    /// @notice The amounts of token0 and token1 that are owed to the protocol\r\n    /// @dev Protocol fees will never exceed uint128 max in either token\r\n    function protocolFees()\r\n        external\r\n        view\r\n        returns (uint128 token0, uint128 token1);\r\n\r\n    /// @notice The currently in range liquidity available to the pool\r\n    /// @dev This value has no relationship to the total liquidity across all ticks\r\n    function liquidity() external view returns (uint128);\r\n\r\n    /// @notice Look up information about a specific tick in the pool\r\n    /// @param tick The tick to look up\r\n    /// @return liquidityGross the total amount of position liquidity that uses the pool either as tick lower or\r\n    /// tick upper,\r\n    /// liquidityNet how much liquidity changes when the pool price crosses the tick,\r\n    /// feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0,\r\n    /// feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1,\r\n    /// tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick\r\n    /// secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick,\r\n    /// secondsOutside the seconds spent on the other side of the tick from the current tick,\r\n    /// initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false.\r\n    /// Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0.\r\n    /// In addition, these values are only relative and must be used only in comparison to previous snapshots for\r\n    /// a specific position.\r\n    function ticks(\r\n        int24 tick\r\n    )\r\n        external\r\n        view\r\n        returns (\r\n            uint128 liquidityGross,\r\n            int128 liquidityNet,\r\n            uint256 feeGrowthOutside0X128,\r\n            uint256 feeGrowthOutside1X128,\r\n            int56 tickCumulativeOutside,\r\n            uint160 secondsPerLiquidityOutsideX128,\r\n            uint32 secondsOutside,\r\n            bool initialized,\r\n            uint192 rewardPerLiquidityOutsideX64\r\n        );\r\n\r\n    /// @notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information\r\n    function tickBitmap(int16 wordPosition) external view returns (uint256);\r\n\r\n    /// @notice Returns the information about a position by the position's key\r\n    /// @param key The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\r\n    /// @return _liquidity The amount of liquidity in the position,\r\n    /// Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke,\r\n    /// Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke,\r\n    /// Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke,\r\n    /// Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\r\n    function positions(\r\n        bytes32 key\r\n    )\r\n        external\r\n        view\r\n        returns (\r\n            uint128 _liquidity,\r\n            uint256 feeGrowthInside0LastX128,\r\n            uint256 feeGrowthInside1LastX128,\r\n            uint128 tokensOwed0,\r\n            uint128 tokensOwed1\r\n        );\r\n\r\n    /// @notice Returns data about a specific observation index\r\n    /// @param index The element of the observations array to fetch\r\n    /// @dev You most likely want to use #observe() instead of this method to get an observation as of some amount of time\r\n    /// ago, rather than at a specific index in the array.\r\n    /// @return blockTimestamp The timestamp of the observation,\r\n    /// Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,\r\n    /// Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp,\r\n    /// Returns initialized whether the observation has been initialized and the values are safe to use\r\n    /// Returns rewardPerLiquidityCumulativeX64 reward per liquidity\r\n    function observations(\r\n        uint256 index\r\n    )\r\n        external\r\n        view\r\n        returns (\r\n            uint32 blockTimestamp,\r\n            int56 tickCumulative,\r\n            uint160 secondsPerLiquidityCumulativeX128,\r\n            bool initialized,\r\n            uint192 rewardPerLiquidityCumulativeX64\r\n        );\r\n}\r\n"},"contracts/elixir-core/libraries/BitMath.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title BitMath\r\n/// @dev This library provides functionality for computing bit properties of an unsigned integer\r\nlibrary BitMath {\r\n    /// @notice Returns the index of the most significant bit of the number,\r\n    ///     where the least significant bit is at index 0 and the most significant bit is at index 255\r\n    /// @dev The function satisfies the property:\r\n    ///     x >= 2**mostSignificantBit(x) and x < 2**(mostSignificantBit(x)+1)\r\n    /// @param x the value for which to compute the most significant bit, must be greater than 0\r\n    /// @return r the index of the most significant bit\r\n    function mostSignificantBit(uint256 x) internal pure returns (uint8 r) {\r\n        require(x > 0);\r\n\r\n        if (x >= 0x100000000000000000000000000000000) {\r\n            x >>= 128;\r\n            r += 128;\r\n        }\r\n        if (x >= 0x10000000000000000) {\r\n            x >>= 64;\r\n            r += 64;\r\n        }\r\n        if (x >= 0x100000000) {\r\n            x >>= 32;\r\n            r += 32;\r\n        }\r\n        if (x >= 0x10000) {\r\n            x >>= 16;\r\n            r += 16;\r\n        }\r\n        if (x >= 0x100) {\r\n            x >>= 8;\r\n            r += 8;\r\n        }\r\n        if (x >= 0x10) {\r\n            x >>= 4;\r\n            r += 4;\r\n        }\r\n        if (x >= 0x4) {\r\n            x >>= 2;\r\n            r += 2;\r\n        }\r\n        if (x >= 0x2) r += 1;\r\n    }\r\n\r\n    /// @notice Returns the index of the least significant bit of the number,\r\n    ///     where the least significant bit is at index 0 and the most significant bit is at index 255\r\n    /// @dev The function satisfies the property:\r\n    ///     (x & 2**leastSignificantBit(x)) != 0 and (x & (2**(leastSignificantBit(x)) - 1)) == 0)\r\n    /// @param x the value for which to compute the least significant bit, must be greater than 0\r\n    /// @return r the index of the least significant bit\r\n    function leastSignificantBit(uint256 x) internal pure returns (uint8 r) {\r\n        require(x > 0);\r\n\r\n        r = 255;\r\n        if (x & type(uint128).max > 0) {\r\n            r -= 128;\r\n        } else {\r\n            x >>= 128;\r\n        }\r\n        if (x & type(uint64).max > 0) {\r\n            r -= 64;\r\n        } else {\r\n            x >>= 64;\r\n        }\r\n        if (x & type(uint32).max > 0) {\r\n            r -= 32;\r\n        } else {\r\n            x >>= 32;\r\n        }\r\n        if (x & type(uint16).max > 0) {\r\n            r -= 16;\r\n        } else {\r\n            x >>= 16;\r\n        }\r\n        if (x & type(uint8).max > 0) {\r\n            r -= 8;\r\n        } else {\r\n            x >>= 8;\r\n        }\r\n        if (x & 0xf > 0) {\r\n            r -= 4;\r\n        } else {\r\n            x >>= 4;\r\n        }\r\n        if (x & 0x3 > 0) {\r\n            r -= 2;\r\n        } else {\r\n            x >>= 2;\r\n        }\r\n        if (x & 0x1 > 0) r -= 1;\r\n    }\r\n}\r\n"},"contracts/elixir-core/libraries/FixedPoint128.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.4.0;\r\n\r\n/// @title FixedPoint128\r\n/// @notice A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)\r\nlibrary FixedPoint128 {\r\n    uint256 internal constant Q128 = 0x100000000000000000000000000000000;\r\n}\r\n"},"contracts/elixir-core/libraries/FixedPoint96.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.4.0;\r\n\r\n/// @title FixedPoint96\r\n/// @notice A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)\r\n/// @dev Used in SqrtPriceMath.sol\r\nlibrary FixedPoint96 {\r\n    uint8 internal constant RESOLUTION = 96;\r\n    uint256 internal constant Q96 = 0x1000000000000000000000000;\r\n}\r\n"},"contracts/elixir-core/libraries/FullMath.sol":{"content":"// SPDX-License-Identifier: MIT\r\npragma solidity >=0.4.0 <0.8.0;\r\n\r\n/// @title Contains 512-bit math functions\r\n/// @notice Facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision\r\n/// @dev Handles \"phantom overflow\" i.e., allows multiplication and division where an intermediate value overflows 256 bits\r\nlibrary FullMath {\r\n    /// @notice Calculates floor(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\r\n    /// @param a The multiplicand\r\n    /// @param b The multiplier\r\n    /// @param denominator The divisor\r\n    /// @return result The 256-bit result\r\n    /// @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\r\n    function mulDiv(\r\n        uint256 a,\r\n        uint256 b,\r\n        uint256 denominator\r\n    ) internal pure returns (uint256 result) {\r\n        // 512-bit multiply [prod1 prod0] = a * b\r\n        // Compute the product mod 2**256 and mod 2**256 - 1\r\n        // then use the Chinese Remainder Theorem to reconstruct\r\n        // the 512 bit result. The result is stored in two 256\r\n        // variables such that product = prod1 * 2**256 + prod0\r\n        uint256 prod0; // Least significant 256 bits of the product\r\n        uint256 prod1; // Most significant 256 bits of the product\r\n        assembly {\r\n            let mm := mulmod(a, b, not(0))\r\n            prod0 := mul(a, b)\r\n            prod1 := sub(sub(mm, prod0), lt(mm, prod0))\r\n        }\r\n\r\n        // Handle non-overflow cases, 256 by 256 division\r\n        if (prod1 == 0) {\r\n            require(denominator > 0);\r\n            assembly {\r\n                result := div(prod0, denominator)\r\n            }\r\n            return result;\r\n        }\r\n\r\n        // Make sure the result is less than 2**256.\r\n        // Also prevents denominator == 0\r\n        require(denominator > prod1);\r\n\r\n        ///////////////////////////////////////////////\r\n        // 512 by 256 division.\r\n        ///////////////////////////////////////////////\r\n\r\n        // Make division exact by subtracting the remainder from [prod1 prod0]\r\n        // Compute remainder using mulmod\r\n        uint256 remainder;\r\n        assembly {\r\n            remainder := mulmod(a, b, denominator)\r\n        }\r\n        // Subtract 256 bit number from 512 bit number\r\n        assembly {\r\n            prod1 := sub(prod1, gt(remainder, prod0))\r\n            prod0 := sub(prod0, remainder)\r\n        }\r\n\r\n        // Factor powers of two out of denominator\r\n        // Compute largest power of two divisor of denominator.\r\n        // Always >= 1.\r\n        uint256 twos = -denominator & denominator;\r\n        // Divide denominator by power of two\r\n        assembly {\r\n            denominator := div(denominator, twos)\r\n        }\r\n\r\n        // Divide [prod1 prod0] by the factors of two\r\n        assembly {\r\n            prod0 := div(prod0, twos)\r\n        }\r\n        // Shift in bits from prod1 into prod0. For this we need\r\n        // to flip `twos` such that it is 2**256 / twos.\r\n        // If twos is zero, then it becomes one\r\n        assembly {\r\n            twos := add(div(sub(0, twos), twos), 1)\r\n        }\r\n        prod0 |= prod1 * twos;\r\n\r\n        // Invert denominator mod 2**256\r\n        // Now that denominator is an odd number, it has an inverse\r\n        // modulo 2**256 such that denominator * inv = 1 mod 2**256.\r\n        // Compute the inverse by starting with a seed that is correct\r\n        // correct for four bits. That is, denominator * inv = 1 mod 2**4\r\n        uint256 inv = (3 * denominator) ^ 2;\r\n        // Now use Newton-Raphson iteration to improve the precision.\r\n        // Thanks to Hensel's lifting lemma, this also works in modular\r\n        // arithmetic, doubling the correct bits in each step.\r\n        inv *= 2 - denominator * inv; // inverse mod 2**8\r\n        inv *= 2 - denominator * inv; // inverse mod 2**16\r\n        inv *= 2 - denominator * inv; // inverse mod 2**32\r\n        inv *= 2 - denominator * inv; // inverse mod 2**64\r\n        inv *= 2 - denominator * inv; // inverse mod 2**128\r\n        inv *= 2 - denominator * inv; // inverse mod 2**256\r\n\r\n        // Because the division is now exact we can divide by multiplying\r\n        // with the modular inverse of denominator. This will give us the\r\n        // correct result modulo 2**256. Since the precoditions guarantee\r\n        // that the outcome is less than 2**256, this is the final result.\r\n        // We don't need to compute the high bits of the result and prod1\r\n        // is no longer required.\r\n        result = prod0 * inv;\r\n        return result;\r\n    }\r\n\r\n    /// @notice Calculates ceil(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\r\n    /// @param a The multiplicand\r\n    /// @param b The multiplier\r\n    /// @param denominator The divisor\r\n    /// @return result The 256-bit result\r\n    function mulDivRoundingUp(\r\n        uint256 a,\r\n        uint256 b,\r\n        uint256 denominator\r\n    ) internal pure returns (uint256 result) {\r\n        result = mulDiv(a, b, denominator);\r\n        if (mulmod(a, b, denominator) > 0) {\r\n            require(result < type(uint256).max);\r\n            result++;\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-core/libraries/LiquidityMath.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Math library for liquidity\r\nlibrary LiquidityMath {\r\n    /// @notice Add a signed liquidity delta to liquidity and revert if it overflows or underflows\r\n    /// @param x The liquidity before change\r\n    /// @param y The delta by which liquidity should be changed\r\n    /// @return z The liquidity delta\r\n    function addDelta(uint128 x, int128 y) internal pure returns (uint128 z) {\r\n        if (y < 0) {\r\n            require((z = x - uint128(-y)) < x, 'LS');\r\n        } else {\r\n            require((z = x + uint128(y)) >= x, 'LA');\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-core/libraries/LowGasSafeMath.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.0;\r\n\r\n/// @title Optimized overflow and underflow safe math operations\r\n/// @notice Contains methods for doing math operations that revert on overflow or underflow for minimal gas cost\r\nlibrary LowGasSafeMath {\r\n    /// @notice Returns x + y, reverts if sum overflows uint256\r\n    /// @param x The augend\r\n    /// @param y The addend\r\n    /// @return z The sum of x and y\r\n    function add(uint256 x, uint256 y) internal pure returns (uint256 z) {\r\n        require((z = x + y) >= x);\r\n    }\r\n\r\n    /// @notice Returns x - y, reverts if underflows\r\n    /// @param x The minuend\r\n    /// @param y The subtrahend\r\n    /// @return z The difference of x and y\r\n    function sub(uint256 x, uint256 y) internal pure returns (uint256 z) {\r\n        require((z = x - y) <= x);\r\n    }\r\n\r\n    /// @notice Returns x * y, reverts if overflows\r\n    /// @param x The multiplicand\r\n    /// @param y The multiplier\r\n    /// @return z The product of x and y\r\n    function mul(uint256 x, uint256 y) internal pure returns (uint256 z) {\r\n        require(x == 0 || (z = x * y) / x == y);\r\n    }\r\n\r\n    /// @notice Returns x + y, reverts if overflows or underflows\r\n    /// @param x The augend\r\n    /// @param y The addend\r\n    /// @return z The sum of x and y\r\n    function add(int256 x, int256 y) internal pure returns (int256 z) {\r\n        require((z = x + y) >= x == (y >= 0));\r\n    }\r\n\r\n    /// @notice Returns x - y, reverts if overflows or underflows\r\n    /// @param x The minuend\r\n    /// @param y The subtrahend\r\n    /// @return z The difference of x and y\r\n    function sub(int256 x, int256 y) internal pure returns (int256 z) {\r\n        require((z = x - y) <= x == (y >= 0));\r\n    }\r\n}\r\n"},"contracts/elixir-core/libraries/Oracle.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\r\npragma solidity >=0.5.0 <0.8.0;\r\n\r\n/// @title Oracle\r\n/// @notice Provides price and liquidity data useful for a wide variety of system designs\r\n/// @dev Instances of stored oracle data, \"observations\", are collected in the oracle array\r\n/// Every pool is initialized with an oracle array length of 1. Anyone can pay the SSTOREs to increase the\r\n/// maximum length of the oracle array. New slots will be added when the array is fully populated.\r\n/// Observations are overwritten when the full length of the oracle array is populated.\r\n/// The most recent observation is available, independent of the length of the oracle array, by passing 0 to observe()\r\nlibrary Oracle {\r\n    struct Observation {\r\n        // the block timestamp of the observation\r\n        uint32 blockTimestamp;\r\n        // the tick accumulator, i.e. tick * time elapsed since the pool was first initialized\r\n        int56 tickCumulative;\r\n        // the seconds per liquidity, i.e. seconds elapsed / max(1, liquidity) since the pool was first initialized\r\n        uint160 secondsPerLiquidityCumulativeX128;\r\n        // whether or not the observation is initialized\r\n        bool initialized;\r\n        // the reward per liquidity, i.e. sum of (reward rate_i * duration_i / liquidity_i) since the pool was first initialized\r\n        uint192 rewardPerLiquidityCumulativeX64; // Q128X64\r\n    }\r\n\r\n    /// @notice Transforms a previous observation into a new observation, given the passage of time and the current tick and liquidity values\r\n    /// @dev blockTimestamp _must_ be chronologically equal to or greater than last.blockTimestamp, safe for 0 or 1 overflows\r\n    /// @param last The specified observation to be transformed\r\n    /// @param blockTimestamp The timestamp of the new observation\r\n    /// @param tick The active tick at the time of the new observation\r\n    /// @param liquidity The total in-range liquidity at the time of the new observation\r\n    /// @param rewardPerSecondX48 The reward rate at the time of the new observation\r\n    /// @param rewardRateEffectiveUntil The timestamp after which the reward rate is zero\r\n    /// @return Observation The newly populated observation\r\n    function transform(\r\n        Observation memory last,\r\n        uint32 blockTimestamp,\r\n        int24 tick,\r\n        uint128 liquidity,\r\n        uint144 rewardPerSecondX48,\r\n        uint32 rewardRateEffectiveUntil\r\n    ) private view returns (Observation memory) {\r\n        uint32 delta = blockTimestamp - last.blockTimestamp;\r\n        liquidity = liquidity > 0 ? liquidity : 1;\r\n        // Use actual block timestamp because overflowing timestamp is not usable for this case because\r\n        // we do not know chronological relation of rewardRateEffectiveUntil and blockTimestamp\r\n        // rewardRateEffectiveUntil must be checked on adding rewards to be less than 32 bits\r\n        // End rewards when we are over 32 bits: this will lose rewards between last.blockTimestamp\r\n        // and current timestamp when we pass 32 bits, but it is not a huge concern. We have to do this\r\n        // because we cannot know if last.blockTimestamp has an overflow after timestamp exceeds 32 bits\r\n        uint32 rewardRateEffectiveDelta = block.timestamp > type(uint32).max\r\n            ? 0\r\n            : rewardRateEffectiveUntil < block.timestamp\r\n            ? rewardRateEffectiveUntil <= last.blockTimestamp\r\n                ? 0\r\n                : rewardRateEffectiveUntil - last.blockTimestamp\r\n            : delta;\r\n        return\r\n            Observation({\r\n                blockTimestamp: blockTimestamp,\r\n                tickCumulative: last.tickCumulative + int56(tick) * delta,\r\n                secondsPerLiquidityCumulativeX128: last\r\n                    .secondsPerLiquidityCumulativeX128 +\r\n                    ((uint160(delta) << 128) / liquidity),\r\n                initialized: true,\r\n                rewardPerLiquidityCumulativeX64: last\r\n                    .rewardPerLiquidityCumulativeX64 +\r\n                    (((uint192(rewardPerSecondX48) << 16) *\r\n                        rewardRateEffectiveDelta) / liquidity)\r\n            });\r\n    }\r\n\r\n    /// @notice Initialize the oracle array by writing the first slot. Called once for the lifecycle of the observations array\r\n    /// @param self The stored oracle array\r\n    /// @param time The time of the oracle initialization, via block.timestamp truncated to uint32\r\n    /// @return cardinality The number of populated elements in the oracle array\r\n    /// @return cardinalityNext The new length of the oracle array, independent of population\r\n    function initialize(\r\n        Observation[65535] storage self,\r\n        uint32 time\r\n    ) internal returns (uint16 cardinality, uint16 cardinalityNext) {\r\n        self[0] = Observation({\r\n            blockTimestamp: time,\r\n            tickCumulative: 0,\r\n            secondsPerLiquidityCumulativeX128: 0,\r\n            initialized: true,\r\n            rewardPerLiquidityCumulativeX64: 0\r\n        });\r\n        return (1, 1);\r\n    }\r\n\r\n    /// @notice Writes an oracle observation to the array\r\n    /// @dev Writable at most once per block. Index represents the most recently written element. cardinality and index must be tracked externally.\r\n    /// If the index is at the end of the allowable array length (according to cardinality), and the next cardinality\r\n    /// is greater than the current one, cardinality may be increased. This restriction is created to preserve ordering.\r\n    /// @param self The stored oracle array\r\n    /// @param index The index of the observation that was most recently written to the observations array\r\n    /// @param blockTimestamp The timestamp of the new observation\r\n    /// @param tick The active tick at the time of the new observation\r\n    /// @param liquidity The total in-range liquidity at the time of the new observation\r\n    /// @param rewardPerSecondX48 The reward rate at the time of the new observation\r\n    /// @param rewardRateEffectiveUntil The timestamp after which the reward rate is zero\r\n    /// @param cardinality The number of populated elements in the oracle array\r\n    /// @param cardinalityNext The new length of the oracle array, independent of population\r\n    /// @return indexUpdated The new index of the most recently written element in the oracle array\r\n    /// @return cardinalityUpdated The new cardinality of the oracle array\r\n    function write(\r\n        Observation[65535] storage self,\r\n        uint16 index,\r\n        uint32 blockTimestamp,\r\n        int24 tick,\r\n        uint128 liquidity,\r\n        uint144 rewardPerSecondX48,\r\n        uint32 rewardRateEffectiveUntil,\r\n        uint16 cardinality,\r\n        uint16 cardinalityNext\r\n    ) internal returns (uint16 indexUpdated, uint16 cardinalityUpdated) {\r\n        Observation memory last = self[index];\r\n\r\n        // early return if we've already written an observation this block\r\n        if (last.blockTimestamp == blockTimestamp) return (index, cardinality);\r\n\r\n        // if the conditions are right, we can bump the cardinality\r\n        if (cardinalityNext > cardinality && index == (cardinality - 1)) {\r\n            cardinalityUpdated = cardinalityNext;\r\n        } else {\r\n            cardinalityUpdated = cardinality;\r\n        }\r\n\r\n        indexUpdated = (index + 1) % cardinalityUpdated;\r\n        self[indexUpdated] = transform(\r\n            last,\r\n            blockTimestamp,\r\n            tick,\r\n            liquidity,\r\n            rewardPerSecondX48,\r\n            rewardRateEffectiveUntil\r\n        );\r\n    }\r\n\r\n    /// @notice Prepares the oracle array to store up to `next` observations\r\n    /// @param self The stored oracle array\r\n    /// @param current The current next cardinality of the oracle array\r\n    /// @param next The proposed next cardinality which will be populated in the oracle array\r\n    /// @return next The next cardinality which will be populated in the oracle array\r\n    function grow(\r\n        Observation[65535] storage self,\r\n        uint16 current,\r\n        uint16 next\r\n    ) internal returns (uint16) {\r\n        require(current > 0, \"I\");\r\n        // no-op if the passed next value isn't greater than the current next value\r\n        if (next <= current) return current;\r\n        // store in each slot to prevent fresh SSTOREs in swaps\r\n        // this data will not be used because the initialized boolean is still false\r\n        for (uint16 i = current; i < next; i++) self[i].blockTimestamp = 1;\r\n        return next;\r\n    }\r\n\r\n    /// @notice comparator for 32-bit timestamps\r\n    /// @dev safe for 0 or 1 overflows, a and b _must_ be chronologically before or equal to time\r\n    /// @param time A timestamp truncated to 32 bits\r\n    /// @param a A comparison timestamp from which to determine the relative position of `time`\r\n    /// @param b From which to determine the relative position of `time`\r\n    /// @return bool Whether `a` is chronologically <= `b`\r\n    function lte(uint32 time, uint32 a, uint32 b) private pure returns (bool) {\r\n        // if there hasn't been overflow, no need to adjust\r\n        if (a <= time && b <= time) return a <= b;\r\n\r\n        uint256 aAdjusted = a > time ? a : a + 2 ** 32;\r\n        uint256 bAdjusted = b > time ? b : b + 2 ** 32;\r\n\r\n        return aAdjusted <= bAdjusted;\r\n    }\r\n\r\n    /// @notice Fetches the observations beforeOrAt and atOrAfter a target, i.e. where [beforeOrAt, atOrAfter] is satisfied.\r\n    /// The result may be the same observation, or adjacent observations.\r\n    /// @dev The answer must be contained in the array, used when the target is located within the stored observation\r\n    /// boundaries: older than the most recent observation and younger, or the same age as, the oldest observation\r\n    /// @param self The stored oracle array\r\n    /// @param time The current block.timestamp\r\n    /// @param target The timestamp at which the reserved observation should be for\r\n    /// @param index The index of the observation that was most recently written to the observations array\r\n    /// @param cardinality The number of populated elements in the oracle array\r\n    /// @return beforeOrAt The observation recorded before, or at, the target\r\n    /// @return atOrAfter The observation recorded at, or after, the target\r\n    function binarySearch(\r\n        Observation[65535] storage self,\r\n        uint32 time,\r\n        uint32 target,\r\n        uint16 index,\r\n        uint16 cardinality\r\n    )\r\n        private\r\n        view\r\n        returns (Observation memory beforeOrAt, Observation memory atOrAfter)\r\n    {\r\n        uint256 l = (index + 1) % cardinality; // oldest observation\r\n        uint256 r = l + cardinality - 1; // newest observation\r\n        uint256 i;\r\n        while (true) {\r\n            i = (l + r) / 2;\r\n\r\n            beforeOrAt = self[i % cardinality];\r\n\r\n            // we've landed on an uninitialized tick, keep searching higher (more recently)\r\n            if (!beforeOrAt.initialized) {\r\n                l = i + 1;\r\n                continue;\r\n            }\r\n\r\n            atOrAfter = self[(i + 1) % cardinality];\r\n\r\n            bool targetAtOrAfter = lte(time, beforeOrAt.blockTimestamp, target);\r\n\r\n            // check if we've found the answer!\r\n            if (targetAtOrAfter && lte(time, target, atOrAfter.blockTimestamp))\r\n                break;\r\n\r\n            if (!targetAtOrAfter) r = i - 1;\r\n            else l = i + 1;\r\n        }\r\n    }\r\n\r\n    /// @notice Fetches the observations beforeOrAt and atOrAfter a given target, i.e. where [beforeOrAt, atOrAfter] is satisfied\r\n    /// @dev Assumes there is at least 1 initialized observation.\r\n    /// Used by observeSingle() to compute the counterfactual accumulator values as of a given block timestamp.\r\n    /// @param self The stored oracle array\r\n    /// @param time The current block.timestamp\r\n    /// @param target The timestamp at which the reserved observation should be for\r\n    /// @param tick The active tick at the time of the returned or simulated observation\r\n    /// @param index The index of the observation that was most recently written to the observations array\r\n    /// @param liquidity The total pool liquidity at the time of the call\r\n    /// @param rewardPerSecondX48 The reward rate at the time of the call\r\n    /// @param rewardRateEffectiveUntil The timestamp after which the reward rate is zero\r\n    /// @param cardinality The number of populated elements in the oracle array\r\n    /// @return beforeOrAt The observation which occurred at, or before, the given timestamp\r\n    /// @return atOrAfter The observation which occurred at, or after, the given timestamp\r\n    function getSurroundingObservations(\r\n        Observation[65535] storage self,\r\n        uint32 time,\r\n        uint32 target,\r\n        int24 tick,\r\n        uint16 index,\r\n        uint128 liquidity,\r\n        uint144 rewardPerSecondX48,\r\n        uint32 rewardRateEffectiveUntil,\r\n        uint16 cardinality\r\n    )\r\n        private\r\n        view\r\n        returns (Observation memory beforeOrAt, Observation memory atOrAfter)\r\n    {\r\n        // optimistically set before to the newest observation\r\n        beforeOrAt = self[index];\r\n\r\n        // if the target is chronologically at or after the newest observation, we can early return\r\n        if (lte(time, beforeOrAt.blockTimestamp, target)) {\r\n            if (beforeOrAt.blockTimestamp == target) {\r\n                // if newest observation equals target, we're in the same block, so we can ignore atOrAfter\r\n                return (beforeOrAt, atOrAfter);\r\n            } else {\r\n                // otherwise, we need to transform\r\n                return (\r\n                    beforeOrAt,\r\n                    transform(\r\n                        beforeOrAt,\r\n                        target,\r\n                        tick,\r\n                        liquidity,\r\n                        rewardPerSecondX48,\r\n                        rewardRateEffectiveUntil\r\n                    )\r\n                );\r\n            }\r\n        }\r\n\r\n        // now, set before to the oldest observation\r\n        beforeOrAt = self[(index + 1) % cardinality];\r\n        if (!beforeOrAt.initialized) beforeOrAt = self[0];\r\n\r\n        // ensure that the target is chronologically at or after the oldest observation\r\n        require(lte(time, beforeOrAt.blockTimestamp, target), \"OLD\");\r\n\r\n        // if we've reached this point, we have to binary search\r\n        return binarySearch(self, time, target, index, cardinality);\r\n    }\r\n\r\n    /// @dev Reverts if an observation at or before the desired observation timestamp does not exist.\r\n    /// 0 may be passed as `secondsAgo' to return the current cumulative values.\r\n    /// If called with a timestamp falling between two observations, returns the counterfactual accumulator values\r\n    /// at exactly the timestamp between the two observations.\r\n    /// @param self The stored oracle array\r\n    /// @param time The current block timestamp\r\n    /// @param secondsAgo The amount of time to look back, in seconds, at which point to return an observation\r\n    /// @param tick The current tick\r\n    /// @param index The index of the observation that was most recently written to the observations array\r\n    /// @param liquidity The current in-range pool liquidity\r\n    /// @param rewardPerSecondX48 The reward rate at the time of the call\r\n    /// @param rewardRateEffectiveUntil The timestamp after which the reward rate is zero\r\n    /// @param cardinality The number of populated elements in the oracle array\r\n    /// @return tickCumulative The tick * time elapsed since the pool was first initialized, as of `secondsAgo`\r\n    /// @return secondsPerLiquidityCumulativeX128 The time elapsed / max(1, liquidity) since the pool was first initialized, as of `secondsAgo`\r\n    /// @return rewardPerLiquidityCumulativeX64 reward per liquidity, as of `secondsAgo`\r\n    function observeSingle(\r\n        Observation[65535] storage self,\r\n        uint32 time,\r\n        uint32 secondsAgo,\r\n        int24 tick,\r\n        uint16 index,\r\n        uint128 liquidity,\r\n        uint144 rewardPerSecondX48,\r\n        uint32 rewardRateEffectiveUntil,\r\n        uint16 cardinality\r\n    )\r\n        internal\r\n        view\r\n        returns (\r\n            int56 tickCumulative,\r\n            uint160 secondsPerLiquidityCumulativeX128,\r\n            uint192 rewardPerLiquidityCumulativeX64\r\n        )\r\n    {\r\n        if (secondsAgo == 0) {\r\n            Observation memory last = self[index];\r\n            if (last.blockTimestamp != time)\r\n                last = transform(\r\n                    last,\r\n                    time,\r\n                    tick,\r\n                    liquidity,\r\n                    rewardPerSecondX48,\r\n                    rewardRateEffectiveUntil\r\n                );\r\n            return (\r\n                last.tickCumulative,\r\n                last.secondsPerLiquidityCumulativeX128,\r\n                last.rewardPerLiquidityCumulativeX64\r\n            );\r\n        }\r\n\r\n        uint32 target = time - secondsAgo;\r\n\r\n        (\r\n            Observation memory beforeOrAt,\r\n            Observation memory atOrAfter\r\n        ) = getSurroundingObservations(\r\n                self,\r\n                time,\r\n                target,\r\n                tick,\r\n                index,\r\n                liquidity,\r\n                rewardPerSecondX48,\r\n                rewardRateEffectiveUntil,\r\n                cardinality\r\n            );\r\n\r\n        if (target == beforeOrAt.blockTimestamp) {\r\n            // we're at the left boundary\r\n            return (\r\n                beforeOrAt.tickCumulative,\r\n                beforeOrAt.secondsPerLiquidityCumulativeX128,\r\n                beforeOrAt.rewardPerLiquidityCumulativeX64\r\n            );\r\n        } else if (target == atOrAfter.blockTimestamp) {\r\n            // we're at the right boundary\r\n            return (\r\n                atOrAfter.tickCumulative,\r\n                atOrAfter.secondsPerLiquidityCumulativeX128,\r\n                atOrAfter.rewardPerLiquidityCumulativeX64\r\n            );\r\n        } else {\r\n            // we're in the middle\r\n            uint32 observationTimeDelta = atOrAfter.blockTimestamp -\r\n                beforeOrAt.blockTimestamp;\r\n            uint32 targetDelta = target - beforeOrAt.blockTimestamp;\r\n            return (\r\n                beforeOrAt.tickCumulative +\r\n                    ((atOrAfter.tickCumulative - beforeOrAt.tickCumulative) /\r\n                        observationTimeDelta) *\r\n                    targetDelta,\r\n                beforeOrAt.secondsPerLiquidityCumulativeX128 +\r\n                    uint160(\r\n                        (uint256(\r\n                            atOrAfter.secondsPerLiquidityCumulativeX128 -\r\n                                beforeOrAt.secondsPerLiquidityCumulativeX128\r\n                        ) * targetDelta) / observationTimeDelta\r\n                    ),\r\n                beforeOrAt.rewardPerLiquidityCumulativeX64 +\r\n                    ((atOrAfter.rewardPerLiquidityCumulativeX64 -\r\n                        beforeOrAt.rewardPerLiquidityCumulativeX64) /\r\n                        observationTimeDelta) *\r\n                    targetDelta\r\n            );\r\n        }\r\n    }\r\n\r\n    /// @notice Returns the accumulator values as of each time seconds ago from the given time in the array of `secondsAgos`\r\n    /// @dev Reverts if `secondsAgos` > oldest observation\r\n    /// @param self The stored oracle array\r\n    /// @param time The current block.timestamp\r\n    /// @param secondsAgos Each amount of time to look back, in seconds, at which point to return an observation\r\n    /// @param tick The current tick\r\n    /// @param index The index of the observation that was most recently written to the observations array\r\n    /// @param liquidity The current in-range pool liquidity\r\n    /// @param rewardPerSecondX48 The reward rate at the time of the call\r\n    /// @param rewardRateEffectiveUntil The timestamp after which the reward rate is zero\r\n    /// @param cardinality The number of populated elements in the oracle array\r\n    /// @return tickCumulatives The tick * time elapsed since the pool was first initialized, as of each `secondsAgo`\r\n    /// @return secondsPerLiquidityCumulativeX128s The cumulative seconds / max(1, liquidity) since the pool was first initialized, as of each `secondsAgo`\r\n    function observe(\r\n        Observation[65535] storage self,\r\n        uint32 time,\r\n        uint32[] memory secondsAgos,\r\n        int24 tick,\r\n        uint16 index,\r\n        uint128 liquidity,\r\n        uint144 rewardPerSecondX48,\r\n        uint32 rewardRateEffectiveUntil,\r\n        uint16 cardinality\r\n    )\r\n        internal\r\n        view\r\n        returns (\r\n            int56[] memory tickCumulatives,\r\n            uint160[] memory secondsPerLiquidityCumulativeX128s,\r\n            uint192[] memory rewardPerLiquidityCumulativeX64s\r\n        )\r\n    {\r\n        require(cardinality > 0, \"I\");\r\n\r\n        tickCumulatives = new int56[](secondsAgos.length);\r\n        secondsPerLiquidityCumulativeX128s = new uint160[](secondsAgos.length);\r\n        rewardPerLiquidityCumulativeX64s = new uint192[](secondsAgos.length);\r\n        for (uint256 i = 0; i < secondsAgos.length; i++) {\r\n            (\r\n                tickCumulatives[i],\r\n                secondsPerLiquidityCumulativeX128s[i],\r\n                rewardPerLiquidityCumulativeX64s[i]\r\n            ) = observeSingle(\r\n                self,\r\n                time,\r\n                secondsAgos[i],\r\n                tick,\r\n                index,\r\n                liquidity,\r\n                rewardPerSecondX48,\r\n                rewardRateEffectiveUntil,\r\n                cardinality\r\n            );\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-core/libraries/Position.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\r\npragma solidity >=0.5.0 <0.8.0;\r\n\r\nimport './FullMath.sol';\r\nimport './FixedPoint128.sol';\r\nimport './LiquidityMath.sol';\r\n\r\n/// @title Position\r\n/// @notice Positions represent an owner address' liquidity between a lower and upper tick boundary\r\n/// @dev Positions store additional state for tracking fees owed to the position\r\nlibrary Position {\r\n    // info stored for each user's position\r\n    struct Info {\r\n        // the amount of liquidity owned by this position\r\n        uint128 liquidity;\r\n        // fee growth per unit of liquidity as of the last update to liquidity or fees owed\r\n        uint256 feeGrowthInside0LastX128;\r\n        uint256 feeGrowthInside1LastX128;\r\n        // the fees owed to the position owner in token0/token1\r\n        uint128 tokensOwed0;\r\n        uint128 tokensOwed1;\r\n    }\r\n\r\n    /// @notice Returns the Info struct of a position, given an owner and position boundaries\r\n    /// @param self The mapping containing all user positions\r\n    /// @param owner The address of the position owner\r\n    /// @param tickLower The lower tick boundary of the position\r\n    /// @param tickUpper The upper tick boundary of the position\r\n    /// @return position The position info struct of the given owners' position\r\n    function get(\r\n        mapping(bytes32 => Info) storage self,\r\n        address owner,\r\n        int24 tickLower,\r\n        int24 tickUpper\r\n    ) internal view returns (Position.Info storage position) {\r\n        position = self[keccak256(abi.encodePacked(owner, tickLower, tickUpper))];\r\n    }\r\n\r\n    /// @notice Credits accumulated fees to a user's position\r\n    /// @param self The individual position to update\r\n    /// @param liquidityDelta The change in pool liquidity as a result of the position update\r\n    /// @param feeGrowthInside0X128 The all-time fee growth in token0, per unit of liquidity, inside the position's tick boundaries\r\n    /// @param feeGrowthInside1X128 The all-time fee growth in token1, per unit of liquidity, inside the position's tick boundaries\r\n    function update(\r\n        Info storage self,\r\n        int128 liquidityDelta,\r\n        uint256 feeGrowthInside0X128,\r\n        uint256 feeGrowthInside1X128\r\n    ) internal {\r\n        Info memory _self = self;\r\n\r\n        uint128 liquidityNext;\r\n        if (liquidityDelta == 0) {\r\n            require(_self.liquidity > 0, 'NP'); // disallow pokes for 0 liquidity positions\r\n            liquidityNext = _self.liquidity;\r\n        } else {\r\n            liquidityNext = LiquidityMath.addDelta(_self.liquidity, liquidityDelta);\r\n        }\r\n\r\n        // calculate accumulated fees\r\n        uint128 tokensOwed0 = uint128(\r\n            FullMath.mulDiv(feeGrowthInside0X128 - _self.feeGrowthInside0LastX128, _self.liquidity, FixedPoint128.Q128)\r\n        );\r\n        uint128 tokensOwed1 = uint128(\r\n            FullMath.mulDiv(feeGrowthInside1X128 - _self.feeGrowthInside1LastX128, _self.liquidity, FixedPoint128.Q128)\r\n        );\r\n\r\n        // update the position\r\n        if (liquidityDelta != 0) self.liquidity = liquidityNext;\r\n        self.feeGrowthInside0LastX128 = feeGrowthInside0X128;\r\n        self.feeGrowthInside1LastX128 = feeGrowthInside1X128;\r\n        if (tokensOwed0 > 0 || tokensOwed1 > 0) {\r\n            // overflow is acceptable, have to withdraw before you hit type(uint128).max fees\r\n            self.tokensOwed0 += tokensOwed0;\r\n            self.tokensOwed1 += tokensOwed1;\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-core/libraries/SafeCast.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Safe casting methods\r\n/// @notice Contains methods for safely casting between types\r\nlibrary SafeCast {\r\n    /// @notice Cast a uint256 to a uint160, revert on overflow\r\n    /// @param y The uint256 to be downcasted\r\n    /// @return z The downcasted integer, now type uint160\r\n    function toUint160(uint256 y) internal pure returns (uint160 z) {\r\n        require((z = uint160(y)) == y);\r\n    }\r\n\r\n    /// @notice Cast a int256 to a int128, revert on overflow or underflow\r\n    /// @param y The int256 to be downcasted\r\n    /// @return z The downcasted integer, now type int128\r\n    function toInt128(int256 y) internal pure returns (int128 z) {\r\n        require((z = int128(y)) == y);\r\n    }\r\n\r\n    /// @notice Cast a uint256 to a int256, revert on overflow\r\n    /// @param y The uint256 to be casted\r\n    /// @return z The casted integer, now type int256\r\n    function toInt256(uint256 y) internal pure returns (int256 z) {\r\n        require(y < 2**255);\r\n        z = int256(y);\r\n    }\r\n}\r\n"},"contracts/elixir-core/libraries/SqrtPriceMath.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\r\npragma solidity >=0.5.0;\r\n\r\nimport './LowGasSafeMath.sol';\r\nimport './SafeCast.sol';\r\n\r\nimport './FullMath.sol';\r\nimport './UnsafeMath.sol';\r\nimport './FixedPoint96.sol';\r\n\r\n/// @title Functions based on Q64.96 sqrt price and liquidity\r\n/// @notice Contains the math that uses square root of price as a Q64.96 and liquidity to compute deltas\r\nlibrary SqrtPriceMath {\r\n    using LowGasSafeMath for uint256;\r\n    using SafeCast for uint256;\r\n\r\n    /// @notice Gets the next sqrt price given a delta of token0\r\n    /// @dev Always rounds up, because in the exact output case (increasing price) we need to move the price at least\r\n    /// far enough to get the desired output amount, and in the exact input case (decreasing price) we need to move the\r\n    /// price less in order to not send too much output.\r\n    /// The most precise formula for this is liquidity * sqrtPX96 / (liquidity +- amount * sqrtPX96),\r\n    /// if this is impossible because of overflow, we calculate liquidity / (liquidity / sqrtPX96 +- amount).\r\n    /// @param sqrtPX96 The starting price, i.e. before accounting for the token0 delta\r\n    /// @param liquidity The amount of usable liquidity\r\n    /// @param amount How much of token0 to add or remove from virtual reserves\r\n    /// @param add Whether to add or remove the amount of token0\r\n    /// @return The price after adding or removing amount, depending on add\r\n    function getNextSqrtPriceFromAmount0RoundingUp(\r\n        uint160 sqrtPX96,\r\n        uint128 liquidity,\r\n        uint256 amount,\r\n        bool add\r\n    ) internal pure returns (uint160) {\r\n        // we short circuit amount == 0 because the result is otherwise not guaranteed to equal the input price\r\n        if (amount == 0) return sqrtPX96;\r\n        uint256 numerator1 = uint256(liquidity) << FixedPoint96.RESOLUTION;\r\n\r\n        if (add) {\r\n            uint256 product;\r\n            if ((product = amount * sqrtPX96) / amount == sqrtPX96) {\r\n                uint256 denominator = numerator1 + product;\r\n                if (denominator >= numerator1)\r\n                    // always fits in 160 bits\r\n                    return uint160(FullMath.mulDivRoundingUp(numerator1, sqrtPX96, denominator));\r\n            }\r\n\r\n            return uint160(UnsafeMath.divRoundingUp(numerator1, (numerator1 / sqrtPX96).add(amount)));\r\n        } else {\r\n            uint256 product;\r\n            // if the product overflows, we know the denominator underflows\r\n            // in addition, we must check that the denominator does not underflow\r\n            require((product = amount * sqrtPX96) / amount == sqrtPX96 && numerator1 > product);\r\n            uint256 denominator = numerator1 - product;\r\n            return FullMath.mulDivRoundingUp(numerator1, sqrtPX96, denominator).toUint160();\r\n        }\r\n    }\r\n\r\n    /// @notice Gets the next sqrt price given a delta of token1\r\n    /// @dev Always rounds down, because in the exact output case (decreasing price) we need to move the price at least\r\n    /// far enough to get the desired output amount, and in the exact input case (increasing price) we need to move the\r\n    /// price less in order to not send too much output.\r\n    /// The formula we compute is within <1 wei of the lossless version: sqrtPX96 +- amount / liquidity\r\n    /// @param sqrtPX96 The starting price, i.e., before accounting for the token1 delta\r\n    /// @param liquidity The amount of usable liquidity\r\n    /// @param amount How much of token1 to add, or remove, from virtual reserves\r\n    /// @param add Whether to add, or remove, the amount of token1\r\n    /// @return The price after adding or removing `amount`\r\n    function getNextSqrtPriceFromAmount1RoundingDown(\r\n        uint160 sqrtPX96,\r\n        uint128 liquidity,\r\n        uint256 amount,\r\n        bool add\r\n    ) internal pure returns (uint160) {\r\n        // if we're adding (subtracting), rounding down requires rounding the quotient down (up)\r\n        // in both cases, avoid a mulDiv for most inputs\r\n        if (add) {\r\n            uint256 quotient = (\r\n                amount <= type(uint160).max\r\n                    ? (amount << FixedPoint96.RESOLUTION) / liquidity\r\n                    : FullMath.mulDiv(amount, FixedPoint96.Q96, liquidity)\r\n            );\r\n\r\n            return uint256(sqrtPX96).add(quotient).toUint160();\r\n        } else {\r\n            uint256 quotient = (\r\n                amount <= type(uint160).max\r\n                    ? UnsafeMath.divRoundingUp(amount << FixedPoint96.RESOLUTION, liquidity)\r\n                    : FullMath.mulDivRoundingUp(amount, FixedPoint96.Q96, liquidity)\r\n            );\r\n\r\n            require(sqrtPX96 > quotient);\r\n            // always fits 160 bits\r\n            return uint160(sqrtPX96 - quotient);\r\n        }\r\n    }\r\n\r\n    /// @notice Gets the next sqrt price given an input amount of token0 or token1\r\n    /// @dev Throws if price or liquidity are 0, or if the next price is out of bounds\r\n    /// @param sqrtPX96 The starting price, i.e., before accounting for the input amount\r\n    /// @param liquidity The amount of usable liquidity\r\n    /// @param amountIn How much of token0, or token1, is being swapped in\r\n    /// @param zeroForOne Whether the amount in is token0 or token1\r\n    /// @return sqrtQX96 The price after adding the input amount to token0 or token1\r\n    function getNextSqrtPriceFromInput(\r\n        uint160 sqrtPX96,\r\n        uint128 liquidity,\r\n        uint256 amountIn,\r\n        bool zeroForOne\r\n    ) internal pure returns (uint160 sqrtQX96) {\r\n        require(sqrtPX96 > 0);\r\n        require(liquidity > 0);\r\n\r\n        // round to make sure that we don't pass the target price\r\n        return\r\n            zeroForOne\r\n                ? getNextSqrtPriceFromAmount0RoundingUp(sqrtPX96, liquidity, amountIn, true)\r\n                : getNextSqrtPriceFromAmount1RoundingDown(sqrtPX96, liquidity, amountIn, true);\r\n    }\r\n\r\n    /// @notice Gets the next sqrt price given an output amount of token0 or token1\r\n    /// @dev Throws if price or liquidity are 0 or the next price is out of bounds\r\n    /// @param sqrtPX96 The starting price before accounting for the output amount\r\n    /// @param liquidity The amount of usable liquidity\r\n    /// @param amountOut How much of token0, or token1, is being swapped out\r\n    /// @param zeroForOne Whether the amount out is token0 or token1\r\n    /// @return sqrtQX96 The price after removing the output amount of token0 or token1\r\n    function getNextSqrtPriceFromOutput(\r\n        uint160 sqrtPX96,\r\n        uint128 liquidity,\r\n        uint256 amountOut,\r\n        bool zeroForOne\r\n    ) internal pure returns (uint160 sqrtQX96) {\r\n        require(sqrtPX96 > 0);\r\n        require(liquidity > 0);\r\n\r\n        // round to make sure that we pass the target price\r\n        return\r\n            zeroForOne\r\n                ? getNextSqrtPriceFromAmount1RoundingDown(sqrtPX96, liquidity, amountOut, false)\r\n                : getNextSqrtPriceFromAmount0RoundingUp(sqrtPX96, liquidity, amountOut, false);\r\n    }\r\n\r\n    /// @notice Gets the amount0 delta between two prices\r\n    /// @dev Calculates liquidity / sqrt(lower) - liquidity / sqrt(upper),\r\n    /// i.e. liquidity * (sqrt(upper) - sqrt(lower)) / (sqrt(upper) * sqrt(lower))\r\n    /// @param sqrtRatioAX96 A sqrt price\r\n    /// @param sqrtRatioBX96 Another sqrt price\r\n    /// @param liquidity The amount of usable liquidity\r\n    /// @param roundUp Whether to round the amount up or down\r\n    /// @return amount0 Amount of token0 required to cover a position of size liquidity between the two passed prices\r\n    function getAmount0Delta(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint128 liquidity,\r\n        bool roundUp\r\n    ) internal pure returns (uint256 amount0) {\r\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\r\n\r\n        uint256 numerator1 = uint256(liquidity) << FixedPoint96.RESOLUTION;\r\n        uint256 numerator2 = sqrtRatioBX96 - sqrtRatioAX96;\r\n\r\n        require(sqrtRatioAX96 > 0);\r\n\r\n        return\r\n            roundUp\r\n                ? UnsafeMath.divRoundingUp(\r\n                    FullMath.mulDivRoundingUp(numerator1, numerator2, sqrtRatioBX96),\r\n                    sqrtRatioAX96\r\n                )\r\n                : FullMath.mulDiv(numerator1, numerator2, sqrtRatioBX96) / sqrtRatioAX96;\r\n    }\r\n\r\n    /// @notice Gets the amount1 delta between two prices\r\n    /// @dev Calculates liquidity * (sqrt(upper) - sqrt(lower))\r\n    /// @param sqrtRatioAX96 A sqrt price\r\n    /// @param sqrtRatioBX96 Another sqrt price\r\n    /// @param liquidity The amount of usable liquidity\r\n    /// @param roundUp Whether to round the amount up, or down\r\n    /// @return amount1 Amount of token1 required to cover a position of size liquidity between the two passed prices\r\n    function getAmount1Delta(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint128 liquidity,\r\n        bool roundUp\r\n    ) internal pure returns (uint256 amount1) {\r\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\r\n\r\n        return\r\n            roundUp\r\n                ? FullMath.mulDivRoundingUp(liquidity, sqrtRatioBX96 - sqrtRatioAX96, FixedPoint96.Q96)\r\n                : FullMath.mulDiv(liquidity, sqrtRatioBX96 - sqrtRatioAX96, FixedPoint96.Q96);\r\n    }\r\n\r\n    /// @notice Helper that gets signed token0 delta\r\n    /// @param sqrtRatioAX96 A sqrt price\r\n    /// @param sqrtRatioBX96 Another sqrt price\r\n    /// @param liquidity The change in liquidity for which to compute the amount0 delta\r\n    /// @return amount0 Amount of token0 corresponding to the passed liquidityDelta between the two prices\r\n    function getAmount0Delta(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        int128 liquidity\r\n    ) internal pure returns (int256 amount0) {\r\n        return\r\n            liquidity < 0\r\n                ? -getAmount0Delta(sqrtRatioAX96, sqrtRatioBX96, uint128(-liquidity), false).toInt256()\r\n                : getAmount0Delta(sqrtRatioAX96, sqrtRatioBX96, uint128(liquidity), true).toInt256();\r\n    }\r\n\r\n    /// @notice Helper that gets signed token1 delta\r\n    /// @param sqrtRatioAX96 A sqrt price\r\n    /// @param sqrtRatioBX96 Another sqrt price\r\n    /// @param liquidity The change in liquidity for which to compute the amount1 delta\r\n    /// @return amount1 Amount of token1 corresponding to the passed liquidityDelta between the two prices\r\n    function getAmount1Delta(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        int128 liquidity\r\n    ) internal pure returns (int256 amount1) {\r\n        return\r\n            liquidity < 0\r\n                ? -getAmount1Delta(sqrtRatioAX96, sqrtRatioBX96, uint128(-liquidity), false).toInt256()\r\n                : getAmount1Delta(sqrtRatioAX96, sqrtRatioBX96, uint128(liquidity), true).toInt256();\r\n    }\r\n}\r\n"},"contracts/elixir-core/libraries/SwapMath.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\r\npragma solidity >=0.5.0;\r\n\r\nimport './FullMath.sol';\r\nimport './SqrtPriceMath.sol';\r\n\r\n/// @title Computes the result of a swap within ticks\r\n/// @notice Contains methods for computing the result of a swap within a single tick price range, i.e., a single tick.\r\nlibrary SwapMath {\r\n    /// @notice Computes the result of swapping some amount in, or amount out, given the parameters of the swap\r\n    /// @dev The fee, plus the amount in, will never exceed the amount remaining if the swap's `amountSpecified` is positive\r\n    /// @param sqrtRatioCurrentX96 The current sqrt price of the pool\r\n    /// @param sqrtRatioTargetX96 The price that cannot be exceeded, from which the direction of the swap is inferred\r\n    /// @param liquidity The usable liquidity\r\n    /// @param amountRemaining How much input or output amount is remaining to be swapped in/out\r\n    /// @param feePips The fee taken from the input amount, expressed in hundredths of a bip\r\n    /// @return sqrtRatioNextX96 The price after swapping the amount in/out, not to exceed the price target\r\n    /// @return amountIn The amount to be swapped in, of either token0 or token1, based on the direction of the swap\r\n    /// @return amountOut The amount to be received, of either token0 or token1, based on the direction of the swap\r\n    /// @return feeAmount The amount of input that will be taken as a fee\r\n    function computeSwapStep(\r\n        uint160 sqrtRatioCurrentX96,\r\n        uint160 sqrtRatioTargetX96,\r\n        uint128 liquidity,\r\n        int256 amountRemaining,\r\n        uint24 feePips\r\n    )\r\n        internal\r\n        pure\r\n        returns (\r\n            uint160 sqrtRatioNextX96,\r\n            uint256 amountIn,\r\n            uint256 amountOut,\r\n            uint256 feeAmount\r\n        )\r\n    {\r\n        bool zeroForOne = sqrtRatioCurrentX96 >= sqrtRatioTargetX96;\r\n        bool exactIn = amountRemaining >= 0;\r\n\r\n        if (exactIn) {\r\n            uint256 amountRemainingLessFee = FullMath.mulDiv(uint256(amountRemaining), 1e6 - feePips, 1e6);\r\n            amountIn = zeroForOne\r\n                ? SqrtPriceMath.getAmount0Delta(sqrtRatioTargetX96, sqrtRatioCurrentX96, liquidity, true)\r\n                : SqrtPriceMath.getAmount1Delta(sqrtRatioCurrentX96, sqrtRatioTargetX96, liquidity, true);\r\n            if (amountRemainingLessFee >= amountIn) sqrtRatioNextX96 = sqrtRatioTargetX96;\r\n            else\r\n                sqrtRatioNextX96 = SqrtPriceMath.getNextSqrtPriceFromInput(\r\n                    sqrtRatioCurrentX96,\r\n                    liquidity,\r\n                    amountRemainingLessFee,\r\n                    zeroForOne\r\n                );\r\n        } else {\r\n            amountOut = zeroForOne\r\n                ? SqrtPriceMath.getAmount1Delta(sqrtRatioTargetX96, sqrtRatioCurrentX96, liquidity, false)\r\n                : SqrtPriceMath.getAmount0Delta(sqrtRatioCurrentX96, sqrtRatioTargetX96, liquidity, false);\r\n            if (uint256(-amountRemaining) >= amountOut) sqrtRatioNextX96 = sqrtRatioTargetX96;\r\n            else\r\n                sqrtRatioNextX96 = SqrtPriceMath.getNextSqrtPriceFromOutput(\r\n                    sqrtRatioCurrentX96,\r\n                    liquidity,\r\n                    uint256(-amountRemaining),\r\n                    zeroForOne\r\n                );\r\n        }\r\n\r\n        bool max = sqrtRatioTargetX96 == sqrtRatioNextX96;\r\n\r\n        // get the input/output amounts\r\n        if (zeroForOne) {\r\n            amountIn = max && exactIn\r\n                ? amountIn\r\n                : SqrtPriceMath.getAmount0Delta(sqrtRatioNextX96, sqrtRatioCurrentX96, liquidity, true);\r\n            amountOut = max && !exactIn\r\n                ? amountOut\r\n                : SqrtPriceMath.getAmount1Delta(sqrtRatioNextX96, sqrtRatioCurrentX96, liquidity, false);\r\n        } else {\r\n            amountIn = max && exactIn\r\n                ? amountIn\r\n                : SqrtPriceMath.getAmount1Delta(sqrtRatioCurrentX96, sqrtRatioNextX96, liquidity, true);\r\n            amountOut = max && !exactIn\r\n                ? amountOut\r\n                : SqrtPriceMath.getAmount0Delta(sqrtRatioCurrentX96, sqrtRatioNextX96, liquidity, false);\r\n        }\r\n\r\n        // cap the output amount to not exceed the remaining output amount\r\n        if (!exactIn && amountOut > uint256(-amountRemaining)) {\r\n            amountOut = uint256(-amountRemaining);\r\n        }\r\n\r\n        if (exactIn && sqrtRatioNextX96 != sqrtRatioTargetX96) {\r\n            // we didn't reach the target, so take the remainder of the maximum input as fee\r\n            feeAmount = uint256(amountRemaining) - amountIn;\r\n        } else {\r\n            feeAmount = FullMath.mulDivRoundingUp(amountIn, feePips, 1e6 - feePips);\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-core/libraries/Tick.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\r\npragma solidity >=0.5.0 <0.8.0;\r\n\r\nimport './LowGasSafeMath.sol';\r\nimport './SafeCast.sol';\r\n\r\nimport './TickMath.sol';\r\nimport './LiquidityMath.sol';\r\n\r\n/// @title Tick\r\n/// @notice Contains functions for managing tick processes and relevant calculations\r\nlibrary Tick {\r\n    using LowGasSafeMath for int256;\r\n    using SafeCast for int256;\r\n\r\n    // info stored for each initialized individual tick\r\n    struct Info {\r\n        // the total position liquidity that references this tick\r\n        uint128 liquidityGross;\r\n        // amount of net liquidity added (subtracted) when tick is crossed from left to right (right to left),\r\n        int128 liquidityNet;\r\n        // fee growth per unit of liquidity on the _other_ side of this tick (relative to the current tick)\r\n        // only has relative meaning, not absolute — the value depends on when the tick is initialized\r\n        uint256 feeGrowthOutside0X128;\r\n        uint256 feeGrowthOutside1X128;\r\n        // the cumulative tick value on the other side of the tick\r\n        int56 tickCumulativeOutside;\r\n        // the seconds per unit of liquidity on the _other_ side of this tick (relative to the current tick)\r\n        // only has relative meaning, not absolute — the value depends on when the tick is initialized\r\n        uint160 secondsPerLiquidityOutsideX128;\r\n        // the seconds spent on the other side of the tick (relative to the current tick)\r\n        // only has relative meaning, not absolute — the value depends on when the tick is initialized\r\n        uint32 secondsOutside;\r\n        // true iff the tick is initialized, i.e. the value is exactly equivalent to the expression liquidityGross != 0\r\n        // these 8 bits are set to prevent fresh sstores when crossing newly initialized ticks\r\n        bool initialized;\r\n        // the reward per liquidity, i.e. sum of (reward rate_i * duration_i / liquidity_i) on the _other_ side of this\r\n        // tick (relative to the current tick)\r\n        uint192 rewardPerLiquidityOutsideX64;\r\n    }\r\n\r\n    /// @notice Derives max liquidity per tick from given tick spacing\r\n    /// @dev Executed within the pool constructor\r\n    /// @param tickSpacing The amount of required tick separation, realized in multiples of `tickSpacing`\r\n    ///     e.g., a tickSpacing of 3 requires ticks to be initialized every 3rd tick i.e., ..., -6, -3, 0, 3, 6, ...\r\n    /// @return The max liquidity per tick\r\n    function tickSpacingToMaxLiquidityPerTick(int24 tickSpacing) internal pure returns (uint128) {\r\n        int24 minTick = (TickMath.MIN_TICK / tickSpacing) * tickSpacing;\r\n        int24 maxTick = (TickMath.MAX_TICK / tickSpacing) * tickSpacing;\r\n        uint24 numTicks = uint24((maxTick - minTick) / tickSpacing) + 1;\r\n        return type(uint128).max / numTicks;\r\n    }\r\n\r\n    /// @notice Retrieves fee growth data\r\n    /// @param self The mapping containing all tick information for initialized ticks\r\n    /// @param tickLower The lower tick boundary of the position\r\n    /// @param tickUpper The upper tick boundary of the position\r\n    /// @param tickCurrent The current tick\r\n    /// @param feeGrowthGlobal0X128 The all-time global fee growth, per unit of liquidity, in token0\r\n    /// @param feeGrowthGlobal1X128 The all-time global fee growth, per unit of liquidity, in token1\r\n    /// @return feeGrowthInside0X128 The all-time fee growth in token0, per unit of liquidity, inside the position's tick boundaries\r\n    /// @return feeGrowthInside1X128 The all-time fee growth in token1, per unit of liquidity, inside the position's tick boundaries\r\n    function getFeeGrowthInside(\r\n        mapping(int24 => Tick.Info) storage self,\r\n        int24 tickLower,\r\n        int24 tickUpper,\r\n        int24 tickCurrent,\r\n        uint256 feeGrowthGlobal0X128,\r\n        uint256 feeGrowthGlobal1X128\r\n    ) internal view returns (uint256 feeGrowthInside0X128, uint256 feeGrowthInside1X128) {\r\n        Info storage lower = self[tickLower];\r\n        Info storage upper = self[tickUpper];\r\n\r\n        // calculate fee growth below\r\n        uint256 feeGrowthBelow0X128;\r\n        uint256 feeGrowthBelow1X128;\r\n        if (tickCurrent >= tickLower) {\r\n            feeGrowthBelow0X128 = lower.feeGrowthOutside0X128;\r\n            feeGrowthBelow1X128 = lower.feeGrowthOutside1X128;\r\n        } else {\r\n            feeGrowthBelow0X128 = feeGrowthGlobal0X128 - lower.feeGrowthOutside0X128;\r\n            feeGrowthBelow1X128 = feeGrowthGlobal1X128 - lower.feeGrowthOutside1X128;\r\n        }\r\n\r\n        // calculate fee growth above\r\n        uint256 feeGrowthAbove0X128;\r\n        uint256 feeGrowthAbove1X128;\r\n        if (tickCurrent < tickUpper) {\r\n            feeGrowthAbove0X128 = upper.feeGrowthOutside0X128;\r\n            feeGrowthAbove1X128 = upper.feeGrowthOutside1X128;\r\n        } else {\r\n            feeGrowthAbove0X128 = feeGrowthGlobal0X128 - upper.feeGrowthOutside0X128;\r\n            feeGrowthAbove1X128 = feeGrowthGlobal1X128 - upper.feeGrowthOutside1X128;\r\n        }\r\n\r\n        feeGrowthInside0X128 = feeGrowthGlobal0X128 - feeGrowthBelow0X128 - feeGrowthAbove0X128;\r\n        feeGrowthInside1X128 = feeGrowthGlobal1X128 - feeGrowthBelow1X128 - feeGrowthAbove1X128;\r\n    }\r\n\r\n    /// @notice Updates a tick and returns true if the tick was flipped from initialized to uninitialized, or vice versa\r\n    /// @param self The mapping containing all tick information for initialized ticks\r\n    /// @param tick The tick that will be updated\r\n    /// @param tickCurrent The current tick\r\n    /// @param liquidityDelta A new amount of liquidity to be added (subtracted) when tick is crossed from left to right (right to left)\r\n    /// @param feeGrowthGlobal0X128 The all-time global fee growth, per unit of liquidity, in token0\r\n    /// @param feeGrowthGlobal1X128 The all-time global fee growth, per unit of liquidity, in token1\r\n    /// @param secondsPerLiquidityCumulativeX128 The all-time seconds per max(1, liquidity) of the pool\r\n    /// @param tickCumulative The tick * time elapsed since the pool was first initialized\r\n    /// @param time The current block timestamp cast to a uint32\r\n    /// @param upper true for updating a position's upper tick, or false for updating a position's lower tick\r\n    /// @param maxLiquidity The maximum liquidity allocation for a single tick\r\n    /// @return flipped Whether the tick was flipped from initialized to uninitialized, or vice versa\r\n    function update(\r\n        mapping(int24 => Tick.Info) storage self,\r\n        int24 tick,\r\n        int24 tickCurrent,\r\n        int128 liquidityDelta,\r\n        uint256 feeGrowthGlobal0X128,\r\n        uint256 feeGrowthGlobal1X128,\r\n        uint160 secondsPerLiquidityCumulativeX128,\r\n        int56 tickCumulative,\r\n        uint32 time,\r\n        bool upper,\r\n        uint128 maxLiquidity,\r\n        uint192 rewardPerLiquidityCumulativeX64\r\n    ) internal returns (bool flipped) {\r\n        Tick.Info storage info = self[tick];\r\n\r\n        uint128 liquidityGrossBefore = info.liquidityGross;\r\n        uint128 liquidityGrossAfter = LiquidityMath.addDelta(liquidityGrossBefore, liquidityDelta);\r\n\r\n        require(liquidityGrossAfter <= maxLiquidity, 'LO');\r\n\r\n        flipped = (liquidityGrossAfter == 0) != (liquidityGrossBefore == 0);\r\n\r\n        if (liquidityGrossBefore == 0) {\r\n            // by convention, we assume that all growth before a tick was initialized happened _below_ the tick\r\n            if (tick <= tickCurrent) {\r\n                info.feeGrowthOutside0X128 = feeGrowthGlobal0X128;\r\n                info.feeGrowthOutside1X128 = feeGrowthGlobal1X128;\r\n                info.secondsPerLiquidityOutsideX128 = secondsPerLiquidityCumulativeX128;\r\n                info.tickCumulativeOutside = tickCumulative;\r\n                info.secondsOutside = time;\r\n                info.rewardPerLiquidityOutsideX64 = rewardPerLiquidityCumulativeX64;\r\n            }\r\n            info.initialized = true;\r\n        }\r\n\r\n        info.liquidityGross = liquidityGrossAfter;\r\n\r\n        // when the lower (upper) tick is crossed left to right (right to left), liquidity must be added (removed)\r\n        info.liquidityNet = upper\r\n            ? int256(info.liquidityNet).sub(liquidityDelta).toInt128()\r\n            : int256(info.liquidityNet).add(liquidityDelta).toInt128();\r\n    }\r\n\r\n    /// @notice Clears tick data\r\n    /// @param self The mapping containing all initialized tick information for initialized ticks\r\n    /// @param tick The tick that will be cleared\r\n    function clear(mapping(int24 => Tick.Info) storage self, int24 tick) internal {\r\n        delete self[tick];\r\n    }\r\n\r\n    /// @notice Transitions to next tick as needed by price movement\r\n    /// @param self The mapping containing all tick information for initialized ticks\r\n    /// @param tick The destination tick of the transition\r\n    /// @param feeGrowthGlobal0X128 The all-time global fee growth, per unit of liquidity, in token0\r\n    /// @param feeGrowthGlobal1X128 The all-time global fee growth, per unit of liquidity, in token1\r\n    /// @param secondsPerLiquidityCumulativeX128 The current seconds per liquidity\r\n    /// @param tickCumulative The tick * time elapsed since the pool was first initialized\r\n    /// @param time The current block.timestamp\r\n    /// @return liquidityNet The amount of liquidity added (subtracted) when tick is crossed from left to right (right to left)\r\n    function cross(\r\n        mapping(int24 => Tick.Info) storage self,\r\n        int24 tick,\r\n        uint256 feeGrowthGlobal0X128,\r\n        uint256 feeGrowthGlobal1X128,\r\n        uint160 secondsPerLiquidityCumulativeX128,\r\n        int56 tickCumulative,\r\n        uint32 time,\r\n        uint192 rewardPerLiquidityCumulativeX64\r\n    ) internal returns (int128 liquidityNet) {\r\n        Tick.Info storage info = self[tick];\r\n        info.feeGrowthOutside0X128 = feeGrowthGlobal0X128 - info.feeGrowthOutside0X128;\r\n        info.feeGrowthOutside1X128 = feeGrowthGlobal1X128 - info.feeGrowthOutside1X128;\r\n        info.secondsPerLiquidityOutsideX128 = secondsPerLiquidityCumulativeX128 - info.secondsPerLiquidityOutsideX128;\r\n        info.tickCumulativeOutside = tickCumulative - info.tickCumulativeOutside;\r\n        info.secondsOutside = time - info.secondsOutside;\r\n        info.rewardPerLiquidityOutsideX64 = rewardPerLiquidityCumulativeX64 - info.rewardPerLiquidityOutsideX64;\r\n        liquidityNet = info.liquidityNet;\r\n    }\r\n}\r\n"},"contracts/elixir-core/libraries/TickBitmap.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\r\npragma solidity >=0.7.0 <0.8.0;\r\n\r\nimport './BitMath.sol';\r\n\r\n/// @title Packed tick initialized state library\r\n/// @notice Stores a packed mapping of tick index to its initialized state\r\n/// @dev The mapping uses int16 for keys since ticks are represented as int24 and there are 256 (2^8) values per word.\r\nlibrary TickBitmap {\r\n    /// @notice Computes the position in the mapping where the initialized bit for a tick lives\r\n    /// @param tick The tick for which to compute the position\r\n    /// @return wordPos The key in the mapping containing the word in which the bit is stored\r\n    /// @return bitPos The bit position in the word where the flag is stored\r\n    function position(int24 tick) private pure returns (int16 wordPos, uint8 bitPos) {\r\n        wordPos = int16(tick >> 8);\r\n        bitPos = uint8(tick % 256);\r\n    }\r\n\r\n    /// @notice Flips the initialized state for a given tick from false to true, or vice versa\r\n    /// @param self The mapping in which to flip the tick\r\n    /// @param tick The tick to flip\r\n    /// @param tickSpacing The spacing between usable ticks\r\n    function flipTick(\r\n        mapping(int16 => uint256) storage self,\r\n        int24 tick,\r\n        int24 tickSpacing\r\n    ) internal {\r\n        require(tick % tickSpacing == 0); // ensure that the tick is spaced\r\n        (int16 wordPos, uint8 bitPos) = position(tick / tickSpacing);\r\n        uint256 mask = 1 << bitPos;\r\n        self[wordPos] ^= mask;\r\n    }\r\n\r\n    /// @notice Returns the next initialized tick contained in the same word (or adjacent word) as the tick that is either\r\n    /// to the left (less than or equal to) or right (greater than) of the given tick\r\n    /// @param self The mapping in which to compute the next initialized tick\r\n    /// @param tick The starting tick\r\n    /// @param tickSpacing The spacing between usable ticks\r\n    /// @param lte Whether to search for the next initialized tick to the left (less than or equal to the starting tick)\r\n    /// @return next The next initialized or uninitialized tick up to 256 ticks away from the current tick\r\n    /// @return initialized Whether the next tick is initialized, as the function only searches within up to 256 ticks\r\n    function nextInitializedTickWithinOneWord(\r\n        mapping(int16 => uint256) storage self,\r\n        int24 tick,\r\n        int24 tickSpacing,\r\n        bool lte\r\n    ) internal view returns (int24 next, bool initialized) {\r\n        int24 compressed = tick / tickSpacing;\r\n        if (tick < 0 && tick % tickSpacing != 0) compressed--; // round towards negative infinity\r\n\r\n        if (lte) {\r\n            (int16 wordPos, uint8 bitPos) = position(compressed);\r\n            // all the 1s at or to the right of the current bitPos\r\n            uint256 mask = (1 << bitPos) - 1 + (1 << bitPos);\r\n            uint256 masked = self[wordPos] & mask;\r\n\r\n            // if there are no initialized ticks to the right of or at the current tick, return rightmost in the word\r\n            initialized = masked != 0;\r\n            // overflow/underflow is possible, but prevented externally by limiting both tickSpacing and tick\r\n            next = initialized\r\n                ? (compressed - int24(bitPos - BitMath.mostSignificantBit(masked))) * tickSpacing\r\n                : (compressed - int24(bitPos)) * tickSpacing;\r\n        } else {\r\n            // start from the word of the next tick, since the current tick state doesn't matter\r\n            (int16 wordPos, uint8 bitPos) = position(compressed + 1);\r\n            // all the 1s at or to the left of the bitPos\r\n            uint256 mask = ~((1 << bitPos) - 1);\r\n            uint256 masked = self[wordPos] & mask;\r\n\r\n            // if there are no initialized ticks to the left of the current tick, return leftmost in the word\r\n            initialized = masked != 0;\r\n            // overflow/underflow is possible, but prevented externally by limiting both tickSpacing and tick\r\n            next = initialized\r\n                ? (compressed + 1 + int24(BitMath.leastSignificantBit(masked) - bitPos)) * tickSpacing\r\n                : (compressed + 1 + int24(type(uint8).max - bitPos)) * tickSpacing;\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-core/libraries/TickMath.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0 <0.8.0;\r\n\r\n/// @title Math library for computing sqrt prices from ticks and vice versa\r\n/// @notice Computes sqrt price for ticks of size 1.0001, i.e. sqrt(1.0001^tick) as fixed point Q64.96 numbers. Supports\r\n/// prices between 2**-128 and 2**128\r\nlibrary TickMath {\r\n    /// @dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128\r\n    int24 internal constant MIN_TICK = -887272;\r\n    /// @dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128\r\n    int24 internal constant MAX_TICK = -MIN_TICK;\r\n\r\n    /// @dev The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK)\r\n    uint160 internal constant MIN_SQRT_RATIO = 4295128739;\r\n    /// @dev The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK)\r\n    uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;\r\n\r\n    /// @notice Calculates sqrt(1.0001^tick) * 2^96\r\n    /// @dev Throws if |tick| > max tick\r\n    /// @param tick The input tick for the above formula\r\n    /// @return sqrtPriceX96 A Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\r\n    /// at the given tick\r\n    function getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {\r\n        uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));\r\n        require(absTick <= uint256(MAX_TICK), 'T');\r\n\r\n        uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;\r\n        if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;\r\n        if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;\r\n        if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;\r\n        if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;\r\n        if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;\r\n        if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;\r\n        if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;\r\n        if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;\r\n        if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;\r\n        if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;\r\n        if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;\r\n        if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;\r\n        if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;\r\n        if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;\r\n        if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;\r\n        if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;\r\n        if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;\r\n        if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;\r\n        if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;\r\n\r\n        if (tick > 0) ratio = type(uint256).max / ratio;\r\n\r\n        // this divides by 1<<32 rounding up to go from a Q128.128 to a Q128.96.\r\n        // we then downcast because we know the result always fits within 160 bits due to our tick input constraint\r\n        // we round up in the division so getTickAtSqrtRatio of the output price is always consistent\r\n        sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));\r\n    }\r\n\r\n    /// @notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio\r\n    /// @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\r\n    /// ever return.\r\n    /// @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96\r\n    /// @return tick The greatest tick for which the ratio is less than or equal to the input ratio\r\n    function getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {\r\n        // second inequality must be < because the price can never reach the price at the max tick\r\n        require(sqrtPriceX96 >= MIN_SQRT_RATIO && sqrtPriceX96 < MAX_SQRT_RATIO, 'R');\r\n        uint256 ratio = uint256(sqrtPriceX96) << 32;\r\n\r\n        uint256 r = ratio;\r\n        uint256 msb = 0;\r\n\r\n        assembly {\r\n            let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\r\n            msb := or(msb, f)\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))\r\n            msb := or(msb, f)\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            let f := shl(5, gt(r, 0xFFFFFFFF))\r\n            msb := or(msb, f)\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            let f := shl(4, gt(r, 0xFFFF))\r\n            msb := or(msb, f)\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            let f := shl(3, gt(r, 0xFF))\r\n            msb := or(msb, f)\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            let f := shl(2, gt(r, 0xF))\r\n            msb := or(msb, f)\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            let f := shl(1, gt(r, 0x3))\r\n            msb := or(msb, f)\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            let f := gt(r, 0x1)\r\n            msb := or(msb, f)\r\n        }\r\n\r\n        if (msb >= 128) r = ratio >> (msb - 127);\r\n        else r = ratio << (127 - msb);\r\n\r\n        int256 log_2 = (int256(msb) - 128) << 64;\r\n\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(63, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(62, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(61, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(60, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(59, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(58, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(57, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(56, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(55, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(54, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(53, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(52, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(51, f))\r\n            r := shr(f, r)\r\n        }\r\n        assembly {\r\n            r := shr(127, mul(r, r))\r\n            let f := shr(128, r)\r\n            log_2 := or(log_2, shl(50, f))\r\n        }\r\n\r\n        int256 log_sqrt10001 = log_2 * 255738958999603826347141; // 128.128 number\r\n\r\n        int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);\r\n        int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);\r\n\r\n        tick = tickLow == tickHi ? tickLow : getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;\r\n    }\r\n}\r\n"},"contracts/elixir-core/libraries/TransferHelper.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.6.0;\r\n\r\nimport '../interfaces/IERC20Minimal.sol';\r\n\r\n/// @title TransferHelper\r\n/// @notice Contains helper methods for interacting with ERC20 tokens that do not consistently return true/false\r\nlibrary TransferHelper {\r\n    /// @notice Transfers tokens from msg.sender to a recipient\r\n    /// @dev Calls transfer on token contract, errors with TF if transfer fails\r\n    /// @param token The contract address of the token which will be transferred\r\n    /// @param to The recipient of the transfer\r\n    /// @param value The value of the transfer\r\n    function safeTransfer(\r\n        address token,\r\n        address to,\r\n        uint256 value\r\n    ) internal {\r\n        (bool success, bytes memory data) = token.call(\r\n            abi.encodeWithSelector(IERC20Minimal.transfer.selector, to, value)\r\n        );\r\n        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TF');\r\n    }\r\n}\r\n"},"contracts/elixir-core/libraries/UnsafeMath.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Math functions that do not check inputs or outputs\r\n/// @notice Contains methods that perform common math functions but do not do any overflow or underflow checks\r\nlibrary UnsafeMath {\r\n    /// @notice Returns ceil(x / y)\r\n    /// @dev division by 0 has unspecified behavior, and must be checked externally\r\n    /// @param x The dividend\r\n    /// @param y The divisor\r\n    /// @return z The quotient, ceil(x / y)\r\n    function divRoundingUp(uint256 x, uint256 y) internal pure returns (uint256 z) {\r\n        assembly {\r\n            z := add(div(x, y), gt(mod(x, y), 0))\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/BitMathEchidnaTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../libraries/BitMath.sol';\r\n\r\ncontract BitMathEchidnaTest {\r\n    function mostSignificantBitInvariant(uint256 input) external pure {\r\n        uint8 msb = BitMath.mostSignificantBit(input);\r\n        assert(input >= (uint256(2)**msb));\r\n        assert(msb == 255 || input < uint256(2)**(msb + 1));\r\n    }\r\n\r\n    function leastSignificantBitInvariant(uint256 input) external pure {\r\n        uint8 lsb = BitMath.leastSignificantBit(input);\r\n        assert(input & (uint256(2)**lsb) != 0);\r\n        assert(input & (uint256(2)**lsb - 1) == 0);\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/BitMathTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../libraries/BitMath.sol';\r\n\r\ncontract BitMathTest {\r\n    function mostSignificantBit(uint256 x) external pure returns (uint8 r) {\r\n        return BitMath.mostSignificantBit(x);\r\n    }\r\n\r\n    function getGasCostOfMostSignificantBit(uint256 x) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        BitMath.mostSignificantBit(x);\r\n        return gasBefore - gasleft();\r\n    }\r\n\r\n    function leastSignificantBit(uint256 x) external pure returns (uint8 r) {\r\n        return BitMath.leastSignificantBit(x);\r\n    }\r\n\r\n    function getGasCostOfLeastSignificantBit(uint256 x) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        BitMath.leastSignificantBit(x);\r\n        return gasBefore - gasleft();\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/ElixirPoolSwapTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport \"../interfaces/IERC20Minimal.sol\";\r\n\r\nimport \"../interfaces/callback/IElixirSwapCallback.sol\";\r\nimport \"../interfaces/IElixirPool.sol\";\r\n\r\ncontract ElixirPoolSwapTest is IElixirSwapCallback {\r\n    int256 private _amount0Delta;\r\n    int256 private _amount1Delta;\r\n\r\n    function getSwapResult(\r\n        address pool,\r\n        bool zeroForOne,\r\n        int256 amountSpecified,\r\n        uint160 sqrtPriceLimitX96\r\n    )\r\n        external\r\n        returns (\r\n            int256 amount0Delta,\r\n            int256 amount1Delta,\r\n            uint160 nextSqrtRatio\r\n        )\r\n    {\r\n        (amount0Delta, amount1Delta) = IElixirPool(pool).swap(\r\n            address(0),\r\n            zeroForOne,\r\n            amountSpecified,\r\n            sqrtPriceLimitX96,\r\n            abi.encode(msg.sender)\r\n        );\r\n\r\n        (nextSqrtRatio, , , , , , ) = IElixirPool(pool).slot0();\r\n    }\r\n\r\n    function elixirSwapCallback(\r\n        int256 amount0Delta,\r\n        int256 amount1Delta,\r\n        bytes calldata data\r\n    ) external override {\r\n        address sender = abi.decode(data, (address));\r\n\r\n        if (amount0Delta > 0) {\r\n            IERC20Minimal(IElixirPool(msg.sender).token0()).transferFrom(\r\n                sender,\r\n                msg.sender,\r\n                uint256(amount0Delta)\r\n            );\r\n        } else if (amount1Delta > 0) {\r\n            IERC20Minimal(IElixirPool(msg.sender).token1()).transferFrom(\r\n                sender,\r\n                msg.sender,\r\n                uint256(amount1Delta)\r\n            );\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/FullMathEchidnaTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../libraries/FullMath.sol';\r\n\r\ncontract FullMathEchidnaTest {\r\n    function checkMulDivRounding(\r\n        uint256 x,\r\n        uint256 y,\r\n        uint256 d\r\n    ) external pure {\r\n        require(d > 0);\r\n\r\n        uint256 ceiled = FullMath.mulDivRoundingUp(x, y, d);\r\n        uint256 floored = FullMath.mulDiv(x, y, d);\r\n\r\n        if (mulmod(x, y, d) > 0) {\r\n            assert(ceiled - floored == 1);\r\n        } else {\r\n            assert(ceiled == floored);\r\n        }\r\n    }\r\n\r\n    function checkMulDiv(\r\n        uint256 x,\r\n        uint256 y,\r\n        uint256 d\r\n    ) external pure {\r\n        require(d > 0);\r\n        uint256 z = FullMath.mulDiv(x, y, d);\r\n        if (x == 0 || y == 0) {\r\n            assert(z == 0);\r\n            return;\r\n        }\r\n\r\n        // recompute x and y via mulDiv of the result of floor(x*y/d), should always be less than original inputs by < d\r\n        uint256 x2 = FullMath.mulDiv(z, d, y);\r\n        uint256 y2 = FullMath.mulDiv(z, d, x);\r\n        assert(x2 <= x);\r\n        assert(y2 <= y);\r\n\r\n        assert(x - x2 < d);\r\n        assert(y - y2 < d);\r\n    }\r\n\r\n    function checkMulDivRoundingUp(\r\n        uint256 x,\r\n        uint256 y,\r\n        uint256 d\r\n    ) external pure {\r\n        require(d > 0);\r\n        uint256 z = FullMath.mulDivRoundingUp(x, y, d);\r\n        if (x == 0 || y == 0) {\r\n            assert(z == 0);\r\n            return;\r\n        }\r\n\r\n        // recompute x and y via mulDiv of the result of floor(x*y/d), should always be less than original inputs by < d\r\n        uint256 x2 = FullMath.mulDiv(z, d, y);\r\n        uint256 y2 = FullMath.mulDiv(z, d, x);\r\n        assert(x2 >= x);\r\n        assert(y2 >= y);\r\n\r\n        assert(x2 - x < d);\r\n        assert(y2 - y < d);\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/FullMathTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../libraries/FullMath.sol';\r\n\r\ncontract FullMathTest {\r\n    function mulDiv(\r\n        uint256 x,\r\n        uint256 y,\r\n        uint256 z\r\n    ) external pure returns (uint256) {\r\n        return FullMath.mulDiv(x, y, z);\r\n    }\r\n\r\n    function mulDivRoundingUp(\r\n        uint256 x,\r\n        uint256 y,\r\n        uint256 z\r\n    ) external pure returns (uint256) {\r\n        return FullMath.mulDivRoundingUp(x, y, z);\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/LiquidityMathTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../libraries/LiquidityMath.sol';\r\n\r\ncontract LiquidityMathTest {\r\n    function addDelta(uint128 x, int128 y) external pure returns (uint128 z) {\r\n        return LiquidityMath.addDelta(x, y);\r\n    }\r\n\r\n    function getGasCostOfAddDelta(uint128 x, int128 y) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        LiquidityMath.addDelta(x, y);\r\n        return gasBefore - gasleft();\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/LowGasSafeMathEchidnaTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../libraries/LowGasSafeMath.sol';\r\n\r\ncontract LowGasSafeMathEchidnaTest {\r\n    function checkAdd(uint256 x, uint256 y) external pure {\r\n        uint256 z = LowGasSafeMath.add(x, y);\r\n        assert(z == x + y);\r\n        assert(z >= x && z >= y);\r\n    }\r\n\r\n    function checkSub(uint256 x, uint256 y) external pure {\r\n        uint256 z = LowGasSafeMath.sub(x, y);\r\n        assert(z == x - y);\r\n        assert(z <= x);\r\n    }\r\n\r\n    function checkMul(uint256 x, uint256 y) external pure {\r\n        uint256 z = LowGasSafeMath.mul(x, y);\r\n        assert(z == x * y);\r\n        assert(x == 0 || y == 0 || (z >= x && z >= y));\r\n    }\r\n\r\n    function checkAddi(int256 x, int256 y) external pure {\r\n        int256 z = LowGasSafeMath.add(x, y);\r\n        assert(z == x + y);\r\n        assert(y < 0 ? z < x : z >= x);\r\n    }\r\n\r\n    function checkSubi(int256 x, int256 y) external pure {\r\n        int256 z = LowGasSafeMath.sub(x, y);\r\n        assert(z == x - y);\r\n        assert(y < 0 ? z > x : z <= x);\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/MockTimeElixirPool.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport \"../ElixirPool.sol\";\r\n\r\n// used for testing time dependent behavior\r\ncontract MockTimeElixirPool is ElixirPool {\r\n    // Monday, October 5, 2020 9:00:00 AM GMT-05:00\r\n    uint256 public time = 1601906400;\r\n\r\n    function setFeeGrowthGlobal0X128(uint256 _feeGrowthGlobal0X128) external {\r\n        feeGrowthGlobal0X128 = _feeGrowthGlobal0X128;\r\n    }\r\n\r\n    function setFeeGrowthGlobal1X128(uint256 _feeGrowthGlobal1X128) external {\r\n        feeGrowthGlobal1X128 = _feeGrowthGlobal1X128;\r\n    }\r\n\r\n    function advanceTime(uint256 by) external {\r\n        time += by;\r\n    }\r\n\r\n    function setFactory(address factory_) external {\r\n        factory = factory_;\r\n    }\r\n\r\n    function setTime(uint256 time_) external {\r\n        time = time_;\r\n    }\r\n\r\n    function blockTimestamp() external view returns (uint32) {\r\n        return _blockTimestamp();\r\n    }\r\n\r\n    function _blockTimestamp() internal view override returns (uint32) {\r\n        return uint32(time);\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/MockTimeElixirPoolDeployer.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport \"openzeppelin-contracts-solc-0.7/proxy/Clones.sol\";\r\n\r\nimport \"../interfaces/IElixirPool.sol\";\r\n\r\nimport \"./MockTimeElixirPool.sol\";\r\n\r\ncontract MockTimeElixirPoolDeployer {\r\n    address public immutable implementation;\r\n\r\n    // struct Parameters {\r\n    //     address factory;\r\n    //     address token0;\r\n    //     address token1;\r\n    //     uint24 fee;\r\n    //     int24 tickSpacing;\r\n    // }\r\n\r\n    // Parameters public parameters;\r\n\r\n    event PoolDeployed(address pool);\r\n\r\n    constructor(address _implementation) {\r\n        implementation = _implementation;\r\n    }\r\n\r\n    function deploy(\r\n        address factory,\r\n        address token0,\r\n        address token1,\r\n        uint24 fee,\r\n        int24 tickSpacing\r\n    ) external returns (address pool) {\r\n        // parameters = Parameters({\r\n        //     factory: factory,\r\n        //     token0: token0,\r\n        //     token1: token1,\r\n        //     fee: fee,\r\n        //     tickSpacing: tickSpacing\r\n        // });\r\n        pool = Clones.cloneDeterministic(\r\n            implementation,\r\n            keccak256(abi.encode(token0, token1, fee))\r\n        );\r\n        IElixirPool(pool).initialize(token0, token1, fee, tickSpacing);\r\n        MockTimeElixirPool(pool).setFactory(factory);\r\n        emit PoolDeployed(pool);\r\n        // delete parameters;\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/OracleEchidnaTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\npragma abicoder v2;\r\n\r\nimport \"./OracleTest.sol\";\r\n\r\ncontract OracleEchidnaTest {\r\n    OracleTest private oracle;\r\n\r\n    bool private initialized;\r\n    uint32 private timePassed;\r\n\r\n    constructor() {\r\n        oracle = new OracleTest();\r\n    }\r\n\r\n    function initialize(uint32 time, int24 tick, uint128 liquidity) external {\r\n        oracle.initialize(\r\n            OracleTest.InitializeParams({\r\n                time: time,\r\n                tick: tick,\r\n                liquidity: liquidity\r\n            })\r\n        );\r\n        initialized = true;\r\n    }\r\n\r\n    function limitTimePassed(uint32 by) private {\r\n        require(timePassed + by >= timePassed);\r\n        timePassed += by;\r\n    }\r\n\r\n    function advanceTime(uint32 by) public {\r\n        limitTimePassed(by);\r\n        oracle.advanceTime(by);\r\n    }\r\n\r\n    // write an observation, then change tick and liquidity\r\n    function update(\r\n        uint32 advanceTimeBy,\r\n        int24 tick,\r\n        uint128 liquidity\r\n    ) external {\r\n        limitTimePassed(advanceTimeBy);\r\n        oracle.update(\r\n            OracleTest.UpdateParams({\r\n                advanceTimeBy: advanceTimeBy,\r\n                tick: tick,\r\n                liquidity: liquidity\r\n            })\r\n        );\r\n    }\r\n\r\n    function grow(uint16 cardinality) external {\r\n        oracle.grow(cardinality);\r\n    }\r\n\r\n    function checkTimeWeightedResultAssertions(\r\n        uint32 secondsAgo0,\r\n        uint32 secondsAgo1\r\n    ) private view {\r\n        require(secondsAgo0 != secondsAgo1);\r\n        require(initialized);\r\n        // secondsAgo0 should be the larger one\r\n        if (secondsAgo0 < secondsAgo1)\r\n            (secondsAgo0, secondsAgo1) = (secondsAgo1, secondsAgo0);\r\n\r\n        uint32 timeElapsed = secondsAgo0 - secondsAgo1;\r\n\r\n        uint32[] memory secondsAgos = new uint32[](2);\r\n        secondsAgos[0] = secondsAgo0;\r\n        secondsAgos[1] = secondsAgo1;\r\n\r\n        (\r\n            int56[] memory tickCumulatives,\r\n            uint160[] memory secondsPerLiquidityCumulativeX128s,\r\n            uint192[] memory rewardPerLiquidityCumulativeX64s\r\n        ) = oracle.observe(secondsAgos);\r\n        int56 timeWeightedTick = (tickCumulatives[1] - tickCumulatives[0]) /\r\n            timeElapsed;\r\n        uint256 timeWeightedHarmonicMeanLiquidity = (uint256(timeElapsed) *\r\n            type(uint160).max) /\r\n            (uint256(\r\n                secondsPerLiquidityCumulativeX128s[1] -\r\n                    secondsPerLiquidityCumulativeX128s[0]\r\n            ) << 32);\r\n        assert(timeWeightedHarmonicMeanLiquidity <= type(uint128).max);\r\n        assert(timeWeightedTick <= type(int24).max);\r\n        assert(timeWeightedTick >= type(int24).min);\r\n    }\r\n\r\n    function echidna_indexAlwaysLtCardinality() external view returns (bool) {\r\n        return oracle.index() < oracle.cardinality() || !initialized;\r\n    }\r\n\r\n    function echidna_AlwaysInitialized() external view returns (bool) {\r\n        (, , , bool isInitialized, ) = oracle.observations(0);\r\n        return oracle.cardinality() == 0 || isInitialized;\r\n    }\r\n\r\n    function echidna_cardinalityAlwaysLteNext() external view returns (bool) {\r\n        return oracle.cardinality() <= oracle.cardinalityNext();\r\n    }\r\n\r\n    function echidna_canAlwaysObserve0IfInitialized()\r\n        external\r\n        view\r\n        returns (bool)\r\n    {\r\n        if (!initialized) {\r\n            return true;\r\n        }\r\n        uint32[] memory arr = new uint32[](1);\r\n        arr[0] = 0;\r\n        (bool success, ) = address(oracle).staticcall(\r\n            abi.encodeWithSelector(OracleTest.observe.selector, arr)\r\n        );\r\n        return success;\r\n    }\r\n\r\n    function checkTwoAdjacentObservationsTickCumulativeModTimeElapsedAlways0(\r\n        uint16 index\r\n    ) external view {\r\n        uint16 cardinality = oracle.cardinality();\r\n        // check that the observations are initialized, and that the index is not the oldest observation\r\n        require(\r\n            index < cardinality && index != (oracle.index() + 1) % cardinality\r\n        );\r\n\r\n        (\r\n            uint32 blockTimestamp0,\r\n            int56 tickCumulative0,\r\n            ,\r\n            bool initialized0,\r\n\r\n        ) = oracle.observations(index == 0 ? cardinality - 1 : index - 1);\r\n        (\r\n            uint32 blockTimestamp1,\r\n            int56 tickCumulative1,\r\n            ,\r\n            bool initialized1,\r\n\r\n        ) = oracle.observations(index);\r\n\r\n        require(initialized0);\r\n        require(initialized1);\r\n\r\n        uint32 timeElapsed = blockTimestamp1 - blockTimestamp0;\r\n        assert(timeElapsed > 0);\r\n        assert((tickCumulative1 - tickCumulative0) % timeElapsed == 0);\r\n    }\r\n\r\n    function checkTimeWeightedAveragesAlwaysFitsType(\r\n        uint32 secondsAgo\r\n    ) external view {\r\n        require(initialized);\r\n        require(secondsAgo > 0);\r\n        uint32[] memory secondsAgos = new uint32[](2);\r\n        secondsAgos[0] = secondsAgo;\r\n        secondsAgos[1] = 0;\r\n        (\r\n            int56[] memory tickCumulatives,\r\n            uint160[] memory secondsPerLiquidityCumulativeX128s,\r\n            uint192[] memory rewardPerLiquidityCumulativeX64s\r\n        ) = oracle.observe(secondsAgos);\r\n\r\n        // compute the time weighted tick, rounded towards negative infinity\r\n        int56 numerator = tickCumulatives[1] - tickCumulatives[0];\r\n        int56 timeWeightedTick = numerator / int56(secondsAgo);\r\n        if (numerator < 0 && numerator % int56(secondsAgo) != 0) {\r\n            timeWeightedTick--;\r\n        }\r\n\r\n        // the time weighted averages fit in their respective accumulated types\r\n        assert(\r\n            timeWeightedTick <= type(int24).max &&\r\n                timeWeightedTick >= type(int24).min\r\n        );\r\n\r\n        uint256 timeWeightedHarmonicMeanLiquidity = (uint256(secondsAgo) *\r\n            type(uint160).max) /\r\n            (uint256(\r\n                secondsPerLiquidityCumulativeX128s[1] -\r\n                    secondsPerLiquidityCumulativeX128s[0]\r\n            ) << 32);\r\n        assert(timeWeightedHarmonicMeanLiquidity <= type(uint128).max);\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/OracleTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\npragma abicoder v2;\r\n\r\nimport \"../libraries/Oracle.sol\";\r\n\r\ncontract OracleTest {\r\n    using Oracle for Oracle.Observation[65535];\r\n\r\n    Oracle.Observation[65535] public observations;\r\n\r\n    uint32 public time;\r\n    int24 public tick;\r\n    uint128 public liquidity;\r\n    uint16 public index;\r\n    uint16 public cardinality;\r\n    uint16 public cardinalityNext;\r\n    uint144 public rewardPerSecondX48;\r\n    uint32 public rewardRateEffectiveUntil;\r\n\r\n    struct InitializeParams {\r\n        uint32 time;\r\n        int24 tick;\r\n        uint128 liquidity;\r\n    }\r\n\r\n    function initialize(InitializeParams calldata params) external {\r\n        require(cardinality == 0, \"already initialized\");\r\n        time = params.time;\r\n        tick = params.tick;\r\n        liquidity = params.liquidity;\r\n        (cardinality, cardinalityNext) = observations.initialize(params.time);\r\n    }\r\n\r\n    function advanceTime(uint32 by) public {\r\n        time += by;\r\n    }\r\n\r\n    struct UpdateParams {\r\n        uint32 advanceTimeBy;\r\n        int24 tick;\r\n        uint128 liquidity;\r\n    }\r\n\r\n    // write an observation, then change tick and liquidity\r\n    function update(UpdateParams calldata params) external {\r\n        advanceTime(params.advanceTimeBy);\r\n        (index, cardinality) = observations.write(\r\n            index,\r\n            time,\r\n            tick,\r\n            liquidity,\r\n            rewardPerSecondX48,\r\n            rewardRateEffectiveUntil,\r\n            cardinality,\r\n            cardinalityNext\r\n        );\r\n        tick = params.tick;\r\n        liquidity = params.liquidity;\r\n    }\r\n\r\n    function batchUpdate(UpdateParams[] calldata params) external {\r\n        // sload everything\r\n        int24 _tick = tick;\r\n        uint128 _liquidity = liquidity;\r\n        uint16 _index = index;\r\n        uint16 _cardinality = cardinality;\r\n        uint16 _cardinalityNext = cardinalityNext;\r\n        uint32 _time = time;\r\n        uint144 _rewardPerSecondX48 = rewardPerSecondX48;\r\n        uint32 _rewardRateEffectiveUntil = rewardRateEffectiveUntil;\r\n\r\n        for (uint256 i = 0; i < params.length; i++) {\r\n            _time += params[i].advanceTimeBy;\r\n            (_index, _cardinality) = observations.write(\r\n                _index,\r\n                _time,\r\n                _tick,\r\n                _liquidity,\r\n                _rewardPerSecondX48,\r\n                _rewardRateEffectiveUntil,\r\n                _cardinality,\r\n                _cardinalityNext\r\n            );\r\n            _tick = params[i].tick;\r\n            _liquidity = params[i].liquidity;\r\n        }\r\n\r\n        // sstore everything\r\n        tick = _tick;\r\n        liquidity = _liquidity;\r\n        index = _index;\r\n        cardinality = _cardinality;\r\n        time = _time;\r\n    }\r\n\r\n    function grow(uint16 _cardinalityNext) external {\r\n        cardinalityNext = observations.grow(cardinalityNext, _cardinalityNext);\r\n    }\r\n\r\n    function observe(\r\n        uint32[] calldata secondsAgos\r\n    )\r\n        external\r\n        view\r\n        returns (\r\n            int56[] memory tickCumulatives,\r\n            uint160[] memory secondsPerLiquidityCumulativeX128s,\r\n            uint192[] memory rewardPerLiquidityCumulativeX64s\r\n        )\r\n    {\r\n        return\r\n            observations.observe(\r\n                time,\r\n                secondsAgos,\r\n                tick,\r\n                index,\r\n                liquidity,\r\n                rewardPerSecondX48,\r\n                rewardRateEffectiveUntil,\r\n                cardinality\r\n            );\r\n    }\r\n\r\n    function getGasCostOfObserve(\r\n        uint32[] calldata secondsAgos\r\n    ) external view returns (uint256) {\r\n        (uint32 _time, int24 _tick, uint128 _liquidity, uint16 _index) = (\r\n            time,\r\n            tick,\r\n            liquidity,\r\n            index\r\n        );\r\n        uint256 gasBefore = gasleft();\r\n        observations.observe(\r\n            _time,\r\n            secondsAgos,\r\n            _tick,\r\n            _index,\r\n            _liquidity,\r\n            rewardPerSecondX48,\r\n            rewardRateEffectiveUntil,\r\n            cardinality\r\n        );\r\n        return gasBefore - gasleft();\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/SqrtPriceMathEchidnaTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../libraries/FullMath.sol';\r\nimport '../libraries/SqrtPriceMath.sol';\r\nimport '../libraries/FixedPoint96.sol';\r\n\r\ncontract SqrtPriceMathEchidnaTest {\r\n    function mulDivRoundingUpInvariants(\r\n        uint256 x,\r\n        uint256 y,\r\n        uint256 z\r\n    ) external pure {\r\n        require(z > 0);\r\n        uint256 notRoundedUp = FullMath.mulDiv(x, y, z);\r\n        uint256 roundedUp = FullMath.mulDivRoundingUp(x, y, z);\r\n        assert(roundedUp >= notRoundedUp);\r\n        assert(roundedUp - notRoundedUp < 2);\r\n        if (roundedUp - notRoundedUp == 1) {\r\n            assert(mulmod(x, y, z) > 0);\r\n        } else {\r\n            assert(mulmod(x, y, z) == 0);\r\n        }\r\n    }\r\n\r\n    function getNextSqrtPriceFromInputInvariants(\r\n        uint160 sqrtP,\r\n        uint128 liquidity,\r\n        uint256 amountIn,\r\n        bool zeroForOne\r\n    ) external pure {\r\n        uint160 sqrtQ = SqrtPriceMath.getNextSqrtPriceFromInput(sqrtP, liquidity, amountIn, zeroForOne);\r\n\r\n        if (zeroForOne) {\r\n            assert(sqrtQ <= sqrtP);\r\n            assert(amountIn >= SqrtPriceMath.getAmount0Delta(sqrtQ, sqrtP, liquidity, true));\r\n        } else {\r\n            assert(sqrtQ >= sqrtP);\r\n            assert(amountIn >= SqrtPriceMath.getAmount1Delta(sqrtP, sqrtQ, liquidity, true));\r\n        }\r\n    }\r\n\r\n    function getNextSqrtPriceFromOutputInvariants(\r\n        uint160 sqrtP,\r\n        uint128 liquidity,\r\n        uint256 amountOut,\r\n        bool zeroForOne\r\n    ) external pure {\r\n        uint160 sqrtQ = SqrtPriceMath.getNextSqrtPriceFromOutput(sqrtP, liquidity, amountOut, zeroForOne);\r\n\r\n        if (zeroForOne) {\r\n            assert(sqrtQ <= sqrtP);\r\n            assert(amountOut <= SqrtPriceMath.getAmount1Delta(sqrtQ, sqrtP, liquidity, false));\r\n        } else {\r\n            assert(sqrtQ > 0); // this has to be true, otherwise we need another require\r\n            assert(sqrtQ >= sqrtP);\r\n            assert(amountOut <= SqrtPriceMath.getAmount0Delta(sqrtP, sqrtQ, liquidity, false));\r\n        }\r\n    }\r\n\r\n    function getNextSqrtPriceFromAmount0RoundingUpInvariants(\r\n        uint160 sqrtPX96,\r\n        uint128 liquidity,\r\n        uint256 amount,\r\n        bool add\r\n    ) external pure {\r\n        require(sqrtPX96 > 0);\r\n        require(liquidity > 0);\r\n        uint160 sqrtQX96 = SqrtPriceMath.getNextSqrtPriceFromAmount0RoundingUp(sqrtPX96, liquidity, amount, add);\r\n\r\n        if (add) {\r\n            assert(sqrtQX96 <= sqrtPX96);\r\n        } else {\r\n            assert(sqrtQX96 >= sqrtPX96);\r\n        }\r\n\r\n        if (amount == 0) {\r\n            assert(sqrtPX96 == sqrtQX96);\r\n        }\r\n    }\r\n\r\n    function getNextSqrtPriceFromAmount1RoundingDownInvariants(\r\n        uint160 sqrtPX96,\r\n        uint128 liquidity,\r\n        uint256 amount,\r\n        bool add\r\n    ) external pure {\r\n        require(sqrtPX96 > 0);\r\n        require(liquidity > 0);\r\n        uint160 sqrtQX96 = SqrtPriceMath.getNextSqrtPriceFromAmount1RoundingDown(sqrtPX96, liquidity, amount, add);\r\n\r\n        if (add) {\r\n            assert(sqrtQX96 >= sqrtPX96);\r\n        } else {\r\n            assert(sqrtQX96 <= sqrtPX96);\r\n        }\r\n\r\n        if (amount == 0) {\r\n            assert(sqrtPX96 == sqrtQX96);\r\n        }\r\n    }\r\n\r\n    function getAmount0DeltaInvariants(\r\n        uint160 sqrtP,\r\n        uint160 sqrtQ,\r\n        uint128 liquidity\r\n    ) external pure {\r\n        require(sqrtP > 0 && sqrtQ > 0);\r\n\r\n        uint256 amount0Down = SqrtPriceMath.getAmount0Delta(sqrtQ, sqrtP, liquidity, false);\r\n        assert(amount0Down == SqrtPriceMath.getAmount0Delta(sqrtP, sqrtQ, liquidity, false));\r\n\r\n        uint256 amount0Up = SqrtPriceMath.getAmount0Delta(sqrtQ, sqrtP, liquidity, true);\r\n        assert(amount0Up == SqrtPriceMath.getAmount0Delta(sqrtP, sqrtQ, liquidity, true));\r\n\r\n        assert(amount0Down <= amount0Up);\r\n        // diff is 0 or 1\r\n        assert(amount0Up - amount0Down < 2);\r\n    }\r\n\r\n    // ensure that chained division is always equal to the full-precision case for\r\n    // liquidity * (sqrt(P) - sqrt(Q)) / (sqrt(P) * sqrt(Q))\r\n    function getAmount0DeltaEquivalency(\r\n        uint160 sqrtP,\r\n        uint160 sqrtQ,\r\n        uint128 liquidity,\r\n        bool roundUp\r\n    ) external pure {\r\n        require(sqrtP >= sqrtQ);\r\n        require(sqrtP > 0 && sqrtQ > 0);\r\n        require((sqrtP * sqrtQ) / sqrtP == sqrtQ);\r\n\r\n        uint256 numerator1 = uint256(liquidity) << FixedPoint96.RESOLUTION;\r\n        uint256 numerator2 = sqrtP - sqrtQ;\r\n        uint256 denominator = uint256(sqrtP) * sqrtQ;\r\n\r\n        uint256 safeResult =\r\n            roundUp\r\n                ? FullMath.mulDivRoundingUp(numerator1, numerator2, denominator)\r\n                : FullMath.mulDiv(numerator1, numerator2, denominator);\r\n        uint256 fullResult = SqrtPriceMath.getAmount0Delta(sqrtQ, sqrtP, liquidity, roundUp);\r\n\r\n        assert(safeResult == fullResult);\r\n    }\r\n\r\n    function getAmount1DeltaInvariants(\r\n        uint160 sqrtP,\r\n        uint160 sqrtQ,\r\n        uint128 liquidity\r\n    ) external pure {\r\n        require(sqrtP > 0 && sqrtQ > 0);\r\n\r\n        uint256 amount1Down = SqrtPriceMath.getAmount1Delta(sqrtP, sqrtQ, liquidity, false);\r\n        assert(amount1Down == SqrtPriceMath.getAmount1Delta(sqrtQ, sqrtP, liquidity, false));\r\n\r\n        uint256 amount1Up = SqrtPriceMath.getAmount1Delta(sqrtP, sqrtQ, liquidity, true);\r\n        assert(amount1Up == SqrtPriceMath.getAmount1Delta(sqrtQ, sqrtP, liquidity, true));\r\n\r\n        assert(amount1Down <= amount1Up);\r\n        // diff is 0 or 1\r\n        assert(amount1Up - amount1Down < 2);\r\n    }\r\n\r\n    function getAmount0DeltaSignedInvariants(\r\n        uint160 sqrtP,\r\n        uint160 sqrtQ,\r\n        int128 liquidity\r\n    ) external pure {\r\n        require(sqrtP > 0 && sqrtQ > 0);\r\n\r\n        int256 amount0 = SqrtPriceMath.getAmount0Delta(sqrtQ, sqrtP, liquidity);\r\n        if (liquidity < 0) assert(amount0 <= 0);\r\n        if (liquidity > 0) {\r\n            if (sqrtP == sqrtQ) assert(amount0 == 0);\r\n            else assert(amount0 > 0);\r\n        }\r\n        if (liquidity == 0) assert(amount0 == 0);\r\n    }\r\n\r\n    function getAmount1DeltaSignedInvariants(\r\n        uint160 sqrtP,\r\n        uint160 sqrtQ,\r\n        int128 liquidity\r\n    ) external pure {\r\n        require(sqrtP > 0 && sqrtQ > 0);\r\n\r\n        int256 amount1 = SqrtPriceMath.getAmount1Delta(sqrtP, sqrtQ, liquidity);\r\n        if (liquidity < 0) assert(amount1 <= 0);\r\n        if (liquidity > 0) {\r\n            if (sqrtP == sqrtQ) assert(amount1 == 0);\r\n            else assert(amount1 > 0);\r\n        }\r\n        if (liquidity == 0) assert(amount1 == 0);\r\n    }\r\n\r\n    function getOutOfRangeMintInvariants(\r\n        uint160 sqrtA,\r\n        uint160 sqrtB,\r\n        int128 liquidity\r\n    ) external pure {\r\n        require(sqrtA > 0 && sqrtB > 0);\r\n        require(liquidity > 0);\r\n\r\n        int256 amount0 = SqrtPriceMath.getAmount0Delta(sqrtA, sqrtB, liquidity);\r\n        int256 amount1 = SqrtPriceMath.getAmount1Delta(sqrtA, sqrtB, liquidity);\r\n\r\n        if (sqrtA == sqrtB) {\r\n            assert(amount0 == 0);\r\n            assert(amount1 == 0);\r\n        } else {\r\n            assert(amount0 > 0);\r\n            assert(amount1 > 0);\r\n        }\r\n    }\r\n\r\n    function getInRangeMintInvariants(\r\n        uint160 sqrtLower,\r\n        uint160 sqrtCurrent,\r\n        uint160 sqrtUpper,\r\n        int128 liquidity\r\n    ) external pure {\r\n        require(sqrtLower > 0);\r\n        require(sqrtLower < sqrtUpper);\r\n        require(sqrtLower <= sqrtCurrent && sqrtCurrent <= sqrtUpper);\r\n        require(liquidity > 0);\r\n\r\n        int256 amount0 = SqrtPriceMath.getAmount0Delta(sqrtCurrent, sqrtUpper, liquidity);\r\n        int256 amount1 = SqrtPriceMath.getAmount1Delta(sqrtLower, sqrtCurrent, liquidity);\r\n\r\n        assert(amount0 > 0 || amount1 > 0);\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/SqrtPriceMathTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../libraries/SqrtPriceMath.sol';\r\n\r\ncontract SqrtPriceMathTest {\r\n    function getNextSqrtPriceFromInput(\r\n        uint160 sqrtP,\r\n        uint128 liquidity,\r\n        uint256 amountIn,\r\n        bool zeroForOne\r\n    ) external pure returns (uint160 sqrtQ) {\r\n        return SqrtPriceMath.getNextSqrtPriceFromInput(sqrtP, liquidity, amountIn, zeroForOne);\r\n    }\r\n\r\n    function getGasCostOfGetNextSqrtPriceFromInput(\r\n        uint160 sqrtP,\r\n        uint128 liquidity,\r\n        uint256 amountIn,\r\n        bool zeroForOne\r\n    ) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        SqrtPriceMath.getNextSqrtPriceFromInput(sqrtP, liquidity, amountIn, zeroForOne);\r\n        return gasBefore - gasleft();\r\n    }\r\n\r\n    function getNextSqrtPriceFromOutput(\r\n        uint160 sqrtP,\r\n        uint128 liquidity,\r\n        uint256 amountOut,\r\n        bool zeroForOne\r\n    ) external pure returns (uint160 sqrtQ) {\r\n        return SqrtPriceMath.getNextSqrtPriceFromOutput(sqrtP, liquidity, amountOut, zeroForOne);\r\n    }\r\n\r\n    function getGasCostOfGetNextSqrtPriceFromOutput(\r\n        uint160 sqrtP,\r\n        uint128 liquidity,\r\n        uint256 amountOut,\r\n        bool zeroForOne\r\n    ) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        SqrtPriceMath.getNextSqrtPriceFromOutput(sqrtP, liquidity, amountOut, zeroForOne);\r\n        return gasBefore - gasleft();\r\n    }\r\n\r\n    function getAmount0Delta(\r\n        uint160 sqrtLower,\r\n        uint160 sqrtUpper,\r\n        uint128 liquidity,\r\n        bool roundUp\r\n    ) external pure returns (uint256 amount0) {\r\n        return SqrtPriceMath.getAmount0Delta(sqrtLower, sqrtUpper, liquidity, roundUp);\r\n    }\r\n\r\n    function getAmount1Delta(\r\n        uint160 sqrtLower,\r\n        uint160 sqrtUpper,\r\n        uint128 liquidity,\r\n        bool roundUp\r\n    ) external pure returns (uint256 amount1) {\r\n        return SqrtPriceMath.getAmount1Delta(sqrtLower, sqrtUpper, liquidity, roundUp);\r\n    }\r\n\r\n    function getGasCostOfGetAmount0Delta(\r\n        uint160 sqrtLower,\r\n        uint160 sqrtUpper,\r\n        uint128 liquidity,\r\n        bool roundUp\r\n    ) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        SqrtPriceMath.getAmount0Delta(sqrtLower, sqrtUpper, liquidity, roundUp);\r\n        return gasBefore - gasleft();\r\n    }\r\n\r\n    function getGasCostOfGetAmount1Delta(\r\n        uint160 sqrtLower,\r\n        uint160 sqrtUpper,\r\n        uint128 liquidity,\r\n        bool roundUp\r\n    ) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        SqrtPriceMath.getAmount1Delta(sqrtLower, sqrtUpper, liquidity, roundUp);\r\n        return gasBefore - gasleft();\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/SwapMathEchidnaTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../libraries/SwapMath.sol';\r\n\r\ncontract SwapMathEchidnaTest {\r\n    function checkComputeSwapStepInvariants(\r\n        uint160 sqrtPriceRaw,\r\n        uint160 sqrtPriceTargetRaw,\r\n        uint128 liquidity,\r\n        int256 amountRemaining,\r\n        uint24 feePips\r\n    ) external pure {\r\n        require(sqrtPriceRaw > 0);\r\n        require(sqrtPriceTargetRaw > 0);\r\n        require(feePips > 0);\r\n        require(feePips < 1e6);\r\n\r\n        (uint160 sqrtQ, uint256 amountIn, uint256 amountOut, uint256 feeAmount) =\r\n            SwapMath.computeSwapStep(sqrtPriceRaw, sqrtPriceTargetRaw, liquidity, amountRemaining, feePips);\r\n\r\n        assert(amountIn <= type(uint256).max - feeAmount);\r\n\r\n        if (amountRemaining < 0) {\r\n            assert(amountOut <= uint256(-amountRemaining));\r\n        } else {\r\n            assert(amountIn + feeAmount <= uint256(amountRemaining));\r\n        }\r\n\r\n        if (sqrtPriceRaw == sqrtPriceTargetRaw) {\r\n            assert(amountIn == 0);\r\n            assert(amountOut == 0);\r\n            assert(feeAmount == 0);\r\n            assert(sqrtQ == sqrtPriceTargetRaw);\r\n        }\r\n\r\n        // didn't reach price target, entire amount must be consumed\r\n        if (sqrtQ != sqrtPriceTargetRaw) {\r\n            if (amountRemaining < 0) assert(amountOut == uint256(-amountRemaining));\r\n            else assert(amountIn + feeAmount == uint256(amountRemaining));\r\n        }\r\n\r\n        // next price is between price and price target\r\n        if (sqrtPriceTargetRaw <= sqrtPriceRaw) {\r\n            assert(sqrtQ <= sqrtPriceRaw);\r\n            assert(sqrtQ >= sqrtPriceTargetRaw);\r\n        } else {\r\n            assert(sqrtQ >= sqrtPriceRaw);\r\n            assert(sqrtQ <= sqrtPriceTargetRaw);\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/SwapMathTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../libraries/SwapMath.sol';\r\n\r\ncontract SwapMathTest {\r\n    function computeSwapStep(\r\n        uint160 sqrtP,\r\n        uint160 sqrtPTarget,\r\n        uint128 liquidity,\r\n        int256 amountRemaining,\r\n        uint24 feePips\r\n    )\r\n        external\r\n        pure\r\n        returns (\r\n            uint160 sqrtQ,\r\n            uint256 amountIn,\r\n            uint256 amountOut,\r\n            uint256 feeAmount\r\n        )\r\n    {\r\n        return SwapMath.computeSwapStep(sqrtP, sqrtPTarget, liquidity, amountRemaining, feePips);\r\n    }\r\n\r\n    function getGasCostOfComputeSwapStep(\r\n        uint160 sqrtP,\r\n        uint160 sqrtPTarget,\r\n        uint128 liquidity,\r\n        int256 amountRemaining,\r\n        uint24 feePips\r\n    ) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        SwapMath.computeSwapStep(sqrtP, sqrtPTarget, liquidity, amountRemaining, feePips);\r\n        return gasBefore - gasleft();\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/TestElixirCallee.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport \"../interfaces/IERC20Minimal.sol\";\r\n\r\nimport \"../libraries/SafeCast.sol\";\r\nimport \"../libraries/TickMath.sol\";\r\n\r\nimport \"../interfaces/callback/IElixirMintCallback.sol\";\r\nimport \"../interfaces/callback/IElixirSwapCallback.sol\";\r\nimport \"../interfaces/callback/IElixirFlashCallback.sol\";\r\n\r\nimport \"../interfaces/IElixirPool.sol\";\r\n\r\ncontract TestElixirCallee is\r\n    IElixirMintCallback,\r\n    IElixirSwapCallback,\r\n    IElixirFlashCallback\r\n{\r\n    using SafeCast for uint256;\r\n\r\n    function swapExact0For1(\r\n        address pool,\r\n        uint256 amount0In,\r\n        address recipient,\r\n        uint160 sqrtPriceLimitX96\r\n    ) external {\r\n        IElixirPool(pool).swap(\r\n            recipient,\r\n            true,\r\n            amount0In.toInt256(),\r\n            sqrtPriceLimitX96,\r\n            abi.encode(msg.sender)\r\n        );\r\n    }\r\n\r\n    function swap0ForExact1(\r\n        address pool,\r\n        uint256 amount1Out,\r\n        address recipient,\r\n        uint160 sqrtPriceLimitX96\r\n    ) external {\r\n        IElixirPool(pool).swap(\r\n            recipient,\r\n            true,\r\n            -amount1Out.toInt256(),\r\n            sqrtPriceLimitX96,\r\n            abi.encode(msg.sender)\r\n        );\r\n    }\r\n\r\n    function swapExact1For0(\r\n        address pool,\r\n        uint256 amount1In,\r\n        address recipient,\r\n        uint160 sqrtPriceLimitX96\r\n    ) external {\r\n        IElixirPool(pool).swap(\r\n            recipient,\r\n            false,\r\n            amount1In.toInt256(),\r\n            sqrtPriceLimitX96,\r\n            abi.encode(msg.sender)\r\n        );\r\n    }\r\n\r\n    function swap1ForExact0(\r\n        address pool,\r\n        uint256 amount0Out,\r\n        address recipient,\r\n        uint160 sqrtPriceLimitX96\r\n    ) external {\r\n        IElixirPool(pool).swap(\r\n            recipient,\r\n            false,\r\n            -amount0Out.toInt256(),\r\n            sqrtPriceLimitX96,\r\n            abi.encode(msg.sender)\r\n        );\r\n    }\r\n\r\n    function swapToLowerSqrtPrice(\r\n        address pool,\r\n        uint160 sqrtPriceX96,\r\n        address recipient\r\n    ) external {\r\n        IElixirPool(pool).swap(\r\n            recipient,\r\n            true,\r\n            type(int256).max,\r\n            sqrtPriceX96,\r\n            abi.encode(msg.sender)\r\n        );\r\n    }\r\n\r\n    function swapToHigherSqrtPrice(\r\n        address pool,\r\n        uint160 sqrtPriceX96,\r\n        address recipient\r\n    ) external {\r\n        IElixirPool(pool).swap(\r\n            recipient,\r\n            false,\r\n            type(int256).max,\r\n            sqrtPriceX96,\r\n            abi.encode(msg.sender)\r\n        );\r\n    }\r\n\r\n    event SwapCallback(int256 amount0Delta, int256 amount1Delta);\r\n\r\n    function elixirSwapCallback(\r\n        int256 amount0Delta,\r\n        int256 amount1Delta,\r\n        bytes calldata data\r\n    ) external override {\r\n        address sender = abi.decode(data, (address));\r\n\r\n        emit SwapCallback(amount0Delta, amount1Delta);\r\n\r\n        if (amount0Delta > 0) {\r\n            IERC20Minimal(IElixirPool(msg.sender).token0()).transferFrom(\r\n                sender,\r\n                msg.sender,\r\n                uint256(amount0Delta)\r\n            );\r\n        } else if (amount1Delta > 0) {\r\n            IERC20Minimal(IElixirPool(msg.sender).token1()).transferFrom(\r\n                sender,\r\n                msg.sender,\r\n                uint256(amount1Delta)\r\n            );\r\n        } else {\r\n            // if both are not gt 0, both must be 0.\r\n            assert(amount0Delta == 0 && amount1Delta == 0);\r\n        }\r\n    }\r\n\r\n    function mint(\r\n        address pool,\r\n        address recipient,\r\n        int24 tickLower,\r\n        int24 tickUpper,\r\n        uint128 amount\r\n    ) external {\r\n        IElixirPool(pool).mint(\r\n            recipient,\r\n            tickLower,\r\n            tickUpper,\r\n            amount,\r\n            abi.encode(msg.sender)\r\n        );\r\n    }\r\n\r\n    event MintCallback(uint256 amount0Owed, uint256 amount1Owed);\r\n\r\n    function elixirMintCallback(\r\n        uint256 amount0Owed,\r\n        uint256 amount1Owed,\r\n        bytes calldata data\r\n    ) external override {\r\n        address sender = abi.decode(data, (address));\r\n\r\n        emit MintCallback(amount0Owed, amount1Owed);\r\n        if (amount0Owed > 0)\r\n            IERC20Minimal(IElixirPool(msg.sender).token0()).transferFrom(\r\n                sender,\r\n                msg.sender,\r\n                amount0Owed\r\n            );\r\n        if (amount1Owed > 0)\r\n            IERC20Minimal(IElixirPool(msg.sender).token1()).transferFrom(\r\n                sender,\r\n                msg.sender,\r\n                amount1Owed\r\n            );\r\n    }\r\n\r\n    event FlashCallback(uint256 fee0, uint256 fee1);\r\n\r\n    function flash(\r\n        address pool,\r\n        address recipient,\r\n        uint256 amount0,\r\n        uint256 amount1,\r\n        uint256 pay0,\r\n        uint256 pay1\r\n    ) external {\r\n        IElixirPool(pool).flash(\r\n            recipient,\r\n            amount0,\r\n            amount1,\r\n            abi.encode(msg.sender, pay0, pay1)\r\n        );\r\n    }\r\n\r\n    function elixirFlashCallback(\r\n        uint256 fee0,\r\n        uint256 fee1,\r\n        bytes calldata data\r\n    ) external override {\r\n        emit FlashCallback(fee0, fee1);\r\n\r\n        (address sender, uint256 pay0, uint256 pay1) = abi.decode(\r\n            data,\r\n            (address, uint256, uint256)\r\n        );\r\n\r\n        if (pay0 > 0)\r\n            IERC20Minimal(IElixirPool(msg.sender).token0()).transferFrom(\r\n                sender,\r\n                msg.sender,\r\n                pay0\r\n            );\r\n        if (pay1 > 0)\r\n            IERC20Minimal(IElixirPool(msg.sender).token1()).transferFrom(\r\n                sender,\r\n                msg.sender,\r\n                pay1\r\n            );\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/TestElixirReentrantCallee.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport \"../libraries/TickMath.sol\";\r\n\r\nimport \"../interfaces/callback/IElixirSwapCallback.sol\";\r\n\r\nimport \"../interfaces/IElixirPool.sol\";\r\n\r\ncontract TestElixirReentrantCallee is IElixirSwapCallback {\r\n    string private constant expectedReason = \"LOK\";\r\n\r\n    function swapToReenter(address pool) external {\r\n        IElixirPool(pool).swap(\r\n            address(0),\r\n            false,\r\n            1,\r\n            TickMath.MAX_SQRT_RATIO - 1,\r\n            new bytes(0)\r\n        );\r\n    }\r\n\r\n    function elixirSwapCallback(\r\n        int256,\r\n        int256,\r\n        bytes calldata\r\n    ) external override {\r\n        // try to reenter swap\r\n        try\r\n            IElixirPool(msg.sender).swap(address(0), false, 1, 0, new bytes(0))\r\n        {} catch Error(string memory reason) {\r\n            require(\r\n                keccak256(abi.encode(reason)) ==\r\n                    keccak256(abi.encode(expectedReason))\r\n            );\r\n        }\r\n\r\n        // try to reenter mint\r\n        try\r\n            IElixirPool(msg.sender).mint(address(0), 0, 0, 0, new bytes(0))\r\n        {} catch Error(string memory reason) {\r\n            require(\r\n                keccak256(abi.encode(reason)) ==\r\n                    keccak256(abi.encode(expectedReason))\r\n            );\r\n        }\r\n\r\n        // try to reenter collect\r\n        try\r\n            IElixirPool(msg.sender).collect(address(0), 0, 0, 0, 0)\r\n        {} catch Error(string memory reason) {\r\n            require(\r\n                keccak256(abi.encode(reason)) ==\r\n                    keccak256(abi.encode(expectedReason))\r\n            );\r\n        }\r\n\r\n        // try to reenter burn\r\n        try IElixirPool(msg.sender).burn(0, 0, 0) {} catch Error(\r\n            string memory reason\r\n        ) {\r\n            require(\r\n                keccak256(abi.encode(reason)) ==\r\n                    keccak256(abi.encode(expectedReason))\r\n            );\r\n        }\r\n\r\n        // try to reenter flash\r\n        try\r\n            IElixirPool(msg.sender).flash(address(0), 0, 0, new bytes(0))\r\n        {} catch Error(string memory reason) {\r\n            require(\r\n                keccak256(abi.encode(reason)) ==\r\n                    keccak256(abi.encode(expectedReason))\r\n            );\r\n        }\r\n\r\n        // try to reenter collectProtocol\r\n        try\r\n            IElixirPool(msg.sender).collectProtocol(address(0), 0, 0)\r\n        {} catch Error(string memory reason) {\r\n            require(\r\n                keccak256(abi.encode(reason)) ==\r\n                    keccak256(abi.encode(expectedReason))\r\n            );\r\n        }\r\n\r\n        require(false, \"Unable to reenter\");\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/TestElixirRouter.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport \"../libraries/SafeCast.sol\";\r\nimport \"../libraries/TickMath.sol\";\r\n\r\nimport \"../interfaces/IERC20Minimal.sol\";\r\nimport \"../interfaces/callback/IElixirSwapCallback.sol\";\r\nimport \"../interfaces/IElixirPool.sol\";\r\n\r\ncontract TestElixirRouter is IElixirSwapCallback {\r\n    using SafeCast for uint256;\r\n\r\n    // flash swaps for an exact amount of token0 in the output pool\r\n    function swapForExact0Multi(\r\n        address recipient,\r\n        address poolInput,\r\n        address poolOutput,\r\n        uint256 amount0Out\r\n    ) external {\r\n        address[] memory pools = new address[](1);\r\n        pools[0] = poolInput;\r\n        IElixirPool(poolOutput).swap(\r\n            recipient,\r\n            false,\r\n            -amount0Out.toInt256(),\r\n            TickMath.MAX_SQRT_RATIO - 1,\r\n            abi.encode(pools, msg.sender)\r\n        );\r\n    }\r\n\r\n    // flash swaps for an exact amount of token1 in the output pool\r\n    function swapForExact1Multi(\r\n        address recipient,\r\n        address poolInput,\r\n        address poolOutput,\r\n        uint256 amount1Out\r\n    ) external {\r\n        address[] memory pools = new address[](1);\r\n        pools[0] = poolInput;\r\n        IElixirPool(poolOutput).swap(\r\n            recipient,\r\n            true,\r\n            -amount1Out.toInt256(),\r\n            TickMath.MIN_SQRT_RATIO + 1,\r\n            abi.encode(pools, msg.sender)\r\n        );\r\n    }\r\n\r\n    event SwapCallback(int256 amount0Delta, int256 amount1Delta);\r\n\r\n    function elixirSwapCallback(\r\n        int256 amount0Delta,\r\n        int256 amount1Delta,\r\n        bytes calldata data\r\n    ) public override {\r\n        emit SwapCallback(amount0Delta, amount1Delta);\r\n\r\n        (address[] memory pools, address payer) = abi.decode(\r\n            data,\r\n            (address[], address)\r\n        );\r\n\r\n        if (pools.length == 1) {\r\n            // get the address and amount of the token that we need to pay\r\n            address tokenToBePaid = amount0Delta > 0\r\n                ? IElixirPool(msg.sender).token0()\r\n                : IElixirPool(msg.sender).token1();\r\n            int256 amountToBePaid = amount0Delta > 0\r\n                ? amount0Delta\r\n                : amount1Delta;\r\n\r\n            bool zeroForOne = tokenToBePaid == IElixirPool(pools[0]).token1();\r\n            IElixirPool(pools[0]).swap(\r\n                msg.sender,\r\n                zeroForOne,\r\n                -amountToBePaid,\r\n                zeroForOne\r\n                    ? TickMath.MIN_SQRT_RATIO + 1\r\n                    : TickMath.MAX_SQRT_RATIO - 1,\r\n                abi.encode(new address[](0), payer)\r\n            );\r\n        } else {\r\n            if (amount0Delta > 0) {\r\n                IERC20Minimal(IElixirPool(msg.sender).token0()).transferFrom(\r\n                    payer,\r\n                    msg.sender,\r\n                    uint256(amount0Delta)\r\n                );\r\n            } else {\r\n                IERC20Minimal(IElixirPool(msg.sender).token1()).transferFrom(\r\n                    payer,\r\n                    msg.sender,\r\n                    uint256(amount1Delta)\r\n                );\r\n            }\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/TestElixirSwapPay.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport \"../interfaces/IERC20Minimal.sol\";\r\n\r\nimport \"../interfaces/callback/IElixirSwapCallback.sol\";\r\nimport \"../interfaces/IElixirPool.sol\";\r\n\r\ncontract TestElixirSwapPay is IElixirSwapCallback {\r\n    function swap(\r\n        address pool,\r\n        address recipient,\r\n        bool zeroForOne,\r\n        uint160 sqrtPriceX96,\r\n        int256 amountSpecified,\r\n        uint256 pay0,\r\n        uint256 pay1\r\n    ) external {\r\n        IElixirPool(pool).swap(\r\n            recipient,\r\n            zeroForOne,\r\n            amountSpecified,\r\n            sqrtPriceX96,\r\n            abi.encode(msg.sender, pay0, pay1)\r\n        );\r\n    }\r\n\r\n    function elixirSwapCallback(\r\n        int256,\r\n        int256,\r\n        bytes calldata data\r\n    ) external override {\r\n        (address sender, uint256 pay0, uint256 pay1) = abi.decode(\r\n            data,\r\n            (address, uint256, uint256)\r\n        );\r\n\r\n        if (pay0 > 0) {\r\n            IERC20Minimal(IElixirPool(msg.sender).token0()).transferFrom(\r\n                sender,\r\n                msg.sender,\r\n                uint256(pay0)\r\n            );\r\n        } else if (pay1 > 0) {\r\n            IERC20Minimal(IElixirPool(msg.sender).token1()).transferFrom(\r\n                sender,\r\n                msg.sender,\r\n                uint256(pay1)\r\n            );\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/TestERC20.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../interfaces/IERC20Minimal.sol';\r\n\r\ncontract TestERC20 is IERC20Minimal {\r\n    mapping(address => uint256) public override balanceOf;\r\n    mapping(address => mapping(address => uint256)) public override allowance;\r\n\r\n    constructor(uint256 amountToMint) {\r\n        mint(msg.sender, amountToMint);\r\n    }\r\n\r\n    function mint(address to, uint256 amount) public {\r\n        uint256 balanceNext = balanceOf[to] + amount;\r\n        require(balanceNext >= amount, 'overflow balance');\r\n        balanceOf[to] = balanceNext;\r\n    }\r\n\r\n    function transfer(address recipient, uint256 amount) external override returns (bool) {\r\n        uint256 balanceBefore = balanceOf[msg.sender];\r\n        require(balanceBefore >= amount, 'insufficient balance');\r\n        balanceOf[msg.sender] = balanceBefore - amount;\r\n\r\n        uint256 balanceRecipient = balanceOf[recipient];\r\n        require(balanceRecipient + amount >= balanceRecipient, 'recipient balance overflow');\r\n        balanceOf[recipient] = balanceRecipient + amount;\r\n\r\n        emit Transfer(msg.sender, recipient, amount);\r\n        return true;\r\n    }\r\n\r\n    function approve(address spender, uint256 amount) external override returns (bool) {\r\n        allowance[msg.sender][spender] = amount;\r\n        emit Approval(msg.sender, spender, amount);\r\n        return true;\r\n    }\r\n\r\n    function transferFrom(\r\n        address sender,\r\n        address recipient,\r\n        uint256 amount\r\n    ) external override returns (bool) {\r\n        uint256 allowanceBefore = allowance[sender][msg.sender];\r\n        require(allowanceBefore >= amount, 'allowance insufficient');\r\n\r\n        allowance[sender][msg.sender] = allowanceBefore - amount;\r\n\r\n        uint256 balanceRecipient = balanceOf[recipient];\r\n        require(balanceRecipient + amount >= balanceRecipient, 'overflow balance recipient');\r\n        balanceOf[recipient] = balanceRecipient + amount;\r\n        uint256 balanceSender = balanceOf[sender];\r\n        require(balanceSender >= amount, 'underflow balance sender');\r\n        balanceOf[sender] = balanceSender - amount;\r\n\r\n        emit Transfer(sender, recipient, amount);\r\n        return true;\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/TickBitmapEchidnaTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../libraries/TickBitmap.sol';\r\n\r\ncontract TickBitmapEchidnaTest {\r\n    using TickBitmap for mapping(int16 => uint256);\r\n\r\n    mapping(int16 => uint256) private bitmap;\r\n\r\n    // returns whether the given tick is initialized\r\n    function isInitialized(int24 tick) private view returns (bool) {\r\n        (int24 next, bool initialized) = bitmap.nextInitializedTickWithinOneWord(tick, 1, true);\r\n        return next == tick ? initialized : false;\r\n    }\r\n\r\n    function flipTick(int24 tick) external {\r\n        bool before = isInitialized(tick);\r\n        bitmap.flipTick(tick, 1);\r\n        assert(isInitialized(tick) == !before);\r\n    }\r\n\r\n    function checkNextInitializedTickWithinOneWordInvariants(int24 tick, bool lte) external view {\r\n        (int24 next, bool initialized) = bitmap.nextInitializedTickWithinOneWord(tick, 1, lte);\r\n        if (lte) {\r\n            // type(int24).min + 256\r\n            require(tick >= -8388352);\r\n            assert(next <= tick);\r\n            assert(tick - next < 256);\r\n            // all the ticks between the input tick and the next tick should be uninitialized\r\n            for (int24 i = tick; i > next; i--) {\r\n                assert(!isInitialized(i));\r\n            }\r\n            assert(isInitialized(next) == initialized);\r\n        } else {\r\n            // type(int24).max - 256\r\n            require(tick < 8388351);\r\n            assert(next > tick);\r\n            assert(next - tick <= 256);\r\n            // all the ticks between the input tick and the next tick should be uninitialized\r\n            for (int24 i = tick + 1; i < next; i++) {\r\n                assert(!isInitialized(i));\r\n            }\r\n            assert(isInitialized(next) == initialized);\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/TickBitmapTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../libraries/TickBitmap.sol';\r\n\r\ncontract TickBitmapTest {\r\n    using TickBitmap for mapping(int16 => uint256);\r\n\r\n    mapping(int16 => uint256) public bitmap;\r\n\r\n    function flipTick(int24 tick) external {\r\n        bitmap.flipTick(tick, 1);\r\n    }\r\n\r\n    function getGasCostOfFlipTick(int24 tick) external returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        bitmap.flipTick(tick, 1);\r\n        return gasBefore - gasleft();\r\n    }\r\n\r\n    function nextInitializedTickWithinOneWord(int24 tick, bool lte)\r\n        external\r\n        view\r\n        returns (int24 next, bool initialized)\r\n    {\r\n        return bitmap.nextInitializedTickWithinOneWord(tick, 1, lte);\r\n    }\r\n\r\n    function getGasCostOfNextInitializedTickWithinOneWord(int24 tick, bool lte) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        bitmap.nextInitializedTickWithinOneWord(tick, 1, lte);\r\n        return gasBefore - gasleft();\r\n    }\r\n\r\n    // returns whether the given tick is initialized\r\n    function isInitialized(int24 tick) external view returns (bool) {\r\n        (int24 next, bool initialized) = bitmap.nextInitializedTickWithinOneWord(tick, 1, true);\r\n        return next == tick ? initialized : false;\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/TickEchidnaTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../libraries/Tick.sol';\r\n\r\ncontract TickEchidnaTest {\r\n    function checkTickSpacingToParametersInvariants(int24 tickSpacing) external pure {\r\n        require(tickSpacing <= TickMath.MAX_TICK);\r\n        require(tickSpacing > 0);\r\n\r\n        int24 minTick = (TickMath.MIN_TICK / tickSpacing) * tickSpacing;\r\n        int24 maxTick = (TickMath.MAX_TICK / tickSpacing) * tickSpacing;\r\n\r\n        uint128 maxLiquidityPerTick = Tick.tickSpacingToMaxLiquidityPerTick(tickSpacing);\r\n\r\n        // symmetry around 0 tick\r\n        assert(maxTick == -minTick);\r\n        // positive max tick\r\n        assert(maxTick > 0);\r\n        // divisibility\r\n        assert((maxTick - minTick) % tickSpacing == 0);\r\n\r\n        uint256 numTicks = uint256((maxTick - minTick) / tickSpacing) + 1;\r\n        // max liquidity at every tick is less than the cap\r\n        assert(uint256(maxLiquidityPerTick) * numTicks <= type(uint128).max);\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/TickMathEchidnaTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../libraries/TickMath.sol';\r\n\r\ncontract TickMathEchidnaTest {\r\n    // uniqueness and increasing order\r\n    function checkGetSqrtRatioAtTickInvariants(int24 tick) external pure {\r\n        uint160 ratio = TickMath.getSqrtRatioAtTick(tick);\r\n        assert(TickMath.getSqrtRatioAtTick(tick - 1) < ratio && ratio < TickMath.getSqrtRatioAtTick(tick + 1));\r\n        assert(ratio >= TickMath.MIN_SQRT_RATIO);\r\n        assert(ratio <= TickMath.MAX_SQRT_RATIO);\r\n    }\r\n\r\n    // the ratio is always between the returned tick and the returned tick+1\r\n    function checkGetTickAtSqrtRatioInvariants(uint160 ratio) external pure {\r\n        int24 tick = TickMath.getTickAtSqrtRatio(ratio);\r\n        assert(ratio >= TickMath.getSqrtRatioAtTick(tick) && ratio < TickMath.getSqrtRatioAtTick(tick + 1));\r\n        assert(tick >= TickMath.MIN_TICK);\r\n        assert(tick < TickMath.MAX_TICK);\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/TickMathTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../libraries/TickMath.sol';\r\n\r\ncontract TickMathTest {\r\n    function getSqrtRatioAtTick(int24 tick) external pure returns (uint160) {\r\n        return TickMath.getSqrtRatioAtTick(tick);\r\n    }\r\n\r\n    function getGasCostOfGetSqrtRatioAtTick(int24 tick) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        TickMath.getSqrtRatioAtTick(tick);\r\n        return gasBefore - gasleft();\r\n    }\r\n\r\n    function getTickAtSqrtRatio(uint160 sqrtPriceX96) external pure returns (int24) {\r\n        return TickMath.getTickAtSqrtRatio(sqrtPriceX96);\r\n    }\r\n\r\n    function getGasCostOfGetTickAtSqrtRatio(uint160 sqrtPriceX96) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        TickMath.getTickAtSqrtRatio(sqrtPriceX96);\r\n        return gasBefore - gasleft();\r\n    }\r\n\r\n    function MIN_SQRT_RATIO() external pure returns (uint160) {\r\n        return TickMath.MIN_SQRT_RATIO;\r\n    }\r\n\r\n    function MAX_SQRT_RATIO() external pure returns (uint160) {\r\n        return TickMath.MAX_SQRT_RATIO;\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/TickOverflowSafetyEchidnaTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport \"../libraries/Tick.sol\";\r\n\r\ncontract TickOverflowSafetyEchidnaTest {\r\n    using Tick for mapping(int24 => Tick.Info);\r\n\r\n    int24 private constant MIN_TICK = -16;\r\n    int24 private constant MAX_TICK = 16;\r\n    uint128 private constant MAX_LIQUIDITY = type(uint128).max / 32;\r\n\r\n    mapping(int24 => Tick.Info) private ticks;\r\n    int24 private tick = 0;\r\n\r\n    // used to track how much total liquidity has been added. should never be negative\r\n    int256 totalLiquidity = 0;\r\n    // half the cap of fee growth has happened, this can overflow\r\n    uint256 private feeGrowthGlobal0X128 = type(uint256).max / 2;\r\n    uint256 private feeGrowthGlobal1X128 = type(uint256).max / 2;\r\n    // how much total growth has happened, this cannot overflow\r\n    uint256 private totalGrowth0 = 0;\r\n    uint256 private totalGrowth1 = 0;\r\n\r\n    // FIX: which value should be used?\r\n    uint192 private rewardPerLiquidityCumulativeX64;\r\n\r\n    function increaseFeeGrowthGlobal0X128(uint256 amount) external {\r\n        require(totalGrowth0 + amount > totalGrowth0); // overflow check\r\n        feeGrowthGlobal0X128 += amount; // overflow desired\r\n        totalGrowth0 += amount;\r\n    }\r\n\r\n    function increaseFeeGrowthGlobal1X128(uint256 amount) external {\r\n        require(totalGrowth1 + amount > totalGrowth1); // overflow check\r\n        feeGrowthGlobal1X128 += amount; // overflow desired\r\n        totalGrowth1 += amount;\r\n    }\r\n\r\n    function setPosition(\r\n        int24 tickLower,\r\n        int24 tickUpper,\r\n        int128 liquidityDelta\r\n    ) external {\r\n        require(tickLower > MIN_TICK);\r\n        require(tickUpper < MAX_TICK);\r\n        require(tickLower < tickUpper);\r\n        bool flippedLower = ticks.update(\r\n            tickLower,\r\n            tick,\r\n            liquidityDelta,\r\n            feeGrowthGlobal0X128,\r\n            feeGrowthGlobal1X128,\r\n            0,\r\n            0,\r\n            uint32(block.timestamp),\r\n            false,\r\n            MAX_LIQUIDITY,\r\n            rewardPerLiquidityCumulativeX64\r\n        );\r\n        bool flippedUpper = ticks.update(\r\n            tickUpper,\r\n            tick,\r\n            liquidityDelta,\r\n            feeGrowthGlobal0X128,\r\n            feeGrowthGlobal1X128,\r\n            0,\r\n            0,\r\n            uint32(block.timestamp),\r\n            true,\r\n            MAX_LIQUIDITY,\r\n            rewardPerLiquidityCumulativeX64\r\n        );\r\n\r\n        if (flippedLower) {\r\n            if (liquidityDelta < 0) {\r\n                assert(ticks[tickLower].liquidityGross == 0);\r\n                ticks.clear(tickLower);\r\n            } else assert(ticks[tickLower].liquidityGross > 0);\r\n        }\r\n\r\n        if (flippedUpper) {\r\n            if (liquidityDelta < 0) {\r\n                assert(ticks[tickUpper].liquidityGross == 0);\r\n                ticks.clear(tickUpper);\r\n            } else assert(ticks[tickUpper].liquidityGross > 0);\r\n        }\r\n\r\n        totalLiquidity += liquidityDelta;\r\n        // requires should have prevented this\r\n        assert(totalLiquidity >= 0);\r\n\r\n        if (totalLiquidity == 0) {\r\n            totalGrowth0 = 0;\r\n            totalGrowth1 = 0;\r\n        }\r\n    }\r\n\r\n    function moveToTick(int24 target) external {\r\n        require(target > MIN_TICK);\r\n        require(target < MAX_TICK);\r\n        while (tick != target) {\r\n            if (tick < target) {\r\n                if (ticks[tick + 1].liquidityGross > 0)\r\n                    ticks.cross(\r\n                        tick + 1,\r\n                        feeGrowthGlobal0X128,\r\n                        feeGrowthGlobal1X128,\r\n                        0,\r\n                        0,\r\n                        uint32(block.timestamp),\r\n                        rewardPerLiquidityCumulativeX64\r\n                    );\r\n                tick++;\r\n            } else {\r\n                if (ticks[tick].liquidityGross > 0)\r\n                    ticks.cross(\r\n                        tick,\r\n                        feeGrowthGlobal0X128,\r\n                        feeGrowthGlobal1X128,\r\n                        0,\r\n                        0,\r\n                        uint32(block.timestamp),\r\n                        rewardPerLiquidityCumulativeX64\r\n                    );\r\n                tick--;\r\n            }\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/TickTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\npragma abicoder v2;\r\n\r\nimport \"../libraries/Tick.sol\";\r\n\r\ncontract TickTest {\r\n    using Tick for mapping(int24 => Tick.Info);\r\n\r\n    mapping(int24 => Tick.Info) public ticks;\r\n\r\n    function tickSpacingToMaxLiquidityPerTick(\r\n        int24 tickSpacing\r\n    ) external pure returns (uint128) {\r\n        return Tick.tickSpacingToMaxLiquidityPerTick(tickSpacing);\r\n    }\r\n\r\n    function setTick(int24 tick, Tick.Info memory info) external {\r\n        ticks[tick] = info;\r\n    }\r\n\r\n    function getFeeGrowthInside(\r\n        int24 tickLower,\r\n        int24 tickUpper,\r\n        int24 tickCurrent,\r\n        uint256 feeGrowthGlobal0X128,\r\n        uint256 feeGrowthGlobal1X128\r\n    )\r\n        external\r\n        view\r\n        returns (uint256 feeGrowthInside0X128, uint256 feeGrowthInside1X128)\r\n    {\r\n        return\r\n            ticks.getFeeGrowthInside(\r\n                tickLower,\r\n                tickUpper,\r\n                tickCurrent,\r\n                feeGrowthGlobal0X128,\r\n                feeGrowthGlobal1X128\r\n            );\r\n    }\r\n\r\n    function update(\r\n        int24 tick,\r\n        int24 tickCurrent,\r\n        int128 liquidityDelta,\r\n        uint256 feeGrowthGlobal0X128,\r\n        uint256 feeGrowthGlobal1X128,\r\n        uint160 secondsPerLiquidityCumulativeX128,\r\n        int56 tickCumulative,\r\n        uint32 time,\r\n        bool upper,\r\n        uint128 maxLiquidity,\r\n        uint192 rewardPerLiquidityCumulativeX64\r\n    ) external returns (bool flipped) {\r\n        return\r\n            ticks.update(\r\n                tick,\r\n                tickCurrent,\r\n                liquidityDelta,\r\n                feeGrowthGlobal0X128,\r\n                feeGrowthGlobal1X128,\r\n                secondsPerLiquidityCumulativeX128,\r\n                tickCumulative,\r\n                time,\r\n                upper,\r\n                maxLiquidity,\r\n                rewardPerLiquidityCumulativeX64\r\n            );\r\n    }\r\n\r\n    function clear(int24 tick) external {\r\n        ticks.clear(tick);\r\n    }\r\n\r\n    function cross(\r\n        int24 tick,\r\n        uint256 feeGrowthGlobal0X128,\r\n        uint256 feeGrowthGlobal1X128,\r\n        uint160 secondsPerLiquidityCumulativeX128,\r\n        int56 tickCumulative,\r\n        uint32 time,\r\n        uint192 rewardPerLiquidityCumulativeX64\r\n    ) external returns (int128 liquidityNet) {\r\n        return\r\n            ticks.cross(\r\n                tick,\r\n                feeGrowthGlobal0X128,\r\n                feeGrowthGlobal1X128,\r\n                secondsPerLiquidityCumulativeX128,\r\n                tickCumulative,\r\n                time,\r\n                rewardPerLiquidityCumulativeX64\r\n            );\r\n    }\r\n}\r\n"},"contracts/elixir-core/test/UnsafeMathEchidnaTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../libraries/UnsafeMath.sol';\r\n\r\ncontract UnsafeMathEchidnaTest {\r\n    function checkDivRoundingUp(uint256 x, uint256 d) external pure {\r\n        require(d > 0);\r\n        uint256 z = UnsafeMath.divRoundingUp(x, d);\r\n        uint256 diff = z - (x / d);\r\n        if (x % d == 0) {\r\n            assert(diff == 0);\r\n        } else {\r\n            assert(diff == 1);\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/base/ERC721Permit.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\n\r\nimport 'openzeppelin-contracts-solc-0.7/token/ERC721/ERC721.sol';\r\nimport 'openzeppelin-contracts-solc-0.7/utils/Address.sol';\r\n\r\nimport '../libraries/ChainId.sol';\r\nimport '../interfaces/external/IERC1271.sol';\r\nimport '../interfaces/IERC721Permit.sol';\r\nimport './PeripheryValidation.sol';\r\n\r\n/// @title ERC721 with permit\r\n/// @notice Nonfungible tokens that support an approve via signature, i.e. permit\r\nabstract contract ERC721Permit is PeripheryValidation, ERC721, IERC721Permit {\r\n    /// @dev Gets the current nonce for a token ID and then increments it, returning the original value\r\n    function _getAndIncrementNonce(uint256 tokenId) internal virtual returns (uint256);\r\n\r\n    /// @dev The hash of the name used in the permit signature verification\r\n    bytes32 private immutable nameHash;\r\n\r\n    /// @dev The hash of the version string used in the permit signature verification\r\n    bytes32 private immutable versionHash;\r\n\r\n    /// @notice Computes the nameHash and versionHash\r\n    constructor(\r\n        string memory name_,\r\n        string memory symbol_,\r\n        string memory version_\r\n    ) ERC721(name_, symbol_) {\r\n        nameHash = keccak256(bytes(name_));\r\n        versionHash = keccak256(bytes(version_));\r\n    }\r\n\r\n    /// @inheritdoc IERC721Permit\r\n    function DOMAIN_SEPARATOR() public view override returns (bytes32) {\r\n        return\r\n            keccak256(\r\n                abi.encode(\r\n                    // keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)')\r\n                    0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f,\r\n                    nameHash,\r\n                    versionHash,\r\n                    ChainId.get(),\r\n                    address(this)\r\n                )\r\n            );\r\n    }\r\n\r\n    /// @inheritdoc IERC721Permit\r\n    /// @dev Value is equal to keccak256(\"Permit(address spender,uint256 tokenId,uint256 nonce,uint256 deadline)\");\r\n    bytes32 public constant override PERMIT_TYPEHASH =\r\n        0x49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad;\r\n\r\n    /// @inheritdoc IERC721Permit\r\n    function permit(\r\n        address spender,\r\n        uint256 tokenId,\r\n        uint256 deadline,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external payable override checkDeadline(deadline) {\r\n        bytes32 digest =\r\n            keccak256(\r\n                abi.encodePacked(\r\n                    '\\x19\\x01',\r\n                    DOMAIN_SEPARATOR(),\r\n                    keccak256(abi.encode(PERMIT_TYPEHASH, spender, tokenId, _getAndIncrementNonce(tokenId), deadline))\r\n                )\r\n            );\r\n        address owner = ownerOf(tokenId);\r\n        require(spender != owner, 'ERC721Permit: approval to owner');\r\n\r\n        if (Address.isContract(owner)) {\r\n            require(IERC1271(owner).isValidSignature(digest, abi.encodePacked(r, s, v)) == 0x1626ba7e, 'Unauthorized');\r\n        } else {\r\n            address recoveredAddress = ecrecover(digest, v, r, s);\r\n            require(\r\n                recoveredAddress != address(0) && recoveredAddress == owner,\r\n                'Invalid signature'\r\n            );\r\n        }\r\n\r\n        _approve(spender, tokenId);\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/base/LiquidityManagement.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\npragma abicoder v2;\r\n\r\nimport '../../elixir-core/interfaces/IElixirFactory.sol';\r\nimport '../../elixir-core/interfaces/callback/IElixirMintCallback.sol';\r\nimport '../../elixir-core/libraries/TickMath.sol';\r\n\r\nimport '../libraries/PoolAddress.sol';\r\nimport '../libraries/CallbackValidation.sol';\r\nimport '../libraries/LiquidityAmounts.sol';\r\n\r\nimport './PeripheryPayments.sol';\r\nimport './PeripheryImmutableState.sol';\r\n\r\n/// @title Liquidity management functions\r\n/// @notice Internal functions for safely managing liquidity in Elixir\r\nabstract contract LiquidityManagement is IElixirMintCallback, PeripheryImmutableState, PeripheryPayments {\r\n    struct MintCallbackData {\r\n        PoolAddress.PoolKey poolKey;\r\n        address payer;\r\n    }\r\n\r\n    /// @inheritdoc IElixirMintCallback\r\n    function elixirMintCallback(\r\n        uint256 amount0Owed,\r\n        uint256 amount1Owed,\r\n        bytes calldata data\r\n    ) external override {\r\n        MintCallbackData memory decoded = abi.decode(data, (MintCallbackData));\r\n        CallbackValidation.verifyCallback(factory, decoded.poolKey);\r\n\r\n        if (amount0Owed > 0) pay(decoded.poolKey.token0, decoded.payer, msg.sender, amount0Owed);\r\n        if (amount1Owed > 0) pay(decoded.poolKey.token1, decoded.payer, msg.sender, amount1Owed);\r\n    }\r\n\r\n    struct AddLiquidityParams {\r\n        address token0;\r\n        address token1;\r\n        uint24 fee;\r\n        address recipient;\r\n        int24 tickLower;\r\n        int24 tickUpper;\r\n        uint256 amount0Desired;\r\n        uint256 amount1Desired;\r\n        uint256 amount0Min;\r\n        uint256 amount1Min;\r\n    }\r\n\r\n    /// @notice Add liquidity to an initialized pool\r\n    function addLiquidity(AddLiquidityParams memory params)\r\n        internal\r\n        returns (\r\n            uint128 liquidity,\r\n            uint256 amount0,\r\n            uint256 amount1,\r\n            IElixirPool pool\r\n        )\r\n    {\r\n        PoolAddress.PoolKey memory poolKey =\r\n            PoolAddress.PoolKey({token0: params.token0, token1: params.token1, fee: params.fee});\r\n\r\n        pool = IElixirPool(PoolAddress.computeAddress(factory, poolKey));\r\n\r\n        // compute the liquidity amount\r\n        {\r\n            (uint160 sqrtPriceX96, , , , , , ) = pool.slot0();\r\n            uint160 sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(params.tickLower);\r\n            uint160 sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(params.tickUpper);\r\n\r\n            liquidity = LiquidityAmounts.getLiquidityForAmounts(\r\n                sqrtPriceX96,\r\n                sqrtRatioAX96,\r\n                sqrtRatioBX96,\r\n                params.amount0Desired,\r\n                params.amount1Desired\r\n            );\r\n        }\r\n\r\n        (amount0, amount1) = pool.mint(\r\n            params.recipient,\r\n            params.tickLower,\r\n            params.tickUpper,\r\n            liquidity,\r\n            abi.encode(MintCallbackData({poolKey: poolKey, payer: msg.sender}))\r\n        );\r\n\r\n        require(amount0 >= params.amount0Min && amount1 >= params.amount1Min, 'Price slippage check');\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/base/Multicall.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\npragma abicoder v2;\r\n\r\nimport '../interfaces/IMulticall.sol';\r\n\r\n/// @title Multicall\r\n/// @notice Enables calling multiple methods in a single call to the contract\r\nabstract contract Multicall is IMulticall {\r\n    /// @inheritdoc IMulticall\r\n    function multicall(bytes[] calldata data) public payable override returns (bytes[] memory results) {\r\n        results = new bytes[](data.length);\r\n        for (uint256 i = 0; i < data.length; i++) {\r\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\r\n\r\n            if (!success) {\r\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577\r\n                if (result.length < 68) revert();\r\n                assembly {\r\n                    result := add(result, 0x04)\r\n                }\r\n                revert(abi.decode(result, (string)));\r\n            }\r\n\r\n            results[i] = result;\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/base/PeripheryImmutableState.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\n\r\nimport '../interfaces/IPeripheryImmutableState.sol';\r\n\r\n/// @title Immutable state\r\n/// @notice Immutable state used by periphery contracts\r\nabstract contract PeripheryImmutableState is IPeripheryImmutableState {\r\n    /// @inheritdoc IPeripheryImmutableState\r\n    address public immutable override factory;\r\n    /// @inheritdoc IPeripheryImmutableState\r\n    address public immutable override WETH9;\r\n\r\n    constructor(address _factory, address _WETH9) {\r\n        factory = _factory;\r\n        WETH9 = _WETH9;\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/base/PeripheryPayments.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\n\r\nimport 'openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol';\r\n\r\nimport '../interfaces/IPeripheryPayments.sol';\r\nimport '../interfaces/external/IWETH9.sol';\r\n\r\nimport '../libraries/TransferHelper.sol';\r\n\r\nimport './PeripheryImmutableState.sol';\r\n\r\nabstract contract PeripheryPayments is IPeripheryPayments, PeripheryImmutableState {\r\n    receive() external payable {\r\n        require(msg.sender == WETH9, 'Not WETH9');\r\n    }\r\n\r\n    /// @inheritdoc IPeripheryPayments\r\n    function unwrapWETH9(uint256 amountMinimum, address recipient) public payable override {\r\n        uint256 balanceWETH9 = IWETH9(WETH9).balanceOf(address(this));\r\n        require(balanceWETH9 >= amountMinimum, 'Insufficient WETH9');\r\n\r\n        if (balanceWETH9 > 0) {\r\n            IWETH9(WETH9).withdraw(balanceWETH9);\r\n            TransferHelper.safeTransferETH(recipient, balanceWETH9);\r\n        }\r\n    }\r\n\r\n    /// @inheritdoc IPeripheryPayments\r\n    function sweepToken(\r\n        address token,\r\n        uint256 amountMinimum,\r\n        address recipient\r\n    ) public payable override {\r\n        uint256 balanceToken = IERC20(token).balanceOf(address(this));\r\n        require(balanceToken >= amountMinimum, 'Insufficient token');\r\n\r\n        if (balanceToken > 0) {\r\n            TransferHelper.safeTransfer(token, recipient, balanceToken);\r\n        }\r\n    }\r\n\r\n    /// @inheritdoc IPeripheryPayments\r\n    function refundETH() external payable override {\r\n        _refundETH();\r\n    }\r\n\r\n    function _refundETH() internal {\r\n        if (address(this).balance > 0) TransferHelper.safeTransferETH(msg.sender, address(this).balance);\r\n    }\r\n\r\n    /// @param token The token to pay\r\n    /// @param payer The entity that must pay\r\n    /// @param recipient The entity that will receive payment\r\n    /// @param value The amount to pay\r\n    function pay(\r\n        address token,\r\n        address payer,\r\n        address recipient,\r\n        uint256 value\r\n    ) internal {\r\n        if (token == WETH9 && address(this).balance >= value) {\r\n            // pay with WETH9\r\n            IWETH9(WETH9).deposit{value: value}(); // wrap only what is needed to pay\r\n            IWETH9(WETH9).transfer(recipient, value);\r\n        } else if (payer == address(this)) {\r\n            // pay with tokens already in the contract (for the exact input multihop case)\r\n            TransferHelper.safeTransfer(token, recipient, value);\r\n        } else {\r\n            // pull payment\r\n            TransferHelper.safeTransferFrom(token, payer, recipient, value);\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/base/PeripheryPaymentsWithFee.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\n\r\nimport 'openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol';\r\nimport '../../elixir-core/libraries/LowGasSafeMath.sol';\r\n\r\nimport './PeripheryPayments.sol';\r\nimport '../interfaces/IPeripheryPaymentsWithFee.sol';\r\n\r\nimport '../interfaces/external/IWETH9.sol';\r\nimport '../libraries/TransferHelper.sol';\r\n\r\nabstract contract PeripheryPaymentsWithFee is PeripheryPayments, IPeripheryPaymentsWithFee {\r\n    using LowGasSafeMath for uint256;\r\n\r\n    /// @inheritdoc IPeripheryPaymentsWithFee\r\n    function unwrapWETH9WithFee(\r\n        uint256 amountMinimum,\r\n        address recipient,\r\n        uint256 feeBips,\r\n        address feeRecipient\r\n    ) public payable override {\r\n        require(feeBips > 0 && feeBips <= 100);\r\n\r\n        uint256 balanceWETH9 = IWETH9(WETH9).balanceOf(address(this));\r\n        require(balanceWETH9 >= amountMinimum, 'Insufficient WETH9');\r\n\r\n        if (balanceWETH9 > 0) {\r\n            IWETH9(WETH9).withdraw(balanceWETH9);\r\n            uint256 feeAmount = balanceWETH9.mul(feeBips) / 10_000;\r\n            if (feeAmount > 0) TransferHelper.safeTransferETH(feeRecipient, feeAmount);\r\n            TransferHelper.safeTransferETH(recipient, balanceWETH9 - feeAmount);\r\n        }\r\n    }\r\n\r\n    /// @inheritdoc IPeripheryPaymentsWithFee\r\n    function sweepTokenWithFee(\r\n        address token,\r\n        uint256 amountMinimum,\r\n        address recipient,\r\n        uint256 feeBips,\r\n        address feeRecipient\r\n    ) public payable override {\r\n        require(feeBips > 0 && feeBips <= 100);\r\n\r\n        uint256 balanceToken = IERC20(token).balanceOf(address(this));\r\n        require(balanceToken >= amountMinimum, 'Insufficient token');\r\n\r\n        if (balanceToken > 0) {\r\n            uint256 feeAmount = balanceToken.mul(feeBips) / 10_000;\r\n            if (feeAmount > 0) TransferHelper.safeTransfer(token, feeRecipient, feeAmount);\r\n            TransferHelper.safeTransfer(token, recipient, balanceToken - feeAmount);\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/base/PeripheryValidation.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\n\r\nabstract contract PeripheryValidation {\r\n    modifier checkDeadline(uint256 deadline) {\r\n        _checkDeadline(deadline);\r\n        _;\r\n    }\r\n\r\n    function _checkDeadline(uint256 deadline) private view {\r\n        require(block.timestamp <= deadline, 'Transaction too old');\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/base/PoolInitializer.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\n\r\nimport '../../elixir-core/interfaces/IElixirFactory.sol';\r\nimport '../../elixir-core/interfaces/IElixirPool.sol';\r\n\r\nimport './PeripheryImmutableState.sol';\r\nimport '../interfaces/IPoolInitializer.sol';\r\n\r\n/// @title Creates and initializes V3 Pools\r\nabstract contract PoolInitializer is IPoolInitializer, PeripheryImmutableState {\r\n    /// @inheritdoc IPoolInitializer\r\n    function createAndInitializePoolIfNecessary(\r\n        address token0,\r\n        address token1,\r\n        uint24 fee,\r\n        uint160 sqrtPriceX96\r\n    ) external payable override returns (address pool) {\r\n        require(token0 < token1);\r\n        pool = IElixirFactory(factory).getPool(token0, token1, fee);\r\n\r\n        if (pool == address(0)) {\r\n            pool = IElixirFactory(factory).createPool(token0, token1, fee);\r\n            IElixirPool(pool).initialize(sqrtPriceX96);\r\n        } else {\r\n            (uint160 sqrtPriceX96Existing, , , , , , ) = IElixirPool(pool).slot0();\r\n            if (sqrtPriceX96Existing == 0) {\r\n                IElixirPool(pool).initialize(sqrtPriceX96);\r\n            }\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/base/SelfPermit.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\nimport 'openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol';\r\nimport 'openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol';\r\n\r\nimport '../interfaces/ISelfPermit.sol';\r\nimport '../interfaces/external/IERC20PermitAllowed.sol';\r\n\r\n/// @title Self Permit\r\n/// @notice Functionality to call permit on any EIP-2612-compliant token for use in the route\r\n/// @dev These functions are expected to be embedded in multicalls to allow EOAs to approve a contract and call a function\r\n/// that requires an approval in a single transaction.\r\nabstract contract SelfPermit is ISelfPermit {\r\n    /// @inheritdoc ISelfPermit\r\n    function selfPermit(\r\n        address token,\r\n        uint256 value,\r\n        uint256 deadline,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) public payable override {\r\n        IERC20Permit(token).permit(msg.sender, address(this), value, deadline, v, r, s);\r\n    }\r\n\r\n    /// @inheritdoc ISelfPermit\r\n    function selfPermitIfNecessary(\r\n        address token,\r\n        uint256 value,\r\n        uint256 deadline,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external payable override {\r\n        if (IERC20(token).allowance(msg.sender, address(this)) < value) selfPermit(token, value, deadline, v, r, s);\r\n    }\r\n\r\n    /// @inheritdoc ISelfPermit\r\n    function selfPermitAllowed(\r\n        address token,\r\n        uint256 nonce,\r\n        uint256 expiry,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) public payable override {\r\n        IERC20PermitAllowed(token).permit(msg.sender, address(this), nonce, expiry, true, v, r, s);\r\n    }\r\n\r\n    /// @inheritdoc ISelfPermit\r\n    function selfPermitAllowedIfNecessary(\r\n        address token,\r\n        uint256 nonce,\r\n        uint256 expiry,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external payable override {\r\n        if (IERC20(token).allowance(msg.sender, address(this)) < type(uint256).max)\r\n            selfPermitAllowed(token, nonce, expiry, v, r, s);\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/ElixirMigrator.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\npragma abicoder v2;\r\n\r\nimport '../elixir-core/libraries/LowGasSafeMath.sol';\r\nimport '../pangolin-core/interfaces/IPangolinPair.sol';\r\n\r\nimport './interfaces/INonfungiblePositionManager.sol';\r\n\r\nimport './libraries/TransferHelper.sol';\r\n\r\nimport './interfaces/IElixirMigrator.sol';\r\nimport './base/PeripheryImmutableState.sol';\r\nimport './base/Multicall.sol';\r\nimport './base/SelfPermit.sol';\r\nimport './interfaces/external/IWETH9.sol';\r\nimport './base/PoolInitializer.sol';\r\n\r\n/// @title Elixir Migrator\r\ncontract ElixirMigrator is IElixirMigrator, PeripheryImmutableState, PoolInitializer, Multicall, SelfPermit {\r\n    using LowGasSafeMath for uint256;\r\n\r\n    address public immutable nonfungiblePositionManager;\r\n\r\n    constructor(\r\n        address _factory,\r\n        address _WETH9,\r\n        address _nonfungiblePositionManager\r\n    ) PeripheryImmutableState(_factory, _WETH9) {\r\n        nonfungiblePositionManager = _nonfungiblePositionManager;\r\n    }\r\n\r\n    receive() external payable {\r\n        require(msg.sender == WETH9, 'Not WETH9');\r\n    }\r\n\r\n    function migrate(MigrateParams calldata params) external override {\r\n        require(params.percentageToMigrate > 0, 'Percentage too small');\r\n        require(params.percentageToMigrate <= 100, 'Percentage too large');\r\n\r\n        // burn v1 liquidity to this address\r\n        IPangolinPair(params.pair).transferFrom(msg.sender, params.pair, params.liquidityToMigrate);\r\n        (uint256 amount0V1, uint256 amount1V1) = IPangolinPair(params.pair).burn(address(this));\r\n\r\n        // calculate the amounts to migrate to elixir\r\n        uint256 amount0V1ToMigrate = amount0V1.mul(params.percentageToMigrate) / 100;\r\n        uint256 amount1V1ToMigrate = amount1V1.mul(params.percentageToMigrate) / 100;\r\n\r\n        // approve the position manager up to the maximum token amounts\r\n        TransferHelper.safeApprove(params.token0, nonfungiblePositionManager, amount0V1ToMigrate);\r\n        TransferHelper.safeApprove(params.token1, nonfungiblePositionManager, amount1V1ToMigrate);\r\n\r\n        // mint elixir (v2) position\r\n        (, , uint256 amount0V2, uint256 amount1V2) =\r\n            INonfungiblePositionManager(nonfungiblePositionManager).mint(\r\n                INonfungiblePositionManager.MintParams({\r\n                    token0: params.token0,\r\n                    token1: params.token1,\r\n                    fee: params.fee,\r\n                    tickLower: params.tickLower,\r\n                    tickUpper: params.tickUpper,\r\n                    amount0Desired: amount0V1ToMigrate,\r\n                    amount1Desired: amount1V1ToMigrate,\r\n                    amount0Min: params.amount0Min,\r\n                    amount1Min: params.amount1Min,\r\n                    recipient: params.recipient,\r\n                    deadline: params.deadline\r\n                })\r\n            );\r\n\r\n        // if necessary, clear allowance and refund dust\r\n        if (amount0V2 < amount0V1) {\r\n            if (amount0V2 < amount0V1ToMigrate) {\r\n                TransferHelper.safeApprove(params.token0, nonfungiblePositionManager, 0);\r\n            }\r\n\r\n            uint256 refund0 = amount0V1 - amount0V2;\r\n            if (params.refundAsETH && params.token0 == WETH9) {\r\n                IWETH9(WETH9).withdraw(refund0);\r\n                TransferHelper.safeTransferETH(msg.sender, refund0);\r\n            } else {\r\n                TransferHelper.safeTransfer(params.token0, msg.sender, refund0);\r\n            }\r\n        }\r\n        if (amount1V2 < amount1V1) {\r\n            if (amount1V2 < amount1V1ToMigrate) {\r\n                TransferHelper.safeApprove(params.token1, nonfungiblePositionManager, 0);\r\n            }\r\n\r\n            uint256 refund1 = amount1V1 - amount1V2;\r\n            if (params.refundAsETH && params.token1 == WETH9) {\r\n                IWETH9(WETH9).withdraw(refund1);\r\n                TransferHelper.safeTransferETH(msg.sender, refund1);\r\n            } else {\r\n                TransferHelper.safeTransfer(params.token1, msg.sender, refund1);\r\n            }\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/interfaces/external/IERC1271.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Interface for verifying contract-based account signatures\r\n/// @notice Interface that verifies provided signature for the data\r\n/// @dev Interface defined by EIP-1271\r\ninterface IERC1271 {\r\n    /// @notice Returns whether the provided signature is valid for the provided data\r\n    /// @dev MUST return the bytes4 magic value 0x1626ba7e when function passes.\r\n    /// MUST NOT modify state (using STATICCALL for solc < 0.5, view modifier for solc > 0.5).\r\n    /// MUST allow external calls.\r\n    /// @param hash Hash of the data to be signed\r\n    /// @param signature Signature byte array associated with _data\r\n    /// @return magicValue The bytes4 magic value 0x1626ba7e\r\n    function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\r\n}\r\n"},"contracts/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Interface for permit\r\n/// @notice Interface used by DAI/CHAI for permit\r\ninterface IERC20PermitAllowed {\r\n    /// @notice Approve the spender to spend some tokens via the holder signature\r\n    /// @dev This is the permit interface used by DAI and CHAI\r\n    /// @param holder The address of the token holder, the token owner\r\n    /// @param spender The address of the token spender\r\n    /// @param nonce The holder's nonce, increases at each call to permit\r\n    /// @param expiry The timestamp at which the permit is no longer valid\r\n    /// @param allowed Boolean that sets approval amount, true for type(uint256).max and false for 0\r\n    /// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\r\n    /// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\r\n    /// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`\r\n    function permit(\r\n        address holder,\r\n        address spender,\r\n        uint256 nonce,\r\n        uint256 expiry,\r\n        bool allowed,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external;\r\n}\r\n"},"contracts/elixir-periphery/interfaces/external/IWETH9.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\n\r\nimport 'openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol';\r\n\r\n/// @title Interface for WETH9\r\ninterface IWETH9 is IERC20 {\r\n    /// @notice Deposit ether to get wrapped ether\r\n    function deposit() external payable;\r\n\r\n    /// @notice Withdraw wrapped ether to get ether\r\n    function withdraw(uint256) external;\r\n}\r\n"},"contracts/elixir-periphery/interfaces/IElixirMigrator.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\npragma abicoder v2;\r\n\r\nimport './IMulticall.sol';\r\nimport './ISelfPermit.sol';\r\nimport './IPoolInitializer.sol';\r\n\r\n/// @title Elixir Migrator\r\n/// @notice Enables migration of liqudity from Pangolin v1-compatible pairs into Elixir pools\r\ninterface IElixirMigrator is IMulticall, ISelfPermit, IPoolInitializer {\r\n    struct MigrateParams {\r\n        address pair; // the Pangolin v1-compatible pair\r\n        uint256 liquidityToMigrate; // expected to be balanceOf(msg.sender)\r\n        uint8 percentageToMigrate; // represented as a numerator over 100\r\n        address token0;\r\n        address token1;\r\n        uint24 fee;\r\n        int24 tickLower;\r\n        int24 tickUpper;\r\n        uint256 amount0Min; // must be discounted by percentageToMigrate\r\n        uint256 amount1Min; // must be discounted by percentageToMigrate\r\n        address recipient;\r\n        uint256 deadline;\r\n        bool refundAsETH;\r\n    }\r\n\r\n    /// @notice Migrates liquidity to elxir by burning v1 liquidity and minting a new position for elixir\r\n    /// @dev Slippage protection is enforced via `amount{0,1}Min`, which should be a discount of the expected values of\r\n    /// the maximum amount of elixir liquidity that the v1 liquidity can get. For the special case of migrating to an\r\n    /// out-of-range position, `amount{0,1}Min` may be set to 0, enforcing that the position remains out of range\r\n    /// @param params The params necessary to migrate v1 liquidity, encoded as `MigrateParams` in calldata\r\n    function migrate(MigrateParams calldata params) external;\r\n}\r\n"},"contracts/elixir-periphery/interfaces/IElixirQuoter.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\npragma abicoder v2;\r\n\r\n/// @title Elixir Quoter Interface\r\n/// @notice Supports quoting the calculated amounts from exact input or exact output swaps.\r\n/// @notice For each pool also tells you the number of initialized ticks crossed and the sqrt price of the pool after the swap.\r\n/// @dev These functions are not marked view because they rely on calling non-view functions and reverting\r\n/// to compute the result. They are also not gas efficient and should not be called on-chain.\r\ninterface IElixirQuoter {\r\n    /// @notice Returns the amount out received for a given exact input swap without executing the swap\r\n    /// @param path The path of the swap, i.e. each token pair and the pool fee\r\n    /// @param amountIn The amount of the first token to swap\r\n    /// @return amountOut The amount of the last token that would be received\r\n    /// @return sqrtPriceX96AfterList List of the sqrt price after the swap for each pool in the path\r\n    /// @return initializedTicksCrossedList List of the initialized ticks that the swap crossed for each pool in the path\r\n    /// @return gasEstimate The estimate of the gas that the swap consumes\r\n    function quoteExactInput(bytes memory path, uint256 amountIn)\r\n        external\r\n        returns (\r\n            uint256 amountOut,\r\n            uint160[] memory sqrtPriceX96AfterList,\r\n            uint32[] memory initializedTicksCrossedList,\r\n            uint256 gasEstimate\r\n        );\r\n\r\n    struct QuoteExactInputSingleParams {\r\n        address tokenIn;\r\n        address tokenOut;\r\n        uint256 amountIn;\r\n        uint24 fee;\r\n        uint160 sqrtPriceLimitX96;\r\n    }\r\n\r\n    /// @notice Returns the amount out received for a given exact input but for a swap of a single pool\r\n    /// @param params The params for the quote, encoded as `QuoteExactInputSingleParams`\r\n    /// tokenIn The token being swapped in\r\n    /// tokenOut The token being swapped out\r\n    /// fee The fee of the token pool to consider for the pair\r\n    /// amountIn The desired input amount\r\n    /// sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\r\n    /// @return amountOut The amount of `tokenOut` that would be received\r\n    /// @return sqrtPriceX96After The sqrt price of the pool after the swap\r\n    /// @return initializedTicksCrossed The number of initialized ticks that the swap crossed\r\n    /// @return gasEstimate The estimate of the gas that the swap consumes\r\n    function quoteExactInputSingle(QuoteExactInputSingleParams memory params)\r\n        external\r\n        returns (\r\n            uint256 amountOut,\r\n            uint160 sqrtPriceX96After,\r\n            uint32 initializedTicksCrossed,\r\n            uint256 gasEstimate\r\n        );\r\n\r\n    /// @notice Returns the amount in required for a given exact output swap without executing the swap\r\n    /// @param path The path of the swap, i.e. each token pair and the pool fee. Path must be provided in reverse order\r\n    /// @param amountOut The amount of the last token to receive\r\n    /// @return amountIn The amount of first token required to be paid\r\n    /// @return sqrtPriceX96AfterList List of the sqrt price after the swap for each pool in the path\r\n    /// @return initializedTicksCrossedList List of the initialized ticks that the swap crossed for each pool in the path\r\n    /// @return gasEstimate The estimate of the gas that the swap consumes\r\n    function quoteExactOutput(bytes memory path, uint256 amountOut)\r\n        external\r\n        returns (\r\n            uint256 amountIn,\r\n            uint160[] memory sqrtPriceX96AfterList,\r\n            uint32[] memory initializedTicksCrossedList,\r\n            uint256 gasEstimate\r\n        );\r\n\r\n    struct QuoteExactOutputSingleParams {\r\n        address tokenIn;\r\n        address tokenOut;\r\n        uint256 amount;\r\n        uint24 fee;\r\n        uint160 sqrtPriceLimitX96;\r\n    }\r\n\r\n    /// @notice Returns the amount in required to receive the given exact output amount but for a swap of a single pool\r\n    /// @param params The params for the quote, encoded as `QuoteExactOutputSingleParams`\r\n    /// tokenIn The token being swapped in\r\n    /// tokenOut The token being swapped out\r\n    /// fee The fee of the token pool to consider for the pair\r\n    /// amountOut The desired output amount\r\n    /// sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\r\n    /// @return amountIn The amount required as the input for the swap in order to receive `amountOut`\r\n    /// @return sqrtPriceX96After The sqrt price of the pool after the swap\r\n    /// @return initializedTicksCrossed The number of initialized ticks that the swap crossed\r\n    /// @return gasEstimate The estimate of the gas that the swap consumes\r\n    function quoteExactOutputSingle(QuoteExactOutputSingleParams memory params)\r\n        external\r\n        returns (\r\n            uint256 amountIn,\r\n            uint160 sqrtPriceX96After,\r\n            uint32 initializedTicksCrossed,\r\n            uint256 gasEstimate\r\n        );\r\n}\r\n"},"contracts/elixir-periphery/interfaces/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity ^0.7.0;\r\n\r\nimport 'openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol';\r\n\r\n/// @title IERC20Metadata\r\n/// @title Interface for ERC20 Metadata\r\n/// @notice Extension to IERC20 that includes token metadata\r\ninterface IERC20Metadata is IERC20 {\r\n    /// @return The name of the token\r\n    function name() external view returns (string memory);\r\n\r\n    /// @return The symbol of the token\r\n    function symbol() external view returns (string memory);\r\n\r\n    /// @return The number of decimal places the token has\r\n    function decimals() external view returns (uint8);\r\n}\r\n"},"contracts/elixir-periphery/interfaces/IERC721Permit.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\n\r\nimport 'openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol';\r\n\r\n/// @title ERC721 with permit\r\n/// @notice Extension to ERC721 that includes a permit function for signature based approvals\r\ninterface IERC721Permit is IERC721 {\r\n    /// @notice The permit typehash used in the permit signature\r\n    /// @return The typehash for the permit\r\n    function PERMIT_TYPEHASH() external pure returns (bytes32);\r\n\r\n    /// @notice The domain separator used in the permit signature\r\n    /// @return The domain seperator used in encoding of permit signature\r\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\r\n\r\n    /// @notice Approve of a specific token ID for spending by spender via signature\r\n    /// @param spender The account that is being approved\r\n    /// @param tokenId The ID of the token that is being approved for spending\r\n    /// @param deadline The deadline timestamp by which the call must be mined for the approve to work\r\n    /// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\r\n    /// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\r\n    /// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`\r\n    function permit(\r\n        address spender,\r\n        uint256 tokenId,\r\n        uint256 deadline,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external payable;\r\n}\r\n"},"contracts/elixir-periphery/interfaces/IMulticall.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\npragma abicoder v2;\r\n\r\n/// @title Multicall interface\r\n/// @notice Enables calling multiple methods in a single call to the contract\r\ninterface IMulticall {\r\n    /// @notice Call multiple functions in the current contract and return the data from all of them if they all succeed\r\n    /// @dev The `msg.value` should not be trusted for any method callable from multicall.\r\n    /// @param data The encoded function data for each of the calls to make to this contract\r\n    /// @return results The results from each of the calls passed in via data\r\n    function multicall(bytes[] calldata data) external payable returns (bytes[] memory results);\r\n}\r\n"},"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\npragma abicoder v2;\r\n\r\nimport 'openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol';\r\nimport 'openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol';\r\n\r\nimport './IPoolInitializer.sol';\r\nimport './IERC721Permit.sol';\r\nimport './IPeripheryPayments.sol';\r\nimport './IPeripheryImmutableState.sol';\r\nimport '../libraries/PoolAddress.sol';\r\n\r\n/// @title Non-fungible token for positions\r\n/// @notice Wraps Elixir positions in a non-fungible token interface which allows for them to be transferred\r\n/// and authorized.\r\ninterface INonfungiblePositionManager is\r\n    IPoolInitializer,\r\n    IPeripheryPayments,\r\n    IPeripheryImmutableState,\r\n    IERC721Metadata,\r\n    IERC721Enumerable,\r\n    IERC721Permit\r\n{\r\n    /// @notice Emitted when liquidity is increased for a position NFT\r\n    /// @dev Also emitted when a token is minted\r\n    /// @param tokenId The ID of the token for which liquidity was increased\r\n    /// @param liquidity The amount by which liquidity for the NFT position was increased\r\n    /// @param amount0 The amount of token0 that was paid for the increase in liquidity\r\n    /// @param amount1 The amount of token1 that was paid for the increase in liquidity\r\n    event IncreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1);\r\n    /// @notice Emitted when liquidity is decreased for a position NFT\r\n    /// @param tokenId The ID of the token for which liquidity was decreased\r\n    /// @param liquidity The amount by which liquidity for the NFT position was decreased\r\n    /// @param amount0 The amount of token0 that was accounted for the decrease in liquidity\r\n    /// @param amount1 The amount of token1 that was accounted for the decrease in liquidity\r\n    event DecreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1);\r\n    /// @notice Emitted when tokens are collected for a position NFT\r\n    /// @dev The amounts reported may not be exactly equivalent to the amounts transferred, due to rounding behavior\r\n    /// @param tokenId The ID of the token for which underlying tokens were collected\r\n    /// @param recipient The address of the account that received the collected tokens\r\n    /// @param amount0 The amount of token0 owed to the position that was collected\r\n    /// @param amount1 The amount of token1 owed to the position that was collected\r\n    event Collect(uint256 indexed tokenId, address recipient, uint256 amount0, uint256 amount1);\r\n    /// @notice Emitted when Elixir Rewarder is called and notified of the reward amount\r\n    /// @dev This only notifies that the Elixir Rewarder is called. Except some edge cases (which will be documented in Elixir\r\n    /// Rewarder), this event is a good indicator of the rewards being claimed. However, it is not certain as it depends on\r\n    /// Elixir Rewarder implementation to decide whether to send the rewards.\r\n    /// @param tokenId The ID of the token for which the reward is being claimed\r\n    /// @param recipient The address of the account that received the reward\r\n    event ClaimReward(uint256 indexed tokenId, address recipient);\r\n\r\n    /// @notice Returns the position information associated with a given token ID.\r\n    /// @dev Throws if the token ID is not valid.\r\n    /// @param tokenId The ID of the token that represents the position\r\n    /// @return nonce The nonce for permits\r\n    /// @return operator The address that is approved for spending\r\n    /// @return token0 The address of the token0 for a specific pool\r\n    /// @return token1 The address of the token1 for a specific pool\r\n    /// @return fee The fee associated with the pool\r\n    /// @return tickLower The lower end of the tick range for the position\r\n    /// @return tickUpper The higher end of the tick range for the position\r\n    /// @return liquidity The liquidity of the position\r\n    /// @return feeGrowthInside0LastX128 The fee growth of token0 as of the last action on the individual position\r\n    /// @return feeGrowthInside1LastX128 The fee growth of token1 as of the last action on the individual position\r\n    /// @return tokensOwed0 The uncollected amount of token0 owed to the position as of the last computation\r\n    /// @return tokensOwed1 The uncollected amount of token1 owed to the position as of the last computation\r\n    function positions(uint256 tokenId)\r\n        external\r\n        view\r\n        returns (\r\n            uint96 nonce,\r\n            address operator,\r\n            address token0,\r\n            address token1,\r\n            uint24 fee,\r\n            int24 tickLower,\r\n            int24 tickUpper,\r\n            uint128 liquidity,\r\n            uint256 feeGrowthInside0LastX128,\r\n            uint256 feeGrowthInside1LastX128,\r\n            uint128 tokensOwed0,\r\n            uint128 tokensOwed1\r\n        );\r\n\r\n    /// @notice Returns the position reward information associated with a given token ID.\r\n    /// @dev Throws if the token ID is not valid.\r\n    /// @param tokenId The ID of the token that represents the position\r\n    /// @return rewardPerLiquidityInsideLastX64 The snapshot of liquidity inside the ticks at last operation\r\n    /// @return rewardLastUpdated The timestamp of the last operation that updated rewardPerLiquidityInsideLastX64\r\n    /// @return rewardLastCollected The timestamp of the last time user claimed the rewards of the position\r\n    /// @return rewardOwed The uncollected amount of reward token owed to the position as of the last computation\r\n    function positionReward(uint256 tokenId)\r\n        external\r\n        view\r\n        returns (\r\n            uint192 rewardPerLiquidityInsideLastX64,\r\n            uint32 rewardLastUpdated,\r\n            uint32 rewardLastCollected,\r\n            uint256 rewardOwed\r\n        );\r\n\r\n    struct MintParams {\r\n        address token0;\r\n        address token1;\r\n        uint24 fee;\r\n        int24 tickLower;\r\n        int24 tickUpper;\r\n        uint256 amount0Desired;\r\n        uint256 amount1Desired;\r\n        uint256 amount0Min;\r\n        uint256 amount1Min;\r\n        address recipient;\r\n        uint256 deadline;\r\n    }\r\n\r\n    /// @notice Creates a new position wrapped in a NFT\r\n    /// @dev Call this when the pool does exist and is initialized. Note that if the pool is created but not initialized\r\n    /// a method does not exist, i.e. the pool is assumed to be initialized.\r\n    /// @param params The params necessary to mint a position, encoded as `MintParams` in calldata\r\n    /// @return tokenId The ID of the token that represents the minted position\r\n    /// @return liquidity The amount of liquidity for this position\r\n    /// @return amount0 The amount of token0\r\n    /// @return amount1 The amount of token1\r\n    function mint(MintParams calldata params)\r\n        external\r\n        payable\r\n        returns (\r\n            uint256 tokenId,\r\n            uint128 liquidity,\r\n            uint256 amount0,\r\n            uint256 amount1\r\n        );\r\n\r\n    struct IncreaseLiquidityParams {\r\n        uint256 tokenId;\r\n        uint256 amount0Desired;\r\n        uint256 amount1Desired;\r\n        uint256 amount0Min;\r\n        uint256 amount1Min;\r\n        uint256 deadline;\r\n    }\r\n\r\n    /// @notice Increases the amount of liquidity in a position, with tokens paid by the `msg.sender`\r\n    /// @param params tokenId The ID of the token for which liquidity is being increased,\r\n    /// amount0Desired The desired amount of token0 to be spent,\r\n    /// amount1Desired The desired amount of token1 to be spent,\r\n    /// amount0Min The minimum amount of token0 to spend, which serves as a slippage check,\r\n    /// amount1Min The minimum amount of token1 to spend, which serves as a slippage check,\r\n    /// deadline The time by which the transaction must be included to effect the change\r\n    /// @return liquidity The new liquidity amount as a result of the increase\r\n    /// @return amount0 The amount of token0 to acheive resulting liquidity\r\n    /// @return amount1 The amount of token1 to acheive resulting liquidity\r\n    function increaseLiquidity(IncreaseLiquidityParams calldata params)\r\n        external\r\n        payable\r\n        returns (\r\n            uint128 liquidity,\r\n            uint256 amount0,\r\n            uint256 amount1\r\n        );\r\n\r\n    struct DecreaseLiquidityParams {\r\n        uint256 tokenId;\r\n        uint128 liquidity;\r\n        uint256 amount0Min;\r\n        uint256 amount1Min;\r\n        uint256 deadline;\r\n    }\r\n\r\n    /// @notice Decreases the amount of liquidity in a position and accounts it to the position\r\n    /// @param params tokenId The ID of the token for which liquidity is being decreased,\r\n    /// amount The amount by which liquidity will be decreased,\r\n    /// amount0Min The minimum amount of token0 that should be accounted for the burned liquidity,\r\n    /// amount1Min The minimum amount of token1 that should be accounted for the burned liquidity,\r\n    /// deadline The time by which the transaction must be included to effect the change\r\n    /// @return amount0 The amount of token0 accounted to the position's tokens owed\r\n    /// @return amount1 The amount of token1 accounted to the position's tokens owed\r\n    function decreaseLiquidity(DecreaseLiquidityParams calldata params)\r\n        external\r\n        payable\r\n        returns (uint256 amount0, uint256 amount1);\r\n\r\n    struct CollectParams {\r\n        uint256 tokenId;\r\n        address recipient;\r\n        uint128 amount0Max;\r\n        uint128 amount1Max;\r\n    }\r\n\r\n    /// @notice Collects up to a maximum amount of fees owed to a specific position to the recipient\r\n    /// @param params tokenId The ID of the NFT for which tokens are being collected,\r\n    /// recipient The account that should receive the tokens,\r\n    /// amount0Max The maximum amount of token0 to collect,\r\n    /// amount1Max The maximum amount of token1 to collect\r\n    /// @return amount0 The amount of fees collected in token0\r\n    /// @return amount1 The amount of fees collected in token1\r\n    function collect(CollectParams calldata params) external payable returns (uint256 amount0, uint256 amount1);\r\n\r\n    /// @notice Notifies rewards manager contract the amount of unclaimed rewards and then deletes the reward debt\r\n    /// @param tokenId The ID of the NFT for which reward is being collected,\r\n    /// recipient The account that should receive the reward tokens\r\n    function claimReward(uint256 tokenId, address recipient) external payable;\r\n\r\n    /// @notice Deletes reward debt of the token\r\n    /// @dev Because of (1) `burn` prevents burning the tokenId if there is any reward debt and (2) `claimReward` can\r\n    /// be DOSed by an improper reward manager implementation or a reward token, we have this separate function to\r\n    /// forgo rewards if user really needs to burn the tokenId and does not care about the rewards\r\n    /// @param tokenId The ID of the NFT to forgo the rewards\r\n    function forgoReward(uint256 tokenId) external payable;\r\n\r\n    /// @notice Burns a token ID, which deletes it from the NFT contract. The token must have 0 liquidity and all tokens\r\n    /// must be collected first.\r\n    /// @param tokenId The ID of the token that is being burned\r\n    function burn(uint256 tokenId) external payable;\r\n\r\n    /// @notice Restricted function to update address that generates tokenURI\r\n    /// @param tokenDescriptor_ The address of the new token descriptor\r\n    function updateTokenDescriptor(address tokenDescriptor_) external payable;\r\n\r\n    /// @notice Restricted function to update the reward manager contract address\r\n    /// @param rewardManager_ The contract that will distribute rewards during `claimReward`\r\n    function updateRewardManager(address rewardManager_) external payable;\r\n}\r\n"},"contracts/elixir-periphery/interfaces/INonfungibleTokenPositionDescriptor.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\nimport './INonfungiblePositionManager.sol';\r\n\r\n/// @title Describes position NFT tokens via URI\r\ninterface INonfungibleTokenPositionDescriptor {\r\n    /// @notice Produces the URI describing a particular token ID for a position manager\r\n    /// @dev Note this URI may be a data: URI with the JSON contents directly inlined\r\n    /// @param positionManager The position manager for which to describe the token\r\n    /// @param tokenId The ID of the token for which to produce a description, which may not be valid\r\n    /// @return The URI of the ERC721-compliant metadata\r\n    function tokenURI(INonfungiblePositionManager positionManager, uint256 tokenId)\r\n        external\r\n        view\r\n        returns (string memory);\r\n}\r\n"},"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\n/// @title Immutable state\r\n/// @notice Functions that return immutable state of the router\r\ninterface IPeripheryImmutableState {\r\n    /// @return Returns the address of the Pangolin V2 factory\r\n    function factory() external view returns (address);\r\n\r\n    /// @return Returns the address of WETH9\r\n    function WETH9() external view returns (address);\r\n}\r\n"},"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\n\r\n/// @title Periphery Payments\r\n/// @notice Functions to ease deposits and withdrawals of ETH\r\ninterface IPeripheryPayments {\r\n    /// @notice Unwraps the contract's WETH9 balance and sends it to recipient as ETH.\r\n    /// @dev The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\r\n    /// @param amountMinimum The minimum amount of WETH9 to unwrap\r\n    /// @param recipient The address receiving ETH\r\n    function unwrapWETH9(uint256 amountMinimum, address recipient) external payable;\r\n\r\n    /// @notice Refunds any ETH balance held by this contract to the `msg.sender`\r\n    /// @dev Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps\r\n    /// that use ether for the input amount\r\n    function refundETH() external payable;\r\n\r\n    /// @notice Transfers the full amount of a token held by this contract to recipient\r\n    /// @dev The amountMinimum parameter prevents malicious contracts from stealing the token from users\r\n    /// @param token The contract address of the token which will be transferred to `recipient`\r\n    /// @param amountMinimum The minimum amount of token required for a transfer\r\n    /// @param recipient The destination address of the token\r\n    function sweepToken(\r\n        address token,\r\n        uint256 amountMinimum,\r\n        address recipient\r\n    ) external payable;\r\n}\r\n"},"contracts/elixir-periphery/interfaces/IPeripheryPaymentsWithFee.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\n\r\nimport './IPeripheryPayments.sol';\r\n\r\n/// @title Periphery Payments\r\n/// @notice Functions to ease deposits and withdrawals of ETH\r\ninterface IPeripheryPaymentsWithFee is IPeripheryPayments {\r\n    /// @notice Unwraps the contract's WETH9 balance and sends it to recipient as ETH, with a percentage between\r\n    /// 0 (exclusive), and 1 (inclusive) going to feeRecipient\r\n    /// @dev The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\r\n    function unwrapWETH9WithFee(\r\n        uint256 amountMinimum,\r\n        address recipient,\r\n        uint256 feeBips,\r\n        address feeRecipient\r\n    ) external payable;\r\n\r\n    /// @notice Transfers the full amount of a token held by this contract to recipient, with a percentage between\r\n    /// 0 (exclusive) and 1 (inclusive) going to feeRecipient\r\n    /// @dev The amountMinimum parameter prevents malicious contracts from stealing the token from users\r\n    function sweepTokenWithFee(\r\n        address token,\r\n        uint256 amountMinimum,\r\n        address recipient,\r\n        uint256 feeBips,\r\n        address feeRecipient\r\n    ) external payable;\r\n}\r\n"},"contracts/elixir-periphery/interfaces/IPoolInitializer.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\npragma abicoder v2;\r\n\r\n/// @title Creates and initializes Elixir Pools\r\n/// @notice Provides a method for creating and initializing a pool, if necessary, for bundling with other methods that\r\n/// require the pool to exist.\r\ninterface IPoolInitializer {\r\n    /// @notice Creates a new pool if it does not exist, then initializes if not initialized\r\n    /// @dev This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool\r\n    /// @param token0 The contract address of token0 of the pool\r\n    /// @param token1 The contract address of token1 of the pool\r\n    /// @param fee The fee amount of the elixir pool for the specified token pair\r\n    /// @param sqrtPriceX96 The initial square root price of the pool as a Q64.96 value\r\n    /// @return pool Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary\r\n    function createAndInitializePoolIfNecessary(\r\n        address token0,\r\n        address token1,\r\n        uint24 fee,\r\n        uint160 sqrtPriceX96\r\n    ) external payable returns (address pool);\r\n}\r\n"},"contracts/elixir-periphery/interfaces/ISelfPermit.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\n\r\n/// @title Self Permit\r\n/// @notice Functionality to call permit on any EIP-2612-compliant token for use in the route\r\ninterface ISelfPermit {\r\n    /// @notice Permits this contract to spend a given token from `msg.sender`\r\n    /// @dev The `owner` is always msg.sender and the `spender` is always address(this).\r\n    /// @param token The address of the token spent\r\n    /// @param value The amount that can be spent of token\r\n    /// @param deadline A timestamp, the current blocktime must be less than or equal to this timestamp\r\n    /// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\r\n    /// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\r\n    /// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`\r\n    function selfPermit(\r\n        address token,\r\n        uint256 value,\r\n        uint256 deadline,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external payable;\r\n\r\n    /// @notice Permits this contract to spend a given token from `msg.sender`\r\n    /// @dev The `owner` is always msg.sender and the `spender` is always address(this).\r\n    /// Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit\r\n    /// @param token The address of the token spent\r\n    /// @param value The amount that can be spent of token\r\n    /// @param deadline A timestamp, the current blocktime must be less than or equal to this timestamp\r\n    /// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\r\n    /// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\r\n    /// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`\r\n    function selfPermitIfNecessary(\r\n        address token,\r\n        uint256 value,\r\n        uint256 deadline,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external payable;\r\n\r\n    /// @notice Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\r\n    /// @dev The `owner` is always msg.sender and the `spender` is always address(this)\r\n    /// @param token The address of the token spent\r\n    /// @param nonce The current nonce of the owner\r\n    /// @param expiry The timestamp at which the permit is no longer valid\r\n    /// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\r\n    /// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\r\n    /// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`\r\n    function selfPermitAllowed(\r\n        address token,\r\n        uint256 nonce,\r\n        uint256 expiry,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external payable;\r\n\r\n    /// @notice Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\r\n    /// @dev The `owner` is always msg.sender and the `spender` is always address(this)\r\n    /// Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.\r\n    /// @param token The address of the token spent\r\n    /// @param nonce The current nonce of the owner\r\n    /// @param expiry The timestamp at which the permit is no longer valid\r\n    /// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\r\n    /// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\r\n    /// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`\r\n    function selfPermitAllowedIfNecessary(\r\n        address token,\r\n        uint256 nonce,\r\n        uint256 expiry,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external payable;\r\n}\r\n"},"contracts/elixir-periphery/interfaces/ISwapRouter.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\npragma abicoder v2;\r\n\r\nimport '../../elixir-core/interfaces/callback/IElixirSwapCallback.sol';\r\n\r\n/// @title Router token swapping functionality\r\n/// @notice Functions for swapping tokens via Elixir\r\ninterface ISwapRouter is IElixirSwapCallback {\r\n    struct ExactInputSingleParams {\r\n        address tokenIn;\r\n        address tokenOut;\r\n        uint24 fee;\r\n        address recipient;\r\n        uint256 deadline;\r\n        uint256 amountIn;\r\n        uint256 amountOutMinimum;\r\n        uint160 sqrtPriceLimitX96;\r\n    }\r\n\r\n    /// @notice Swaps `amountIn` of one token for as much as possible of another token\r\n    /// @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\r\n    /// @return amountOut The amount of the received token\r\n    function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut);\r\n\r\n    struct ExactInputParams {\r\n        bytes path;\r\n        address recipient;\r\n        uint256 deadline;\r\n        uint256 amountIn;\r\n        uint256 amountOutMinimum;\r\n    }\r\n\r\n    /// @notice Swaps `amountIn` of one token for as much as possible of another along the specified path\r\n    /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\r\n    /// @return amountOut The amount of the received token\r\n    function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut);\r\n\r\n    struct ExactOutputSingleParams {\r\n        address tokenIn;\r\n        address tokenOut;\r\n        uint24 fee;\r\n        address recipient;\r\n        uint256 deadline;\r\n        uint256 amountOut;\r\n        uint256 amountInMaximum;\r\n        uint160 sqrtPriceLimitX96;\r\n    }\r\n\r\n    /// @notice Swaps as little as possible of one token for `amountOut` of another token\r\n    /// @param params The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\r\n    /// @return amountIn The amount of the input token\r\n    function exactOutputSingle(ExactOutputSingleParams calldata params) external payable returns (uint256 amountIn);\r\n\r\n    struct ExactOutputParams {\r\n        bytes path;\r\n        address recipient;\r\n        uint256 deadline;\r\n        uint256 amountOut;\r\n        uint256 amountInMaximum;\r\n    }\r\n\r\n    /// @notice Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)\r\n    /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\r\n    /// @return amountIn The amount of the input token\r\n    function exactOutput(ExactOutputParams calldata params) external payable returns (uint256 amountIn);\r\n}\r\n"},"contracts/elixir-periphery/interfaces/ITickLens.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.5;\r\npragma abicoder v2;\r\n\r\n/// @title Tick Lens\r\n/// @notice Provides functions for fetching chunks of tick data for a pool\r\n/// @dev This avoids the waterfall of fetching the tick bitmap, parsing the bitmap to know which ticks to fetch, and\r\n/// then sending additional multicalls to fetch the tick data\r\ninterface ITickLens {\r\n    struct PopulatedTick {\r\n        int24 tick;\r\n        int128 liquidityNet;\r\n        uint128 liquidityGross;\r\n    }\r\n\r\n    /// @notice Get all the tick data for the populated ticks from a word of the tick bitmap of a pool\r\n    /// @param pool The address of the pool for which to fetch populated tick data\r\n    /// @param tickBitmapIndex The index of the word in the tick bitmap for which to parse the bitmap and\r\n    /// fetch all the populated ticks\r\n    /// @return populatedTicks An array of tick data for the given word in the tick bitmap\r\n    function getPopulatedTicksInWord(address pool, int16 tickBitmapIndex)\r\n        external\r\n        view\r\n        returns (PopulatedTick[] memory populatedTicks);\r\n}\r\n"},"contracts/elixir-periphery/lens/ElixirQuoter.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\npragma abicoder v2;\r\n\r\nimport '../../elixir-core/libraries/SafeCast.sol';\r\nimport '../../elixir-core/libraries/TickMath.sol';\r\nimport '../../elixir-core/libraries/TickBitmap.sol';\r\nimport '../../elixir-core/interfaces/IElixirPool.sol';\r\nimport '../../elixir-core/interfaces/callback/IElixirSwapCallback.sol';\r\n\r\nimport '../interfaces/IElixirQuoter.sol';\r\nimport '../base/PeripheryImmutableState.sol';\r\nimport '../libraries/Path.sol';\r\nimport '../libraries/PoolAddress.sol';\r\nimport '../libraries/CallbackValidation.sol';\r\nimport '../libraries/PoolTicksCounter.sol';\r\n\r\n/// @title Provides quotes for swaps\r\n/// @notice Allows getting the expected amount out or amount in for a given swap without executing the swap\r\n/// @dev These functions are not gas efficient and should _not_ be called on chain. Instead, optimistically execute\r\n/// the swap and check the amounts in the callback.\r\ncontract ElixirQuoter is IElixirQuoter, IElixirSwapCallback, PeripheryImmutableState {\r\n    using Path for bytes;\r\n    using SafeCast for uint256;\r\n    using PoolTicksCounter for IElixirPool;\r\n\r\n    /// @dev Transient storage variable used to check a safety condition in exact output swaps.\r\n    uint256 private amountOutCached;\r\n\r\n    constructor(address _factory, address _WETH9) PeripheryImmutableState(_factory, _WETH9) {}\r\n\r\n    function getPool(\r\n        address tokenA,\r\n        address tokenB,\r\n        uint24 fee\r\n    ) public view returns (IElixirPool) {\r\n        return IElixirPool(PoolAddress.computeAddress(factory, PoolAddress.getPoolKey(tokenA, tokenB, fee)));\r\n    }\r\n\r\n    /// @inheritdoc IElixirSwapCallback\r\n    function elixirSwapCallback(\r\n        int256 amount0Delta,\r\n        int256 amount1Delta,\r\n        bytes memory path\r\n    ) external view override {\r\n        require(amount0Delta > 0 || amount1Delta > 0); // swaps entirely within 0-liquidity regions are not supported\r\n        (address tokenIn, address tokenOut, uint24 fee) = path.decodeFirstPool();\r\n        CallbackValidation.verifyCallback(factory, tokenIn, tokenOut, fee);\r\n\r\n        (bool isExactInput, uint256 amountToPay, uint256 amountReceived) =\r\n            amount0Delta > 0\r\n                ? (tokenIn < tokenOut, uint256(amount0Delta), uint256(-amount1Delta))\r\n                : (tokenOut < tokenIn, uint256(amount1Delta), uint256(-amount0Delta));\r\n\r\n        IElixirPool pool = getPool(tokenIn, tokenOut, fee);\r\n        (uint160 sqrtPriceX96After, int24 tickAfter, , , , , ) = pool.slot0();\r\n\r\n        if (isExactInput) {\r\n            assembly {\r\n                let ptr := mload(0x40)\r\n                mstore(ptr, amountReceived)\r\n                mstore(add(ptr, 0x20), sqrtPriceX96After)\r\n                mstore(add(ptr, 0x40), tickAfter)\r\n                revert(ptr, 96)\r\n            }\r\n        } else {\r\n            // if the cache has been populated, ensure that the full output amount has been received\r\n            if (amountOutCached != 0) require(amountReceived == amountOutCached);\r\n            assembly {\r\n                let ptr := mload(0x40)\r\n                mstore(ptr, amountToPay)\r\n                mstore(add(ptr, 0x20), sqrtPriceX96After)\r\n                mstore(add(ptr, 0x40), tickAfter)\r\n                revert(ptr, 96)\r\n            }\r\n        }\r\n    }\r\n\r\n    /// @dev Parses a revert reason that should contain the numeric quote\r\n    function parseRevertReason(bytes memory reason)\r\n        private\r\n        pure\r\n        returns (\r\n            uint256 amount,\r\n            uint160 sqrtPriceX96After,\r\n            int24 tickAfter\r\n        )\r\n    {\r\n        if (reason.length != 96) {\r\n            if (reason.length < 68) revert('Unexpected error');\r\n            assembly {\r\n                reason := add(reason, 0x04)\r\n            }\r\n            revert(abi.decode(reason, (string)));\r\n        }\r\n        return abi.decode(reason, (uint256, uint160, int24));\r\n    }\r\n\r\n    function handleRevert(\r\n        bytes memory reason,\r\n        IElixirPool pool,\r\n        uint256 gasEstimate\r\n    )\r\n        private\r\n        view\r\n        returns (\r\n            uint256 amount,\r\n            uint160 sqrtPriceX96After,\r\n            uint32 initializedTicksCrossed,\r\n            uint256\r\n        )\r\n    {\r\n        int24 tickBefore;\r\n        int24 tickAfter;\r\n        (, tickBefore, , , , , ) = pool.slot0();\r\n        (amount, sqrtPriceX96After, tickAfter) = parseRevertReason(reason);\r\n\r\n        initializedTicksCrossed = pool.countInitializedTicksCrossed(tickBefore, tickAfter);\r\n\r\n        return (amount, sqrtPriceX96After, initializedTicksCrossed, gasEstimate);\r\n    }\r\n\r\n    function quoteExactInputSingle(QuoteExactInputSingleParams memory params)\r\n        public\r\n        override\r\n        returns (\r\n            uint256 amountOut,\r\n            uint160 sqrtPriceX96After,\r\n            uint32 initializedTicksCrossed,\r\n            uint256 gasEstimate\r\n        )\r\n    {\r\n        bool zeroForOne = params.tokenIn < params.tokenOut;\r\n        IElixirPool pool = getPool(params.tokenIn, params.tokenOut, params.fee);\r\n\r\n        uint256 gasBefore = gasleft();\r\n        try\r\n            pool.swap(\r\n                address(this), // address(0) might cause issues with some tokens\r\n                zeroForOne,\r\n                params.amountIn.toInt256(),\r\n                params.sqrtPriceLimitX96 == 0\r\n                    ? (zeroForOne ? TickMath.MIN_SQRT_RATIO + 1 : TickMath.MAX_SQRT_RATIO - 1)\r\n                    : params.sqrtPriceLimitX96,\r\n                abi.encodePacked(params.tokenIn, params.fee, params.tokenOut)\r\n            )\r\n        {} catch (bytes memory reason) {\r\n            gasEstimate = gasBefore - gasleft();\r\n            return handleRevert(reason, pool, gasEstimate);\r\n        }\r\n    }\r\n\r\n    function quoteExactInput(bytes memory path, uint256 amountIn)\r\n        public\r\n        override\r\n        returns (\r\n            uint256 amountOut,\r\n            uint160[] memory sqrtPriceX96AfterList,\r\n            uint32[] memory initializedTicksCrossedList,\r\n            uint256 gasEstimate\r\n        )\r\n    {\r\n        sqrtPriceX96AfterList = new uint160[](path.numPools());\r\n        initializedTicksCrossedList = new uint32[](path.numPools());\r\n\r\n        uint256 i = 0;\r\n        while (true) {\r\n            (address tokenIn, address tokenOut, uint24 fee) = path.decodeFirstPool();\r\n\r\n            // the outputs of prior swaps become the inputs to subsequent ones\r\n            (uint256 _amountOut, uint160 _sqrtPriceX96After, uint32 _initializedTicksCrossed, uint256 _gasEstimate) =\r\n                quoteExactInputSingle(\r\n                    QuoteExactInputSingleParams({\r\n                        tokenIn: tokenIn,\r\n                        tokenOut: tokenOut,\r\n                        fee: fee,\r\n                        amountIn: amountIn,\r\n                        sqrtPriceLimitX96: 0\r\n                    })\r\n                );\r\n\r\n            sqrtPriceX96AfterList[i] = _sqrtPriceX96After;\r\n            initializedTicksCrossedList[i] = _initializedTicksCrossed;\r\n            amountIn = _amountOut;\r\n            gasEstimate += _gasEstimate;\r\n            i++;\r\n\r\n            // decide whether to continue or terminate\r\n            if (path.hasMultiplePools()) {\r\n                path = path.skipToken();\r\n            } else {\r\n                return (amountIn, sqrtPriceX96AfterList, initializedTicksCrossedList, gasEstimate);\r\n            }\r\n        }\r\n    }\r\n\r\n    function quoteExactOutputSingle(QuoteExactOutputSingleParams memory params)\r\n        public\r\n        override\r\n        returns (\r\n            uint256 amountIn,\r\n            uint160 sqrtPriceX96After,\r\n            uint32 initializedTicksCrossed,\r\n            uint256 gasEstimate\r\n        )\r\n    {\r\n        bool zeroForOne = params.tokenIn < params.tokenOut;\r\n        IElixirPool pool = getPool(params.tokenIn, params.tokenOut, params.fee);\r\n\r\n        // if no price limit has been specified, cache the output amount for comparison in the swap callback\r\n        if (params.sqrtPriceLimitX96 == 0) amountOutCached = params.amount;\r\n        uint256 gasBefore = gasleft();\r\n        try\r\n            pool.swap(\r\n                address(this), // address(0) might cause issues with some tokens\r\n                zeroForOne,\r\n                -params.amount.toInt256(),\r\n                params.sqrtPriceLimitX96 == 0\r\n                    ? (zeroForOne ? TickMath.MIN_SQRT_RATIO + 1 : TickMath.MAX_SQRT_RATIO - 1)\r\n                    : params.sqrtPriceLimitX96,\r\n                abi.encodePacked(params.tokenOut, params.fee, params.tokenIn)\r\n            )\r\n        {} catch (bytes memory reason) {\r\n            gasEstimate = gasBefore - gasleft();\r\n            if (params.sqrtPriceLimitX96 == 0) delete amountOutCached; // clear cache\r\n            return handleRevert(reason, pool, gasEstimate);\r\n        }\r\n    }\r\n\r\n    function quoteExactOutput(bytes memory path, uint256 amountOut)\r\n        public\r\n        override\r\n        returns (\r\n            uint256 amountIn,\r\n            uint160[] memory sqrtPriceX96AfterList,\r\n            uint32[] memory initializedTicksCrossedList,\r\n            uint256 gasEstimate\r\n        )\r\n    {\r\n        sqrtPriceX96AfterList = new uint160[](path.numPools());\r\n        initializedTicksCrossedList = new uint32[](path.numPools());\r\n\r\n        uint256 i = 0;\r\n        while (true) {\r\n            (address tokenOut, address tokenIn, uint24 fee) = path.decodeFirstPool();\r\n\r\n            // the inputs of prior swaps become the outputs of subsequent ones\r\n            (uint256 _amountIn, uint160 _sqrtPriceX96After, uint32 _initializedTicksCrossed, uint256 _gasEstimate) =\r\n                quoteExactOutputSingle(\r\n                    QuoteExactOutputSingleParams({\r\n                        tokenIn: tokenIn,\r\n                        tokenOut: tokenOut,\r\n                        amount: amountOut,\r\n                        fee: fee,\r\n                        sqrtPriceLimitX96: 0\r\n                    })\r\n                );\r\n\r\n            sqrtPriceX96AfterList[i] = _sqrtPriceX96After;\r\n            initializedTicksCrossedList[i] = _initializedTicksCrossed;\r\n            amountOut = _amountIn;\r\n            gasEstimate += _gasEstimate;\r\n            i++;\r\n\r\n            // decide whether to continue or terminate\r\n            if (path.hasMultiplePools()) {\r\n                path = path.skipToken();\r\n            } else {\r\n                return (amountOut, sqrtPriceX96AfterList, initializedTicksCrossedList, gasEstimate);\r\n            }\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/lens/TickLens.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0 <0.8.0;\r\npragma abicoder v2;\r\n\r\nimport '../../elixir-core/interfaces/IElixirPool.sol';\r\n\r\nimport '../interfaces/ITickLens.sol';\r\n\r\n/// @title Tick Lens contract\r\ncontract TickLens is ITickLens {\r\n    /// @inheritdoc ITickLens\r\n    function getPopulatedTicksInWord(address pool, int16 tickBitmapIndex)\r\n        public\r\n        view\r\n        override\r\n        returns (PopulatedTick[] memory populatedTicks)\r\n    {\r\n        // fetch bitmap\r\n        uint256 bitmap = IElixirPool(pool).tickBitmap(tickBitmapIndex);\r\n\r\n        // calculate the number of populated ticks\r\n        uint256 numberOfPopulatedTicks;\r\n        for (uint256 i = 0; i < 256; i++) {\r\n            if (bitmap & (1 << i) > 0) numberOfPopulatedTicks++;\r\n        }\r\n\r\n        // fetch populated tick data\r\n        int24 tickSpacing = IElixirPool(pool).tickSpacing();\r\n        populatedTicks = new PopulatedTick[](numberOfPopulatedTicks);\r\n        for (uint256 i = 0; i < 256; i++) {\r\n            if (bitmap & (1 << i) > 0) {\r\n                int24 populatedTick = ((int24(tickBitmapIndex) << 8) + int24(i)) * tickSpacing;\r\n                (uint128 liquidityGross, int128 liquidityNet, , , , , , , ) = IElixirPool(pool).ticks(populatedTick);\r\n                populatedTicks[--numberOfPopulatedTicks] = PopulatedTick({\r\n                    tick: populatedTick,\r\n                    liquidityNet: liquidityNet,\r\n                    liquidityGross: liquidityGross\r\n                });\r\n            }\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/libraries/BytesLib.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\n/*\r\n * @title Solidity Bytes Arrays Utils\r\n * @author Gonçalo Sá <goncalo.sa@consensys.net>\r\n *\r\n * @dev Bytes tightly packed arrays utility library for ethereum contracts written in Solidity.\r\n *      The library lets you concatenate, slice and type cast bytes arrays both in memory and storage.\r\n */\r\npragma solidity >=0.5.0 <0.8.0;\r\n\r\nlibrary BytesLib {\r\n    function slice(\r\n        bytes memory _bytes,\r\n        uint256 _start,\r\n        uint256 _length\r\n    ) internal pure returns (bytes memory) {\r\n        require(_length + 31 >= _length, 'slice_overflow');\r\n        require(_start + _length >= _start, 'slice_overflow');\r\n        require(_bytes.length >= _start + _length, 'slice_outOfBounds');\r\n\r\n        bytes memory tempBytes;\r\n\r\n        assembly {\r\n            switch iszero(_length)\r\n                case 0 {\r\n                    // Get a location of some free memory and store it in tempBytes as\r\n                    // Solidity does for memory variables.\r\n                    tempBytes := mload(0x40)\r\n\r\n                    // The first word of the slice result is potentially a partial\r\n                    // word read from the original array. To read it, we calculate\r\n                    // the length of that partial word and start copying that many\r\n                    // bytes into the array. The first word we copy will start with\r\n                    // data we don't care about, but the last `lengthmod` bytes will\r\n                    // land at the beginning of the contents of the new array. When\r\n                    // we're done copying, we overwrite the full first word with\r\n                    // the actual length of the slice.\r\n                    let lengthmod := and(_length, 31)\r\n\r\n                    // The multiplication in the next line is necessary\r\n                    // because when slicing multiples of 32 bytes (lengthmod == 0)\r\n                    // the following copy loop was copying the origin's length\r\n                    // and then ending prematurely not copying everything it should.\r\n                    let mc := add(add(tempBytes, lengthmod), mul(0x20, iszero(lengthmod)))\r\n                    let end := add(mc, _length)\r\n\r\n                    for {\r\n                        // The multiplication in the next line has the same exact purpose\r\n                        // as the one above.\r\n                        let cc := add(add(add(_bytes, lengthmod), mul(0x20, iszero(lengthmod))), _start)\r\n                    } lt(mc, end) {\r\n                        mc := add(mc, 0x20)\r\n                        cc := add(cc, 0x20)\r\n                    } {\r\n                        mstore(mc, mload(cc))\r\n                    }\r\n\r\n                    mstore(tempBytes, _length)\r\n\r\n                    //update free-memory pointer\r\n                    //allocating the array padded to 32 bytes like the compiler does now\r\n                    mstore(0x40, and(add(mc, 31), not(31)))\r\n                }\r\n                //if we want a zero-length slice let's just return a zero-length array\r\n                default {\r\n                    tempBytes := mload(0x40)\r\n                    //zero out the 32 bytes slice we are about to return\r\n                    //we need to do it because Solidity does not garbage collect\r\n                    mstore(tempBytes, 0)\r\n\r\n                    mstore(0x40, add(tempBytes, 0x20))\r\n                }\r\n        }\r\n\r\n        return tempBytes;\r\n    }\r\n\r\n    function toAddress(bytes memory _bytes, uint256 _start) internal pure returns (address) {\r\n        require(_start + 20 >= _start, 'toAddress_overflow');\r\n        require(_bytes.length >= _start + 20, 'toAddress_outOfBounds');\r\n        address tempAddress;\r\n\r\n        assembly {\r\n            tempAddress := div(mload(add(add(_bytes, 0x20), _start)), 0x1000000000000000000000000)\r\n        }\r\n\r\n        return tempAddress;\r\n    }\r\n\r\n    function toUint24(bytes memory _bytes, uint256 _start) internal pure returns (uint24) {\r\n        require(_start + 3 >= _start, 'toUint24_overflow');\r\n        require(_bytes.length >= _start + 3, 'toUint24_outOfBounds');\r\n        uint24 tempUint;\r\n\r\n        assembly {\r\n            tempUint := mload(add(add(_bytes, 0x3), _start))\r\n        }\r\n\r\n        return tempUint;\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/libraries/CallbackValidation.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\n\r\nimport '../../elixir-core/interfaces/IElixirPool.sol';\r\nimport './PoolAddress.sol';\r\n\r\n/// @notice Provides validation for callbacks from Elixir Pools\r\nlibrary CallbackValidation {\r\n    /// @notice Returns the address of a valid Elixir Pool\r\n    /// @param factory The contract address of the Elixir factory\r\n    /// @param tokenA The contract address of either token0 or token1\r\n    /// @param tokenB The contract address of the other token\r\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\r\n    /// @return pool The Elixir pool contract address\r\n    function verifyCallback(\r\n        address factory,\r\n        address tokenA,\r\n        address tokenB,\r\n        uint24 fee\r\n    ) internal view returns (IElixirPool pool) {\r\n        return verifyCallback(factory, PoolAddress.getPoolKey(tokenA, tokenB, fee));\r\n    }\r\n\r\n    /// @notice Returns the address of a valid Elixir Pool\r\n    /// @param factory The contract address of the Elixir factory\r\n    /// @param poolKey The identifying key of the Elixir pool\r\n    /// @return pool The Elixir pool contract address\r\n    function verifyCallback(address factory, PoolAddress.PoolKey memory poolKey)\r\n        internal\r\n        view\r\n        returns (IElixirPool pool)\r\n    {\r\n        pool = IElixirPool(PoolAddress.computeAddress(factory, poolKey));\r\n        require(msg.sender == address(pool));\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/libraries/ChainId.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.0 <0.8.0;\r\n\r\n/// @title Function for getting the current chain ID\r\nlibrary ChainId {\r\n    /// @dev Gets the current chain ID\r\n    /// @return chainId The current chain ID\r\n    function get() internal pure returns (uint256 chainId) {\r\n        assembly {\r\n            chainId := chainid()\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/libraries/HexStrings.sol":{"content":"// SPDX-License-Identifier: MIT\r\npragma solidity =0.7.6;\r\n\r\nlibrary HexStrings {\r\n    bytes16 internal constant ALPHABET = '0123456789abcdef';\r\n\r\n    /// @notice Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\r\n    /// @dev Credit to Open Zeppelin under MIT license https://github.com/OpenZeppelin/openzeppelin-contracts/blob/243adff49ce1700e0ecb99fe522fb16cff1d1ddc/contracts/utils/Strings.sol#L55\r\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\r\n        bytes memory buffer = new bytes(2 * length + 2);\r\n        buffer[0] = '0';\r\n        buffer[1] = 'x';\r\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\r\n            buffer[i] = ALPHABET[value & 0xf];\r\n            value >>= 4;\r\n        }\r\n        require(value == 0, 'Strings: hex length insufficient');\r\n        return string(buffer);\r\n    }\r\n\r\n    function toHexStringNoPrefix(uint256 value, uint256 length) internal pure returns (string memory) {\r\n        bytes memory buffer = new bytes(2 * length);\r\n        for (uint256 i = buffer.length; i > 0; i--) {\r\n            buffer[i - 1] = ALPHABET[value & 0xf];\r\n            value >>= 4;\r\n        }\r\n        return string(buffer);\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/libraries/LiquidityAmounts.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\nimport '../../elixir-core/libraries/FullMath.sol';\r\nimport '../../elixir-core/libraries/FixedPoint96.sol';\r\n\r\n/// @title Liquidity amount functions\r\n/// @notice Provides functions for computing liquidity amounts from token amounts and prices\r\nlibrary LiquidityAmounts {\r\n    /// @notice Downcasts uint256 to uint128\r\n    /// @param x The uint258 to be downcasted\r\n    /// @return y The passed value, downcasted to uint128\r\n    function toUint128(uint256 x) private pure returns (uint128 y) {\r\n        require((y = uint128(x)) == x);\r\n    }\r\n\r\n    /// @notice Computes the amount of liquidity received for a given amount of token0 and price range\r\n    /// @dev Calculates amount0 * (sqrt(upper) * sqrt(lower)) / (sqrt(upper) - sqrt(lower))\r\n    /// @param sqrtRatioAX96 A sqrt price representing the first tick boundary\r\n    /// @param sqrtRatioBX96 A sqrt price representing the second tick boundary\r\n    /// @param amount0 The amount0 being sent in\r\n    /// @return liquidity The amount of returned liquidity\r\n    function getLiquidityForAmount0(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint256 amount0\r\n    ) internal pure returns (uint128 liquidity) {\r\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\r\n        uint256 intermediate = FullMath.mulDiv(sqrtRatioAX96, sqrtRatioBX96, FixedPoint96.Q96);\r\n        return toUint128(FullMath.mulDiv(amount0, intermediate, sqrtRatioBX96 - sqrtRatioAX96));\r\n    }\r\n\r\n    /// @notice Computes the amount of liquidity received for a given amount of token1 and price range\r\n    /// @dev Calculates amount1 / (sqrt(upper) - sqrt(lower)).\r\n    /// @param sqrtRatioAX96 A sqrt price representing the first tick boundary\r\n    /// @param sqrtRatioBX96 A sqrt price representing the second tick boundary\r\n    /// @param amount1 The amount1 being sent in\r\n    /// @return liquidity The amount of returned liquidity\r\n    function getLiquidityForAmount1(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint256 amount1\r\n    ) internal pure returns (uint128 liquidity) {\r\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\r\n        return toUint128(FullMath.mulDiv(amount1, FixedPoint96.Q96, sqrtRatioBX96 - sqrtRatioAX96));\r\n    }\r\n\r\n    /// @notice Computes the maximum amount of liquidity received for a given amount of token0, token1, the current\r\n    /// pool prices and the prices at the tick boundaries\r\n    /// @param sqrtRatioX96 A sqrt price representing the current pool prices\r\n    /// @param sqrtRatioAX96 A sqrt price representing the first tick boundary\r\n    /// @param sqrtRatioBX96 A sqrt price representing the second tick boundary\r\n    /// @param amount0 The amount of token0 being sent in\r\n    /// @param amount1 The amount of token1 being sent in\r\n    /// @return liquidity The maximum amount of liquidity received\r\n    function getLiquidityForAmounts(\r\n        uint160 sqrtRatioX96,\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint256 amount0,\r\n        uint256 amount1\r\n    ) internal pure returns (uint128 liquidity) {\r\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\r\n\r\n        if (sqrtRatioX96 <= sqrtRatioAX96) {\r\n            liquidity = getLiquidityForAmount0(sqrtRatioAX96, sqrtRatioBX96, amount0);\r\n        } else if (sqrtRatioX96 < sqrtRatioBX96) {\r\n            uint128 liquidity0 = getLiquidityForAmount0(sqrtRatioX96, sqrtRatioBX96, amount0);\r\n            uint128 liquidity1 = getLiquidityForAmount1(sqrtRatioAX96, sqrtRatioX96, amount1);\r\n\r\n            liquidity = liquidity0 < liquidity1 ? liquidity0 : liquidity1;\r\n        } else {\r\n            liquidity = getLiquidityForAmount1(sqrtRatioAX96, sqrtRatioBX96, amount1);\r\n        }\r\n    }\r\n\r\n    /// @notice Computes the amount of token0 for a given amount of liquidity and a price range\r\n    /// @param sqrtRatioAX96 A sqrt price representing the first tick boundary\r\n    /// @param sqrtRatioBX96 A sqrt price representing the second tick boundary\r\n    /// @param liquidity The liquidity being valued\r\n    /// @return amount0 The amount of token0\r\n    function getAmount0ForLiquidity(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint128 liquidity\r\n    ) internal pure returns (uint256 amount0) {\r\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\r\n\r\n        return\r\n            FullMath.mulDiv(\r\n                uint256(liquidity) << FixedPoint96.RESOLUTION,\r\n                sqrtRatioBX96 - sqrtRatioAX96,\r\n                sqrtRatioBX96\r\n            ) / sqrtRatioAX96;\r\n    }\r\n\r\n    /// @notice Computes the amount of token1 for a given amount of liquidity and a price range\r\n    /// @param sqrtRatioAX96 A sqrt price representing the first tick boundary\r\n    /// @param sqrtRatioBX96 A sqrt price representing the second tick boundary\r\n    /// @param liquidity The liquidity being valued\r\n    /// @return amount1 The amount of token1\r\n    function getAmount1ForLiquidity(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint128 liquidity\r\n    ) internal pure returns (uint256 amount1) {\r\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\r\n\r\n        return FullMath.mulDiv(liquidity, sqrtRatioBX96 - sqrtRatioAX96, FixedPoint96.Q96);\r\n    }\r\n\r\n    /// @notice Computes the token0 and token1 value for a given amount of liquidity, the current\r\n    /// pool prices and the prices at the tick boundaries\r\n    /// @param sqrtRatioX96 A sqrt price representing the current pool prices\r\n    /// @param sqrtRatioAX96 A sqrt price representing the first tick boundary\r\n    /// @param sqrtRatioBX96 A sqrt price representing the second tick boundary\r\n    /// @param liquidity The liquidity being valued\r\n    /// @return amount0 The amount of token0\r\n    /// @return amount1 The amount of token1\r\n    function getAmountsForLiquidity(\r\n        uint160 sqrtRatioX96,\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint128 liquidity\r\n    ) internal pure returns (uint256 amount0, uint256 amount1) {\r\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\r\n\r\n        if (sqrtRatioX96 <= sqrtRatioAX96) {\r\n            amount0 = getAmount0ForLiquidity(sqrtRatioAX96, sqrtRatioBX96, liquidity);\r\n        } else if (sqrtRatioX96 < sqrtRatioBX96) {\r\n            amount0 = getAmount0ForLiquidity(sqrtRatioX96, sqrtRatioBX96, liquidity);\r\n            amount1 = getAmount1ForLiquidity(sqrtRatioAX96, sqrtRatioX96, liquidity);\r\n        } else {\r\n            amount1 = getAmount1ForLiquidity(sqrtRatioAX96, sqrtRatioBX96, liquidity);\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/libraries/NFTSVG.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.7.6;\r\n\r\nimport 'openzeppelin-contracts-solc-0.7/utils/Strings.sol';\r\nimport '../../elixir-core/libraries/BitMath.sol';\r\nimport 'base64-sol/base64.sol';\r\n\r\n/// @title NFTSVG\r\n/// @notice Provides a function for generating an SVG associated with a Elixir NFT\r\nlibrary NFTSVG {\r\n    using Strings for uint256;\r\n\r\n    string constant curve1 = 'M1 1C41 41 105 105 145 145';\r\n    string constant curve2 = 'M1 1C33 49 97 113 145 145';\r\n    string constant curve3 = 'M1 1C33 57 89 113 145 145';\r\n    string constant curve4 = 'M1 1C25 65 81 121 145 145';\r\n    string constant curve5 = 'M1 1C17 73 73 129 145 145';\r\n    string constant curve6 = 'M1 1C9 81 65 137 145 145';\r\n    string constant curve7 = 'M1 1C1 89 57.5 145 145 145';\r\n    string constant curve8 = 'M1 1C1 97 49 145 145 145';\r\n\r\n    struct SVGParams {\r\n        string quoteToken;\r\n        string baseToken;\r\n        address poolAddress;\r\n        string quoteTokenSymbol;\r\n        string baseTokenSymbol;\r\n        string feeTier;\r\n        int24 tickLower;\r\n        int24 tickUpper;\r\n        int24 tickSpacing;\r\n        int8 overRange;\r\n        uint256 tokenId;\r\n        string color0;\r\n        string color1;\r\n        string color2;\r\n        string color3;\r\n        string x1;\r\n        string y1;\r\n        string x2;\r\n        string y2;\r\n        string x3;\r\n        string y3;\r\n    }\r\n\r\n    function generateSVG(SVGParams memory params) internal pure returns (string memory svg) {\r\n        /*\r\n        address: \"0xe8ab59d3bcde16a29912de83a90eb39628cfc163\",\r\n        msg: \"Forged in SVG for Elixir in 2021 by 0xe8ab59d3bcde16a29912de83a90eb39628cfc163\",\r\n        sig: \"0x2df0e99d9cbfec33a705d83f75666d98b22dea7c1af412c584f7d626d83f02875993df740dc87563b9c73378f8462426da572d7989de88079a382ad96c57b68d1b\",\r\n        version: \"2\"\r\n        */\r\n        return\r\n            string(\r\n                abi.encodePacked(\r\n                    generateSVGDefs(params),\r\n                    generateSVGBorderText(\r\n                        params.quoteToken,\r\n                        params.baseToken,\r\n                        params.quoteTokenSymbol,\r\n                        params.baseTokenSymbol\r\n                    ),\r\n                    generateSVGCardMantle(params.quoteTokenSymbol, params.baseTokenSymbol, params.feeTier),\r\n                    generageSvgCurve(params.tickLower, params.tickUpper, params.tickSpacing, params.overRange),\r\n                    generateSVGPositionDataAndLocationCurve(\r\n                        params.tokenId.toString(),\r\n                        params.tickLower,\r\n                        params.tickUpper\r\n                    ),\r\n                    generateSVGRareSparkle(params.tokenId, params.poolAddress),\r\n                    '</svg>'\r\n                )\r\n            );\r\n    }\r\n\r\n    function generateSVGDefs(SVGParams memory params) private pure returns (string memory svg) {\r\n        svg = string(\r\n            abi.encodePacked(\r\n                '<svg width=\"290\" height=\"500\" viewBox=\"0 0 290 500\" xmlns=\"http://www.w3.org/2000/svg\"',\r\n                \" xmlns:xlink='http://www.w3.org/1999/xlink'>\",\r\n                '<defs>',\r\n                '<filter id=\"f1\"><feImage result=\"p0\" xlink:href=\"data:image/svg+xml;base64,',\r\n                Base64.encode(\r\n                    bytes(\r\n                        abi.encodePacked(\r\n                            \"<svg width='290' height='500' viewBox='0 0 290 500' xmlns='http://www.w3.org/2000/svg'><rect width='290px' height='500px' fill='#\",\r\n                            params.color0,\r\n                            \"'/></svg>\"\r\n                        )\r\n                    )\r\n                ),\r\n                '\"/><feImage result=\"p1\" xlink:href=\"data:image/svg+xml;base64,',\r\n                Base64.encode(\r\n                    bytes(\r\n                        abi.encodePacked(\r\n                            \"<svg width='290' height='500' viewBox='0 0 290 500' xmlns='http://www.w3.org/2000/svg'><circle cx='\",\r\n                            params.x1,\r\n                            \"' cy='\",\r\n                            params.y1,\r\n                            \"' r='120px' fill='#\",\r\n                            params.color1,\r\n                            \"'/></svg>\"\r\n                        )\r\n                    )\r\n                ),\r\n                '\"/><feImage result=\"p2\" xlink:href=\"data:image/svg+xml;base64,',\r\n                Base64.encode(\r\n                    bytes(\r\n                        abi.encodePacked(\r\n                            \"<svg width='290' height='500' viewBox='0 0 290 500' xmlns='http://www.w3.org/2000/svg'><circle cx='\",\r\n                            params.x2,\r\n                            \"' cy='\",\r\n                            params.y2,\r\n                            \"' r='120px' fill='#\",\r\n                            params.color2,\r\n                            \"'/></svg>\"\r\n                        )\r\n                    )\r\n                ),\r\n                '\" />',\r\n                '<feImage result=\"p3\" xlink:href=\"data:image/svg+xml;base64,',\r\n                Base64.encode(\r\n                    bytes(\r\n                        abi.encodePacked(\r\n                            \"<svg width='290' height='500' viewBox='0 0 290 500' xmlns='http://www.w3.org/2000/svg'><circle cx='\",\r\n                            params.x3,\r\n                            \"' cy='\",\r\n                            params.y3,\r\n                            \"' r='100px' fill='#\",\r\n                            params.color3,\r\n                            \"'/></svg>\"\r\n                        )\r\n                    )\r\n                ),\r\n                '\" /><feBlend mode=\"overlay\" in=\"p0\" in2=\"p1\" /><feBlend mode=\"exclusion\" in2=\"p2\" /><feBlend mode=\"overlay\" in2=\"p3\" result=\"blendOut\" /><feGaussianBlur ',\r\n                'in=\"blendOut\" stdDeviation=\"42\" /></filter> <clipPath id=\"corners\"><rect width=\"290\" height=\"500\" rx=\"42\" ry=\"42\" /></clipPath>',\r\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\" />',\r\n                '<path id=\"minimap\" d=\"M234 444C234 457.949 242.21 463 253 463\" />',\r\n                '<filter id=\"top-region-blur\"><feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"24\" /></filter>',\r\n                '<linearGradient id=\"grad-up\" x1=\"1\" x2=\"0\" y1=\"1\" y2=\"0\"><stop offset=\"0.0\" stop-color=\"white\" stop-opacity=\"1\" />',\r\n                '<stop offset=\".9\" stop-color=\"white\" stop-opacity=\"0\" /></linearGradient>',\r\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>',\r\n                '<mask id=\"fade-up\" maskContentUnits=\"objectBoundingBox\"><rect width=\"1\" height=\"1\" fill=\"url(#grad-up)\" /></mask>',\r\n                '<mask id=\"fade-down\" maskContentUnits=\"objectBoundingBox\"><rect width=\"1\" height=\"1\" fill=\"url(#grad-down)\" /></mask>',\r\n                '<mask id=\"none\" maskContentUnits=\"objectBoundingBox\"><rect width=\"1\" height=\"1\" fill=\"white\" /></mask>',\r\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>',\r\n                '<mask id=\"fade-symbol\" maskContentUnits=\"userSpaceOnUse\"><rect width=\"290px\" height=\"200px\" fill=\"url(#grad-symbol)\" /></mask></defs>',\r\n                '<g clip-path=\"url(#corners)\">',\r\n                '<rect fill=\"',\r\n                params.color0,\r\n                '\" x=\"0px\" y=\"0px\" width=\"290px\" height=\"500px\" />',\r\n                '<rect style=\"filter: url(#f1)\" x=\"0px\" y=\"0px\" width=\"290px\" height=\"500px\" />',\r\n                ' <g style=\"filter:url(#top-region-blur); transform:scale(1.5); transform-origin:center top;\">',\r\n                '<rect fill=\"none\" x=\"0px\" y=\"0px\" width=\"290px\" height=\"500px\" />',\r\n                '<ellipse cx=\"50%\" cy=\"0px\" rx=\"180px\" ry=\"120px\" fill=\"#000\" opacity=\"0.85\" /></g>',\r\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>'\r\n            )\r\n        );\r\n    }\r\n\r\n    function generateSVGBorderText(\r\n        string memory quoteToken,\r\n        string memory baseToken,\r\n        string memory quoteTokenSymbol,\r\n        string memory baseTokenSymbol\r\n    ) private pure returns (string memory svg) {\r\n        svg = string(\r\n            abi.encodePacked(\r\n                '<text text-rendering=\"optimizeSpeed\">',\r\n                '<textPath startOffset=\"-100%\" fill=\"white\" font-family=\"\\'Courier New\\', monospace\" font-size=\"10px\" xlink:href=\"#text-path-a\">',\r\n                baseToken,\r\n                unicode' • ',\r\n                baseTokenSymbol,\r\n                ' <animate additive=\"sum\" attributeName=\"startOffset\" from=\"0%\" to=\"100%\" begin=\"0s\" dur=\"30s\" repeatCount=\"indefinite\" />',\r\n                '</textPath> <textPath startOffset=\"0%\" fill=\"white\" font-family=\"\\'Courier New\\', monospace\" font-size=\"10px\" xlink:href=\"#text-path-a\">',\r\n                baseToken,\r\n                unicode' • ',\r\n                baseTokenSymbol,\r\n                ' <animate additive=\"sum\" attributeName=\"startOffset\" from=\"0%\" to=\"100%\" begin=\"0s\" dur=\"30s\" repeatCount=\"indefinite\" /> </textPath>',\r\n                '<textPath startOffset=\"50%\" fill=\"white\" font-family=\"\\'Courier New\\', monospace\" font-size=\"10px\" xlink:href=\"#text-path-a\">',\r\n                quoteToken,\r\n                unicode' • ',\r\n                quoteTokenSymbol,\r\n                ' <animate additive=\"sum\" attributeName=\"startOffset\" from=\"0%\" to=\"100%\" begin=\"0s\" dur=\"30s\"',\r\n                ' repeatCount=\"indefinite\" /></textPath><textPath startOffset=\"-50%\" fill=\"white\" font-family=\"\\'Courier New\\', monospace\" font-size=\"10px\" xlink:href=\"#text-path-a\">',\r\n                quoteToken,\r\n                unicode' • ',\r\n                quoteTokenSymbol,\r\n                ' <animate additive=\"sum\" attributeName=\"startOffset\" from=\"0%\" to=\"100%\" begin=\"0s\" dur=\"30s\" repeatCount=\"indefinite\" /></textPath></text>'\r\n            )\r\n        );\r\n    }\r\n\r\n    function generateSVGCardMantle(\r\n        string memory quoteTokenSymbol,\r\n        string memory baseTokenSymbol,\r\n        string memory feeTier\r\n    ) private pure returns (string memory svg) {\r\n        svg = string(\r\n            abi.encodePacked(\r\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\">',\r\n                quoteTokenSymbol,\r\n                '/',\r\n                baseTokenSymbol,\r\n                '</text><text y=\"115px\" x=\"32px\" fill=\"white\" font-family=\"\\'Courier New\\', monospace\" font-weight=\"200\" font-size=\"36px\">',\r\n                feeTier,\r\n                '</text></g>',\r\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)\" />'\r\n            )\r\n        );\r\n    }\r\n\r\n    function generageSvgCurve(\r\n        int24 tickLower,\r\n        int24 tickUpper,\r\n        int24 tickSpacing,\r\n        int8 overRange\r\n    ) private pure returns (string memory svg) {\r\n        string memory fade = overRange == 1 ? '#fade-up' : overRange == -1 ? '#fade-down' : '#none';\r\n        string memory curve = getCurve(tickLower, tickUpper, tickSpacing);\r\n        svg = string(\r\n            abi.encodePacked(\r\n                '<g mask=\"url(',\r\n                fade,\r\n                ')\"',\r\n                ' style=\"transform:translate(72px,189px)\">'\r\n                '<rect x=\"-16px\" y=\"-16px\" width=\"180px\" height=\"180px\" fill=\"none\" />'\r\n                '<path d=\"',\r\n                curve,\r\n                '\" stroke=\"rgba(0,0,0,0.3)\" stroke-width=\"32px\" fill=\"none\" stroke-linecap=\"round\" />',\r\n                '</g><g mask=\"url(',\r\n                fade,\r\n                ')\"',\r\n                ' style=\"transform:translate(72px,189px)\">',\r\n                '<rect x=\"-16px\" y=\"-16px\" width=\"180px\" height=\"180px\" fill=\"none\" />',\r\n                '<path d=\"',\r\n                curve,\r\n                '\" stroke=\"rgba(255,255,255,1)\" fill=\"none\" stroke-linecap=\"round\" /></g>',\r\n                generateSVGCurveCircle(overRange)\r\n            )\r\n        );\r\n    }\r\n\r\n    function getCurve(\r\n        int24 tickLower,\r\n        int24 tickUpper,\r\n        int24 tickSpacing\r\n    ) internal pure returns (string memory curve) {\r\n        int24 tickRange = (tickUpper - tickLower) / tickSpacing;\r\n        if (tickRange <= 4) {\r\n            curve = curve1;\r\n        } else if (tickRange <= 8) {\r\n            curve = curve2;\r\n        } else if (tickRange <= 16) {\r\n            curve = curve3;\r\n        } else if (tickRange <= 32) {\r\n            curve = curve4;\r\n        } else if (tickRange <= 64) {\r\n            curve = curve5;\r\n        } else if (tickRange <= 128) {\r\n            curve = curve6;\r\n        } else if (tickRange <= 256) {\r\n            curve = curve7;\r\n        } else {\r\n            curve = curve8;\r\n        }\r\n    }\r\n\r\n    function generateSVGCurveCircle(int8 overRange) internal pure returns (string memory svg) {\r\n        string memory curvex1 = '73';\r\n        string memory curvey1 = '190';\r\n        string memory curvex2 = '217';\r\n        string memory curvey2 = '334';\r\n        if (overRange == 1 || overRange == -1) {\r\n            svg = string(\r\n                abi.encodePacked(\r\n                    '<circle cx=\"',\r\n                    overRange == -1 ? curvex1 : curvex2,\r\n                    'px\" cy=\"',\r\n                    overRange == -1 ? curvey1 : curvey2,\r\n                    'px\" r=\"4px\" fill=\"white\" /><circle cx=\"',\r\n                    overRange == -1 ? curvex1 : curvex2,\r\n                    'px\" cy=\"',\r\n                    overRange == -1 ? curvey1 : curvey2,\r\n                    'px\" r=\"24px\" fill=\"none\" stroke=\"white\" />'\r\n                )\r\n            );\r\n        } else {\r\n            svg = string(\r\n                abi.encodePacked(\r\n                    '<circle cx=\"',\r\n                    curvex1,\r\n                    'px\" cy=\"',\r\n                    curvey1,\r\n                    'px\" r=\"4px\" fill=\"white\" />',\r\n                    '<circle cx=\"',\r\n                    curvex2,\r\n                    'px\" cy=\"',\r\n                    curvey2,\r\n                    'px\" r=\"4px\" fill=\"white\" />'\r\n                )\r\n            );\r\n        }\r\n    }\r\n\r\n    function generateSVGPositionDataAndLocationCurve(\r\n        string memory tokenId,\r\n        int24 tickLower,\r\n        int24 tickUpper\r\n    ) private pure returns (string memory svg) {\r\n        string memory tickLowerStr = tickToString(tickLower);\r\n        string memory tickUpperStr = tickToString(tickUpper);\r\n        uint256 str1length = bytes(tokenId).length + 4;\r\n        uint256 str2length = bytes(tickLowerStr).length + 10;\r\n        uint256 str3length = bytes(tickUpperStr).length + 10;\r\n        (string memory xCoord, string memory yCoord) = rangeLocation(tickLower, tickUpper);\r\n        svg = string(\r\n            abi.encodePacked(\r\n                ' <g style=\"transform:translate(29px, 384px)\">',\r\n                '<rect width=\"',\r\n                uint256(7 * (str1length + 4)).toString(),\r\n                'px\" height=\"26px\" rx=\"8px\" ry=\"8px\" fill=\"rgba(0,0,0,0.6)\" />',\r\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>',\r\n                tokenId,\r\n                '</text></g>',\r\n                ' <g style=\"transform:translate(29px, 414px)\">',\r\n                '<rect width=\"',\r\n                uint256(7 * (str2length + 4)).toString(),\r\n                'px\" height=\"26px\" rx=\"8px\" ry=\"8px\" fill=\"rgba(0,0,0,0.6)\" />',\r\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>',\r\n                tickLowerStr,\r\n                '</text></g>',\r\n                ' <g style=\"transform:translate(29px, 444px)\">',\r\n                '<rect width=\"',\r\n                uint256(7 * (str3length + 4)).toString(),\r\n                'px\" height=\"26px\" rx=\"8px\" ry=\"8px\" fill=\"rgba(0,0,0,0.6)\" />',\r\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>',\r\n                tickUpperStr,\r\n                '</text></g>'\r\n                '<g style=\"transform:translate(226px, 433px)\">',\r\n                '<rect width=\"36px\" height=\"36px\" rx=\"8px\" ry=\"8px\" fill=\"none\" stroke=\"rgba(255,255,255,0.2)\" />',\r\n                '<path stroke-linecap=\"round\" d=\"M8 9C8.00004 22.9494 16.2099 28 27 28\" fill=\"none\" stroke=\"white\" />',\r\n                '<circle style=\"transform:translate3d(',\r\n                xCoord,\r\n                'px, ',\r\n                yCoord,\r\n                'px, 0px)\" cx=\"0px\" cy=\"0px\" r=\"4px\" fill=\"white\"/></g>'\r\n            )\r\n        );\r\n    }\r\n\r\n    function tickToString(int24 tick) private pure returns (string memory) {\r\n        string memory sign = '';\r\n        if (tick < 0) {\r\n            tick = tick * -1;\r\n            sign = '-';\r\n        }\r\n        return string(abi.encodePacked(sign, uint256(tick).toString()));\r\n    }\r\n\r\n    function rangeLocation(int24 tickLower, int24 tickUpper) internal pure returns (string memory, string memory) {\r\n        int24 midPoint = (tickLower + tickUpper) / 2;\r\n        if (midPoint < -125_000) {\r\n            return ('8', '7');\r\n        } else if (midPoint < -75_000) {\r\n            return ('8', '10.5');\r\n        } else if (midPoint < -25_000) {\r\n            return ('8', '14.25');\r\n        } else if (midPoint < -5_000) {\r\n            return ('10', '18');\r\n        } else if (midPoint < 0) {\r\n            return ('11', '21');\r\n        } else if (midPoint < 5_000) {\r\n            return ('13', '23');\r\n        } else if (midPoint < 25_000) {\r\n            return ('15', '25');\r\n        } else if (midPoint < 75_000) {\r\n            return ('18', '26');\r\n        } else if (midPoint < 125_000) {\r\n            return ('21', '27');\r\n        } else {\r\n            return ('24', '27');\r\n        }\r\n    }\r\n\r\n    function generateSVGRareSparkle(uint256 tokenId, address poolAddress) private pure returns (string memory svg) {\r\n        if (isRare(tokenId, poolAddress)) {\r\n            svg = string(\r\n                abi.encodePacked(\r\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)\" />',\r\n                    '<g><path style=\"transform:translate(6px,6px)\" d=\"M12 0L12.6522 9.56587L18 1.6077L13.7819 10.2181L22.3923 6L14.4341 ',\r\n                    '11.3478L24 12L14.4341 12.6522L22.3923 18L13.7819 13.7819L18 22.3923L12.6522 14.4341L12 24L11.3478 14.4341L6 22.39',\r\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\" />',\r\n                    '<animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 18 18\" to=\"360 18 18\" dur=\"10s\" repeatCount=\"indefinite\"/></g></g>'\r\n                )\r\n            );\r\n        } else {\r\n            svg = '';\r\n        }\r\n    }\r\n\r\n    function isRare(uint256 tokenId, address poolAddress) internal pure returns (bool) {\r\n        bytes32 h = keccak256(abi.encodePacked(tokenId, poolAddress));\r\n        return uint256(h) < type(uint256).max / (1 + BitMath.mostSignificantBit(tokenId) * 2);\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/libraries/OracleLibrary.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0 <0.8.0;\r\n\r\nimport '../../elixir-core/libraries/FullMath.sol';\r\nimport '../../elixir-core/libraries/TickMath.sol';\r\nimport '../../elixir-core/interfaces/IElixirPool.sol';\r\n\r\n/// @title Oracle library\r\n/// @notice Provides functions to integrate with elixir pool oracle\r\nlibrary OracleLibrary {\r\n    /// @notice Calculates time-weighted means of tick and liquidity for a given Elixir pool\r\n    /// @param pool Address of the pool that we want to observe\r\n    /// @param secondsAgo Number of seconds in the past from which to calculate the time-weighted means\r\n    /// @return arithmeticMeanTick The arithmetic mean tick from (block.timestamp - secondsAgo) to block.timestamp\r\n    /// @return harmonicMeanLiquidity The harmonic mean liquidity from (block.timestamp - secondsAgo) to block.timestamp\r\n    function consult(address pool, uint32 secondsAgo)\r\n        internal\r\n        view\r\n        returns (int24 arithmeticMeanTick, uint128 harmonicMeanLiquidity)\r\n    {\r\n        require(secondsAgo != 0, 'BP');\r\n\r\n        uint32[] memory secondsAgos = new uint32[](2);\r\n        secondsAgos[0] = secondsAgo;\r\n        secondsAgos[1] = 0;\r\n\r\n        (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s, ) =\r\n            IElixirPool(pool).observe(secondsAgos);\r\n\r\n        int56 tickCumulativesDelta = tickCumulatives[1] - tickCumulatives[0];\r\n        uint160 secondsPerLiquidityCumulativesDelta =\r\n            secondsPerLiquidityCumulativeX128s[1] - secondsPerLiquidityCumulativeX128s[0];\r\n\r\n        arithmeticMeanTick = int24(tickCumulativesDelta / secondsAgo);\r\n        // Always round to negative infinity\r\n        if (tickCumulativesDelta < 0 && (tickCumulativesDelta % secondsAgo != 0)) arithmeticMeanTick--;\r\n\r\n        // We are multiplying here instead of shifting to ensure that harmonicMeanLiquidity doesn't overflow uint128\r\n        uint192 secondsAgoX160 = uint192(secondsAgo) * type(uint160).max;\r\n        harmonicMeanLiquidity = uint128(secondsAgoX160 / (uint192(secondsPerLiquidityCumulativesDelta) << 32));\r\n    }\r\n\r\n    /// @notice Given a tick and a token amount, calculates the amount of token received in exchange\r\n    /// @param tick Tick value used to calculate the quote\r\n    /// @param baseAmount Amount of token to be converted\r\n    /// @param baseToken Address of an ERC20 token contract used as the baseAmount denomination\r\n    /// @param quoteToken Address of an ERC20 token contract used as the quoteAmount denomination\r\n    /// @return quoteAmount Amount of quoteToken received for baseAmount of baseToken\r\n    function getQuoteAtTick(\r\n        int24 tick,\r\n        uint128 baseAmount,\r\n        address baseToken,\r\n        address quoteToken\r\n    ) internal pure returns (uint256 quoteAmount) {\r\n        uint160 sqrtRatioX96 = TickMath.getSqrtRatioAtTick(tick);\r\n\r\n        // Calculate quoteAmount with better precision if it doesn't overflow when multiplied by itself\r\n        if (sqrtRatioX96 <= type(uint128).max) {\r\n            uint256 ratioX192 = uint256(sqrtRatioX96) * sqrtRatioX96;\r\n            quoteAmount = baseToken < quoteToken\r\n                ? FullMath.mulDiv(ratioX192, baseAmount, 1 << 192)\r\n                : FullMath.mulDiv(1 << 192, baseAmount, ratioX192);\r\n        } else {\r\n            uint256 ratioX128 = FullMath.mulDiv(sqrtRatioX96, sqrtRatioX96, 1 << 64);\r\n            quoteAmount = baseToken < quoteToken\r\n                ? FullMath.mulDiv(ratioX128, baseAmount, 1 << 128)\r\n                : FullMath.mulDiv(1 << 128, baseAmount, ratioX128);\r\n        }\r\n    }\r\n\r\n    /// @notice Given a pool, it returns the number of seconds ago of the oldest stored observation\r\n    /// @param pool Address of Elixir pool that we want to observe\r\n    /// @return secondsAgo The number of seconds ago of the oldest observation stored for the pool\r\n    function getOldestObservationSecondsAgo(address pool) internal view returns (uint32 secondsAgo) {\r\n        (, , uint16 observationIndex, uint16 observationCardinality, , , ) = IElixirPool(pool).slot0();\r\n        require(observationCardinality > 0, 'NI');\r\n\r\n        (uint32 observationTimestamp, , , bool initialized,) =\r\n            IElixirPool(pool).observations((observationIndex + 1) % observationCardinality);\r\n\r\n        // The next index might not be initialized if the cardinality is in the process of increasing\r\n        // In this case the oldest observation is always in index 0\r\n        if (!initialized) {\r\n            (observationTimestamp, , , , ) = IElixirPool(pool).observations(0);\r\n        }\r\n\r\n        secondsAgo = uint32(block.timestamp) - observationTimestamp;\r\n    }\r\n\r\n    /// @notice Given a pool, it returns the tick value as of the start of the current block\r\n    /// @param pool Address of Elixir pool\r\n    /// @return The tick that the pool was in at the start of the current block\r\n    function getBlockStartingTickAndLiquidity(address pool) internal view returns (int24, uint128) {\r\n        (, int24 tick, uint16 observationIndex, uint16 observationCardinality, , , ) = IElixirPool(pool).slot0();\r\n\r\n        // 2 observations are needed to reliably calculate the block starting tick\r\n        require(observationCardinality > 1, 'NEO');\r\n\r\n        // If the latest observation occurred in the past, then no tick-changing trades have happened in this block\r\n        // therefore the tick in `slot0` is the same as at the beginning of the current block.\r\n        // We don't need to check if this observation is initialized - it is guaranteed to be.\r\n        (uint32 observationTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, , ) =\r\n            IElixirPool(pool).observations(observationIndex);\r\n        if (observationTimestamp != uint32(block.timestamp)) {\r\n            return (tick, IElixirPool(pool).liquidity());\r\n        }\r\n\r\n        uint256 prevIndex = (uint256(observationIndex) + observationCardinality - 1) % observationCardinality;\r\n        (\r\n            uint32 prevObservationTimestamp,\r\n            int56 prevTickCumulative,\r\n            uint160 prevSecondsPerLiquidityCumulativeX128,\r\n            bool prevInitialized,\r\n        ) = IElixirPool(pool).observations(prevIndex);\r\n\r\n        require(prevInitialized, 'ONI');\r\n\r\n        uint32 delta = observationTimestamp - prevObservationTimestamp;\r\n        tick = int24((tickCumulative - prevTickCumulative) / delta);\r\n        uint128 liquidity =\r\n            uint128(\r\n                (uint192(delta) * type(uint160).max) /\r\n                    (uint192(secondsPerLiquidityCumulativeX128 - prevSecondsPerLiquidityCumulativeX128) << 32)\r\n            );\r\n        return (tick, liquidity);\r\n    }\r\n\r\n    /// @notice Information for calculating a weighted arithmetic mean tick\r\n    struct WeightedTickData {\r\n        int24 tick;\r\n        uint128 weight;\r\n    }\r\n\r\n    /// @notice Given an array of ticks and weights, calculates the weighted arithmetic mean tick\r\n    /// @param weightedTickData An array of ticks and weights\r\n    /// @return weightedArithmeticMeanTick The weighted arithmetic mean tick\r\n    /// @dev Each entry of `weightedTickData` should represents ticks from pools with the same underlying pool tokens. If they do not,\r\n    /// extreme care must be taken to ensure that ticks are comparable (including decimal differences).\r\n    /// @dev Note that the weighted arithmetic mean tick corresponds to the weighted geometric mean price.\r\n    function getWeightedArithmeticMeanTick(WeightedTickData[] memory weightedTickData)\r\n        internal\r\n        pure\r\n        returns (int24 weightedArithmeticMeanTick)\r\n    {\r\n        // Accumulates the sum of products between each tick and its weight\r\n        int256 numerator;\r\n\r\n        // Accumulates the sum of the weights\r\n        uint256 denominator;\r\n\r\n        // Products fit in 152 bits, so it would take an array of length ~2**104 to overflow this logic\r\n        for (uint256 i; i < weightedTickData.length; i++) {\r\n            numerator += weightedTickData[i].tick * int256(weightedTickData[i].weight);\r\n            denominator += weightedTickData[i].weight;\r\n        }\r\n\r\n        weightedArithmeticMeanTick = int24(numerator / int256(denominator));\r\n        // Always round to negative infinity\r\n        if (numerator < 0 && (numerator % int256(denominator) != 0)) weightedArithmeticMeanTick--;\r\n    }\r\n\r\n    /// @notice Returns the \"synthetic\" tick which represents the price of the first entry in `tokens` in terms of the last\r\n    /// @dev Useful for calculating relative prices along routes.\r\n    /// @dev There must be one tick for each pairwise set of tokens.\r\n    /// @param tokens The token contract addresses\r\n    /// @param ticks The ticks, representing the price of each token pair in `tokens`\r\n    /// @return syntheticTick The synthetic tick, representing the relative price of the outermost tokens in `tokens`\r\n    function getChainedPrice(address[] memory tokens, int24[] memory ticks)\r\n        internal\r\n        pure\r\n        returns (int256 syntheticTick)\r\n    {\r\n        require(tokens.length - 1 == ticks.length, 'DL');\r\n        for (uint256 i = 1; i <= ticks.length; i++) {\r\n            // check the tokens for address sort order, then accumulate the\r\n            // ticks into the running synthetic tick, ensuring that intermediate tokens \"cancel out\"\r\n            tokens[i - 1] < tokens[i] ? syntheticTick += ticks[i - 1] : syntheticTick -= ticks[i - 1];\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/libraries/Path.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.6.0;\r\n\r\nimport './BytesLib.sol';\r\n\r\n/// @title Functions for manipulating path data for multihop swaps\r\nlibrary Path {\r\n    using BytesLib for bytes;\r\n\r\n    /// @dev The length of the bytes encoded address\r\n    uint256 private constant ADDR_SIZE = 20;\r\n    /// @dev The length of the bytes encoded fee\r\n    uint256 private constant FEE_SIZE = 3;\r\n\r\n    /// @dev The offset of a single token address and pool fee\r\n    uint256 private constant NEXT_OFFSET = ADDR_SIZE + FEE_SIZE;\r\n    /// @dev The offset of an encoded pool key\r\n    uint256 private constant POP_OFFSET = NEXT_OFFSET + ADDR_SIZE;\r\n    /// @dev The minimum length of an encoding that contains 2 or more pools\r\n    uint256 private constant MULTIPLE_POOLS_MIN_LENGTH = POP_OFFSET + NEXT_OFFSET;\r\n\r\n    /// @notice Returns true iff the path contains two or more pools\r\n    /// @param path The encoded swap path\r\n    /// @return True if path contains two or more pools, otherwise false\r\n    function hasMultiplePools(bytes memory path) internal pure returns (bool) {\r\n        return path.length >= MULTIPLE_POOLS_MIN_LENGTH;\r\n    }\r\n\r\n    /// @notice Returns the number of pools in the path\r\n    /// @param path The encoded swap path\r\n    /// @return The number of pools in the path\r\n    function numPools(bytes memory path) internal pure returns (uint256) {\r\n        // Ignore the first token address. From then on every fee and token offset indicates a pool.\r\n        return ((path.length - ADDR_SIZE) / NEXT_OFFSET);\r\n    }\r\n\r\n    /// @notice Decodes the first pool in path\r\n    /// @param path The bytes encoded swap path\r\n    /// @return tokenA The first token of the given pool\r\n    /// @return tokenB The second token of the given pool\r\n    /// @return fee The fee level of the pool\r\n    function decodeFirstPool(bytes memory path)\r\n        internal\r\n        pure\r\n        returns (\r\n            address tokenA,\r\n            address tokenB,\r\n            uint24 fee\r\n        )\r\n    {\r\n        tokenA = path.toAddress(0);\r\n        fee = path.toUint24(ADDR_SIZE);\r\n        tokenB = path.toAddress(NEXT_OFFSET);\r\n    }\r\n\r\n    /// @notice Gets the segment corresponding to the first pool in the path\r\n    /// @param path The bytes encoded swap path\r\n    /// @return The segment containing all data necessary to target the first pool in the path\r\n    function getFirstPool(bytes memory path) internal pure returns (bytes memory) {\r\n        return path.slice(0, POP_OFFSET);\r\n    }\r\n\r\n    /// @notice Skips a token + fee element from the buffer and returns the remainder\r\n    /// @param path The swap path\r\n    /// @return The remaining token + fee elements in the path\r\n    function skipToken(bytes memory path) internal pure returns (bytes memory) {\r\n        return path.slice(NEXT_OFFSET, path.length - NEXT_OFFSET);\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/libraries/PoolAddress.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0 <0.8.0;\r\n\r\n/// @title Provides functions for deriving a pool address from the factory, tokens, and the fee\r\nlibrary PoolAddress {\r\n    // For OpenZeppelin Clones, init code hash is derived from the hash of the bytecode\r\n    // `0x41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c22`\r\n    // if implementation address is `0x5cB5539A18591947C82f5D840B05ed79f6395491`. We get that implementation address\r\n    // by always using `0x427207B1Cdb6F2Ab8B1D21Ab77600f00b0a639a7` with nonce 0 as the deployer of the implementation.\r\n    bytes32 internal constant POOL_INIT_CODE_HASH = 0x41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c22;\r\n\r\n    /// @notice The identifying key of the pool\r\n    struct PoolKey {\r\n        address token0;\r\n        address token1;\r\n        uint24 fee;\r\n    }\r\n\r\n    /// @notice Returns PoolKey: the ordered tokens with the matched fee levels\r\n    /// @param tokenA The first token of a pool, unsorted\r\n    /// @param tokenB The second token of a pool, unsorted\r\n    /// @param fee The fee level of the pool\r\n    /// @return Poolkey The pool details with ordered token0 and token1 assignments\r\n    function getPoolKey(\r\n        address tokenA,\r\n        address tokenB,\r\n        uint24 fee\r\n    ) internal pure returns (PoolKey memory) {\r\n        if (tokenA > tokenB) (tokenA, tokenB) = (tokenB, tokenA);\r\n        return PoolKey({token0: tokenA, token1: tokenB, fee: fee});\r\n    }\r\n\r\n    /// @notice Deterministically computes the pool address given the factory and PoolKey\r\n    /// @param factory The Elixir factory contract address\r\n    /// @param key The PoolKey\r\n    /// @return pool The contract address of the elixir pool\r\n    function computeAddress(address factory, PoolKey memory key) internal pure returns (address pool) {\r\n        require(key.token0 < key.token1);\r\n        pool = address(\r\n            uint256(\r\n                keccak256(\r\n                    abi.encodePacked(\r\n                        hex'ff',\r\n                        factory,\r\n                        keccak256(abi.encode(key.token0, key.token1, key.fee)),\r\n                        POOL_INIT_CODE_HASH\r\n                    )\r\n                )\r\n            )\r\n        );\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/libraries/PoolTicksCounter.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.6.0 <0.8.0;\r\n\r\nimport '../../elixir-core/interfaces/IElixirPool.sol';\r\n\r\nlibrary PoolTicksCounter {\r\n    /// @dev This function counts the number of initialized ticks that would incur a gas cost between tickBefore and tickAfter.\r\n    /// When tickBefore and/or tickAfter themselves are initialized, the logic over whether we should count them depends on the\r\n    /// direction of the swap. If we are swapping upwards (tickAfter > tickBefore) we don't want to count tickBefore but we do\r\n    /// want to count tickAfter. The opposite is true if we are swapping downwards.\r\n    function countInitializedTicksCrossed(\r\n        IElixirPool self,\r\n        int24 tickBefore,\r\n        int24 tickAfter\r\n    ) internal view returns (uint32 initializedTicksCrossed) {\r\n        int16 wordPosLower;\r\n        int16 wordPosHigher;\r\n        uint8 bitPosLower;\r\n        uint8 bitPosHigher;\r\n        bool tickBeforeInitialized;\r\n        bool tickAfterInitialized;\r\n\r\n        {\r\n            // Get the key and offset in the tick bitmap of the active tick before and after the swap.\r\n            int16 wordPos = int16((tickBefore / self.tickSpacing()) >> 8);\r\n            uint8 bitPos = uint8((tickBefore / self.tickSpacing()) % 256);\r\n\r\n            int16 wordPosAfter = int16((tickAfter / self.tickSpacing()) >> 8);\r\n            uint8 bitPosAfter = uint8((tickAfter / self.tickSpacing()) % 256);\r\n\r\n            // In the case where tickAfter is initialized, we only want to count it if we are swapping downwards.\r\n            // If the initializable tick after the swap is initialized, our original tickAfter is a\r\n            // multiple of tick spacing, and we are swapping downwards we know that tickAfter is initialized\r\n            // and we shouldn't count it.\r\n            tickAfterInitialized =\r\n                ((self.tickBitmap(wordPosAfter) & (1 << bitPosAfter)) > 0) &&\r\n                ((tickAfter % self.tickSpacing()) == 0) &&\r\n                (tickBefore > tickAfter);\r\n\r\n            // In the case where tickBefore is initialized, we only want to count it if we are swapping upwards.\r\n            // Use the same logic as above to decide whether we should count tickBefore or not.\r\n            tickBeforeInitialized =\r\n                ((self.tickBitmap(wordPos) & (1 << bitPos)) > 0) &&\r\n                ((tickBefore % self.tickSpacing()) == 0) &&\r\n                (tickBefore < tickAfter);\r\n\r\n            if (wordPos < wordPosAfter || (wordPos == wordPosAfter && bitPos <= bitPosAfter)) {\r\n                wordPosLower = wordPos;\r\n                bitPosLower = bitPos;\r\n                wordPosHigher = wordPosAfter;\r\n                bitPosHigher = bitPosAfter;\r\n            } else {\r\n                wordPosLower = wordPosAfter;\r\n                bitPosLower = bitPosAfter;\r\n                wordPosHigher = wordPos;\r\n                bitPosHigher = bitPos;\r\n            }\r\n        }\r\n\r\n        // Count the number of initialized ticks crossed by iterating through the tick bitmap.\r\n        // Our first mask should include the lower tick and everything to its left.\r\n        uint256 mask = type(uint256).max << bitPosLower;\r\n        while (wordPosLower <= wordPosHigher) {\r\n            // If we're on the final tick bitmap page, ensure we only count up to our\r\n            // ending tick.\r\n            if (wordPosLower == wordPosHigher) {\r\n                mask = mask & (type(uint256).max >> (255 - bitPosHigher));\r\n            }\r\n\r\n            uint256 masked = self.tickBitmap(wordPosLower) & mask;\r\n            initializedTicksCrossed += countOneBits(masked);\r\n            wordPosLower++;\r\n            // Reset our mask so we consider all bits on the next iteration.\r\n            mask = type(uint256).max;\r\n        }\r\n\r\n        if (tickAfterInitialized) {\r\n            initializedTicksCrossed -= 1;\r\n        }\r\n\r\n        if (tickBeforeInitialized) {\r\n            initializedTicksCrossed -= 1;\r\n        }\r\n\r\n        return initializedTicksCrossed;\r\n    }\r\n\r\n    function countOneBits(uint256 x) private pure returns (uint16) {\r\n        uint16 bits = 0;\r\n        while (x != 0) {\r\n            bits++;\r\n            x &= (x - 1);\r\n        }\r\n        return bits;\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/libraries/PositionKey.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\nlibrary PositionKey {\r\n    /// @dev Returns the key of the position in the core library\r\n    function compute(\r\n        address owner,\r\n        int24 tickLower,\r\n        int24 tickUpper\r\n    ) internal pure returns (bytes32) {\r\n        return keccak256(abi.encodePacked(owner, tickLower, tickUpper));\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/libraries/PositionValue.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.6.8 <0.8.0;\r\n\r\nimport '../../elixir-core/interfaces/IElixirPool.sol';\r\nimport '../../elixir-core/libraries/FixedPoint128.sol';\r\nimport '../../elixir-core/libraries/TickMath.sol';\r\nimport '../../elixir-core/libraries/Tick.sol';\r\nimport '../interfaces/INonfungiblePositionManager.sol';\r\nimport './LiquidityAmounts.sol';\r\nimport './PoolAddress.sol';\r\nimport './PositionKey.sol';\r\n\r\n/// @title Returns information about the token value held in a Elixir NFT\r\nlibrary PositionValue {\r\n    /// @notice Returns the total amounts of token0 and token1, i.e. the sum of fees and principal\r\n    /// that a given nonfungible position manager token is worth\r\n    /// @param positionManager The Elixir NonfungiblePositionManager\r\n    /// @param tokenId The tokenId of the token for which to get the total value\r\n    /// @param sqrtRatioX96 The square root price X96 for which to calculate the principal amounts\r\n    /// @return amount0 The total amount of token0 including principal and fees\r\n    /// @return amount1 The total amount of token1 including principal and fees\r\n    function total(\r\n        INonfungiblePositionManager positionManager,\r\n        uint256 tokenId,\r\n        uint160 sqrtRatioX96\r\n    ) internal view returns (uint256 amount0, uint256 amount1) {\r\n        (uint256 amount0Principal, uint256 amount1Principal) = principal(positionManager, tokenId, sqrtRatioX96);\r\n        (uint256 amount0Fee, uint256 amount1Fee) = fees(positionManager, tokenId);\r\n        return (amount0Principal + amount0Fee, amount1Principal + amount1Fee);\r\n    }\r\n\r\n    /// @notice Calculates the principal (currently acting as liquidity) owed to the token owner in the event\r\n    /// that the position is burned\r\n    /// @param positionManager The Elixir NonfungiblePositionManager\r\n    /// @param tokenId The tokenId of the token for which to get the total principal owed\r\n    /// @param sqrtRatioX96 The square root price X96 for which to calculate the principal amounts\r\n    /// @return amount0 The principal amount of token0\r\n    /// @return amount1 The principal amount of token1\r\n    function principal(\r\n        INonfungiblePositionManager positionManager,\r\n        uint256 tokenId,\r\n        uint160 sqrtRatioX96\r\n    ) internal view returns (uint256 amount0, uint256 amount1) {\r\n        (, , , , , int24 tickLower, int24 tickUpper, uint128 liquidity, , , , ) = positionManager.positions(tokenId);\r\n\r\n        return\r\n            LiquidityAmounts.getAmountsForLiquidity(\r\n                sqrtRatioX96,\r\n                TickMath.getSqrtRatioAtTick(tickLower),\r\n                TickMath.getSqrtRatioAtTick(tickUpper),\r\n                liquidity\r\n            );\r\n    }\r\n\r\n    struct FeeParams {\r\n        address token0;\r\n        address token1;\r\n        uint24 fee;\r\n        int24 tickLower;\r\n        int24 tickUpper;\r\n        uint128 liquidity;\r\n        uint256 positionFeeGrowthInside0LastX128;\r\n        uint256 positionFeeGrowthInside1LastX128;\r\n        uint256 tokensOwed0;\r\n        uint256 tokensOwed1;\r\n    }\r\n\r\n    /// @notice Calculates the total fees owed to the token owner\r\n    /// @param positionManager The Elixir NonfungiblePositionManager\r\n    /// @param tokenId The tokenId of the token for which to get the total fees owed\r\n    /// @return amount0 The amount of fees owed in token0\r\n    /// @return amount1 The amount of fees owed in token1\r\n    function fees(INonfungiblePositionManager positionManager, uint256 tokenId)\r\n        internal\r\n        view\r\n        returns (uint256 amount0, uint256 amount1)\r\n    {\r\n        (\r\n            ,\r\n            ,\r\n            address token0,\r\n            address token1,\r\n            uint24 fee,\r\n            int24 tickLower,\r\n            int24 tickUpper,\r\n            uint128 liquidity,\r\n            uint256 positionFeeGrowthInside0LastX128,\r\n            uint256 positionFeeGrowthInside1LastX128,\r\n            uint256 tokensOwed0,\r\n            uint256 tokensOwed1\r\n        ) = positionManager.positions(tokenId);\r\n\r\n        return\r\n            _fees(\r\n                positionManager,\r\n                FeeParams({\r\n                    token0: token0,\r\n                    token1: token1,\r\n                    fee: fee,\r\n                    tickLower: tickLower,\r\n                    tickUpper: tickUpper,\r\n                    liquidity: liquidity,\r\n                    positionFeeGrowthInside0LastX128: positionFeeGrowthInside0LastX128,\r\n                    positionFeeGrowthInside1LastX128: positionFeeGrowthInside1LastX128,\r\n                    tokensOwed0: tokensOwed0,\r\n                    tokensOwed1: tokensOwed1\r\n                })\r\n            );\r\n    }\r\n\r\n    function _fees(INonfungiblePositionManager positionManager, FeeParams memory feeParams)\r\n        private\r\n        view\r\n        returns (uint256 amount0, uint256 amount1)\r\n    {\r\n        (uint256 poolFeeGrowthInside0LastX128, uint256 poolFeeGrowthInside1LastX128) =\r\n            _getFeeGrowthInside(\r\n                IElixirPool(\r\n                    PoolAddress.computeAddress(\r\n                        positionManager.factory(),\r\n                        PoolAddress.PoolKey({token0: feeParams.token0, token1: feeParams.token1, fee: feeParams.fee})\r\n                    )\r\n                ),\r\n                feeParams.tickLower,\r\n                feeParams.tickUpper\r\n            );\r\n\r\n        amount0 =\r\n            FullMath.mulDiv(\r\n                poolFeeGrowthInside0LastX128 - feeParams.positionFeeGrowthInside0LastX128,\r\n                feeParams.liquidity,\r\n                FixedPoint128.Q128\r\n            ) +\r\n            feeParams.tokensOwed0;\r\n\r\n        amount1 =\r\n            FullMath.mulDiv(\r\n                poolFeeGrowthInside1LastX128 - feeParams.positionFeeGrowthInside1LastX128,\r\n                feeParams.liquidity,\r\n                FixedPoint128.Q128\r\n            ) +\r\n            feeParams.tokensOwed1;\r\n    }\r\n\r\n    function _getFeeGrowthInside(\r\n        IElixirPool pool,\r\n        int24 tickLower,\r\n        int24 tickUpper\r\n    ) private view returns (uint256 feeGrowthInside0X128, uint256 feeGrowthInside1X128) {\r\n        (, int24 tickCurrent, , , , , ) = pool.slot0();\r\n        (, , uint256 lowerFeeGrowthOutside0X128, uint256 lowerFeeGrowthOutside1X128, , , , , ) = pool.ticks(tickLower);\r\n        (, , uint256 upperFeeGrowthOutside0X128, uint256 upperFeeGrowthOutside1X128, , , , , ) = pool.ticks(tickUpper);\r\n\r\n        if (tickCurrent < tickLower) {\r\n            feeGrowthInside0X128 = lowerFeeGrowthOutside0X128 - upperFeeGrowthOutside0X128;\r\n            feeGrowthInside1X128 = lowerFeeGrowthOutside1X128 - upperFeeGrowthOutside1X128;\r\n        } else if (tickCurrent < tickUpper) {\r\n            uint256 feeGrowthGlobal0X128 = pool.feeGrowthGlobal0X128();\r\n            uint256 feeGrowthGlobal1X128 = pool.feeGrowthGlobal1X128();\r\n            feeGrowthInside0X128 = feeGrowthGlobal0X128 - lowerFeeGrowthOutside0X128 - upperFeeGrowthOutside0X128;\r\n            feeGrowthInside1X128 = feeGrowthGlobal1X128 - lowerFeeGrowthOutside1X128 - upperFeeGrowthOutside1X128;\r\n        } else {\r\n            feeGrowthInside0X128 = upperFeeGrowthOutside0X128 - lowerFeeGrowthOutside0X128;\r\n            feeGrowthInside1X128 = upperFeeGrowthOutside1X128 - lowerFeeGrowthOutside1X128;\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/libraries/SqrtPriceMathPartial.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\n\r\nimport '../../elixir-core/libraries/FullMath.sol';\r\nimport '../../elixir-core/libraries/UnsafeMath.sol';\r\nimport '../../elixir-core/libraries/FixedPoint96.sol';\r\n\r\n/// @title Functions based on Q64.96 sqrt price and liquidity\r\n/// @notice Exposes two functions from elixir-core SqrtPriceMath\r\n/// that use square root of price as a Q64.96 and liquidity to compute deltas\r\nlibrary SqrtPriceMathPartial {\r\n    /// @notice Gets the amount0 delta between two prices\r\n    /// @dev Calculates liquidity / sqrt(lower) - liquidity / sqrt(upper),\r\n    /// i.e. liquidity * (sqrt(upper) - sqrt(lower)) / (sqrt(upper) * sqrt(lower))\r\n    /// @param sqrtRatioAX96 A sqrt price\r\n    /// @param sqrtRatioBX96 Another sqrt price\r\n    /// @param liquidity The amount of usable liquidity\r\n    /// @param roundUp Whether to round the amount up or down\r\n    /// @return amount0 Amount of token0 required to cover a position of size liquidity between the two passed prices\r\n    function getAmount0Delta(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint128 liquidity,\r\n        bool roundUp\r\n    ) internal pure returns (uint256 amount0) {\r\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\r\n\r\n        uint256 numerator1 = uint256(liquidity) << FixedPoint96.RESOLUTION;\r\n        uint256 numerator2 = sqrtRatioBX96 - sqrtRatioAX96;\r\n\r\n        require(sqrtRatioAX96 > 0);\r\n\r\n        return\r\n            roundUp\r\n                ? UnsafeMath.divRoundingUp(\r\n                    FullMath.mulDivRoundingUp(numerator1, numerator2, sqrtRatioBX96),\r\n                    sqrtRatioAX96\r\n                )\r\n                : FullMath.mulDiv(numerator1, numerator2, sqrtRatioBX96) / sqrtRatioAX96;\r\n    }\r\n\r\n    /// @notice Gets the amount1 delta between two prices\r\n    /// @dev Calculates liquidity * (sqrt(upper) - sqrt(lower))\r\n    /// @param sqrtRatioAX96 A sqrt price\r\n    /// @param sqrtRatioBX96 Another sqrt price\r\n    /// @param liquidity The amount of usable liquidity\r\n    /// @param roundUp Whether to round the amount up, or down\r\n    /// @return amount1 Amount of token1 required to cover a position of size liquidity between the two passed prices\r\n    function getAmount1Delta(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint128 liquidity,\r\n        bool roundUp\r\n    ) internal pure returns (uint256 amount1) {\r\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\r\n\r\n        return\r\n            roundUp\r\n                ? FullMath.mulDivRoundingUp(liquidity, sqrtRatioBX96 - sqrtRatioAX96, FixedPoint96.Q96)\r\n                : FullMath.mulDiv(liquidity, sqrtRatioBX96 - sqrtRatioAX96, FixedPoint96.Q96);\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/libraries/TokenRatioSortOrder.sol":{"content":"// SPDX-License-Identifier: MIT\r\npragma solidity =0.7.6;\r\n\r\nlibrary TokenRatioSortOrder {\r\n    int256 constant NUMERATOR_MOST = 300;\r\n    int256 constant NUMERATOR_MORE = 200;\r\n    int256 constant NUMERATOR = 100;\r\n\r\n    int256 constant DENOMINATOR_MOST = -300;\r\n    int256 constant DENOMINATOR_MORE = -200;\r\n    int256 constant DENOMINATOR = -100;\r\n}\r\n"},"contracts/elixir-periphery/libraries/TransferHelper.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.6.0;\r\n\r\nimport 'openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol';\r\n\r\nlibrary TransferHelper {\r\n    /// @notice Transfers tokens from the targeted address to the given destination\r\n    /// @notice Errors with 'STF' if transfer fails\r\n    /// @param token The contract address of the token to be transferred\r\n    /// @param from The originating address from which the tokens will be transferred\r\n    /// @param to The destination address of the transfer\r\n    /// @param value The amount to be transferred\r\n    function safeTransferFrom(\r\n        address token,\r\n        address from,\r\n        address to,\r\n        uint256 value\r\n    ) internal {\r\n        (bool success, bytes memory data) =\r\n            token.call(abi.encodeWithSelector(IERC20.transferFrom.selector, from, to, value));\r\n        require(success && (data.length == 0 || abi.decode(data, (bool))), 'STF');\r\n    }\r\n\r\n    /// @notice Transfers tokens from msg.sender to a recipient\r\n    /// @dev Errors with ST if transfer fails\r\n    /// @param token The contract address of the token which will be transferred\r\n    /// @param to The recipient of the transfer\r\n    /// @param value The value of the transfer\r\n    function safeTransfer(\r\n        address token,\r\n        address to,\r\n        uint256 value\r\n    ) internal {\r\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector, to, value));\r\n        require(success && (data.length == 0 || abi.decode(data, (bool))), 'ST');\r\n    }\r\n\r\n    /// @notice Approves the stipulated contract to spend the given allowance in the given token\r\n    /// @dev Errors with 'SA' if transfer fails\r\n    /// @param token The contract address of the token to be approved\r\n    /// @param to The target of the approval\r\n    /// @param value The amount of the given token the target will be allowed to spend\r\n    function safeApprove(\r\n        address token,\r\n        address to,\r\n        uint256 value\r\n    ) internal {\r\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.approve.selector, to, value));\r\n        require(success && (data.length == 0 || abi.decode(data, (bool))), 'SA');\r\n    }\r\n\r\n    /// @notice Transfers ETH to the recipient address\r\n    /// @dev Fails with `STE`\r\n    /// @param to The destination of the transfer\r\n    /// @param value The value to be transferred\r\n    function safeTransferETH(address to, uint256 value) internal {\r\n        (bool success, ) = to.call{value: value}(new bytes(0));\r\n        require(success, 'STE');\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/SwapRouter.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\npragma abicoder v2;\r\n\r\nimport '../elixir-core/libraries/SafeCast.sol';\r\nimport '../elixir-core/libraries/TickMath.sol';\r\nimport '../elixir-core/interfaces/IElixirPool.sol';\r\n\r\nimport './interfaces/ISwapRouter.sol';\r\nimport './base/PeripheryImmutableState.sol';\r\nimport './base/PeripheryValidation.sol';\r\nimport './base/PeripheryPaymentsWithFee.sol';\r\nimport './base/Multicall.sol';\r\nimport './base/SelfPermit.sol';\r\nimport './libraries/Path.sol';\r\nimport './libraries/PoolAddress.sol';\r\nimport './libraries/CallbackValidation.sol';\r\nimport './interfaces/external/IWETH9.sol';\r\n\r\n/// @title Elixir Swap Router\r\n/// @notice Router for stateless execution of swaps against Elixir\r\ncontract SwapRouter is\r\n    ISwapRouter,\r\n    PeripheryImmutableState,\r\n    PeripheryValidation,\r\n    PeripheryPaymentsWithFee,\r\n    Multicall,\r\n    SelfPermit\r\n{\r\n    using Path for bytes;\r\n    using SafeCast for uint256;\r\n\r\n    /// @dev Used as the placeholder value for amountInCached, because the computed amount in for an exact output swap\r\n    /// can never actually be this value\r\n    uint256 private constant DEFAULT_AMOUNT_IN_CACHED = type(uint256).max;\r\n\r\n    /// @dev Transient storage variable used for returning the computed amount in for an exact output swap.\r\n    uint256 private amountInCached = DEFAULT_AMOUNT_IN_CACHED;\r\n\r\n    constructor(address _factory, address _WETH9) PeripheryImmutableState(_factory, _WETH9) {}\r\n\r\n    /// @dev Returns the pool for the given token pair and fee. The pool contract may or may not exist.\r\n    function getPool(\r\n        address tokenA,\r\n        address tokenB,\r\n        uint24 fee\r\n    ) private view returns (IElixirPool) {\r\n        return IElixirPool(PoolAddress.computeAddress(factory, PoolAddress.getPoolKey(tokenA, tokenB, fee)));\r\n    }\r\n\r\n    struct SwapCallbackData {\r\n        bytes path;\r\n        address payer;\r\n    }\r\n\r\n    /// @inheritdoc IElixirSwapCallback\r\n    function elixirSwapCallback(\r\n        int256 amount0Delta,\r\n        int256 amount1Delta,\r\n        bytes calldata _data\r\n    ) external override {\r\n        require(amount0Delta > 0 || amount1Delta > 0); // swaps entirely within 0-liquidity regions are not supported\r\n        SwapCallbackData memory data = abi.decode(_data, (SwapCallbackData));\r\n        (address tokenIn, address tokenOut, uint24 fee) = data.path.decodeFirstPool();\r\n        CallbackValidation.verifyCallback(factory, tokenIn, tokenOut, fee);\r\n\r\n        (bool isExactInput, uint256 amountToPay) =\r\n            amount0Delta > 0\r\n                ? (tokenIn < tokenOut, uint256(amount0Delta))\r\n                : (tokenOut < tokenIn, uint256(amount1Delta));\r\n        if (isExactInput) {\r\n            pay(tokenIn, data.payer, msg.sender, amountToPay);\r\n        } else {\r\n            // either initiate the next swap or pay\r\n            if (data.path.hasMultiplePools()) {\r\n                data.path = data.path.skipToken();\r\n                exactOutputInternal(amountToPay, msg.sender, 0, data);\r\n            } else {\r\n                amountInCached = amountToPay;\r\n                tokenIn = tokenOut; // swap in/out because exact output swaps are reversed\r\n                pay(tokenIn, data.payer, msg.sender, amountToPay);\r\n            }\r\n        }\r\n    }\r\n\r\n    /// @dev Performs a single exact input swap\r\n    function exactInputInternal(\r\n        uint256 amountIn,\r\n        address recipient,\r\n        uint160 sqrtPriceLimitX96,\r\n        SwapCallbackData memory data\r\n    ) private returns (uint256 amountOut) {\r\n        // allow swapping to the router address with address 0\r\n        if (recipient == address(0)) recipient = address(this);\r\n\r\n        (address tokenIn, address tokenOut, uint24 fee) = data.path.decodeFirstPool();\r\n\r\n        bool zeroForOne = tokenIn < tokenOut;\r\n\r\n        (int256 amount0, int256 amount1) =\r\n            getPool(tokenIn, tokenOut, fee).swap(\r\n                recipient,\r\n                zeroForOne,\r\n                amountIn.toInt256(),\r\n                sqrtPriceLimitX96 == 0\r\n                    ? (zeroForOne ? TickMath.MIN_SQRT_RATIO + 1 : TickMath.MAX_SQRT_RATIO - 1)\r\n                    : sqrtPriceLimitX96,\r\n                abi.encode(data)\r\n            );\r\n\r\n        return uint256(-(zeroForOne ? amount1 : amount0));\r\n    }\r\n\r\n    /// @inheritdoc ISwapRouter\r\n    function exactInputSingle(ExactInputSingleParams calldata params)\r\n        external\r\n        payable\r\n        override\r\n        checkDeadline(params.deadline)\r\n        returns (uint256 amountOut)\r\n    {\r\n        amountOut = exactInputInternal(\r\n            params.amountIn,\r\n            params.recipient,\r\n            params.sqrtPriceLimitX96,\r\n            SwapCallbackData({path: abi.encodePacked(params.tokenIn, params.fee, params.tokenOut), payer: msg.sender})\r\n        );\r\n        require(amountOut >= params.amountOutMinimum, 'Too little received');\r\n        _refundETH();\r\n    }\r\n\r\n    /// @inheritdoc ISwapRouter\r\n    function exactInput(ExactInputParams memory params)\r\n        external\r\n        payable\r\n        override\r\n        checkDeadline(params.deadline)\r\n        returns (uint256 amountOut)\r\n    {\r\n        address payer = msg.sender; // msg.sender pays for the first hop\r\n\r\n        while (true) {\r\n            bool hasMultiplePools = params.path.hasMultiplePools();\r\n\r\n            // the outputs of prior swaps become the inputs to subsequent ones\r\n            params.amountIn = exactInputInternal(\r\n                params.amountIn,\r\n                hasMultiplePools ? address(this) : params.recipient, // for intermediate swaps, this contract custodies\r\n                0,\r\n                SwapCallbackData({\r\n                    path: params.path.getFirstPool(), // only the first pool in the path is necessary\r\n                    payer: payer\r\n                })\r\n            );\r\n\r\n            // decide whether to continue or terminate\r\n            if (hasMultiplePools) {\r\n                payer = address(this); // at this point, the caller has paid\r\n                params.path = params.path.skipToken();\r\n            } else {\r\n                amountOut = params.amountIn;\r\n                break;\r\n            }\r\n        }\r\n\r\n        require(amountOut >= params.amountOutMinimum, 'Too little received');\r\n        _refundETH();\r\n    }\r\n\r\n    /// @dev Performs a single exact output swap\r\n    function exactOutputInternal(\r\n        uint256 amountOut,\r\n        address recipient,\r\n        uint160 sqrtPriceLimitX96,\r\n        SwapCallbackData memory data\r\n    ) private returns (uint256 amountIn) {\r\n        // allow swapping to the router address with address 0\r\n        if (recipient == address(0)) recipient = address(this);\r\n\r\n        (address tokenOut, address tokenIn, uint24 fee) = data.path.decodeFirstPool();\r\n\r\n        bool zeroForOne = tokenIn < tokenOut;\r\n\r\n        (int256 amount0Delta, int256 amount1Delta) =\r\n            getPool(tokenIn, tokenOut, fee).swap(\r\n                recipient,\r\n                zeroForOne,\r\n                -amountOut.toInt256(),\r\n                sqrtPriceLimitX96 == 0\r\n                    ? (zeroForOne ? TickMath.MIN_SQRT_RATIO + 1 : TickMath.MAX_SQRT_RATIO - 1)\r\n                    : sqrtPriceLimitX96,\r\n                abi.encode(data)\r\n            );\r\n\r\n        uint256 amountOutReceived;\r\n        (amountIn, amountOutReceived) = zeroForOne\r\n            ? (uint256(amount0Delta), uint256(-amount1Delta))\r\n            : (uint256(amount1Delta), uint256(-amount0Delta));\r\n        // it's technically possible to not receive the full output amount,\r\n        // so if no price limit has been specified, require this possibility away\r\n        if (sqrtPriceLimitX96 == 0) require(amountOutReceived == amountOut);\r\n    }\r\n\r\n    /// @inheritdoc ISwapRouter\r\n    function exactOutputSingle(ExactOutputSingleParams calldata params)\r\n        external\r\n        payable\r\n        override\r\n        checkDeadline(params.deadline)\r\n        returns (uint256 amountIn)\r\n    {\r\n        // avoid an SLOAD by using the swap return data\r\n        amountIn = exactOutputInternal(\r\n            params.amountOut,\r\n            params.recipient,\r\n            params.sqrtPriceLimitX96,\r\n            SwapCallbackData({path: abi.encodePacked(params.tokenOut, params.fee, params.tokenIn), payer: msg.sender})\r\n        );\r\n\r\n        require(amountIn <= params.amountInMaximum, 'Too much requested');\r\n        // has to be reset even though we don't use it in the single hop case\r\n        amountInCached = DEFAULT_AMOUNT_IN_CACHED;\r\n    }\r\n\r\n    /// @inheritdoc ISwapRouter\r\n    function exactOutput(ExactOutputParams calldata params)\r\n        external\r\n        payable\r\n        override\r\n        checkDeadline(params.deadline)\r\n        returns (uint256 amountIn)\r\n    {\r\n        // it's okay that the payer is fixed to msg.sender here, as they're only paying for the \"final\" exact output\r\n        // swap, which happens first, and subsequent swaps are paid for within nested callback frames\r\n        exactOutputInternal(\r\n            params.amountOut,\r\n            params.recipient,\r\n            0,\r\n            SwapCallbackData({path: params.path, payer: msg.sender})\r\n        );\r\n\r\n        amountIn = amountInCached;\r\n        require(amountIn <= params.amountInMaximum, 'Too much requested');\r\n        amountInCached = DEFAULT_AMOUNT_IN_CACHED;\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/test/Base64Test.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport 'base64-sol/base64.sol';\r\n\r\ncontract Base64Test {\r\n    function encode(bytes memory data) external pure returns (string memory) {\r\n        return Base64.encode(data);\r\n    }\r\n\r\n    function getGasCostOfEncode(bytes memory data) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        Base64.encode(data);\r\n        return gasBefore - gasleft();\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/test/LiquidityAmountsTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../libraries/LiquidityAmounts.sol';\r\n\r\ncontract LiquidityAmountsTest {\r\n    function getLiquidityForAmount0(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint256 amount0\r\n    ) external pure returns (uint128 liquidity) {\r\n        return LiquidityAmounts.getLiquidityForAmount0(sqrtRatioAX96, sqrtRatioBX96, amount0);\r\n    }\r\n\r\n    function getGasCostOfGetLiquidityForAmount0(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint256 amount0\r\n    ) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        LiquidityAmounts.getLiquidityForAmount0(sqrtRatioAX96, sqrtRatioBX96, amount0);\r\n        return gasBefore - gasleft();\r\n    }\r\n\r\n    function getLiquidityForAmount1(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint256 amount1\r\n    ) external pure returns (uint128 liquidity) {\r\n        return LiquidityAmounts.getLiquidityForAmount1(sqrtRatioAX96, sqrtRatioBX96, amount1);\r\n    }\r\n\r\n    function getGasCostOfGetLiquidityForAmount1(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint256 amount1\r\n    ) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        LiquidityAmounts.getLiquidityForAmount1(sqrtRatioAX96, sqrtRatioBX96, amount1);\r\n        return gasBefore - gasleft();\r\n    }\r\n\r\n    function getLiquidityForAmounts(\r\n        uint160 sqrtRatioX96,\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint256 amount0,\r\n        uint256 amount1\r\n    ) external pure returns (uint128 liquidity) {\r\n        return LiquidityAmounts.getLiquidityForAmounts(sqrtRatioX96, sqrtRatioAX96, sqrtRatioBX96, amount0, amount1);\r\n    }\r\n\r\n    function getGasCostOfGetLiquidityForAmounts(\r\n        uint160 sqrtRatioX96,\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint256 amount0,\r\n        uint256 amount1\r\n    ) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        LiquidityAmounts.getLiquidityForAmounts(sqrtRatioX96, sqrtRatioAX96, sqrtRatioBX96, amount0, amount1);\r\n        return gasBefore - gasleft();\r\n    }\r\n\r\n    function getAmount0ForLiquidity(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint128 liquidity\r\n    ) external pure returns (uint256 amount0) {\r\n        return LiquidityAmounts.getAmount0ForLiquidity(sqrtRatioAX96, sqrtRatioBX96, liquidity);\r\n    }\r\n\r\n    function getGasCostOfGetAmount0ForLiquidity(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint128 liquidity\r\n    ) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        LiquidityAmounts.getAmount0ForLiquidity(sqrtRatioAX96, sqrtRatioBX96, liquidity);\r\n        return gasBefore - gasleft();\r\n    }\r\n\r\n    function getAmount1ForLiquidity(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint128 liquidity\r\n    ) external pure returns (uint256 amount1) {\r\n        return LiquidityAmounts.getAmount1ForLiquidity(sqrtRatioAX96, sqrtRatioBX96, liquidity);\r\n    }\r\n\r\n    function getGasCostOfGetAmount1ForLiquidity(\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint128 liquidity\r\n    ) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        LiquidityAmounts.getLiquidityForAmount1(sqrtRatioAX96, sqrtRatioBX96, liquidity);\r\n        return gasBefore - gasleft();\r\n    }\r\n\r\n    function getAmountsForLiquidity(\r\n        uint160 sqrtRatioX96,\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint128 liquidity\r\n    ) external pure returns (uint256 amount0, uint256 amount1) {\r\n        return LiquidityAmounts.getAmountsForLiquidity(sqrtRatioX96, sqrtRatioAX96, sqrtRatioBX96, liquidity);\r\n    }\r\n\r\n    function getGasCostOfGetAmountsForLiquidity(\r\n        uint160 sqrtRatioX96,\r\n        uint160 sqrtRatioAX96,\r\n        uint160 sqrtRatioBX96,\r\n        uint128 liquidity\r\n    ) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        LiquidityAmounts.getAmountsForLiquidity(sqrtRatioX96, sqrtRatioAX96, sqrtRatioBX96, liquidity);\r\n        return gasBefore - gasleft();\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/test/MockObservations.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport \"../../elixir-core/libraries/Oracle.sol\";\r\n\r\ncontract MockObservations {\r\n    Oracle.Observation[4] internal oracleObservations;\r\n\r\n    int24 slot0Tick;\r\n    uint16 internal slot0ObservationCardinality;\r\n    uint16 internal slot0ObservationIndex;\r\n    uint128 public liquidity;\r\n\r\n    bool internal lastObservationCurrentTimestamp;\r\n\r\n    constructor(\r\n        uint32[4] memory _blockTimestamps,\r\n        int56[4] memory _tickCumulatives,\r\n        uint128[4] memory _secondsPerLiquidityCumulativeX128s,\r\n        bool[4] memory _initializeds,\r\n        uint192[4] memory _rewardPerLiquidityCumulativeX64,\r\n        int24 _tick,\r\n        uint16 _observationCardinality,\r\n        uint16 _observationIndex,\r\n        bool _lastObservationCurrentTimestamp,\r\n        uint128 _liquidity\r\n    ) {\r\n        for (uint256 i = 0; i < _blockTimestamps.length; i++) {\r\n            oracleObservations[i] = Oracle.Observation({\r\n                blockTimestamp: _blockTimestamps[i],\r\n                tickCumulative: _tickCumulatives[i],\r\n                secondsPerLiquidityCumulativeX128: _secondsPerLiquidityCumulativeX128s[\r\n                    i\r\n                ],\r\n                initialized: _initializeds[i],\r\n                rewardPerLiquidityCumulativeX64: _rewardPerLiquidityCumulativeX64[\r\n                    i\r\n                ]\r\n            });\r\n        }\r\n\r\n        slot0Tick = _tick;\r\n        slot0ObservationCardinality = _observationCardinality;\r\n        slot0ObservationIndex = _observationIndex;\r\n        lastObservationCurrentTimestamp = _lastObservationCurrentTimestamp;\r\n        liquidity = _liquidity;\r\n    }\r\n\r\n    function slot0()\r\n        external\r\n        view\r\n        returns (uint160, int24, uint16, uint16, uint16, uint8, bool)\r\n    {\r\n        return (\r\n            0,\r\n            slot0Tick,\r\n            slot0ObservationIndex,\r\n            slot0ObservationCardinality,\r\n            0,\r\n            0,\r\n            false\r\n        );\r\n    }\r\n\r\n    function observations(\r\n        uint256 index\r\n    ) external view returns (uint32, int56, uint160, bool, uint192) {\r\n        Oracle.Observation memory observation = oracleObservations[index];\r\n        if (lastObservationCurrentTimestamp) {\r\n            observation.blockTimestamp =\r\n                uint32(block.timestamp) -\r\n                (oracleObservations[slot0ObservationIndex].blockTimestamp -\r\n                    observation.blockTimestamp);\r\n        }\r\n        return (\r\n            observation.blockTimestamp,\r\n            observation.tickCumulative,\r\n            observation.secondsPerLiquidityCumulativeX128,\r\n            observation.initialized,\r\n            observation.rewardPerLiquidityCumulativeX64\r\n        );\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/test/MockTimeSwapRouter.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\npragma abicoder v2;\r\n\r\nimport \"../SwapRouter.sol\";\r\n\r\ncontract MockTimeSwapRouter is SwapRouter {\r\n    uint256 time;\r\n\r\n    constructor(\r\n        address _factory,\r\n        address _WETH9\r\n    ) SwapRouter(_factory, _WETH9) {}\r\n\r\n    function _blockTimestamp() internal view returns (uint256) {\r\n        return time;\r\n    }\r\n\r\n    function setTime(uint256 _time) external {\r\n        time = _time;\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/test/NonfungiblePositionManagerPositionsGasTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../interfaces/INonfungiblePositionManager.sol';\r\n\r\ncontract NonfungiblePositionManagerPositionsGasTest {\r\n    INonfungiblePositionManager immutable nonfungiblePositionManager;\r\n\r\n    constructor(INonfungiblePositionManager _nonfungiblePositionManager) {\r\n        nonfungiblePositionManager = _nonfungiblePositionManager;\r\n    }\r\n\r\n    function getGasCostOfPositions(uint256 tokenId) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        nonfungiblePositionManager.positions(tokenId);\r\n        return gasBefore - gasleft();\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/test/OracleTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\npragma abicoder v2;\r\n\r\nimport '../libraries/OracleLibrary.sol';\r\n\r\ncontract OracleTest {\r\n    function consult(address pool, uint32 secondsAgo)\r\n        public\r\n        view\r\n        returns (int24 arithmeticMeanTick, uint128 harmonicMeanLiquidity)\r\n    {\r\n        return OracleLibrary.consult(pool, secondsAgo);\r\n    }\r\n\r\n    function getQuoteAtTick(\r\n        int24 tick,\r\n        uint128 baseAmount,\r\n        address baseToken,\r\n        address quoteToken\r\n    ) public pure returns (uint256 quoteAmount) {\r\n        quoteAmount = OracleLibrary.getQuoteAtTick(tick, baseAmount, baseToken, quoteToken);\r\n    }\r\n\r\n    // For gas snapshot test\r\n    function getGasCostOfConsult(address pool, uint32 period) public view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        OracleLibrary.consult(pool, period);\r\n        return gasBefore - gasleft();\r\n    }\r\n\r\n    function getGasCostOfGetQuoteAtTick(\r\n        int24 tick,\r\n        uint128 baseAmount,\r\n        address baseToken,\r\n        address quoteToken\r\n    ) public view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        OracleLibrary.getQuoteAtTick(tick, baseAmount, baseToken, quoteToken);\r\n        return gasBefore - gasleft();\r\n    }\r\n\r\n    function getOldestObservationSecondsAgo(address pool)\r\n        public\r\n        view\r\n        returns (uint32 secondsAgo, uint32 currentTimestamp)\r\n    {\r\n        secondsAgo = OracleLibrary.getOldestObservationSecondsAgo(pool);\r\n        currentTimestamp = uint32(block.timestamp);\r\n    }\r\n\r\n    function getBlockStartingTickAndLiquidity(address pool) public view returns (int24, uint128) {\r\n        return OracleLibrary.getBlockStartingTickAndLiquidity(pool);\r\n    }\r\n\r\n    function getWeightedArithmeticMeanTick(OracleLibrary.WeightedTickData[] memory observations)\r\n        public\r\n        pure\r\n        returns (int24 arithmeticMeanWeightedTick)\r\n    {\r\n        return OracleLibrary.getWeightedArithmeticMeanTick(observations);\r\n    }\r\n\r\n    function getChainedPrice(address[] memory tokens, int24[] memory ticks) public view returns (int256 syntheticTick) {\r\n        return OracleLibrary.getChainedPrice(tokens, ticks);\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/test/PathTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../libraries/Path.sol';\r\n\r\ncontract PathTest {\r\n    function hasMultiplePools(bytes memory path) public pure returns (bool) {\r\n        return Path.hasMultiplePools(path);\r\n    }\r\n\r\n    function decodeFirstPool(bytes memory path)\r\n        public\r\n        pure\r\n        returns (\r\n            address tokenA,\r\n            address tokenB,\r\n            uint24 fee\r\n        )\r\n    {\r\n        return Path.decodeFirstPool(path);\r\n    }\r\n\r\n    function getFirstPool(bytes memory path) public pure returns (bytes memory) {\r\n        return Path.getFirstPool(path);\r\n    }\r\n\r\n    function skipToken(bytes memory path) public pure returns (bytes memory) {\r\n        return Path.skipToken(path);\r\n    }\r\n\r\n    // gas funcs\r\n    function getGasCostOfDecodeFirstPool(bytes memory path) public view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        Path.decodeFirstPool(path);\r\n        return gasBefore - gasleft();\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/test/PeripheryImmutableStateTest.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity =0.7.6;\r\n\r\nimport '../base/PeripheryImmutableState.sol';\r\n\r\ncontract PeripheryImmutableStateTest is PeripheryImmutableState {\r\n    constructor(address _factory, address _WETH9) PeripheryImmutableState(_factory, _WETH9) {}\r\n}\r\n"},"contracts/elixir-periphery/test/PoolAddressTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../libraries/PoolAddress.sol';\r\n\r\ncontract PoolAddressTest {\r\n    function POOL_INIT_CODE_HASH() external pure returns (bytes32) {\r\n        return PoolAddress.POOL_INIT_CODE_HASH;\r\n    }\r\n\r\n    function computeAddress(\r\n        address factory,\r\n        address token0,\r\n        address token1,\r\n        uint24 fee\r\n    ) external pure returns (address) {\r\n        return PoolAddress.computeAddress(factory, PoolAddress.PoolKey({token0: token0, token1: token1, fee: fee}));\r\n    }\r\n\r\n    function getGasCostOfComputeAddress(\r\n        address factory,\r\n        address token0,\r\n        address token1,\r\n        uint24 fee\r\n    ) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        PoolAddress.computeAddress(factory, PoolAddress.PoolKey({token0: token0, token1: token1, fee: fee}));\r\n        return gasBefore - gasleft();\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/test/PoolTicksCounterTest.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\nimport \"../../elixir-core/interfaces/IElixirPool.sol\";\r\n\r\npragma solidity >=0.6.0;\r\n\r\nimport \"../libraries/PoolTicksCounter.sol\";\r\n\r\ncontract PoolTicksCounterTest {\r\n    using PoolTicksCounter for IElixirPool;\r\n\r\n    function countInitializedTicksCrossed(\r\n        IElixirPool pool,\r\n        int24 tickBefore,\r\n        int24 tickAfter\r\n    ) external view returns (uint32 initializedTicksCrossed) {\r\n        return pool.countInitializedTicksCrossed(tickBefore, tickAfter);\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/test/PositionValueTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../libraries/PositionValue.sol';\r\nimport '../interfaces/INonfungiblePositionManager.sol';\r\n\r\ncontract PositionValueTest {\r\n    function total(\r\n        INonfungiblePositionManager nft,\r\n        uint256 tokenId,\r\n        uint160 sqrtRatioX96\r\n    ) external view returns (uint256 amount0, uint256 amount1) {\r\n        return PositionValue.total(nft, tokenId, sqrtRatioX96);\r\n    }\r\n\r\n    function principal(\r\n        INonfungiblePositionManager nft,\r\n        uint256 tokenId,\r\n        uint160 sqrtRatioX96\r\n    ) external view returns (uint256 amount0, uint256 amount1) {\r\n        return PositionValue.principal(nft, tokenId, sqrtRatioX96);\r\n    }\r\n\r\n    function fees(INonfungiblePositionManager nft, uint256 tokenId)\r\n        external\r\n        view\r\n        returns (uint256 amount0, uint256 amount1)\r\n    {\r\n        return PositionValue.fees(nft, tokenId);\r\n    }\r\n\r\n    function totalGas(\r\n        INonfungiblePositionManager nft,\r\n        uint256 tokenId,\r\n        uint160 sqrtRatioX96\r\n    ) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        PositionValue.total(nft, tokenId, sqrtRatioX96);\r\n        return gasBefore - gasleft();\r\n    }\r\n\r\n    function principalGas(\r\n        INonfungiblePositionManager nft,\r\n        uint256 tokenId,\r\n        uint160 sqrtRatioX96\r\n    ) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        PositionValue.principal(nft, tokenId, sqrtRatioX96);\r\n        return gasBefore - gasleft();\r\n    }\r\n\r\n    function feesGas(INonfungiblePositionManager nft, uint256 tokenId) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        PositionValue.fees(nft, tokenId);\r\n        return gasBefore - gasleft();\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/test/SelfPermitTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../base/SelfPermit.sol';\r\n\r\n/// @dev Same as SelfPermit but not abstract\r\ncontract SelfPermitTest is SelfPermit {\r\n\r\n}\r\n"},"contracts/elixir-periphery/test/TestCallbackValidation.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport \"../libraries/CallbackValidation.sol\";\r\n\r\ncontract TestCallbackValidation {\r\n    function verifyCallback(\r\n        address factory,\r\n        address tokenA,\r\n        address tokenB,\r\n        uint24 fee\r\n    ) external view returns (IElixirPool pool) {\r\n        return CallbackValidation.verifyCallback(factory, tokenA, tokenB, fee);\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/test/TestMulticall.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\npragma abicoder v2;\r\n\r\nimport '../base/Multicall.sol';\r\n\r\ncontract TestMulticall is Multicall {\r\n    function functionThatRevertsWithError(string memory error) external pure {\r\n        revert(error);\r\n    }\r\n\r\n    struct Tuple {\r\n        uint256 a;\r\n        uint256 b;\r\n    }\r\n\r\n    function functionThatReturnsTuple(uint256 a, uint256 b) external pure returns (Tuple memory tuple) {\r\n        tuple = Tuple({b: a, a: b});\r\n    }\r\n\r\n    uint256 public paid;\r\n\r\n    function pays() external payable {\r\n        paid += msg.value;\r\n    }\r\n\r\n    function returnSender() external view returns (address) {\r\n        return msg.sender;\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/test/TestPositionNFTOwner.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\r\npragma solidity =0.7.6;\r\n\r\nimport '../interfaces/external/IERC1271.sol';\r\n\r\ncontract TestPositionNFTOwner is IERC1271 {\r\n    address public owner;\r\n\r\n    function setOwner(address _owner) external {\r\n        owner = _owner;\r\n    }\r\n\r\n    function isValidSignature(bytes32 hash, bytes memory signature) external view override returns (bytes4 magicValue) {\r\n        bytes32 r;\r\n        bytes32 s;\r\n        uint8 v;\r\n        assembly {\r\n            r := mload(add(signature, 0x20))\r\n            s := mload(add(signature, 0x40))\r\n            v := byte(0, mload(add(signature, 0x60)))\r\n        }\r\n        if (ecrecover(hash, v, r, s) == owner) {\r\n            return bytes4(0x1626ba7e);\r\n        } else {\r\n            return bytes4(0);\r\n        }\r\n    }\r\n}\r\n"},"contracts/elixir-periphery/test/TickLensTest.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\npragma solidity >=0.5.0;\r\npragma abicoder v2;\r\n\r\nimport \"../../elixir-core/interfaces/IElixirPool.sol\";\r\nimport \"../lens/TickLens.sol\";\r\n\r\n/// @title Tick Lens contract\r\ncontract TickLensTest is TickLens {\r\n    function getGasCostOfGetPopulatedTicksInWord(\r\n        address pool,\r\n        int16 tickBitmapIndex\r\n    ) external view returns (uint256) {\r\n        uint256 gasBefore = gasleft();\r\n        getPopulatedTicksInWord(pool, tickBitmapIndex);\r\n        return gasBefore - gasleft();\r\n    }\r\n}\r\n"},"contracts/governance/CommunityTreasury.sol":{"content":"pragma solidity ^0.7.6;\r\n\r\nimport \"openzeppelin-contracts-legacy/access/Ownable.sol\";\r\nimport \"openzeppelin-contracts-legacy/token/ERC20/SafeERC20.sol\";\r\nimport \"openzeppelin-contracts-legacy/token/ERC20/IERC20.sol\";\r\n\r\n/**\r\n * Custodian of community's PNG. Deploy this contract, then change the owner to be a\r\n * governance protocol. Send community treasury funds to the deployed contract, then\r\n * spend them through governance proposals.\r\n */\r\ncontract CommunityTreasury is Ownable {\r\n    using SafeERC20 for IERC20;\r\n\r\n    // Token to custody\r\n    IERC20 public png;\r\n\r\n    constructor(address png_) {\r\n        png = IERC20(png_);\r\n    }\r\n\r\n    /**\r\n     * Transfer PNG to the destination. Can only be called by the contract owner.\r\n     */\r\n    function transfer(address dest, uint amount) external onlyOwner {\r\n        png.safeTransfer(dest, amount);\r\n    }\r\n\r\n    /**\r\n     * Return the PNG balance of this contract.\r\n     */\r\n    function balance() view external returns(uint) {\r\n        return png.balanceOf(address(this));\r\n    }\r\n\r\n}"},"contracts/pangolin-core/interfaces/IPangolinERC20.sol":{"content":"pragma solidity >=0.5.0;\r\n\r\ninterface IPangolinERC20 {\r\n    event Approval(address indexed owner, address indexed spender, uint value);\r\n    event Transfer(address indexed from, address indexed to, uint value);\r\n\r\n    function name() external pure returns (string memory);\r\n    function symbol() external pure returns (string memory);\r\n    function decimals() external pure returns (uint8);\r\n    function totalSupply() external view returns (uint);\r\n    function balanceOf(address owner) external view returns (uint);\r\n    function allowance(address owner, address spender) external view returns (uint);\r\n\r\n    function approve(address spender, uint value) external returns (bool);\r\n    function transfer(address to, uint value) external returns (bool);\r\n    function transferFrom(address from, address to, uint value) external returns (bool);\r\n\r\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\r\n    function PERMIT_TYPEHASH() external pure returns (bytes32);\r\n    function nonces(address owner) external view returns (uint);\r\n\r\n    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\r\n}\r\n"},"contracts/pangolin-core/interfaces/IPangolinFactory.sol":{"content":"pragma solidity >=0.5.0;\r\n\r\ninterface IPangolinFactory {\r\n    event PairCreated(address indexed token0, address indexed token1, address pair, uint);\r\n\r\n    function feeTo() external view returns (address);\r\n    function feeToSetter() external view returns (address);\r\n\r\n    function getPair(address tokenA, address tokenB) external view returns (address pair);\r\n    function allPairs(uint) external view returns (address pair);\r\n    function allPairsLength() external view returns (uint);\r\n\r\n    function createPair(address tokenA, address tokenB) external returns (address pair);\r\n\r\n    function setFeeTo(address) external;\r\n    function setFeeToSetter(address) external;\r\n}\r\n"},"contracts/pangolin-core/interfaces/IPangolinPair.sol":{"content":"pragma solidity >=0.5.0;\r\n\r\ninterface IPangolinPair {\r\n    event Approval(address indexed owner, address indexed spender, uint value);\r\n    event Transfer(address indexed from, address indexed to, uint value);\r\n\r\n    function name() external pure returns (string memory);\r\n    function symbol() external pure returns (string memory);\r\n    function decimals() external pure returns (uint8);\r\n    function totalSupply() external view returns (uint);\r\n    function balanceOf(address owner) external view returns (uint);\r\n    function allowance(address owner, address spender) external view returns (uint);\r\n\r\n    function approve(address spender, uint value) external returns (bool);\r\n    function transfer(address to, uint value) external returns (bool);\r\n    function transferFrom(address from, address to, uint value) external returns (bool);\r\n\r\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\r\n    function PERMIT_TYPEHASH() external pure returns (bytes32);\r\n    function nonces(address owner) external view returns (uint);\r\n\r\n    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\r\n\r\n    event Mint(address indexed sender, uint amount0, uint amount1);\r\n    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\r\n    event Swap(\r\n        address indexed sender,\r\n        uint amount0In,\r\n        uint amount1In,\r\n        uint amount0Out,\r\n        uint amount1Out,\r\n        address indexed to\r\n    );\r\n    event Sync(uint112 reserve0, uint112 reserve1);\r\n\r\n    function MINIMUM_LIQUIDITY() external pure returns (uint);\r\n    function factory() external view returns (address);\r\n    function token0() external view returns (address);\r\n    function token1() external view returns (address);\r\n    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\r\n    function price0CumulativeLast() external view returns (uint);\r\n    function price1CumulativeLast() external view returns (uint);\r\n    function kLast() external view returns (uint);\r\n\r\n    function mint(address to) external returns (uint liquidity);\r\n    function burn(address to) external returns (uint amount0, uint amount1);\r\n    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\r\n    function skim(address to) external;\r\n    function sync() external;\r\n\r\n    function initialize(address, address) external;\r\n}\r\n"},"contracts/pangolin-lib/libraries/AddressStringUtil.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\r\n\r\npragma solidity >=0.5.0 <0.8.0;\r\n\r\nlibrary AddressStringUtil {\r\n    // converts an address to the uppercase hex string, extracting only len bytes (up to 20, multiple of 2)\r\n    function toAsciiString(address addr, uint256 len) internal pure returns (string memory) {\r\n        require(len % 2 == 0 && len > 0 && len <= 40, 'AddressStringUtil: INVALID_LEN');\r\n\r\n        bytes memory s = new bytes(len);\r\n        uint256 addrNum = uint256(addr);\r\n        for (uint256 i = 0; i < len / 2; i++) {\r\n            // shift right and truncate all but the least significant byte to extract the byte at position 19-i\r\n            uint8 b = uint8(addrNum >> (8 * (19 - i)));\r\n            // first hex character is the most significant 4 bits\r\n            uint8 hi = b >> 4;\r\n            // second hex character is the least significant 4 bits\r\n            uint8 lo = b - (hi << 4);\r\n            s[2 * i] = char(hi);\r\n            s[2 * i + 1] = char(lo);\r\n        }\r\n        return string(s);\r\n    }\r\n\r\n    // hi and lo are only 4 bits and between 0 and 16\r\n    // this method converts those values to the unicode/ascii code point for the hex representation\r\n    // uses upper case for the characters\r\n    function char(uint8 b) private pure returns (bytes1 c) {\r\n        if (b < 10) {\r\n            return bytes1(b + 0x30);\r\n        } else {\r\n            return bytes1(b + 0x37);\r\n        }\r\n    }\r\n}\r\n"},"contracts/pangolin-lib/libraries/Babylonian.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\r\n\r\npragma solidity >=0.4.0;\r\n\r\n// computes square roots using the babylonian method\r\n// https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method\r\nlibrary Babylonian {\r\n    function sqrt(uint256 y) internal pure returns (uint256 z) {\r\n        if (y > 3) {\r\n            z = y;\r\n            uint256 x = y / 2 + 1;\r\n            while (x < z) {\r\n                z = x;\r\n                x = (y / x + x) / 2;\r\n            }\r\n        } else if (y != 0) {\r\n            z = 1;\r\n        }\r\n        // else z = 0\r\n    }\r\n}\r\n"},"contracts/pangolin-lib/libraries/FixedPoint.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\r\npragma solidity >=0.4.0 <0.8.0;\r\n\r\nimport './FullMath.sol';\r\nimport './Babylonian.sol';\r\n\r\n// a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format))\r\nlibrary FixedPoint {\r\n    // range: [0, 2**112 - 1]\r\n    // resolution: 1 / 2**112\r\n    struct uq112x112 {\r\n        uint224 _x;\r\n    }\r\n\r\n    // range: [0, 2**144 - 1]\r\n    // resolution: 1 / 2**112\r\n    struct uq144x112 {\r\n        uint256 _x;\r\n    }\r\n\r\n    uint8 private constant RESOLUTION = 112;\r\n    uint256 private constant Q112 = 0x10000000000000000000000000000;\r\n    uint256 private constant Q224 = 0x100000000000000000000000000000000000000000000000000000000;\r\n    uint256 private constant LOWER_MASK = 0xffffffffffffffffffffffffffff; // decimal of UQ*x112 (lower 112 bits)\r\n\r\n    // encode a uint112 as a UQ112x112\r\n    function encode(uint112 x) internal pure returns (uq112x112 memory) {\r\n        return uq112x112(uint224(x) << RESOLUTION);\r\n    }\r\n\r\n    // encodes a uint144 as a UQ144x112\r\n    function encode144(uint144 x) internal pure returns (uq144x112 memory) {\r\n        return uq144x112(uint256(x) << RESOLUTION);\r\n    }\r\n\r\n    // decode a UQ112x112 into a uint112 by truncating after the radix point\r\n    function decode(uq112x112 memory self) internal pure returns (uint112) {\r\n        return uint112(self._x >> RESOLUTION);\r\n    }\r\n\r\n    // decode a UQ144x112 into a uint144 by truncating after the radix point\r\n    function decode144(uq144x112 memory self) internal pure returns (uint144) {\r\n        return uint144(self._x >> RESOLUTION);\r\n    }\r\n\r\n    // multiply a UQ112x112 by a uint, returning a UQ144x112\r\n    // reverts on overflow\r\n    function mul(uq112x112 memory self, uint256 y) internal pure returns (uq144x112 memory) {\r\n        uint256 z = 0;\r\n        require(y == 0 || (z = self._x * y) / y == self._x, 'FixedPoint: MUL_OVERFLOW');\r\n        return uq144x112(z);\r\n    }\r\n\r\n    // multiply a UQ112x112 by an int and decode, returning an int\r\n    // reverts on overflow\r\n    function muli(uq112x112 memory self, int256 y) internal pure returns (int256) {\r\n        uint256 z = FullMath.mulDiv(self._x, uint256(y < 0 ? -y : y), Q112);\r\n        require(z < 2**255, 'FixedPoint: MULI_OVERFLOW');\r\n        return y < 0 ? -int256(z) : int256(z);\r\n    }\r\n\r\n    // multiply a UQ112x112 by a UQ112x112, returning a UQ112x112\r\n    // lossy\r\n    function muluq(uq112x112 memory self, uq112x112 memory other) internal pure returns (uq112x112 memory) {\r\n        if (self._x == 0 || other._x == 0) {\r\n            return uq112x112(0);\r\n        }\r\n        uint112 upper_self = uint112(self._x >> RESOLUTION); // * 2^0\r\n        uint112 lower_self = uint112(self._x & LOWER_MASK); // * 2^-112\r\n        uint112 upper_other = uint112(other._x >> RESOLUTION); // * 2^0\r\n        uint112 lower_other = uint112(other._x & LOWER_MASK); // * 2^-112\r\n\r\n        // partial products\r\n        uint224 upper = uint224(upper_self) * upper_other; // * 2^0\r\n        uint224 lower = uint224(lower_self) * lower_other; // * 2^-224\r\n        uint224 uppers_lowero = uint224(upper_self) * lower_other; // * 2^-112\r\n        uint224 uppero_lowers = uint224(upper_other) * lower_self; // * 2^-112\r\n\r\n        // so the bit shift does not overflow\r\n        require(upper <= uint112(-1), 'FixedPoint: MULUQ_OVERFLOW_UPPER');\r\n\r\n        // this cannot exceed 256 bits, all values are 224 bits\r\n        uint256 sum = uint256(upper << RESOLUTION) + uppers_lowero + uppero_lowers + (lower >> RESOLUTION);\r\n\r\n        // so the cast does not overflow\r\n        require(sum <= uint224(-1), 'FixedPoint: MULUQ_OVERFLOW_SUM');\r\n\r\n        return uq112x112(uint224(sum));\r\n    }\r\n\r\n    // divide a UQ112x112 by a UQ112x112, returning a UQ112x112\r\n    function divuq(uq112x112 memory self, uq112x112 memory other) internal pure returns (uq112x112 memory) {\r\n        require(other._x > 0, 'FixedPoint: DIV_BY_ZERO_DIVUQ');\r\n        if (self._x == other._x) {\r\n            return uq112x112(uint224(Q112));\r\n        }\r\n        if (self._x <= uint144(-1)) {\r\n            uint256 value = (uint256(self._x) << RESOLUTION) / other._x;\r\n            require(value <= uint224(-1), 'FixedPoint: DIVUQ_OVERFLOW');\r\n            return uq112x112(uint224(value));\r\n        }\r\n\r\n        uint256 result = FullMath.mulDiv(Q112, self._x, other._x);\r\n        require(result <= uint224(-1), 'FixedPoint: DIVUQ_OVERFLOW');\r\n        return uq112x112(uint224(result));\r\n    }\r\n\r\n    // returns a UQ112x112 which represents the ratio of the numerator to the denominator\r\n    // lossy\r\n    function fraction(uint112 numerator, uint112 denominator) internal pure returns (uq112x112 memory) {\r\n        require(denominator > 0, 'FixedPoint: DIV_BY_ZERO_FRACTION');\r\n        return uq112x112((uint224(numerator) << RESOLUTION) / denominator);\r\n    }\r\n\r\n    // take the reciprocal of a UQ112x112\r\n    // reverts on overflow\r\n    // lossy\r\n    function reciprocal(uq112x112 memory self) internal pure returns (uq112x112 memory) {\r\n        require(self._x > 1, 'FixedPoint: DIV_BY_ZERO_RECIPROCAL_OR_OVERFLOW');\r\n        return uq112x112(uint224(Q224 / self._x));\r\n    }\r\n\r\n    // square root of a UQ112x112\r\n    // lossy between 0/1 and 40 bits\r\n    function sqrt(uq112x112 memory self) internal pure returns (uq112x112 memory) {\r\n        if (self._x <= uint144(-1)) {\r\n            return uq112x112(uint224(Babylonian.sqrt(uint256(self._x) << 112)));\r\n        }\r\n\r\n        uint8 safeShiftBits = 32;\r\n        while (safeShiftBits < 112) {\r\n            if (self._x < (uint256(1) << (256 - safeShiftBits - 2))) {\r\n                safeShiftBits += 2;\r\n            } else {\r\n                break;\r\n            }\r\n        }\r\n        return uq112x112(uint224(Babylonian.sqrt(uint256(self._x) << safeShiftBits) << ((112 - safeShiftBits) / 2)));\r\n    }\r\n}\r\n"},"contracts/pangolin-lib/libraries/FullMath.sol":{"content":"// SPDX-License-Identifier: CC-BY-4.0\r\npragma solidity >=0.4.0 <0.8.0;\r\n\r\n// taken from https://medium.com/coinmonks/math-in-solidity-part-3-percents-and-proportions-4db014e080b1\r\n// license is CC-BY-4.0\r\nlibrary FullMath {\r\n    function fullMul(uint256 x, uint256 y) private pure returns (uint256 l, uint256 h) {\r\n        uint256 mm = mulmod(x, y, uint256(-1));\r\n        l = x * y;\r\n        h = mm - l;\r\n        if (mm < l) h -= 1;\r\n    }\r\n\r\n    function fullDiv(\r\n        uint256 l,\r\n        uint256 h,\r\n        uint256 d\r\n    ) private pure returns (uint256) {\r\n        uint256 pow2 = d & -d;\r\n        d /= pow2;\r\n        l /= pow2;\r\n        l += h * ((-pow2) / pow2 + 1);\r\n        uint256 r = 1;\r\n        r *= 2 - d * r;\r\n        r *= 2 - d * r;\r\n        r *= 2 - d * r;\r\n        r *= 2 - d * r;\r\n        r *= 2 - d * r;\r\n        r *= 2 - d * r;\r\n        r *= 2 - d * r;\r\n        r *= 2 - d * r;\r\n        return l * r;\r\n    }\r\n\r\n    function mulDiv(\r\n        uint256 x,\r\n        uint256 y,\r\n        uint256 d\r\n    ) internal pure returns (uint256) {\r\n        (uint256 l, uint256 h) = fullMul(x, y);\r\n        uint256 mm = mulmod(x, y, d);\r\n        if (mm > l) h -= 1;\r\n        l -= mm;\r\n        require(h < d, 'FullMath: FULLDIV_OVERFLOW');\r\n        return fullDiv(l, h, d);\r\n    }\r\n}\r\n"},"contracts/pangolin-lib/libraries/PairNamer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\r\n\r\npragma solidity >=0.5.0;\r\n\r\nimport './SafeERC20Namer.sol';\r\n\r\n// produces names for pairs of tokens using Pangolin's naming scheme\r\nlibrary PairNamer {\r\n    string private constant TOKEN_SYMBOL_PREFIX = 'PNG:';\r\n    string private constant TOKEN_SEPARATOR = ':';\r\n\r\n    // produces a pair descriptor in the format of `${prefix}${name0}:${name1}${suffix}`\r\n    function pairName(\r\n        address token0,\r\n        address token1,\r\n        string memory prefix,\r\n        string memory suffix\r\n    ) internal view returns (string memory) {\r\n        return\r\n            string(\r\n                abi.encodePacked(\r\n                    prefix,\r\n                    SafeERC20Namer.tokenName(token0),\r\n                    TOKEN_SEPARATOR,\r\n                    SafeERC20Namer.tokenName(token1),\r\n                    suffix\r\n                )\r\n            );\r\n    }\r\n\r\n    // produces a pair symbol in the format of `PNG:${symbol0}:${symbol1}${suffix}`\r\n    function pairSymbol(\r\n        address token0,\r\n        address token1,\r\n        string memory suffix\r\n    ) internal view returns (string memory) {\r\n        return\r\n            string(\r\n                abi.encodePacked(\r\n                    TOKEN_SYMBOL_PREFIX,\r\n                    SafeERC20Namer.tokenSymbol(token0),\r\n                    TOKEN_SEPARATOR,\r\n                    SafeERC20Namer.tokenSymbol(token1),\r\n                    suffix\r\n                )\r\n            );\r\n    }\r\n}\r\n"},"contracts/pangolin-lib/libraries/SafeERC20Namer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\r\n\r\npragma solidity >=0.5.0;\r\n\r\nimport './AddressStringUtil.sol';\r\n\r\n// produces token descriptors from inconsistent or absent ERC20 symbol implementations that can return string or bytes32\r\n// this library will always produce a string symbol to represent the token\r\nlibrary SafeERC20Namer {\r\n    function bytes32ToString(bytes32 x) private pure returns (string memory) {\r\n        bytes memory bytesString = new bytes(32);\r\n        uint256 charCount = 0;\r\n        for (uint256 j = 0; j < 32; j++) {\r\n            bytes1 char = x[j];\r\n            if (char != 0) {\r\n                bytesString[charCount] = char;\r\n                charCount++;\r\n            }\r\n        }\r\n        bytes memory bytesStringTrimmed = new bytes(charCount);\r\n        for (uint256 j = 0; j < charCount; j++) {\r\n            bytesStringTrimmed[j] = bytesString[j];\r\n        }\r\n        return string(bytesStringTrimmed);\r\n    }\r\n\r\n    // assumes the data is in position 2\r\n    function parseStringData(bytes memory b) private pure returns (string memory) {\r\n        uint256 charCount = 0;\r\n        // first parse the charCount out of the data\r\n        for (uint256 i = 32; i < 64; i++) {\r\n            charCount <<= 8;\r\n            charCount += uint8(b[i]);\r\n        }\r\n\r\n        bytes memory bytesStringTrimmed = new bytes(charCount);\r\n        for (uint256 i = 0; i < charCount; i++) {\r\n            bytesStringTrimmed[i] = b[i + 64];\r\n        }\r\n\r\n        return string(bytesStringTrimmed);\r\n    }\r\n\r\n    // uses a heuristic to produce a token name from the address\r\n    // the heuristic returns the full hex of the address string in upper case\r\n    function addressToName(address token) private pure returns (string memory) {\r\n        return AddressStringUtil.toAsciiString(token, 40);\r\n    }\r\n\r\n    // uses a heuristic to produce a token symbol from the address\r\n    // the heuristic returns the first 6 hex of the address string in upper case\r\n    function addressToSymbol(address token) private pure returns (string memory) {\r\n        return AddressStringUtil.toAsciiString(token, 6);\r\n    }\r\n\r\n    // calls an external view token contract method that returns a symbol or name, and parses the output into a string\r\n    function callAndParseStringReturn(address token, bytes4 selector) private view returns (string memory) {\r\n        (bool success, bytes memory data) = token.staticcall(abi.encodeWithSelector(selector));\r\n        // if not implemented, or returns empty data, return empty string\r\n        if (!success || data.length == 0) {\r\n            return '';\r\n        }\r\n        // bytes32 data always has length 32\r\n        if (data.length == 32) {\r\n            bytes32 decoded = abi.decode(data, (bytes32));\r\n            return bytes32ToString(decoded);\r\n        } else if (data.length > 64) {\r\n            return abi.decode(data, (string));\r\n        }\r\n        return '';\r\n    }\r\n\r\n    // attempts to extract the token symbol. if it does not implement symbol, returns a symbol derived from the address\r\n    function tokenSymbol(address token) internal view returns (string memory) {\r\n        // 0x95d89b41 = bytes4(keccak256(\"symbol()\"))\r\n        string memory symbol = callAndParseStringReturn(token, 0x95d89b41);\r\n        if (bytes(symbol).length == 0) {\r\n            // fallback to 6 uppercase hex of address\r\n            return addressToSymbol(token);\r\n        }\r\n        return symbol;\r\n    }\r\n\r\n    // attempts to extract the token name. if it does not implement name, returns a name derived from the address\r\n    function tokenName(address token) internal view returns (string memory) {\r\n        // 0x06fdde03 = bytes4(keccak256(\"name()\"))\r\n        string memory name = callAndParseStringReturn(token, 0x06fdde03);\r\n        if (bytes(name).length == 0) {\r\n            // fallback to full hex of address\r\n            return addressToName(token);\r\n        }\r\n        return name;\r\n    }\r\n}\r\n"},"contracts/pangolin-lib/libraries/TransferHelper.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\r\n\r\npragma solidity >=0.6.0;\r\n\r\n// helper methods for interacting with ERC20 tokens and sending AVAX that do not consistently return true/false\r\nlibrary TransferHelper {\r\n    function safeApprove(\r\n        address token,\r\n        address to,\r\n        uint256 value\r\n    ) internal {\r\n        // bytes4(keccak256(bytes('approve(address,uint256)')));\r\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\r\n        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\r\n    }\r\n\r\n    function safeTransfer(\r\n        address token,\r\n        address to,\r\n        uint256 value\r\n    ) internal {\r\n        // bytes4(keccak256(bytes('transfer(address,uint256)')));\r\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\r\n        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\r\n    }\r\n\r\n    function safeTransferFrom(\r\n        address token,\r\n        address from,\r\n        address to,\r\n        uint256 value\r\n    ) internal {\r\n        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\r\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\r\n        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\r\n    }\r\n\r\n    function safeTransferAVAX(address to, uint256 value) internal {\r\n        (bool success, ) = to.call{value: value}(new bytes(0));\r\n        require(success, 'TransferHelper: AVAX_TRANSFER_FAILED');\r\n    }\r\n}\r\n"},"contracts/pangolin-lib/test/AddressStringUtilTest.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\r\n\r\npragma solidity >=0.5.0;\r\n\r\nimport '../libraries/AddressStringUtil.sol';\r\n\r\ncontract AddressStringUtilTest {\r\n    function toAsciiString(address addr, uint256 len) external pure returns (string memory) {\r\n        return AddressStringUtil.toAsciiString(addr, len);\r\n    }\r\n}\r\n"},"contracts/pangolin-lib/test/FixedPointTest.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\r\n\r\npragma solidity >=0.5.0;\r\npragma experimental ABIEncoderV2;\r\n\r\nimport '../libraries/FixedPoint.sol';\r\n\r\ncontract FixedPointTest {\r\n    function encode(uint112 x) external pure returns (FixedPoint.uq112x112 memory) {\r\n        return FixedPoint.encode(x);\r\n    }\r\n\r\n    function encode144(uint144 x) external pure returns (FixedPoint.uq144x112 memory) {\r\n        return FixedPoint.encode144(x);\r\n    }\r\n\r\n    function decode(FixedPoint.uq112x112 calldata self) external pure returns (uint112) {\r\n        return FixedPoint.decode(self);\r\n    }\r\n\r\n    function decode144(FixedPoint.uq144x112 calldata self) external pure returns (uint144) {\r\n        return FixedPoint.decode144(self);\r\n    }\r\n\r\n    function mul(FixedPoint.uq112x112 calldata self, uint256 y) external pure returns (FixedPoint.uq144x112 memory) {\r\n        return FixedPoint.mul(self, y);\r\n    }\r\n\r\n    function muli(FixedPoint.uq112x112 calldata self, int256 y) external pure returns (int256) {\r\n        return FixedPoint.muli(self, y);\r\n    }\r\n\r\n    function muluq(FixedPoint.uq112x112 calldata self, FixedPoint.uq112x112 calldata other)\r\n        external\r\n        pure\r\n        returns (FixedPoint.uq112x112 memory)\r\n    {\r\n        return FixedPoint.muluq(self, other);\r\n    }\r\n\r\n    function divuq(FixedPoint.uq112x112 calldata self, FixedPoint.uq112x112 calldata other)\r\n        external\r\n        pure\r\n        returns (FixedPoint.uq112x112 memory)\r\n    {\r\n        return FixedPoint.divuq(self, other);\r\n    }\r\n\r\n    function getGasCostOfDivuq(FixedPoint.uq112x112 calldata self, FixedPoint.uq112x112 calldata other)\r\n        external\r\n        view\r\n        returns (uint256)\r\n    {\r\n        uint256 gasBefore = gasleft();\r\n        FixedPoint.divuq(self, other);\r\n        return gasBefore - gasleft();\r\n    }\r\n\r\n    function fraction(uint112 numerator, uint112 denominator) external pure returns (FixedPoint.uq112x112 memory) {\r\n        return FixedPoint.fraction(numerator, denominator);\r\n    }\r\n\r\n    function reciprocal(FixedPoint.uq112x112 calldata self) external pure returns (FixedPoint.uq112x112 memory) {\r\n        return FixedPoint.reciprocal(self);\r\n    }\r\n\r\n    function sqrt(FixedPoint.uq112x112 calldata self) external pure returns (FixedPoint.uq112x112 memory) {\r\n        return FixedPoint.sqrt(self);\r\n    }\r\n}\r\n"},"contracts/pangolin-lib/test/FullMathTest.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\r\n\r\npragma solidity >=0.4.0;\r\n\r\nimport '../libraries/FullMath.sol';\r\n\r\ncontract FullMathTest {\r\n    function mulDiv(\r\n        uint256 x,\r\n        uint256 y,\r\n        uint256 z\r\n    ) external pure returns (uint256) {\r\n        return FullMath.mulDiv(x, y, z);\r\n    }\r\n\r\n    function mulDivRoundingUp(\r\n        uint256 x,\r\n        uint256 y,\r\n        uint256 z\r\n    ) external pure returns (uint256) {\r\n        bool roundUp = mulmod(x, y, z) > 0;\r\n        return FullMath.mulDiv(x, y, z) + (roundUp ? 1 : 0);\r\n    }\r\n}\r\n"},"contracts/pangolin-lib/test/PairNamerTest.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\r\n\r\npragma solidity >=0.5.0;\r\n\r\nimport '../libraries/PairNamer.sol';\r\n\r\ncontract PairNamerTest {\r\n    function pairName(\r\n        address token0,\r\n        address token1,\r\n        string calldata prefix,\r\n        string calldata suffix\r\n    ) external view returns (string memory) {\r\n        return PairNamer.pairName(token0, token1, prefix, suffix);\r\n    }\r\n\r\n    function pairSymbol(\r\n        address token0,\r\n        address token1,\r\n        string calldata suffix\r\n    ) external view returns (string memory) {\r\n        return PairNamer.pairSymbol(token0, token1, suffix);\r\n    }\r\n}\r\n\r\n// we do not test with non compliant ERC20 implementations because that's handled by token namer\r\ncontract PairNamerTestFakeToken {\r\n    string public name;\r\n    string public symbol;\r\n\r\n    constructor(string memory name_, string memory symbol_) public {\r\n        name = name_;\r\n        symbol = symbol_;\r\n    }\r\n}\r\n"},"contracts/pangolin-lib/test/SafeERC20NamerTest.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\r\n\r\npragma solidity >=0.5.0;\r\n\r\nimport '../libraries/SafeERC20Namer.sol';\r\n\r\n// used for testing the logic of token naming\r\ncontract SafeERC20NamerTest {\r\n    function tokenSymbol(address token) external view returns (string memory) {\r\n        return SafeERC20Namer.tokenSymbol(token);\r\n    }\r\n\r\n    function tokenName(address token) external view returns (string memory) {\r\n        return SafeERC20Namer.tokenName(token);\r\n    }\r\n}\r\n\r\n// does not implement name or symbol\r\ncontract NamerTestFakeOptionalERC20 {\r\n\r\n}\r\n\r\n// complies with ERC20 and returns strings\r\ncontract NamerTestFakeCompliantERC20 {\r\n    string public name;\r\n    string public symbol;\r\n\r\n    constructor(string memory name_, string memory symbol_) public {\r\n        name = name_;\r\n        symbol = symbol_;\r\n    }\r\n}\r\n\r\n// implements name and symbol but returns bytes32\r\ncontract NamerTestFakeNoncompliantERC20 {\r\n    bytes32 public name;\r\n    bytes32 public symbol;\r\n\r\n    constructor(bytes32 name_, bytes32 symbol_) public {\r\n        name = name_;\r\n        symbol = symbol_;\r\n    }\r\n}\r\n"},"contracts/pangolin-lib/test/TransferHelperTest.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\r\n\r\npragma solidity >=0.6.0 <0.8.0;\r\n\r\nimport '../libraries/TransferHelper.sol';\r\n\r\n// test helper for transfers\r\ncontract TransferHelperTest {\r\n    function safeApprove(\r\n        address token,\r\n        address to,\r\n        uint256 value\r\n    ) external {\r\n        TransferHelper.safeApprove(token, to, value);\r\n    }\r\n\r\n    function safeTransfer(\r\n        address token,\r\n        address to,\r\n        uint256 value\r\n    ) external {\r\n        TransferHelper.safeTransfer(token, to, value);\r\n    }\r\n\r\n    function safeTransferFrom(\r\n        address token,\r\n        address from,\r\n        address to,\r\n        uint256 value\r\n    ) external {\r\n        TransferHelper.safeTransferFrom(token, from, to, value);\r\n    }\r\n\r\n    function safeTransferAVAX(address to, uint256 value) external {\r\n        TransferHelper.safeTransferAVAX(to, value);\r\n    }\r\n}\r\n\r\n// can revert on failure and returns true if successful\r\ncontract TransferHelperTestFakeERC20Compliant {\r\n    bool public success;\r\n    bool public shouldRevert;\r\n\r\n    function setup(bool success_, bool shouldRevert_) external {\r\n        success = success_;\r\n        shouldRevert = shouldRevert_;\r\n    }\r\n\r\n    function transfer(address, uint256) external view returns (bool) {\r\n        require(!shouldRevert, 'REVERT');\r\n        return success;\r\n    }\r\n\r\n    function transferFrom(\r\n        address,\r\n        address,\r\n        uint256\r\n    ) external view returns (bool) {\r\n        require(!shouldRevert, 'REVERT');\r\n        return success;\r\n    }\r\n\r\n    function approve(address, uint256) external view returns (bool) {\r\n        require(!shouldRevert, 'REVERT');\r\n        return success;\r\n    }\r\n}\r\n\r\n// only reverts on failure, no return value\r\ncontract TransferHelperTestFakeERC20Noncompliant {\r\n    bool public shouldRevert;\r\n\r\n    function setup(bool shouldRevert_) external {\r\n        shouldRevert = shouldRevert_;\r\n    }\r\n\r\n    function transfer(address, uint256) external view {\r\n        require(!shouldRevert);\r\n    }\r\n\r\n    function transferFrom(\r\n        address,\r\n        address,\r\n        uint256\r\n    ) external view {\r\n        require(!shouldRevert);\r\n    }\r\n\r\n    function approve(address, uint256) external view {\r\n        require(!shouldRevert);\r\n    }\r\n}\r\n\r\ncontract TransferHelperTestFakeFallback {\r\n    bool public shouldRevert;\r\n\r\n    function setup(bool shouldRevert_) external {\r\n        shouldRevert = shouldRevert_;\r\n    }\r\n\r\n    receive() external payable {\r\n        require(!shouldRevert);\r\n    }\r\n\r\n    function withdraw() external {\r\n        msg.sender.transfer(address(this).balance);\r\n    }\r\n}\r\n"},"contracts/pangolin-periphery/interfaces/IBridgeToken.sol":{"content":"pragma solidity >=0.5.0;\r\n\r\nimport \"../../pangolin-core/interfaces/IPangolinERC20.sol\";\r\n\r\ninterface IBridgeToken is IPangolinERC20 {\r\n    function swap(address token, uint256 amount) external;\r\n    function swapSupply(address token) external view returns (uint256);\r\n}"},"contracts/pangolin-periphery/libraries/PangolinLibrary.sol":{"content":"pragma solidity >=0.5.0;\r\n\r\nimport '../../pangolin-core/interfaces/IPangolinFactory.sol';\r\nimport '../../pangolin-core/interfaces/IPangolinPair.sol';\r\n\r\nimport \"./SafeMath.sol\";\r\n\r\nlibrary PangolinLibrary {\r\n    using SafeMath for uint;\r\n\r\n    // returns sorted token addresses, used to handle return values from pairs sorted in this order\r\n    function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {\r\n        require(tokenA != tokenB, 'PangolinLibrary: IDENTICAL_ADDRESSES');\r\n        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\r\n        require(token0 != address(0), 'PangolinLibrary: ZERO_ADDRESS');\r\n    }\r\n\r\n    // calculates the CREATE2 address for a pair without making any external calls\r\n    function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {\r\n        (address token0, address token1) = sortTokens(tokenA, tokenB);\r\n        pair = address(uint(keccak256(abi.encodePacked(\r\n                hex'ff',\r\n                factory,\r\n                keccak256(abi.encodePacked(token0, token1)),\r\n                hex'40231f6b438bce0797c9ada29b718a87ea0a5cea3fe9a771abdd76bd41a3e545' // init code hash\r\n            ))));\r\n    }\r\n\r\n    // fetches and sorts the reserves for a pair\r\n    function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {\r\n        (address token0,) = sortTokens(tokenA, tokenB);\r\n        (uint reserve0, uint reserve1,) = IPangolinPair(pairFor(factory, tokenA, tokenB)).getReserves();\r\n        (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\r\n    }\r\n\r\n    // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset\r\n    function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {\r\n        require(amountA > 0, 'PangolinLibrary: INSUFFICIENT_AMOUNT');\r\n        require(reserveA > 0 && reserveB > 0, 'PangolinLibrary: INSUFFICIENT_LIQUIDITY');\r\n        amountB = amountA.mul(reserveB) / reserveA;\r\n    }\r\n\r\n    // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset\r\n    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {\r\n        require(amountIn > 0, 'PangolinLibrary: INSUFFICIENT_INPUT_AMOUNT');\r\n        require(reserveIn > 0 && reserveOut > 0, 'PangolinLibrary: INSUFFICIENT_LIQUIDITY');\r\n        uint amountInWithFee = amountIn.mul(997);\r\n        uint numerator = amountInWithFee.mul(reserveOut);\r\n        uint denominator = reserveIn.mul(1000).add(amountInWithFee);\r\n        amountOut = numerator / denominator;\r\n    }\r\n\r\n    // given an output amount of an asset and pair reserves, returns a required input amount of the other asset\r\n    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {\r\n        require(amountOut > 0, 'PangolinLibrary: INSUFFICIENT_OUTPUT_AMOUNT');\r\n        require(reserveIn > 0 && reserveOut > 0, 'PangolinLibrary: INSUFFICIENT_LIQUIDITY');\r\n        uint numerator = reserveIn.mul(amountOut).mul(1000);\r\n        uint denominator = reserveOut.sub(amountOut).mul(997);\r\n        amountIn = (numerator / denominator).add(1);\r\n    }\r\n\r\n    // performs chained getAmountOut calculations on any number of pairs\r\n    function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {\r\n        require(path.length >= 2, 'PangolinLibrary: INVALID_PATH');\r\n        amounts = new uint[](path.length);\r\n        amounts[0] = amountIn;\r\n        for (uint i; i < path.length - 1; i++) {\r\n            (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);\r\n            amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);\r\n        }\r\n    }\r\n\r\n    // performs chained getAmountIn calculations on any number of pairs\r\n    function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {\r\n        require(path.length >= 2, 'PangolinLibrary: INVALID_PATH');\r\n        amounts = new uint[](path.length);\r\n        amounts[amounts.length - 1] = amountOut;\r\n        for (uint i = path.length - 1; i > 0; i--) {\r\n            (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);\r\n            amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);\r\n        }\r\n    }\r\n}\r\n"},"contracts/pangolin-periphery/libraries/Roles.sol":{"content":"// SPDX-License-Identifier: MIT\r\npragma solidity ^0.7.0;\r\n\r\nlibrary Roles {\r\n    struct Role {\r\n        mapping(address => bool) bearer;\r\n    }\r\n\r\n    /**\r\n     * @dev Give an account access to this role.\r\n     */\r\n    function add(Role storage role, address account) internal {\r\n        require(!has(role, account), \"Roles: account already has role\");\r\n        role.bearer[account] = true;\r\n    }\r\n\r\n    /**\r\n     * @dev Remove an account's access to this role.\r\n     */\r\n    function remove(Role storage role, address account) internal {\r\n        require(has(role, account), \"Roles: account does not have role\");\r\n        role.bearer[account] = false;\r\n    }\r\n\r\n    /**\r\n     * @dev Check if an account has this role.\r\n     * @return bool\r\n     */\r\n    function has(Role storage role, address account)\r\n        internal\r\n        view\r\n        returns (bool)\r\n    {\r\n        require(account != address(0), \"Roles: account is the zero address\");\r\n        return role.bearer[account];\r\n    }\r\n}"},"contracts/pangolin-periphery/libraries/SafeMath.sol":{"content":"pragma solidity >=0.6.6 <0.8.0;\r\n\r\n// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)\r\n\r\nlibrary SafeMath {\r\n    function add(uint x, uint y) internal pure returns (uint z) {\r\n        require((z = x + y) >= x, 'ds-math-add-overflow');\r\n    }\r\n\r\n    function sub(uint x, uint y) internal pure returns (uint z) {\r\n        require((z = x - y) <= x, 'ds-math-sub-underflow');\r\n    }\r\n\r\n    function mul(uint x, uint y) internal pure returns (uint z) {\r\n        require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');\r\n    }\r\n}\r\n"},"contracts/pangolin-periphery/libraries/UniswapV2OracleLibrary.sol":{"content":"pragma solidity >=0.5.0;\r\n\r\nimport '../../pangolin-core/interfaces/IPangolinPair.sol';\r\nimport '../../pangolin-lib/libraries/FixedPoint.sol';\r\n\r\n// library with helper methods for oracles that are concerned with computing average prices\r\nlibrary PangolinOracleLibrary {\r\n    using FixedPoint for *;\r\n\r\n    // helper function that returns the current block timestamp within the range of uint32, i.e. [0, 2**32 - 1]\r\n    function currentBlockTimestamp() internal view returns (uint32) {\r\n        return uint32(block.timestamp % 2 ** 32);\r\n    }\r\n\r\n    // produces the cumulative price using counterfactuals to save gas and avoid a call to sync.\r\n    function currentCumulativePrices(\r\n        address pair\r\n    ) internal view returns (uint price0Cumulative, uint price1Cumulative, uint32 blockTimestamp) {\r\n        blockTimestamp = currentBlockTimestamp();\r\n        price0Cumulative = IPangolinPair(pair).price0CumulativeLast();\r\n        price1Cumulative = IPangolinPair(pair).price1CumulativeLast();\r\n\r\n        // if time has elapsed since the last update on the pair, mock the accumulated price values\r\n        (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast) = IPangolinPair(pair).getReserves();\r\n        if (blockTimestampLast != blockTimestamp) {\r\n            // subtraction overflow is desired\r\n            uint32 timeElapsed = blockTimestamp - blockTimestampLast;\r\n            // addition overflow is desired\r\n            // counterfactual\r\n            price0Cumulative += uint(FixedPoint.fraction(reserve1, reserve0)._x) * timeElapsed;\r\n            // counterfactual\r\n            price1Cumulative += uint(FixedPoint.fraction(reserve0, reserve1)._x) * timeElapsed;\r\n        }\r\n    }\r\n}\r\n"},"contracts/pangolin-periphery/PangolinBridgeMigrationRouter.sol":{"content":"pragma solidity ^0.7.6;\r\n\r\nimport \"../pangolin-core/interfaces/IPangolinERC20.sol\";\r\nimport \"../pangolin-lib/libraries/TransferHelper.sol\";\r\nimport \"./interfaces/IBridgeToken.sol\";\r\nimport \"./libraries/Roles.sol\";\r\nimport \"./libraries/PangolinLibrary.sol\";\r\n\r\ncontract PangolinBridgeMigrationRouter {\r\n    using SafeMath for uint;\r\n    using Roles for Roles.Role;\r\n\r\n    Roles.Role private adminRole;\r\n    mapping(address => address) public bridgeMigrator;\r\n\r\n    constructor() public {\r\n        adminRole.add(msg.sender);\r\n    }\r\n\r\n    // safety measure to prevent clear front-running by delayed block\r\n    modifier ensure(uint deadline) {\r\n        require(deadline >= block.timestamp, 'PangolinBridgeMigrationRouter: EXPIRED');\r\n        _;\r\n    }\r\n\r\n    // makes sure the admin is the one calling protected methods\r\n    modifier onlyAdmin() {\r\n        require(adminRole.has(msg.sender), 'PangolinBridgeMigrationRouter: Unauthorized');\r\n        _;\r\n    }\r\n\r\n    /**\r\n     * @notice Given an address, this address is added to the list of admin.\r\n     * @dev Any admin can add or remove other admins, careful.\r\n     * @param account The address of the account.\r\n     */\r\n    function addAdmin(address account) external onlyAdmin {\r\n        require(account != address(0), \"PangolinBridgeMigrationRouter: Address 0 not allowed\");\r\n        adminRole.add(account);\r\n    }\r\n\r\n    /**\r\n     * @notice Given an address, this address is added to the list of admin.\r\n     * @dev Any admin can add or remove other admins, careful.\r\n     * @param account The address of the account.\r\n     */\r\n    function removeAdmin(address account) external onlyAdmin {\r\n        require(msg.sender != account, \"PangolinBridgeMigrationRouter: You can't demote yourself\");\r\n        adminRole.remove(account);\r\n    }\r\n\r\n    /**\r\n     * @notice Given an address, returns whether or not he's already an admin\r\n     * @param account The address of the account.\r\n     * @return Whether or not the account address is an admin.\r\n     */\r\n    function isAdmin(address account) external view returns(bool) {\r\n        return adminRole.has(account);\r\n    }\r\n\r\n    /**\r\n     * @notice Given an token, and it's migrator address, it configures the migrator for later usage\r\n     * @param tokenAddress The ERC20 token address that will be migrated using the migrator\r\n     * @param migratorAddress The WrappedERC20 token address that will be migrate the token\r\n     */\r\n    function addMigrator(address tokenAddress, address migratorAddress) external onlyAdmin {\r\n        require(tokenAddress != address(0), \"PangolinBridgeMigrationRouter: tokenAddress 0 not supported\");\r\n        require(migratorAddress != address(0), \"PangolinBridgeMigrationRouter: migratorAddress 0 not supported\");\r\n        uint256 amount = IBridgeToken(migratorAddress).swapSupply(tokenAddress);\r\n        require(\r\n            amount > 0,\r\n            \"The migrator doesn't have swap supply for this token\"\r\n        );\r\n        _allowToken(tokenAddress, migratorAddress);\r\n        bridgeMigrator[tokenAddress] = migratorAddress;\r\n    }\r\n\r\n    /**\r\n     * @notice Internal function to manage approval, allows an ERC20 to be spent to the maximum\r\n     * @param tokenAddress The ERC20 token address that will be allowed to be used\r\n     * @param spenderAddress Who's going to spend the ERC20 token\r\n     */\r\n    function _allowToken(address tokenAddress, address spenderAddress) internal {\r\n        IPangolinERC20(tokenAddress).approve(spenderAddress, type(uint).max);\r\n    }\r\n\r\n    /**\r\n     * @notice Internal function add liquidity on a low level, without the use of a router\r\n     * @dev This function will try to maximize one of the tokens amount and match the other\r\n     * one, can cause dust so consider charge backs\r\n     * @param pairToken The pair that will receive the liquidity\r\n     * @param token0 The first token of the pair\r\n     * @param token1 The second token of the pair\r\n     * @param amountIn0 The amount of first token that can be used to deposit liquidity\r\n     * @param amountIn1 The amount of second token that can be used to deposit liquidity\r\n     * @param to The address who will receive the liquidity\r\n     * @return amount0 Charge back from token0\r\n     * @return amount1 Charge back from token1\r\n     * @return liquidityAmount Total liquidity token amount acquired\r\n     */\r\n    function _addLiquidity(\r\n        address pairToken,\r\n        address token0,\r\n        address token1,\r\n        uint amountIn0,\r\n        uint amountIn1,\r\n        address to\r\n    ) private returns (uint amount0, uint amount1, uint liquidityAmount) {\r\n        (uint112 reserve0, uint112 reserve1,) = IPangolinPair(pairToken).getReserves();\r\n        uint quote0 = amountIn0;\r\n        uint quote1 = PangolinLibrary.quote(amountIn0, reserve0, reserve1);\r\n        if (quote1 > amountIn1) {\r\n            quote1 = amountIn1;\r\n            quote0 = PangolinLibrary.quote(amountIn1, reserve1, reserve0);\r\n        }\r\n        TransferHelper.safeTransfer(token0, pairToken, quote0);\r\n        TransferHelper.safeTransfer(token1, pairToken, quote1);\r\n        amount0 = amountIn0 - quote0;\r\n        amount1 = amountIn1 - quote1;\r\n        liquidityAmount = IPangolinPair(pairToken).mint(to);\r\n    }\r\n\r\n    /**\r\n     * @notice Internal function to remove liquidity on a low level, without the use of a router\r\n     * @dev This function requires the user to approve this contract to transfer the liquidity pair on it's behalf\r\n     * @param liquidityPair The pair that will have the liquidity removed\r\n     * @param amount The amount of liquidity token that you want to rescue\r\n     * @return amountTokenA The amount of token0 from burning liquidityPair token\r\n     * @return amountTokenB The amount of token1 from burning liquidityPair token\r\n     */\r\n    function _rescueLiquidity(\r\n        address liquidityPair,\r\n        uint amount\r\n    ) internal returns (uint amountTokenA, uint amountTokenB) {\r\n        TransferHelper.safeTransferFrom(liquidityPair, msg.sender, liquidityPair, amount);\r\n        (amountTokenA, amountTokenB) = IPangolinPair(liquidityPair).burn(address(this));\r\n    }\r\n\r\n    /**\r\n     * @notice Internal function that checks if the minimum requirements are met to accept the pairs to migrate\r\n     * @dev This function makes the main function(migrateLiquidity) cleaner, this function can revert the transaction\r\n     * @param pairA The pair that is going to be migrated from\r\n     * @param pairB The pair that is going to be migrated to\r\n     */\r\n    function _arePairsCompatible(address pairA, address pairB) internal view {\r\n        require(pairA != address(0), \"PangolinBridgeMigrationRouter: liquidityPairFrom address 0\");\r\n        require(pairA != address(0), \"PangolinBridgeMigrationRouter: liquidityPairTo address 0\");\r\n        require(pairA != pairB, \"PangolinBridgeMigrationRouter: Cant convert to the same liquidity pairs\");\r\n        require(\r\n            IPangolinPair(pairA).token0() == IPangolinPair(pairB).token0() ||\r\n            IPangolinPair(pairA).token0() == IPangolinPair(pairB).token1() ||\r\n            IPangolinPair(pairA).token1() == IPangolinPair(pairB).token0() ||\r\n            IPangolinPair(pairA).token1() == IPangolinPair(pairB).token1(),\r\n            \"PangolinBridgeMigrationRouter: Pair does not have one token matching\"\r\n        );\r\n    }\r\n\r\n    /**\r\n     * @notice Internal function that implements the token migration\r\n     * @dev This function only checks if the expected balance was received, it doesn't check for migrator existance\r\n     * @param tokenAddress The ERC20 token address that will be migrated\r\n     * @param amount The amount of the token to be migrated\r\n     */\r\n    function _migrateToken(\r\n        address tokenAddress,\r\n        uint amount\r\n    ) internal {\r\n        require(tokenAddress != address(0), \"PangolinBridgeMigrationRouter: tokenAddress 0 not supported\");\r\n        IBridgeToken(bridgeMigrator[tokenAddress]).swap(tokenAddress, amount);\r\n        require(\r\n            IBridgeToken(bridgeMigrator[tokenAddress]).balanceOf(address(this)) == amount,\r\n            \"PangolinBridgeMigrationRouter: Didn't yield the correct amount\"\r\n        );\r\n    }\r\n\r\n    /**\r\n     * @notice Front facing function that migrates the token\r\n     * @dev This function includes important checks\r\n     * @param token The ERC20 token address that will be migrated\r\n     * @param to The address of who's receiving the token\r\n     * @param amount The amount of the token to be migrated\r\n     * @param deadline The deadline limit that should be met, otherwise revert to prevent front-run\r\n     */\r\n    function migrateToken(\r\n        address token,\r\n        address to,\r\n        uint amount,\r\n        uint deadline\r\n    ) external ensure(deadline) {\r\n        require(\r\n            bridgeMigrator[token] != address(0),\r\n            \"PangolinBridgeMigrationRouter: migrator not registered\"\r\n        );\r\n        TransferHelper.safeTransferFrom(token, msg.sender, address(this), amount);\r\n        _migrateToken(token, amount);\r\n        TransferHelper.safeTransfer(bridgeMigrator[token], to, amount);\r\n    }\r\n\r\n    /**\r\n     * @notice Front facing function that migrates the liquidity, with permit\r\n     * @param liquidityPairFrom The pair address to be migrated from\r\n     * @param liquidityPairTo The pair address to be migrated to\r\n     * @param to The address that will receive the liquidity and the charge backs\r\n     * @param amount The amount of token liquidityPairFrom that will be migrated\r\n     * @param deadline The deadline limit that should be met, otherwise revert to prevent front-run\r\n     * @param v by passing param for the permit validation\r\n     * @param r by passing param for the permit validation\r\n     * @param s by passing param for the permit validation\r\n     */\r\n    function migrateLiquidityWithPermit(\r\n        address liquidityPairFrom,\r\n        address liquidityPairTo,\r\n        address to,\r\n        uint amount,\r\n        uint deadline,\r\n        uint8 v, bytes32 r, bytes32 s\r\n    ) external ensure(deadline) {\r\n        IPangolinPair(liquidityPairFrom).permit(msg.sender, address(this), amount, deadline, v, r, s);\r\n        _migrateLiquidity(\r\n            liquidityPairFrom,\r\n            liquidityPairTo,\r\n            to,\r\n            amount\r\n        );\r\n    }\r\n\r\n    /**\r\n     * @notice Front facing function that migrates the liquidity\r\n     * @dev This function assumes sender already gave approval to move the assets\r\n     * @param liquidityPairFrom The pair address to be migrated from\r\n     * @param liquidityPairTo The pair address to be migrated to\r\n     * @param to The address that will receive the liquidity and the charge backs\r\n     * @param amount The amount of token liquidityPairFrom that will be migrated\r\n     * @param deadline The deadline limit that should be met, otherwise revert to prevent front-run\r\n     */\r\n    function migrateLiquidity(\r\n        address liquidityPairFrom,\r\n        address liquidityPairTo,\r\n        address to,\r\n        uint amount,\r\n        uint deadline\r\n    ) external ensure(deadline) {\r\n        _migrateLiquidity(\r\n            liquidityPairFrom,\r\n            liquidityPairTo,\r\n            to,\r\n            amount\r\n        );\r\n    }\r\n\r\n    /**\r\n     * @notice This was extracted into a internal method to use with both migrateLiquidity and with permit\r\n     * @dev This function includes important checks\r\n     * @param liquidityPairFrom The pair address to be migrated from\r\n     * @param liquidityPairTo The pair address to be migrated to\r\n     * @param to The address that will receive the liquidity and the charge backs\r\n     * @param amount The amount of token liquidityPairFrom that will be migrated\r\n     */\r\n    function _migrateLiquidity(\r\n        address liquidityPairFrom,\r\n        address liquidityPairTo,\r\n        address to,\r\n        uint amount\r\n    ) internal {\r\n        _arePairsCompatible(liquidityPairFrom, liquidityPairTo);\r\n        address tokenToMigrate = IPangolinPair(liquidityPairFrom).token0();\r\n        if (\r\n            IPangolinPair(liquidityPairFrom).token0() == IPangolinPair(liquidityPairTo).token0() ||\r\n            IPangolinPair(liquidityPairFrom).token0() == IPangolinPair(liquidityPairTo).token1()\r\n        ) {\r\n            tokenToMigrate = IPangolinPair(liquidityPairFrom).token1();\r\n        }\r\n        address newTokenAddress = bridgeMigrator[tokenToMigrate];\r\n        require(\r\n            newTokenAddress != address(0),\r\n            \"PangolinBridgeMigrationRouter: Migrator not registered for the pair\"\r\n        );\r\n        require(\r\n            newTokenAddress == IPangolinPair(liquidityPairTo).token0() ||\r\n            newTokenAddress == IPangolinPair(liquidityPairTo).token1(),\r\n            \"PangolinBridgeMigrationRouter: Pair doesn't match the migration token\"\r\n        );\r\n\r\n        (uint amountTokenA, uint amountTokenB) = _rescueLiquidity(liquidityPairFrom, amount);\r\n        {\r\n            uint amountToSwap = amountTokenA;\r\n            if (tokenToMigrate != IPangolinPair(liquidityPairFrom).token0()) {\r\n                amountToSwap = amountTokenB;\r\n            }\r\n            _migrateToken(tokenToMigrate, amountToSwap);\r\n        }\r\n        if (IPangolinPair(liquidityPairFrom).token0() != IPangolinPair(liquidityPairTo).token0() &&\r\n            IPangolinPair(liquidityPairFrom).token1() != IPangolinPair(liquidityPairTo).token1()\r\n        ) {\r\n            (amountTokenA, amountTokenB) = (amountTokenB, amountTokenA);\r\n        }\r\n\r\n        (uint changeAmount0, uint changeAmount1, ) = _addLiquidity(\r\n            liquidityPairTo,\r\n            IPangolinPair(liquidityPairTo).token0(), IPangolinPair(liquidityPairTo).token1(),\r\n            amountTokenA, amountTokenB, to\r\n        );\r\n        if (changeAmount0 > 0) {\r\n            TransferHelper.safeTransfer(IPangolinPair(liquidityPairTo).token0(), to, changeAmount0);\r\n        }\r\n        if (changeAmount1 > 0) {\r\n            TransferHelper.safeTransfer(IPangolinPair(liquidityPairTo).token1(), to, changeAmount1);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @notice Internal function that simulates the amount received from the liquidity burn\r\n     * @dev This function is a support function that can be used by the front-end to show possible charge back\r\n     * @param pairAddress The pair address that will be burned(simulated)\r\n     * @param amount The amount of the liquidity token to be burned(simulated)\r\n     * @return amount0 Amounts of token0 acquired from burning the pairAddress token\r\n     * @return amount1 Amounts of token1 acquired from burning the pairAddress token\r\n     */\r\n    function _calculateRescueLiquidity(address pairAddress, uint amount) internal view returns (uint amount0, uint amount1) {\r\n        (uint112 reserves0, uint112 reserves1, ) = IPangolinPair(pairAddress).getReserves();\r\n        uint totalSupply = IPangolinPair(pairAddress).totalSupply();\r\n        amount0 = amount.mul(reserves0) / totalSupply;\r\n        amount1 = amount.mul(reserves1) / totalSupply;\r\n    }\r\n\r\n    /**\r\n     * @notice Front facing function that computes the possible charge back from the migration\r\n     * @dev No need to be extra careful as this is only a view function\r\n     * @param liquidityPairFrom The pair address that will be migrated from(simulated)\r\n     * @param liquidityPairTo The pair address that will be migrated to(simulated)\r\n     * @param amount The amount of the liquidity token to be migrated(simulated)\r\n     * @return amount0 Amount of token0 will be charged back after the migration\r\n     * @return amount1 Amount of token1 will be charged back after the migration\r\n     */\r\n    function calculateChargeBack(\r\n        address liquidityPairFrom,\r\n        address liquidityPairTo,\r\n        uint amount\r\n    ) external view returns (uint amount0, uint amount1) {\r\n        require(liquidityPairFrom != address(0), \"PangolinBridgeMigrationRouter: liquidityPairFrom address 0 not supported\");\r\n        require(liquidityPairTo != address(0), \"PangolinBridgeMigrationRouter: liquidityPairTo address 0 not supported\");\r\n        (uint amountIn0, uint amountIn1) = _calculateRescueLiquidity(liquidityPairFrom, amount);\r\n        if (IPangolinPair(liquidityPairFrom).token0() != IPangolinPair(liquidityPairTo).token0() &&\r\n            IPangolinPair(liquidityPairFrom).token1() != IPangolinPair(liquidityPairTo).token1()\r\n        ) {\r\n            (amountIn0, amountIn1) = (amountIn1, amountIn0);\r\n        }\r\n        (uint112 reserve0, uint112 reserve1,) = IPangolinPair(liquidityPairTo).getReserves();\r\n        uint quote0 = amountIn0;\r\n        uint quote1 = PangolinLibrary.quote(amountIn0, reserve0, reserve1);\r\n        if (quote1 > amountIn1) {\r\n            quote1 = amountIn1;\r\n            quote0 = PangolinLibrary.quote(amountIn1, reserve1, reserve0);\r\n        }\r\n        amount0 = amountIn0 - quote0;\r\n        amount1 = amountIn1 - quote1;\r\n    }\r\n\r\n}"},"contracts/pangolin-periphery/test/BridgeToken.sol":{"content":"// SPDX-License-Identifier: MIT\r\npragma solidity ^0.7.0;\r\n\r\nimport \"./library/openzeppelin/ERC20Burnable.sol\";\r\nimport \"../libraries/Roles.sol\";\r\n\r\ncontract BridgeToken is ERC20Burnable {\r\n    using Roles for Roles.Role;\r\n\r\n    Roles.Role private bridgeRoles;\r\n\r\n    string private constant TOKEN_NAME = \"Example Token\";\r\n    string private constant TOKEN_SYMBOL = \"EXMP.e\";\r\n    uint8 private constant TOKEN_DECIMALS = 18;\r\n\r\n    struct SwapToken {\r\n        address tokenContract;\r\n        uint256 supply;\r\n    }\r\n    mapping(address => SwapToken) swapTokens;\r\n\r\n    mapping(uint256 => bool) public chainIds;\r\n\r\n    event Mint(\r\n        address to,\r\n        uint256 amount,\r\n        address feeAddress,\r\n        uint256 feeAmount,\r\n        bytes32 originTxId\r\n    );\r\n    event Unwrap(uint256 amount, uint256 chainId);\r\n    event AddSupportedChainId(uint256 chainId);\r\n    event MigrateBridgeRole(address newBridgeRoleAddress);\r\n    event AddSwapToken(address contractAddress, uint256 supplyIncrement);\r\n    event RemoveSwapToken(address contractAddress, uint256 supplyDecrement);\r\n    event Swap(address token, uint256 amount);\r\n\r\n    constructor() ERC20(TOKEN_NAME, TOKEN_SYMBOL) {\r\n        bridgeRoles.add(msg.sender);\r\n        chainIds[0] = true;\r\n    }\r\n\r\n    function decimals() public view virtual override returns (uint8) {\r\n        return TOKEN_DECIMALS;\r\n    }\r\n\r\n    /**\r\n     * @dev Mint function used by bridge. Optional FeeAddress and FeeAmount parameters used to mint small percentage of transfered assets directly to bridge.\r\n     * @param to Address to mint funds to.\r\n     * @param amount Amount of funds to mint.\r\n     * @param feeAddress Address to mint bridge fees to.\r\n     * @param feeAmount Amount to mint as bridge fees.\r\n     * @param feeAmount Amount to mint as bridge fees.\r\n     * @param originTxId Transaction ID from external network that triggered this minting.\r\n     */\r\n    function mint(\r\n        address to,\r\n        uint256 amount,\r\n        address feeAddress,\r\n        uint256 feeAmount,\r\n        bytes32 originTxId\r\n    ) public {\r\n        require(bridgeRoles.has(msg.sender), \"Unauthorized.\");\r\n        _mint(to, amount);\r\n        if (feeAmount > 0) {\r\n            _mint(feeAddress, feeAmount);\r\n        }\r\n        emit Mint(to, amount, feeAddress, feeAmount, originTxId);\r\n    }\r\n\r\n    /**\r\n     * @dev Add new chainId to list of supported Ids.\r\n     * @param chainId ChainId to add.\r\n     */\r\n    function addSupportedChainId(uint256 chainId) public {\r\n        require(bridgeRoles.has(msg.sender), \"Unauthorized.\");\r\n\r\n        // Check that the chain ID is not the chain this contract is deployed on.\r\n        uint256 currentChainId;\r\n        assembly {\r\n            currentChainId := chainid()\r\n        }\r\n        require(chainId != currentChainId, \"Cannot add current chain ID.\");\r\n\r\n        // Already supported, no-op.\r\n        if (chainIds[chainId] == true) {\r\n            return;\r\n        }\r\n\r\n        chainIds[chainId] = true;\r\n        emit AddSupportedChainId(chainId);\r\n    }\r\n\r\n    /**\r\n     * @dev Burns assets and signals bridge to migrate funds to the same address on the provided chainId.\r\n     * @param amount Amount of asset to unwrap.\r\n     * @param chainId ChainId to unwrap or migrate funds to. Only used for multi-network bridge deployment.\r\n     *                Zero by default for bridge deployment with only 2 networks.\r\n     */\r\n    function unwrap(uint256 amount, uint256 chainId) public {\r\n        require(tx.origin == msg.sender, \"Contract calls not supported.\");\r\n        require(chainIds[chainId] == true, \"Chain ID not supported.\");\r\n        _burn(msg.sender, amount);\r\n        emit Unwrap(amount, chainId);\r\n    }\r\n\r\n    /**\r\n     * @dev Provide Bridge Role (Admin Role) to new address.\r\n     * @param newBridgeRoleAddress New bridge role address.\r\n     */\r\n    function migrateBridgeRole(address newBridgeRoleAddress) public {\r\n        require(bridgeRoles.has(msg.sender), \"Unauthorized.\");\r\n        bridgeRoles.remove(msg.sender);\r\n        bridgeRoles.add(newBridgeRoleAddress);\r\n        emit MigrateBridgeRole(newBridgeRoleAddress);\r\n    }\r\n\r\n    /**\r\n     * @dev Add Token to accept swaps from or increase supply of existing swap token.\r\n     * @param contractAddress Token Address to allow swaps.\r\n     * @param supplyIncrement Amount of assets allowed to be swapped (or incremental increase in amount).\r\n     */\r\n    function addSwapToken(address contractAddress, uint256 supplyIncrement)\r\n        public\r\n    {\r\n        require(bridgeRoles.has(msg.sender), \"Unauthorized.\");\r\n        require(isContract(contractAddress), \"Address is not contract.\");\r\n\r\n        // If the swap token is not already supported, add it with the total supply of supplyIncrement.\r\n        // Otherwise, increment the current supply.\r\n        if (swapTokens[contractAddress].tokenContract == address(0)) {\r\n            swapTokens[contractAddress] = SwapToken({\r\n                tokenContract: contractAddress,\r\n                supply: supplyIncrement\r\n            });\r\n        } else {\r\n            swapTokens[contractAddress].supply =\r\n                swapTokens[contractAddress].supply +\r\n                supplyIncrement;\r\n        }\r\n        emit AddSwapToken(contractAddress, supplyIncrement);\r\n    }\r\n\r\n    /**\r\n     * @dev Remove amount of swaps allowed from existing swap token.\r\n     * @param contractAddress Token Address to remove swap amount.\r\n     * @param supplyDecrement Amount to remove from the swap supply.\r\n     */\r\n    function removeSwapToken(address contractAddress, uint256 supplyDecrement)\r\n        public\r\n    {\r\n        require(bridgeRoles.has(msg.sender), \"Unauthorized\");\r\n        require(isContract(contractAddress), \"Address is not contract.\");\r\n        require(\r\n            swapTokens[contractAddress].tokenContract != address(0),\r\n            \"Swap token not supported\"\r\n        );\r\n\r\n        // If the decrement is less than the current supply, decrement it from the current supply.\r\n        // Otherwise, if the decrement is greater than or equal to the current supply, delete the mapping value.\r\n        if (swapTokens[contractAddress].supply > supplyDecrement) {\r\n            swapTokens[contractAddress].supply =\r\n                swapTokens[contractAddress].supply -\r\n                supplyDecrement;\r\n        } else {\r\n            delete swapTokens[contractAddress];\r\n        }\r\n        emit RemoveSwapToken(contractAddress, supplyDecrement);\r\n    }\r\n\r\n    /**\r\n     * @dev Fetch the remaining amount allowed for a swap token.\r\n     * @param token Address of swap token.\r\n     * @return amount of swaps remaining.\r\n     */\r\n    function swapSupply(address token) public view returns (uint256) {\r\n        return swapTokens[token].supply;\r\n    }\r\n\r\n    /**\r\n     * @dev Perform Swap.\r\n     * @param token Address of token to be swapped.\r\n     * @param amount Amount of token to be swapped.\r\n     */\r\n    function swap(address token, uint256 amount) public {\r\n        require(isContract(token), \"Token is not a contract.\");\r\n        require(\r\n            swapTokens[token].tokenContract != address(0),\r\n            \"Swap token is not a contract.\"\r\n        );\r\n        require(\r\n            amount <= swapTokens[token].supply,\r\n            \"Swap amount is more than supply.\"\r\n        );\r\n\r\n        // Update the allowed swap amount.\r\n        swapTokens[token].supply = swapTokens[token].supply - amount;\r\n\r\n        // Burn the old token.\r\n        ERC20Burnable swapToken = ERC20Burnable(\r\n            swapTokens[token].tokenContract\r\n        );\r\n        swapToken.burnFrom(msg.sender, amount);\r\n\r\n        // Mint the new token.\r\n        _mint(msg.sender, amount);\r\n\r\n        emit Swap(token, amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Check if provided address is a contract.\r\n     * @param addr Address to check.\r\n     * @return hasCode\r\n     */\r\n    function isContract(address addr) private view returns (bool hasCode) {\r\n        uint256 length;\r\n        assembly {\r\n            length := extcodesize(addr)\r\n        }\r\n        return length > 0;\r\n    }\r\n}\r\n"},"contracts/pangolin-periphery/test/library/openzeppelin/Context.sol":{"content":"// SPDX-License-Identifier: MIT\r\n\r\npragma solidity >=0.6.0 <0.8.0;\r\n\r\n/*\r\n * @dev Provides information about the current execution context, including the\r\n * sender of the transaction and its data. While these are generally available\r\n * via msg.sender and msg.data, they should not be accessed in such a direct\r\n * manner, since when dealing with GSN meta-transactions the account sending and\r\n * paying for execution may not be the actual sender (as far as an application\r\n * is concerned).\r\n *\r\n * This contract is only required for intermediate, library-like contracts.\r\n */\r\nabstract contract Context {\r\n    function _msgSender() internal view virtual returns (address payable) {\r\n        return msg.sender;\r\n    }\r\n\r\n    function _msgData() internal view virtual returns (bytes memory) {\r\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\r\n        return msg.data;\r\n    }\r\n}\r\n"},"contracts/pangolin-periphery/test/library/openzeppelin/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\r\n\r\npragma solidity >=0.6.0 <0.8.0;\r\n\r\nimport \"./Context.sol\";\r\nimport \"./IERC20.sol\";\r\nimport \"./OpenZeppelinSafeMath.sol\";\r\n\r\n/**\r\n * @dev Implementation of the {IERC20} interface.\r\n *\r\n * This implementation is agnostic to the way tokens are created. This means\r\n * that a supply mechanism has to be added in a derived contract using {_mint}.\r\n * For a generic mechanism see {ERC20PresetMinterPauser}.\r\n *\r\n * TIP: For a detailed writeup see our guide\r\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\r\n * to implement supply mechanisms].\r\n *\r\n * We have followed general OpenZeppelin guidelines: functions revert instead\r\n * of returning `false` on failure. This behavior is nonetheless conventional\r\n * and does not conflict with the expectations of ERC20 applications.\r\n *\r\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\r\n * This allows applications to reconstruct the allowance for all accounts just\r\n * by listening to said events. Other implementations of the EIP may not emit\r\n * these events, as it isn't required by the specification.\r\n *\r\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\r\n * functions have been added to mitigate the well-known issues around setting\r\n * allowances. See {IERC20-approve}.\r\n */\r\ncontract ERC20 is Context, IERC20 {\r\n    using OpenZeppelinSafeMath for uint256;\r\n\r\n    mapping (address => uint256) private _balances;\r\n\r\n    mapping (address => mapping (address => uint256)) private _allowances;\r\n\r\n    uint256 private _totalSupply;\r\n\r\n    string private _name;\r\n    string private _symbol;\r\n    uint8 private _decimals;\r\n\r\n    /**\r\n     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with\r\n     * a default value of 18.\r\n     *\r\n     * To select a different value for {decimals}, use {_setupDecimals}.\r\n     *\r\n     * All three of these values are immutable: they can only be set once during\r\n     * construction.\r\n     */\r\n    constructor (string memory name_, string memory symbol_) public {\r\n        _name = name_;\r\n        _symbol = symbol_;\r\n        _decimals = 18;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the name of the token.\r\n     */\r\n    function name() public view virtual returns (string memory) {\r\n        return _name;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the symbol of the token, usually a shorter version of the\r\n     * name.\r\n     */\r\n    function symbol() public view virtual returns (string memory) {\r\n        return _symbol;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the number of decimals used to get its user representation.\r\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\r\n     * be displayed to a user as `5,05` (`505 / 10 ** 2`).\r\n     *\r\n     * Tokens usually opt for a value of 18, imitating the relationship between\r\n     * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\r\n     * called.\r\n     *\r\n     * NOTE: This information is only used for _display_ purposes: it in\r\n     * no way affects any of the arithmetic of the contract, including\r\n     * {IERC20-balanceOf} and {IERC20-transfer}.\r\n     */\r\n    function decimals() public view virtual returns (uint8) {\r\n        return _decimals;\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-totalSupply}.\r\n     */\r\n    function totalSupply() public view virtual override returns (uint256) {\r\n        return _totalSupply;\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-balanceOf}.\r\n     */\r\n    function balanceOf(address account) public view virtual override returns (uint256) {\r\n        return _balances[account];\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-transfer}.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `recipient` cannot be the zero address.\r\n     * - the caller must have a balance of at least `amount`.\r\n     */\r\n    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\r\n        _transfer(_msgSender(), recipient, amount);\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-allowance}.\r\n     */\r\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\r\n        return _allowances[owner][spender];\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-approve}.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `spender` cannot be the zero address.\r\n     */\r\n    function approve(address spender, uint256 amount) public virtual override returns (bool) {\r\n        _approve(_msgSender(), spender, amount);\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-transferFrom}.\r\n     *\r\n     * Emits an {Approval} event indicating the updated allowance. This is not\r\n     * required by the EIP. See the note at the beginning of {ERC20}.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `sender` and `recipient` cannot be the zero address.\r\n     * - `sender` must have a balance of at least `amount`.\r\n     * - the caller must have allowance for ``sender``'s tokens of at least\r\n     * `amount`.\r\n     */\r\n    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\r\n        _transfer(sender, recipient, amount);\r\n        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \"ERC20: transfer amount exceeds allowance\"));\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\r\n     *\r\n     * This is an alternative to {approve} that can be used as a mitigation for\r\n     * problems described in {IERC20-approve}.\r\n     *\r\n     * Emits an {Approval} event indicating the updated allowance.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `spender` cannot be the zero address.\r\n     */\r\n    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\r\n        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\r\n     *\r\n     * This is an alternative to {approve} that can be used as a mitigation for\r\n     * problems described in {IERC20-approve}.\r\n     *\r\n     * Emits an {Approval} event indicating the updated allowance.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `spender` cannot be the zero address.\r\n     * - `spender` must have allowance for the caller of at least\r\n     * `subtractedValue`.\r\n     */\r\n    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\r\n        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \"ERC20: decreased allowance below zero\"));\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev Moves tokens `amount` from `sender` to `recipient`.\r\n     *\r\n     * This is internal function is equivalent to {transfer}, and can be used to\r\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\r\n     *\r\n     * Emits a {Transfer} event.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `sender` cannot be the zero address.\r\n     * - `recipient` cannot be the zero address.\r\n     * - `sender` must have a balance of at least `amount`.\r\n     */\r\n    function _transfer(address sender, address recipient, uint256 amount) internal virtual {\r\n        require(sender != address(0), \"ERC20: transfer from the zero address\");\r\n        require(recipient != address(0), \"ERC20: transfer to the zero address\");\r\n\r\n        _beforeTokenTransfer(sender, recipient, amount);\r\n\r\n        _balances[sender] = _balances[sender].sub(amount, \"ERC20: transfer amount exceeds balance\");\r\n        _balances[recipient] = _balances[recipient].add(amount);\r\n        emit Transfer(sender, recipient, amount);\r\n    }\r\n\r\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\r\n     * the total supply.\r\n     *\r\n     * Emits a {Transfer} event with `from` set to the zero address.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `to` cannot be the zero address.\r\n     */\r\n    function _mint(address account, uint256 amount) internal virtual {\r\n        require(account != address(0), \"ERC20: mint to the zero address\");\r\n\r\n        _beforeTokenTransfer(address(0), account, amount);\r\n\r\n        _totalSupply = _totalSupply.add(amount);\r\n        _balances[account] = _balances[account].add(amount);\r\n        emit Transfer(address(0), account, amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Destroys `amount` tokens from `account`, reducing the\r\n     * total supply.\r\n     *\r\n     * Emits a {Transfer} event with `to` set to the zero address.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `account` cannot be the zero address.\r\n     * - `account` must have at least `amount` tokens.\r\n     */\r\n    function _burn(address account, uint256 amount) internal virtual {\r\n        require(account != address(0), \"ERC20: burn from the zero address\");\r\n\r\n        _beforeTokenTransfer(account, address(0), amount);\r\n\r\n        _balances[account] = _balances[account].sub(amount, \"ERC20: burn amount exceeds balance\");\r\n        _totalSupply = _totalSupply.sub(amount);\r\n        emit Transfer(account, address(0), amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\r\n     *\r\n     * This internal function is equivalent to `approve`, and can be used to\r\n     * e.g. set automatic allowances for certain subsystems, etc.\r\n     *\r\n     * Emits an {Approval} event.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `owner` cannot be the zero address.\r\n     * - `spender` cannot be the zero address.\r\n     */\r\n    function _approve(address owner, address spender, uint256 amount) internal virtual {\r\n        require(owner != address(0), \"ERC20: approve from the zero address\");\r\n        require(spender != address(0), \"ERC20: approve to the zero address\");\r\n\r\n        _allowances[owner][spender] = amount;\r\n        emit Approval(owner, spender, amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Sets {decimals} to a value other than the default one of 18.\r\n     *\r\n     * WARNING: This function should only be called from the constructor. Most\r\n     * applications that interact with token contracts will not expect\r\n     * {decimals} to ever change, and may work incorrectly if it does.\r\n     */\r\n    function _setupDecimals(uint8 decimals_) internal virtual {\r\n        _decimals = decimals_;\r\n    }\r\n\r\n    /**\r\n     * @dev Hook that is called before any transfer of tokens. This includes\r\n     * minting and burning.\r\n     *\r\n     * Calling conditions:\r\n     *\r\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\r\n     * will be to transferred to `to`.\r\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\r\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\r\n     * - `from` and `to` are never both zero.\r\n     *\r\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\r\n     */\r\n    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }\r\n}\r\n"},"contracts/pangolin-periphery/test/library/openzeppelin/ERC20Burnable.sol":{"content":"// SPDX-License-Identifier: MIT\r\n\r\npragma solidity >=0.6.0 <0.8.0;\r\n\r\nimport \"./Context.sol\";\r\nimport \"./ERC20.sol\";\r\nimport \"./OpenZeppelinSafeMath.sol\";\r\n\r\n/**\r\n * @dev Extension of {ERC20} that allows token holders to destroy both their own\r\n * tokens and those that they have an allowance for, in a way that can be\r\n * recognized off-chain (via event analysis).\r\n */\r\nabstract contract ERC20Burnable is Context, ERC20 {\r\n    using OpenZeppelinSafeMath for uint256;\r\n\r\n    /**\r\n     * @dev Destroys `amount` tokens from the caller.\r\n     *\r\n     * See {ERC20-_burn}.\r\n     */\r\n    function burn(uint256 amount) public virtual {\r\n        _burn(_msgSender(), amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Destroys `amount` tokens from `account`, deducting from the caller's\r\n     * allowance.\r\n     *\r\n     * See {ERC20-_burn} and {ERC20-allowance}.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - the caller must have allowance for ``accounts``'s tokens of at least\r\n     * `amount`.\r\n     */\r\n    function burnFrom(address account, uint256 amount) public virtual {\r\n        uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, \"ERC20: burn amount exceeds allowance\");\r\n\r\n        _approve(account, _msgSender(), decreasedAllowance);\r\n        _burn(account, amount);\r\n    }\r\n}\r\n"},"contracts/pangolin-periphery/test/library/openzeppelin/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\r\n\r\npragma solidity >=0.6.0 <0.8.0;\r\n\r\n/**\r\n * @dev Interface of the ERC20 standard as defined in the EIP.\r\n */\r\ninterface IERC20 {\r\n    /**\r\n     * @dev Returns the amount of tokens in existence.\r\n     */\r\n    function totalSupply() external view returns (uint256);\r\n\r\n    /**\r\n     * @dev Returns the amount of tokens owned by `account`.\r\n     */\r\n    function balanceOf(address account) external view returns (uint256);\r\n\r\n    /**\r\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\r\n     *\r\n     * Returns a boolean value indicating whether the operation succeeded.\r\n     *\r\n     * Emits a {Transfer} event.\r\n     */\r\n    function transfer(address recipient, uint256 amount) external returns (bool);\r\n\r\n    /**\r\n     * @dev Returns the remaining number of tokens that `spender` will be\r\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\r\n     * zero by default.\r\n     *\r\n     * This value changes when {approve} or {transferFrom} are called.\r\n     */\r\n    function allowance(address owner, address spender) external view returns (uint256);\r\n\r\n    /**\r\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\r\n     *\r\n     * Returns a boolean value indicating whether the operation succeeded.\r\n     *\r\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\r\n     * that someone may use both the old and the new allowance by unfortunate\r\n     * transaction ordering. One possible solution to mitigate this race\r\n     * condition is to first reduce the spender's allowance to 0 and set the\r\n     * desired value afterwards:\r\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\r\n     *\r\n     * Emits an {Approval} event.\r\n     */\r\n    function approve(address spender, uint256 amount) external returns (bool);\r\n\r\n    /**\r\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\r\n     * allowance mechanism. `amount` is then deducted from the caller's\r\n     * allowance.\r\n     *\r\n     * Returns a boolean value indicating whether the operation succeeded.\r\n     *\r\n     * Emits a {Transfer} event.\r\n     */\r\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\r\n\r\n    /**\r\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\r\n     * another (`to`).\r\n     *\r\n     * Note that `value` may be zero.\r\n     */\r\n    event Transfer(address indexed from, address indexed to, uint256 value);\r\n\r\n    /**\r\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\r\n     * a call to {approve}. `value` is the new allowance.\r\n     */\r\n    event Approval(address indexed owner, address indexed spender, uint256 value);\r\n}\r\n"},"contracts/pangolin-periphery/test/library/openzeppelin/OpenZeppelinSafeMath.sol":{"content":"// SPDX-License-Identifier: MIT\r\n\r\npragma solidity >=0.6.0 <0.8.0;\r\n\r\n/**\r\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\r\n * checks.\r\n *\r\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\r\n * in bugs, because programmers usually assume that an overflow raises an\r\n * error, which is the standard behavior in high level programming languages.\r\n * `SafeMath` restores this intuition by reverting the transaction when an\r\n * operation overflows.\r\n *\r\n * Using this library instead of the unchecked operations eliminates an entire\r\n * class of bugs, so it's recommended to use it always.\r\n */\r\nlibrary OpenZeppelinSafeMath {\r\n    /**\r\n     * @dev Returns the addition of two unsigned integers, with an overflow flag.\r\n     *\r\n     * _Available since v3.4._\r\n     */\r\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\r\n        uint256 c = a + b;\r\n        if (c < a) return (false, 0);\r\n        return (true, c);\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the substraction of two unsigned integers, with an overflow flag.\r\n     *\r\n     * _Available since v3.4._\r\n     */\r\n    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\r\n        if (b > a) return (false, 0);\r\n        return (true, a - b);\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\r\n     *\r\n     * _Available since v3.4._\r\n     */\r\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\r\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\r\n        // benefit is lost if 'b' is also tested.\r\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\r\n        if (a == 0) return (true, 0);\r\n        uint256 c = a * b;\r\n        if (c / a != b) return (false, 0);\r\n        return (true, c);\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the division of two unsigned integers, with a division by zero flag.\r\n     *\r\n     * _Available since v3.4._\r\n     */\r\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\r\n        if (b == 0) return (false, 0);\r\n        return (true, a / b);\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\r\n     *\r\n     * _Available since v3.4._\r\n     */\r\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\r\n        if (b == 0) return (false, 0);\r\n        return (true, a % b);\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the addition of two unsigned integers, reverting on\r\n     * overflow.\r\n     *\r\n     * Counterpart to Solidity's `+` operator.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - Addition cannot overflow.\r\n     */\r\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\r\n        uint256 c = a + b;\r\n        require(c >= a, \"SafeMath: addition overflow\");\r\n        return c;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the subtraction of two unsigned integers, reverting on\r\n     * overflow (when the result is negative).\r\n     *\r\n     * Counterpart to Solidity's `-` operator.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - Subtraction cannot overflow.\r\n     */\r\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\r\n        require(b <= a, \"SafeMath: subtraction overflow\");\r\n        return a - b;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the multiplication of two unsigned integers, reverting on\r\n     * overflow.\r\n     *\r\n     * Counterpart to Solidity's `*` operator.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - Multiplication cannot overflow.\r\n     */\r\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\r\n        if (a == 0) return 0;\r\n        uint256 c = a * b;\r\n        require(c / a == b, \"SafeMath: multiplication overflow\");\r\n        return c;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the integer division of two unsigned integers, reverting on\r\n     * division by zero. The result is rounded towards zero.\r\n     *\r\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\r\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\r\n     * uses an invalid opcode to revert (consuming all remaining gas).\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - The divisor cannot be zero.\r\n     */\r\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\r\n        require(b > 0, \"SafeMath: division by zero\");\r\n        return a / b;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\r\n     * reverting when dividing by zero.\r\n     *\r\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\r\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\r\n     * invalid opcode to revert (consuming all remaining gas).\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - The divisor cannot be zero.\r\n     */\r\n    function mod(uint256 a, uint256 b) internal pure returns (uint256) {\r\n        require(b > 0, \"SafeMath: modulo by zero\");\r\n        return a % b;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\r\n     * overflow (when the result is negative).\r\n     *\r\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\r\n     * message unnecessarily. For custom revert reasons use {trySub}.\r\n     *\r\n     * Counterpart to Solidity's `-` operator.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - Subtraction cannot overflow.\r\n     */\r\n    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\r\n        require(b <= a, errorMessage);\r\n        return a - b;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the integer division of two unsigned integers, reverting with custom message on\r\n     * division by zero. The result is rounded towards zero.\r\n     *\r\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\r\n     * message unnecessarily. For custom revert reasons use {tryDiv}.\r\n     *\r\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\r\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\r\n     * uses an invalid opcode to revert (consuming all remaining gas).\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - The divisor cannot be zero.\r\n     */\r\n    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\r\n        require(b > 0, errorMessage);\r\n        return a / b;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\r\n     * reverting with custom message when dividing by zero.\r\n     *\r\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\r\n     * message unnecessarily. For custom revert reasons use {tryMod}.\r\n     *\r\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\r\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\r\n     * invalid opcode to revert (consuming all remaining gas).\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - The divisor cannot be zero.\r\n     */\r\n    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\r\n        require(b > 0, errorMessage);\r\n        return a % b;\r\n    }\r\n}\r\n"},"contracts/pangolin-token/IPangolinERC20.sol":{"content":"pragma solidity >=0.5.0;\r\n\r\ninterface IPangolinERC20 {\r\n    event Approval(address indexed owner, address indexed spender, uint value);\r\n    event Transfer(address indexed from, address indexed to, uint value);\r\n\r\n    function name() external pure returns (string memory);\r\n    function symbol() external pure returns (string memory);\r\n    function decimals() external pure returns (uint8);\r\n    function totalSupply() external view returns (uint);\r\n    function balanceOf(address owner) external view returns (uint);\r\n    function allowance(address owner, address spender) external view returns (uint);\r\n\r\n    function approve(address spender, uint value) external returns (bool);\r\n    function transfer(address to, uint value) external returns (bool);\r\n    function transferFrom(address from, address to, uint value) external returns (bool);\r\n\r\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\r\n    function PERMIT_TYPEHASH() external pure returns (bytes32);\r\n    function nonces(address owner) external view returns (uint);\r\n\r\n    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\r\n}\r\n"},"contracts/staking-rewards/StakingRewards.sol":{"content":"pragma solidity ^0.7.6;\r\n\r\nimport \"openzeppelin-contracts-legacy/access/Ownable.sol\";\r\nimport \"openzeppelin-contracts-legacy/math/Math.sol\";\r\nimport \"openzeppelin-contracts-legacy/math/SafeMath.sol\";\r\nimport \"openzeppelin-contracts-legacy/token/ERC20/SafeERC20.sol\";\r\nimport \"openzeppelin-contracts-legacy/utils/ReentrancyGuard.sol\";\r\n\r\nimport \"../pangolin-token/IPangolinERC20.sol\";\r\n\r\n\r\n// https://docs.synthetix.io/contracts/source/contracts/stakingrewards\r\ncontract StakingRewards is ReentrancyGuard, Ownable {\r\n    using SafeMath for uint256;\r\n    using SafeERC20 for IERC20;\r\n\r\n    /* ========== STATE VARIABLES ========== */\r\n\r\n    IERC20 public rewardsToken;\r\n    IERC20 public stakingToken;\r\n    uint256 public periodFinish = 0;\r\n    uint256 public rewardRate = 0;\r\n    uint256 public rewardsDuration = 1 days;\r\n    uint256 public lastUpdateTime;\r\n    uint256 public rewardPerTokenStored;\r\n\r\n    mapping(address => uint256) public userRewardPerTokenPaid;\r\n    mapping(address => uint256) public rewards;\r\n\r\n    uint256 private _totalSupply;\r\n    mapping(address => uint256) private _balances;\r\n\r\n    /* ========== CONSTRUCTOR ========== */\r\n\r\n    constructor(\r\n        address _rewardsToken,\r\n        address _stakingToken\r\n    ) public {\r\n        rewardsToken = IERC20(_rewardsToken);\r\n        stakingToken = IERC20(_stakingToken);\r\n    }\r\n\r\n    /* ========== VIEWS ========== */\r\n\r\n    function totalSupply() external view returns (uint256) {\r\n        return _totalSupply;\r\n    }\r\n\r\n    function balanceOf(address account) external view returns (uint256) {\r\n        return _balances[account];\r\n    }\r\n\r\n    function lastTimeRewardApplicable() public view returns (uint256) {\r\n        return Math.min(block.timestamp, periodFinish);\r\n    }\r\n\r\n    function rewardPerToken() public view returns (uint256) {\r\n        if (_totalSupply == 0) {\r\n            return rewardPerTokenStored;\r\n        }\r\n        return\r\n            rewardPerTokenStored.add(\r\n                lastTimeRewardApplicable().sub(lastUpdateTime).mul(rewardRate).mul(1e18).div(_totalSupply)\r\n            );\r\n    }\r\n\r\n    function earned(address account) public view returns (uint256) {\r\n        return _balances[account].mul(rewardPerToken().sub(userRewardPerTokenPaid[account])).div(1e18).add(rewards[account]);\r\n    }\r\n\r\n    function getRewardForDuration() external view returns (uint256) {\r\n        return rewardRate.mul(rewardsDuration);\r\n    }\r\n\r\n    /* ========== MUTATIVE FUNCTIONS ========== */\r\n\r\n    function stakeWithPermit(uint256 amount, uint deadline, uint8 v, bytes32 r, bytes32 s) external nonReentrant updateReward(msg.sender) {\r\n        require(amount > 0, \"Cannot stake 0\");\r\n        _totalSupply = _totalSupply.add(amount);\r\n        _balances[msg.sender] = _balances[msg.sender].add(amount);\r\n\r\n        // permit\r\n        IPangolinERC20(address(stakingToken)).permit(msg.sender, address(this), amount, deadline, v, r, s);\r\n\r\n        stakingToken.safeTransferFrom(msg.sender, address(this), amount);\r\n        emit Staked(msg.sender, amount);\r\n    }\r\n\r\n    function stake(uint256 amount) external nonReentrant updateReward(msg.sender) {\r\n        require(amount > 0, \"Cannot stake 0\");\r\n        _totalSupply = _totalSupply.add(amount);\r\n        _balances[msg.sender] = _balances[msg.sender].add(amount);\r\n        stakingToken.safeTransferFrom(msg.sender, address(this), amount);\r\n        emit Staked(msg.sender, amount);\r\n    }\r\n\r\n    function withdraw(uint256 amount) public nonReentrant updateReward(msg.sender) {\r\n        require(amount > 0, \"Cannot withdraw 0\");\r\n        _totalSupply = _totalSupply.sub(amount);\r\n        _balances[msg.sender] = _balances[msg.sender].sub(amount);\r\n        stakingToken.safeTransfer(msg.sender, amount);\r\n        emit Withdrawn(msg.sender, amount);\r\n    }\r\n\r\n    function getReward() public nonReentrant updateReward(msg.sender) {\r\n        uint256 reward = rewards[msg.sender];\r\n        if (reward > 0) {\r\n            rewards[msg.sender] = 0;\r\n            rewardsToken.safeTransfer(msg.sender, reward);\r\n            emit RewardPaid(msg.sender, reward);\r\n        }\r\n    }\r\n\r\n    function exit() external {\r\n        withdraw(_balances[msg.sender]);\r\n        getReward();\r\n    }\r\n\r\n    /* ========== RESTRICTED FUNCTIONS ========== */\r\n\r\n    // Always needs to update the balance of the contract when calling this method\r\n    function notifyRewardAmount(uint256 reward) external onlyOwner updateReward(address(0)) {\r\n        if (block.timestamp >= periodFinish) {\r\n            rewardRate = reward.div(rewardsDuration);\r\n        } else {\r\n            uint256 remaining = periodFinish.sub(block.timestamp);\r\n            uint256 leftover = remaining.mul(rewardRate);\r\n            rewardRate = reward.add(leftover).div(rewardsDuration);\r\n        }\r\n\r\n        // Ensure the provided reward amount is not more than the balance in the contract.\r\n        // This keeps the reward rate in the right range, preventing overflows due to\r\n        // very high values of rewardRate in the earned and rewardsPerToken functions;\r\n        // Reward + leftover must be less than 2^256 / 10^18 to avoid overflow.\r\n        uint balance = rewardsToken.balanceOf(address(this));\r\n        require(rewardRate <= balance.div(rewardsDuration), \"Provided reward too high\");\r\n\r\n        lastUpdateTime = block.timestamp;\r\n        periodFinish = block.timestamp.add(rewardsDuration);\r\n        emit RewardAdded(reward);\r\n    }\r\n\r\n    // Added to support recovering LP Rewards from other systems such as BAL to be distributed to holders\r\n    function recoverERC20(address tokenAddress, uint256 tokenAmount) external onlyOwner nonReentrant {\r\n        require(tokenAddress != address(stakingToken), \"Cannot withdraw the staking token\");\r\n        IERC20(tokenAddress).safeTransfer(owner(), tokenAmount);\r\n        emit Recovered(tokenAddress, tokenAmount);\r\n    }\r\n\r\n    function setRewardsDuration(uint256 _rewardsDuration) external onlyOwner {\r\n        require(\r\n            block.timestamp > periodFinish,\r\n            \"Previous rewards period must be complete before changing the duration for the new period\"\r\n        );\r\n        require(_rewardsDuration > 0, \"Reward duration can't be zero\");\r\n        rewardsDuration = _rewardsDuration;\r\n        emit RewardsDurationUpdated(rewardsDuration);\r\n    }\r\n\r\n    /* ========== MODIFIERS ========== */\r\n\r\n    modifier updateReward(address account) {\r\n        rewardPerTokenStored = rewardPerToken();\r\n        lastUpdateTime = lastTimeRewardApplicable();\r\n        if (account != address(0)) {\r\n            rewards[account] = earned(account);\r\n            userRewardPerTokenPaid[account] = rewardPerTokenStored;\r\n        }\r\n        _;\r\n    }\r\n\r\n    /* ========== EVENTS ========== */\r\n\r\n    event RewardAdded(uint256 reward);\r\n    event Staked(address indexed user, uint256 amount);\r\n    event Withdrawn(address indexed user, uint256 amount);\r\n    event RewardPaid(address indexed user, uint256 reward);\r\n    event RewardsDurationUpdated(uint256 newDuration);\r\n    event Recovered(address token, uint256 amount);\r\n}\r\n\r\n"},"openzeppelin-contracts-legacy/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\nimport \"../GSN/Context.sol\";\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n    address private _owner;\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the deployer as the initial owner.\n     */\n    constructor () internal {\n        address msgSender = _msgSender();\n        _owner = msgSender;\n        emit OwnershipTransferred(address(0), msgSender);\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        require(_owner == _msgSender(), \"Ownable: caller is not the owner\");\n        _;\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby removing any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        emit OwnershipTransferred(_owner, address(0));\n        _owner = address(0);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n        emit OwnershipTransferred(_owner, newOwner);\n        _owner = newOwner;\n    }\n}\n"},"openzeppelin-contracts-legacy/GSN/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-legacy/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n    /**\n     * @dev Returns the largest of two numbers.\n     */\n    function max(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a >= b ? a : b;\n    }\n\n    /**\n     * @dev Returns the smallest of two numbers.\n     */\n    function min(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a < b ? a : b;\n    }\n\n    /**\n     * @dev Returns the average of two numbers. The result is rounded towards\n     * zero.\n     */\n    function average(uint256 a, uint256 b) internal pure returns (uint256) {\n        // (a + b) / 2 can overflow, so we distribute\n        return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);\n    }\n}\n"},"openzeppelin-contracts-legacy/math/SafeMath.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.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, 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\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        return sub(a, b, \"SafeMath: subtraction overflow\");\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     * 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        uint256 c = a - b;\n\n        return c;\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        // 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        uint256 c = a * b;\n        require(c / a == b, \"SafeMath: multiplication overflow\");\n\n        return c;\n    }\n\n    /**\n     * @dev Returns the integer division of two unsigned 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(uint256 a, uint256 b) internal pure returns (uint256) {\n        return div(a, b, \"SafeMath: division by zero\");\n    }\n\n    /**\n     * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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, string memory errorMessage) internal pure returns (uint256) {\n        require(b > 0, errorMessage);\n        uint256 c = a / b;\n        // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n        return c;\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n     * Reverts 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        return mod(a, b, \"SafeMath: modulo by zero\");\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n     * Reverts with custom message 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, string memory errorMessage) internal pure returns (uint256) {\n        require(b != 0, errorMessage);\n        return a % b;\n    }\n}\n"},"openzeppelin-contracts-legacy/math/SignedSafeMath.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.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-legacy/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.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-legacy/token/ERC20/SafeERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"../../math/SafeMath.sol\";\nimport \"../../utils/Address.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n    using SafeMath for uint256;\n    using Address for address;\n\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n    }\n\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n    }\n\n    /**\n     * @dev Deprecated. This function has issues similar to the ones found in\n     * {IERC20-approve}, and its usage is discouraged.\n     *\n     * Whenever possible, use {safeIncreaseAllowance} and\n     * {safeDecreaseAllowance} instead.\n     */\n    function safeApprove(IERC20 token, address spender, uint256 value) internal {\n        // safeApprove should only be called when setting an initial allowance,\n        // or when resetting it to zero. To increase and decrease it, use\n        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n        // solhint-disable-next-line max-line-length\n        require((value == 0) || (token.allowance(address(this), spender) == 0),\n            \"SafeERC20: approve from non-zero to non-zero allowance\"\n        );\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n    }\n\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n        uint256 newAllowance = token.allowance(address(this), spender).add(value);\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n    }\n\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n        uint256 newAllowance = token.allowance(address(this), spender).sub(value, \"SafeERC20: decreased allowance below zero\");\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n    }\n\n    /**\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\n     * @param token The token targeted by the call.\n     * @param data The call data (encoded using abi.encode or one of its variants).\n     */\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\n        // the target address contains contract code and also asserts for success in the low-level call.\n\n        bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\n        if (returndata.length > 0) { // Return data is optional\n            // solhint-disable-next-line max-line-length\n            require(abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n        }\n    }\n}\n"},"openzeppelin-contracts-legacy/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.2 <0.8.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    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-legacy/utils/ReentrancyGuard.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuard {\n    // Booleans are more expensive than uint256 or any type that takes up a full\n    // word because each write operation emits an extra SLOAD to first read the\n    // slot's contents, replace the bits taken up by the boolean, and then write\n    // back. This is the compiler's defense against contract upgrades and\n    // pointer aliasing, and it cannot be disabled.\n\n    // The values being non-zero value makes deployment a bit more expensive,\n    // but in exchange the refund on every call to nonReentrant will be lower in\n    // amount. Since refunds are capped to a percentage of the total\n    // transaction's gas, it is best to keep them low in cases like this one, to\n    // increase the likelihood of the full refund coming into effect.\n    uint256 private constant _NOT_ENTERED = 1;\n    uint256 private constant _ENTERED = 2;\n\n    uint256 private _status;\n\n    constructor () internal {\n        _status = _NOT_ENTERED;\n    }\n\n    /**\n     * @dev Prevents a contract from calling itself, directly or indirectly.\n     * Calling a `nonReentrant` function from another `nonReentrant`\n     * function is not supported. It is possible to prevent this from happening\n     * by making the `nonReentrant` function external, and make it call a\n     * `private` function that does the actual work.\n     */\n    modifier nonReentrant() {\n        // On the first call to nonReentrant, _notEntered will be true\n        require(_status != _ENTERED, \"ReentrancyGuard: reentrant call\");\n\n        // Any calls to nonReentrant after this point will fail\n        _status = _ENTERED;\n\n        _;\n\n        // By storing the original value once again, a refund is triggered (see\n        // https://eips.ethereum.org/EIPS/eip-2200)\n        _status = _NOT_ENTERED;\n    }\n}\n"},"openzeppelin-contracts-legacy/utils/SafeCast.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\n * checks.\n *\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n * easily result in undesired exploitation or bugs, since developers usually\n * assume that overflows raise errors. `SafeCast` restores this intuition by\n * reverting the transaction when such an operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n *\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\n * all math on `uint256` and `int256` and then downcasting.\n */\nlibrary SafeCast {\n\n    /**\n     * @dev Returns the downcasted uint128 from uint256, reverting on\n     * overflow (when the input is greater than largest uint128).\n     *\n     * Counterpart to Solidity's `uint128` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 128 bits\n     */\n    function toUint128(uint256 value) internal pure returns (uint128) {\n        require(value < 2**128, \"SafeCast: value doesn\\'t fit in 128 bits\");\n        return uint128(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint64 from uint256, reverting on\n     * overflow (when the input is greater than largest uint64).\n     *\n     * Counterpart to Solidity's `uint64` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 64 bits\n     */\n    function toUint64(uint256 value) internal pure returns (uint64) {\n        require(value < 2**64, \"SafeCast: value doesn\\'t fit in 64 bits\");\n        return uint64(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint32 from uint256, reverting on\n     * overflow (when the input is greater than largest uint32).\n     *\n     * Counterpart to Solidity's `uint32` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 32 bits\n     */\n    function toUint32(uint256 value) internal pure returns (uint32) {\n        require(value < 2**32, \"SafeCast: value doesn\\'t fit in 32 bits\");\n        return uint32(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint16 from uint256, reverting on\n     * overflow (when the input is greater than largest uint16).\n     *\n     * Counterpart to Solidity's `uint16` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 16 bits\n     */\n    function toUint16(uint256 value) internal pure returns (uint16) {\n        require(value < 2**16, \"SafeCast: value doesn\\'t fit in 16 bits\");\n        return uint16(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint8 from uint256, reverting on\n     * overflow (when the input is greater than largest uint8).\n     *\n     * Counterpart to Solidity's `uint8` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 8 bits.\n     */\n    function toUint8(uint256 value) internal pure returns (uint8) {\n        require(value < 2**8, \"SafeCast: value doesn\\'t fit in 8 bits\");\n        return uint8(value);\n    }\n\n    /**\n     * @dev Converts a signed int256 into an unsigned uint256.\n     *\n     * Requirements:\n     *\n     * - input must be greater than or equal to 0.\n     */\n    function toUint256(int256 value) internal pure returns (uint256) {\n        require(value >= 0, \"SafeCast: value must be positive\");\n        return uint256(value);\n    }\n\n    /**\n     * @dev Returns the downcasted int128 from int256, reverting on\n     * overflow (when the input is less than smallest int128 or\n     * greater than largest int128).\n     *\n     * Counterpart to Solidity's `int128` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 128 bits\n     *\n     * _Available since v3.1._\n     */\n    function toInt128(int256 value) internal pure returns (int128) {\n        require(value >= -2**127 && value < 2**127, \"SafeCast: value doesn\\'t fit in 128 bits\");\n        return int128(value);\n    }\n\n    /**\n     * @dev Returns the downcasted int64 from int256, reverting on\n     * overflow (when the input is less than smallest int64 or\n     * greater than largest int64).\n     *\n     * Counterpart to Solidity's `int64` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 64 bits\n     *\n     * _Available since v3.1._\n     */\n    function toInt64(int256 value) internal pure returns (int64) {\n        require(value >= -2**63 && value < 2**63, \"SafeCast: value doesn\\'t fit in 64 bits\");\n        return int64(value);\n    }\n\n    /**\n     * @dev Returns the downcasted int32 from int256, reverting on\n     * overflow (when the input is less than smallest int32 or\n     * greater than largest int32).\n     *\n     * Counterpart to Solidity's `int32` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 32 bits\n     *\n     * _Available since v3.1._\n     */\n    function toInt32(int256 value) internal pure returns (int32) {\n        require(value >= -2**31 && value < 2**31, \"SafeCast: value doesn\\'t fit in 32 bits\");\n        return int32(value);\n    }\n\n    /**\n     * @dev Returns the downcasted int16 from int256, reverting on\n     * overflow (when the input is less than smallest int16 or\n     * greater than largest int16).\n     *\n     * Counterpart to Solidity's `int16` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 16 bits\n     *\n     * _Available since v3.1._\n     */\n    function toInt16(int256 value) internal pure returns (int16) {\n        require(value >= -2**15 && value < 2**15, \"SafeCast: value doesn\\'t fit in 16 bits\");\n        return int16(value);\n    }\n\n    /**\n     * @dev Returns the downcasted int8 from int256, reverting on\n     * overflow (when the input is less than smallest int8 or\n     * greater than largest int8).\n     *\n     * Counterpart to Solidity's `int8` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 8 bits.\n     *\n     * _Available since v3.1._\n     */\n    function toInt8(int256 value) internal pure returns (int8) {\n        require(value >= -2**7 && value < 2**7, \"SafeCast: value doesn\\'t fit in 8 bits\");\n        return int8(value);\n    }\n\n    /**\n     * @dev Converts an unsigned uint256 into a signed int256.\n     *\n     * Requirements:\n     *\n     * - input must be less than or equal to maxInt256.\n     */\n    function toInt256(uint256 value) internal pure returns (int256) {\n        require(value < 2**255, \"SafeCast: value doesn't fit in an int256\");\n        return int256(value);\n    }\n}\n"},"openzeppelin-contracts-solc-0.7/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-solc-0.7/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-solc-0.7/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-solc-0.7/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-solc-0.7/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-solc-0.7/proxy/Clones.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-1167[EIP 1167] is a standard for\n * deploying minimal proxy contracts, also known as \"clones\".\n *\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\n *\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\n * deterministic method.\n *\n * _Available since v3.4._\n */\nlibrary Clones {\n    /**\n     * @dev Deploys and returns the address of a clone that mimics the behaviour of `master`.\n     *\n     * This function uses the create opcode, which should never revert.\n     */\n    function clone(address master) internal returns (address instance) {\n        // solhint-disable-next-line no-inline-assembly\n        assembly {\n            let ptr := mload(0x40)\n            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\n            mstore(add(ptr, 0x14), shl(0x60, master))\n            mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)\n            instance := create(0, ptr, 0x37)\n        }\n        require(instance != address(0), \"ERC1167: create failed\");\n    }\n\n    /**\n     * @dev Deploys and returns the address of a clone that mimics the behaviour of `master`.\n     *\n     * This function uses the create2 opcode and a `salt` to deterministically deploy\n     * the clone. Using the same `master` and `salt` multiple time will revert, since\n     * the clones cannot be deployed twice at the same address.\n     */\n    function cloneDeterministic(address master, bytes32 salt) internal returns (address instance) {\n        // solhint-disable-next-line no-inline-assembly\n        assembly {\n            let ptr := mload(0x40)\n            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\n            mstore(add(ptr, 0x14), shl(0x60, master))\n            mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)\n            instance := create2(0, ptr, 0x37, salt)\n        }\n        require(instance != address(0), \"ERC1167: create2 failed\");\n    }\n\n    /**\n     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n     */\n    function predictDeterministicAddress(address master, bytes32 salt, address deployer) internal pure returns (address predicted) {\n        // solhint-disable-next-line no-inline-assembly\n        assembly {\n            let ptr := mload(0x40)\n            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\n            mstore(add(ptr, 0x14), shl(0x60, master))\n            mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000)\n            mstore(add(ptr, 0x38), shl(0x60, deployer))\n            mstore(add(ptr, 0x4c), salt)\n            mstore(add(ptr, 0x6c), keccak256(ptr, 0x37))\n            predicted := keccak256(add(ptr, 0x37), 0x55)\n        }\n    }\n\n    /**\n     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n     */\n    function predictDeterministicAddress(address master, bytes32 salt) internal view returns (address predicted) {\n        return predictDeterministicAddress(master, salt, address(this));\n    }\n}\n"},"openzeppelin-contracts-solc-0.7/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-solc-0.7/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-solc-0.7/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-solc-0.7/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-solc-0.7/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-solc-0.7/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-solc-0.7/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-solc-0.7/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-solc-0.7/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-solc-0.7/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-solc-0.7/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"}},"settings":{"optimizer":{"enabled":true,"runs":800},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"errors":[{"component":"general","errorCode":"1878","formattedMessage":"contracts/governance/CommunityTreasury.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/governance/CommunityTreasury.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"1878","formattedMessage":"contracts/pangolin-core/interfaces/IPangolinERC20.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/pangolin-core/interfaces/IPangolinERC20.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"1878","formattedMessage":"contracts/pangolin-core/interfaces/IPangolinFactory.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/pangolin-core/interfaces/IPangolinFactory.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"1878","formattedMessage":"contracts/pangolin-core/interfaces/IPangolinPair.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/pangolin-core/interfaces/IPangolinPair.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"1878","formattedMessage":"contracts/pangolin-periphery/PangolinBridgeMigrationRouter.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/pangolin-periphery/PangolinBridgeMigrationRouter.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"1878","formattedMessage":"contracts/pangolin-periphery/interfaces/IBridgeToken.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/pangolin-periphery/interfaces/IBridgeToken.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"1878","formattedMessage":"contracts/pangolin-periphery/libraries/PangolinLibrary.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/pangolin-periphery/libraries/PangolinLibrary.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"1878","formattedMessage":"contracts/pangolin-periphery/libraries/SafeMath.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/pangolin-periphery/libraries/SafeMath.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"1878","formattedMessage":"contracts/pangolin-periphery/libraries/UniswapV2OracleLibrary.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/pangolin-periphery/libraries/UniswapV2OracleLibrary.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"1878","formattedMessage":"contracts/pangolin-token/IPangolinERC20.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/pangolin-token/IPangolinERC20.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"1878","formattedMessage":"contracts/staking-rewards/StakingRewards.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/staking-rewards/StakingRewards.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"2462","formattedMessage":"openzeppelin-contracts-legacy/access/Ownable.sol:26:5: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n    constructor () internal {\n    ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.","severity":"warning","sourceLocation":{"end":1007,"file":"openzeppelin-contracts-legacy/access/Ownable.sol","start":848},"type":"Warning"},{"component":"general","errorCode":"2462","formattedMessage":"contracts/pangolin-lib/test/PairNamerTest.sol:31:5: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n    constructor(string memory name_, string memory symbol_) public {\n    ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.","severity":"warning","sourceLocation":{"end":946,"file":"contracts/pangolin-lib/test/PairNamerTest.sol","start":825},"type":"Warning"},{"component":"general","errorCode":"2462","formattedMessage":"contracts/pangolin-lib/test/SafeERC20NamerTest.sol:28:5: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n    constructor(string memory name_, string memory symbol_) public {\n    ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.","severity":"warning","sourceLocation":{"end":827,"file":"contracts/pangolin-lib/test/SafeERC20NamerTest.sol","start":706},"type":"Warning"},{"component":"general","errorCode":"2462","formattedMessage":"contracts/pangolin-lib/test/SafeERC20NamerTest.sol:39:5: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n    constructor(bytes32 name_, bytes32 symbol_) public {\n    ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.","severity":"warning","sourceLocation":{"end":1097,"file":"contracts/pangolin-lib/test/SafeERC20NamerTest.sol","start":988},"type":"Warning"},{"component":"general","errorCode":"2462","formattedMessage":"contracts/pangolin-periphery/PangolinBridgeMigrationRouter.sol:16:5: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n    constructor() public {\n    ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.","severity":"warning","sourceLocation":{"end":529,"file":"contracts/pangolin-periphery/PangolinBridgeMigrationRouter.sol","start":464},"type":"Warning"},{"component":"general","errorCode":"2462","formattedMessage":"contracts/pangolin-periphery/test/library/openzeppelin/ERC20.sol:55:5: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n    constructor (string memory name_, string memory symbol_) public {\n    ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.","severity":"warning","sourceLocation":{"end":2166,"file":"contracts/pangolin-periphery/test/library/openzeppelin/ERC20.sol","start":2017},"type":"Warning"},{"component":"general","errorCode":"2462","formattedMessage":"openzeppelin-contracts-legacy/utils/ReentrancyGuard.sol:38:5: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n    constructor () internal {\n    ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.","severity":"warning","sourceLocation":{"end":1789,"file":"openzeppelin-contracts-legacy/utils/ReentrancyGuard.sol","start":1726},"type":"Warning"},{"component":"general","errorCode":"2462","formattedMessage":"contracts/staking-rewards/StakingRewards.sol:35:5: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n    constructor(\n    ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.","severity":"warning","sourceLocation":{"end":1348,"file":"contracts/staking-rewards/StakingRewards.sol","start":1156},"type":"Warning"},{"component":"general","errorCode":"2072","formattedMessage":"contracts/elixir-core/test/OracleEchidnaTest.sol:77:13: Warning: Unused local variable.\n            uint192[] memory rewardPerLiquidityCumulativeX64s\n            ^-----------------------------------------------^\n","message":"Unused local variable.","severity":"warning","sourceLocation":{"end":2153,"file":"contracts/elixir-core/test/OracleEchidnaTest.sol","start":2104},"type":"Warning"},{"component":"general","errorCode":"2072","formattedMessage":"contracts/elixir-core/test/OracleEchidnaTest.sol:164:13: Warning: Unused local variable.\n            uint192[] memory rewardPerLiquidityCumulativeX64s\n            ^-----------------------------------------------^\n","message":"Unused local variable.","severity":"warning","sourceLocation":{"end":5212,"file":"contracts/elixir-core/test/OracleEchidnaTest.sol","start":5163},"type":"Warning"},{"component":"general","errorCode":"2018","formattedMessage":"contracts/elixir-periphery/test/OracleTest.sol:64: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":2225,"file":"contracts/elixir-periphery/test/OracleTest.sol","start":2040},"type":"Warning"}],"sources":{"base64-sol/base64.sol":{"ast":{"absolutePath":"base64-sol/base64.sol","exportedSymbols":{"Base64":[114]},"id":115,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.6",".0"],"nodeType":"PragmaDirective","src":"33:24:0"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"59:127:0","text":"@title Base64\n @author Brecht Devos - <brecht@loopring.org>\n @notice Provides functions for encoding/decoding base64"},"fullyImplemented":true,"id":114,"linearizedBaseContracts":[114],"name":"Base64","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":5,"mutability":"constant","name":"TABLE_ENCODE","nodeType":"VariableDeclaration","scope":114,"src":"207:106:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3,"name":"string","nodeType":"ElementaryTypeName","src":"207:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f","id":4,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"247:66:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_84d8a590de33e00cbdc16e1f28c3506f5ec15c599fab9a6a4bcd575cc2f110ce","typeString":"literal_string \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\""},"value":"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"},"visibility":"internal"},{"constant":true,"id":8,"mutability":"constant","name":"TABLE_DECODE","nodeType":"VariableDeclaration","scope":114,"src":"319:451:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6,"name":"bytes","nodeType":"ElementaryTypeName","src":"319:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":{"hexValue":"000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e0000003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f101112131415161718190000000000001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132330000000000","id":7,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"359:411:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cbed483d4f9f83dd52b06773fd58dd8723113252a85374752ef109e22dfa50f9","typeString":"literal_string hex\"000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e0000003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f101112131415161718190000000000001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132330000000000\""},"value":"\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000>\u0000\u0000\u0000?456789:;<=\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u0000\u0000\u0000\u0000\u0000\u0000\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123\u0000\u0000\u0000\u0000\u0000"},"visibility":"internal"},{"body":{"id":51,"nodeType":"Block","src":"850:1788:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10,"src":"864:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"864:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":17,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"879:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"864:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21,"nodeType":"IfStatement","src":"860:31:0","trueBody":{"expression":{"hexValue":"","id":19,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"889:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":14,"id":20,"nodeType":"Return","src":"882:9:0"}},{"assignments":[23],"declarations":[{"constant":false,"id":23,"mutability":"mutable","name":"table","nodeType":"VariableDeclaration","scope":51,"src":"940:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":22,"name":"string","nodeType":"ElementaryTypeName","src":"940:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":25,"initialValue":{"id":24,"name":"TABLE_ENCODE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5,"src":"962:12:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"940:34:0"},{"assignments":[27],"declarations":[{"constant":false,"id":27,"mutability":"mutable","name":"encodedLen","nodeType":"VariableDeclaration","scope":51,"src":"1023:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26,"name":"uint256","nodeType":"ElementaryTypeName","src":"1023:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":37,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"34","id":28,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1044:1:0","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":35,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":29,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10,"src":"1050:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":30,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1050:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":31,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1064:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1050:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":33,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1049:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":34,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1069:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"1049:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":36,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1048:23:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1044:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1023:48:0"},{"assignments":[40],"declarations":[{"constant":false,"id":40,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":51,"src":"1151:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":39,"name":"string","nodeType":"ElementaryTypeName","src":"1151:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":47,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":45,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43,"name":"encodedLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27,"src":"1185:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3332","id":44,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1198:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"1185:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1174:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":41,"name":"string","nodeType":"ElementaryTypeName","src":"1178:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":46,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1174:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"1151:50:0"},{"AST":{"nodeType":"YulBlock","src":"1221:1387:0","statements":[{"expression":{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"1286:6:0"},{"name":"encodedLen","nodeType":"YulIdentifier","src":"1294:10:0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1279:6:0"},"nodeType":"YulFunctionCall","src":"1279:26:0"},"nodeType":"YulExpressionStatement","src":"1279:26:0"},{"nodeType":"YulVariableDeclaration","src":"1359:29:0","value":{"arguments":[{"name":"table","nodeType":"YulIdentifier","src":"1379:5:0"},{"kind":"number","nodeType":"YulLiteral","src":"1386:1:0","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1375:3:0"},"nodeType":"YulFunctionCall","src":"1375:13:0"},"variables":[{"name":"tablePtr","nodeType":"YulTypedName","src":"1363:8:0","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1427:19:0","value":{"name":"data","nodeType":"YulIdentifier","src":"1442:4:0"},"variables":[{"name":"dataPtr","nodeType":"YulTypedName","src":"1431:7:0","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1459:39:0","value":{"arguments":[{"name":"dataPtr","nodeType":"YulIdentifier","src":"1477:7:0"},{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1492:4:0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1486:5:0"},"nodeType":"YulFunctionCall","src":"1486:11:0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1473:3:0"},"nodeType":"YulFunctionCall","src":"1473:25:0"},"variables":[{"name":"endPtr","nodeType":"YulTypedName","src":"1463:6:0","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1556:32:0","value":{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"1577:6:0"},{"kind":"number","nodeType":"YulLiteral","src":"1585:2:0","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1573:3:0"},"nodeType":"YulFunctionCall","src":"1573:15:0"},"variables":[{"name":"resultPtr","nodeType":"YulTypedName","src":"1560:9:0","type":""}]},{"body":{"nodeType":"YulBlock","src":"1697:697:0","statements":[{"nodeType":"YulAssignment","src":"1747:26:0","value":{"arguments":[{"name":"dataPtr","nodeType":"YulIdentifier","src":"1762:7:0"},{"kind":"number","nodeType":"YulLiteral","src":"1771:1:0","type":"","value":"3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1758:3:0"},"nodeType":"YulFunctionCall","src":"1758:15:0"},"variableNames":[{"name":"dataPtr","nodeType":"YulIdentifier","src":"1747:7:0"}]},{"nodeType":"YulVariableDeclaration","src":"1790:27:0","value":{"arguments":[{"name":"dataPtr","nodeType":"YulIdentifier","src":"1809:7:0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1803:5:0"},"nodeType":"YulFunctionCall","src":"1803:14:0"},"variables":[{"name":"input","nodeType":"YulTypedName","src":"1794:5:0","type":""}]},{"expression":{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"1881:9:0"},{"arguments":[{"arguments":[{"name":"tablePtr","nodeType":"YulIdentifier","src":"1902:8:0"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1920:2:0","type":"","value":"18"},{"name":"input","nodeType":"YulIdentifier","src":"1924:5:0"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1916:3:0"},"nodeType":"YulFunctionCall","src":"1916:14:0"},{"kind":"number","nodeType":"YulLiteral","src":"1932:4:0","type":"","value":"0x3F"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1912:3:0"},"nodeType":"YulFunctionCall","src":"1912:25:0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1898:3:0"},"nodeType":"YulFunctionCall","src":"1898:40:0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1892:5:0"},"nodeType":"YulFunctionCall","src":"1892:47:0"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"1873:7:0"},"nodeType":"YulFunctionCall","src":"1873:67:0"},"nodeType":"YulExpressionStatement","src":"1873:67:0"},{"nodeType":"YulAssignment","src":"1957:30:0","value":{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"1974:9:0"},{"kind":"number","nodeType":"YulLiteral","src":"1985:1:0","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1970:3:0"},"nodeType":"YulFunctionCall","src":"1970:17:0"},"variableNames":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"1957:9:0"}]},{"expression":{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"2012:9:0"},{"arguments":[{"arguments":[{"name":"tablePtr","nodeType":"YulIdentifier","src":"2033:8:0"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2051:2:0","type":"","value":"12"},{"name":"input","nodeType":"YulIdentifier","src":"2055:5:0"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2047:3:0"},"nodeType":"YulFunctionCall","src":"2047:14:0"},{"kind":"number","nodeType":"YulLiteral","src":"2063:4:0","type":"","value":"0x3F"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2043:3:0"},"nodeType":"YulFunctionCall","src":"2043:25:0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2029:3:0"},"nodeType":"YulFunctionCall","src":"2029:40:0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2023:5:0"},"nodeType":"YulFunctionCall","src":"2023:47:0"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"2004:7:0"},"nodeType":"YulFunctionCall","src":"2004:67:0"},"nodeType":"YulExpressionStatement","src":"2004:67:0"},{"nodeType":"YulAssignment","src":"2088:30:0","value":{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"2105:9:0"},{"kind":"number","nodeType":"YulLiteral","src":"2116:1:0","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2101:3:0"},"nodeType":"YulFunctionCall","src":"2101:17:0"},"variableNames":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"2088:9:0"}]},{"expression":{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"2143:9:0"},{"arguments":[{"arguments":[{"name":"tablePtr","nodeType":"YulIdentifier","src":"2164:8:0"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2183:1:0","type":"","value":"6"},{"name":"input","nodeType":"YulIdentifier","src":"2186:5:0"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2178:3:0"},"nodeType":"YulFunctionCall","src":"2178:14:0"},{"kind":"number","nodeType":"YulLiteral","src":"2194:4:0","type":"","value":"0x3F"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2174:3:0"},"nodeType":"YulFunctionCall","src":"2174:25:0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2160:3:0"},"nodeType":"YulFunctionCall","src":"2160:40:0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2154:5:0"},"nodeType":"YulFunctionCall","src":"2154:47:0"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"2135:7:0"},"nodeType":"YulFunctionCall","src":"2135:67:0"},"nodeType":"YulExpressionStatement","src":"2135:67:0"},{"nodeType":"YulAssignment","src":"2219:30:0","value":{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"2236:9:0"},{"kind":"number","nodeType":"YulLiteral","src":"2247:1:0","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2232:3:0"},"nodeType":"YulFunctionCall","src":"2232:17:0"},"variableNames":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"2219:9:0"}]},{"expression":{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"2274:9:0"},{"arguments":[{"arguments":[{"name":"tablePtr","nodeType":"YulIdentifier","src":"2295:8:0"},{"arguments":[{"name":"input","nodeType":"YulIdentifier","src":"2317:5:0"},{"kind":"number","nodeType":"YulLiteral","src":"2325:4:0","type":"","value":"0x3F"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2305:3:0"},"nodeType":"YulFunctionCall","src":"2305:25:0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2291:3:0"},"nodeType":"YulFunctionCall","src":"2291:40:0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2285:5:0"},"nodeType":"YulFunctionCall","src":"2285:47:0"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"2266:7:0"},"nodeType":"YulFunctionCall","src":"2266:67:0"},"nodeType":"YulExpressionStatement","src":"2266:67:0"},{"nodeType":"YulAssignment","src":"2350:30:0","value":{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"2367:9:0"},{"kind":"number","nodeType":"YulLiteral","src":"2378:1:0","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2363:3:0"},"nodeType":"YulFunctionCall","src":"2363:17:0"},"variableNames":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"2350:9:0"}]}]},"condition":{"arguments":[{"name":"dataPtr","nodeType":"YulIdentifier","src":"1665:7:0"},{"name":"endPtr","nodeType":"YulIdentifier","src":"1674:6:0"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1662:2:0"},"nodeType":"YulFunctionCall","src":"1662:19:0"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1682:2:0","statements":[]},"pre":{"nodeType":"YulBlock","src":"1659:2:0","statements":[]},"src":"1655:739:0"},{"cases":[{"body":{"nodeType":"YulBlock","src":"2486:47:0","statements":[{"expression":{"arguments":[{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"2499:9:0"},{"kind":"number","nodeType":"YulLiteral","src":"2510:1:0","type":"","value":"2"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2495:3:0"},"nodeType":"YulFunctionCall","src":"2495:17:0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2518:3:0","type":"","value":"240"},{"kind":"number","nodeType":"YulLiteral","src":"2523:6:0","type":"","value":"0x3d3d"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2514:3:0"},"nodeType":"YulFunctionCall","src":"2514:16:0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2488:6:0"},"nodeType":"YulFunctionCall","src":"2488:43:0"},"nodeType":"YulExpressionStatement","src":"2488:43:0"}]},"nodeType":"YulCase","src":"2479:54:0","value":{"kind":"number","nodeType":"YulLiteral","src":"2484:1:0","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"2553:45:0","statements":[{"expression":{"arguments":[{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"2566:9:0"},{"kind":"number","nodeType":"YulLiteral","src":"2577:1:0","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2562:3:0"},"nodeType":"YulFunctionCall","src":"2562:17:0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2585:3:0","type":"","value":"248"},{"kind":"number","nodeType":"YulLiteral","src":"2590:4:0","type":"","value":"0x3d"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2581:3:0"},"nodeType":"YulFunctionCall","src":"2581:14:0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2555:6:0"},"nodeType":"YulFunctionCall","src":"2555:41:0"},"nodeType":"YulExpressionStatement","src":"2555:41:0"}]},"nodeType":"YulCase","src":"2546:52:0","value":{"kind":"number","nodeType":"YulLiteral","src":"2551:1:0","type":"","value":"2"}}],"expression":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2457:4:0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2451:5:0"},"nodeType":"YulFunctionCall","src":"2451:11:0"},{"kind":"number","nodeType":"YulLiteral","src":"2464:1:0","type":"","value":"3"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"2447:3:0"},"nodeType":"YulFunctionCall","src":"2447:19:0"},"nodeType":"YulSwitch","src":"2440:158:0"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":10,"isOffset":false,"isSlot":false,"src":"1442:4:0","valueSize":1},{"declaration":10,"isOffset":false,"isSlot":false,"src":"1492:4:0","valueSize":1},{"declaration":10,"isOffset":false,"isSlot":false,"src":"2457:4:0","valueSize":1},{"declaration":27,"isOffset":false,"isSlot":false,"src":"1294:10:0","valueSize":1},{"declaration":40,"isOffset":false,"isSlot":false,"src":"1286:6:0","valueSize":1},{"declaration":40,"isOffset":false,"isSlot":false,"src":"1577:6:0","valueSize":1},{"declaration":23,"isOffset":false,"isSlot":false,"src":"1379:5:0","valueSize":1}],"id":48,"nodeType":"InlineAssembly","src":"1212:1396:0"},{"expression":{"id":49,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"2625:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":14,"id":50,"nodeType":"Return","src":"2618:13:0"}]},"id":52,"implemented":true,"kind":"function","modifiers":[],"name":"encode","nodeType":"FunctionDefinition","parameters":{"id":11,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":52,"src":"793:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9,"name":"bytes","nodeType":"ElementaryTypeName","src":"793:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"792:19:0"},"returnParameters":{"id":14,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":52,"src":"835:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12,"name":"string","nodeType":"ElementaryTypeName","src":"835:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"834:15:0"},"scope":114,"src":"777:1861:0","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":112,"nodeType":"Block","src":"2718:2104:0","statements":[{"assignments":[60],"declarations":[{"constant":false,"id":60,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":112,"src":"2728:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":59,"name":"bytes","nodeType":"ElementaryTypeName","src":"2728:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":65,"initialValue":{"arguments":[{"id":63,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2754:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":62,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2748:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":61,"name":"bytes","nodeType":"ElementaryTypeName","src":"2748:5:0","typeDescriptions":{}}},"id":64,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2748:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2728:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":66,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"2775:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":67,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2775:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":68,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2790:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2775:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75,"nodeType":"IfStatement","src":"2771:41:0","trueBody":{"expression":{"arguments":[{"hexValue":"30","id":72,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2810:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":71,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2800:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":70,"name":"bytes","nodeType":"ElementaryTypeName","src":"2804:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":73,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2800:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":58,"id":74,"nodeType":"Return","src":"2793:19:0"}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"2830:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":78,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2830:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"34","id":79,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2844:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2830:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":81,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2849:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2830:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c696420626173653634206465636f64657220696e707574","id":83,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2852:30:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_b899645e29043a8d30000fb8ed0252b5c4f6f5f09672aefa374ee368d324bb89","typeString":"literal_string \"invalid base64 decoder input\""},"value":"invalid base64 decoder input"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b899645e29043a8d30000fb8ed0252b5c4f6f5f09672aefa374ee368d324bb89","typeString":"literal_string \"invalid base64 decoder input\""}],"id":76,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2822:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":84,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2822:61:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85,"nodeType":"ExpressionStatement","src":"2822:61:0"},{"assignments":[87],"declarations":[{"constant":false,"id":87,"mutability":"mutable","name":"table","nodeType":"VariableDeclaration","scope":112,"src":"2932:18:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":86,"name":"bytes","nodeType":"ElementaryTypeName","src":"2932:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":89,"initialValue":{"id":88,"name":"TABLE_DECODE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8,"src":"2953:12:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2932:33:0"},{"assignments":[91],"declarations":[{"constant":false,"id":91,"mutability":"mutable","name":"decodedLen","nodeType":"VariableDeclaration","scope":112,"src":"3024:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90,"name":"uint256","nodeType":"ElementaryTypeName","src":"3024:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":99,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":98,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":95,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":92,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"3046:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":93,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3046:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"34","id":94,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3060:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"3046:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":96,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3045:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"33","id":97,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"3045:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3024:42:0"},{"assignments":[101],"declarations":[{"constant":false,"id":101,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":112,"src":"3146:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":100,"name":"bytes","nodeType":"ElementaryTypeName","src":"3146:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":108,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":104,"name":"decodedLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91,"src":"3178:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3332","id":105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3191:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"3178:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":103,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3168:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":102,"name":"bytes","nodeType":"ElementaryTypeName","src":"3172:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3168:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3146:48:0"},{"AST":{"nodeType":"YulBlock","src":"3214:1578:0","statements":[{"nodeType":"YulVariableDeclaration","src":"3260:46:0","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3287:4:0"},{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3299:4:0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3293:5:0"},"nodeType":"YulFunctionCall","src":"3293:11:0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3283:3:0"},"nodeType":"YulFunctionCall","src":"3283:22:0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3277:5:0"},"nodeType":"YulFunctionCall","src":"3277:29:0"},"variables":[{"name":"lastBytes","nodeType":"YulTypedName","src":"3264:9:0","type":""}]},{"body":{"nodeType":"YulBlock","src":"3353:191:0","statements":[{"nodeType":"YulAssignment","src":"3371:32:0","value":{"arguments":[{"name":"decodedLen","nodeType":"YulIdentifier","src":"3389:10:0"},{"kind":"number","nodeType":"YulLiteral","src":"3401:1:0","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3385:3:0"},"nodeType":"YulFunctionCall","src":"3385:18:0"},"variableNames":[{"name":"decodedLen","nodeType":"YulIdentifier","src":"3371:10:0"}]},{"body":{"nodeType":"YulBlock","src":"3458:72:0","statements":[{"nodeType":"YulAssignment","src":"3480:32:0","value":{"arguments":[{"name":"decodedLen","nodeType":"YulIdentifier","src":"3498:10:0"},{"kind":"number","nodeType":"YulLiteral","src":"3510:1:0","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3494:3:0"},"nodeType":"YulFunctionCall","src":"3494:18:0"},"variableNames":[{"name":"decodedLen","nodeType":"YulIdentifier","src":"3480:10:0"}]}]},"condition":{"arguments":[{"arguments":[{"name":"lastBytes","nodeType":"YulIdentifier","src":"3430:9:0"},{"kind":"number","nodeType":"YulLiteral","src":"3441:6:0","type":"","value":"0xFFFF"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3426:3:0"},"nodeType":"YulFunctionCall","src":"3426:22:0"},{"kind":"number","nodeType":"YulLiteral","src":"3450:6:0","type":"","value":"0x3d3d"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3423:2:0"},"nodeType":"YulFunctionCall","src":"3423:34:0"},"nodeType":"YulIf","src":"3420:2:0"}]},"condition":{"arguments":[{"arguments":[{"name":"lastBytes","nodeType":"YulIdentifier","src":"3329:9:0"},{"kind":"number","nodeType":"YulLiteral","src":"3340:4:0","type":"","value":"0xFF"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3325:3:0"},"nodeType":"YulFunctionCall","src":"3325:20:0"},{"kind":"number","nodeType":"YulLiteral","src":"3347:4:0","type":"","value":"0x3d"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3322:2:0"},"nodeType":"YulFunctionCall","src":"3322:30:0"},"nodeType":"YulIf","src":"3319:2:0"},{"expression":{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"3609:6:0"},{"name":"decodedLen","nodeType":"YulIdentifier","src":"3617:10:0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3602:6:0"},"nodeType":"YulFunctionCall","src":"3602:26:0"},"nodeType":"YulExpressionStatement","src":"3602:26:0"},{"nodeType":"YulVariableDeclaration","src":"3682:29:0","value":{"arguments":[{"name":"table","nodeType":"YulIdentifier","src":"3702:5:0"},{"kind":"number","nodeType":"YulLiteral","src":"3709:1:0","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3698:3:0"},"nodeType":"YulFunctionCall","src":"3698:13:0"},"variables":[{"name":"tablePtr","nodeType":"YulTypedName","src":"3686:8:0","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3750:19:0","value":{"name":"data","nodeType":"YulIdentifier","src":"3765:4:0"},"variables":[{"name":"dataPtr","nodeType":"YulTypedName","src":"3754:7:0","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3782:39:0","value":{"arguments":[{"name":"dataPtr","nodeType":"YulIdentifier","src":"3800:7:0"},{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3815:4:0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3809:5:0"},"nodeType":"YulFunctionCall","src":"3809:11:0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3796:3:0"},"nodeType":"YulFunctionCall","src":"3796:25:0"},"variables":[{"name":"endPtr","nodeType":"YulTypedName","src":"3786:6:0","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3879:32:0","value":{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"3900:6:0"},{"kind":"number","nodeType":"YulLiteral","src":"3908:2:0","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3896:3:0"},"nodeType":"YulFunctionCall","src":"3896:15:0"},"variables":[{"name":"resultPtr","nodeType":"YulTypedName","src":"3883:9:0","type":""}]},{"body":{"nodeType":"YulBlock","src":"4025:757:0","statements":[{"nodeType":"YulAssignment","src":"4078:26:0","value":{"arguments":[{"name":"dataPtr","nodeType":"YulIdentifier","src":"4093:7:0"},{"kind":"number","nodeType":"YulLiteral","src":"4102:1:0","type":"","value":"4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4089:3:0"},"nodeType":"YulFunctionCall","src":"4089:15:0"},"variableNames":[{"name":"dataPtr","nodeType":"YulIdentifier","src":"4078:7:0"}]},{"nodeType":"YulVariableDeclaration","src":"4120:27:0","value":{"arguments":[{"name":"dataPtr","nodeType":"YulIdentifier","src":"4139:7:0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4133:5:0"},"nodeType":"YulFunctionCall","src":"4133:14:0"},"variables":[{"name":"input","nodeType":"YulTypedName","src":"4124:5:0","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4196:473:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4266:2:0","type":"","value":"18"},{"arguments":[{"arguments":[{"arguments":[{"name":"tablePtr","nodeType":"YulIdentifier","src":"4284:8:0"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4302:2:0","type":"","value":"24"},{"name":"input","nodeType":"YulIdentifier","src":"4306:5:0"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"4298:3:0"},"nodeType":"YulFunctionCall","src":"4298:14:0"},{"kind":"number","nodeType":"YulLiteral","src":"4314:4:0","type":"","value":"0xFF"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4294:3:0"},"nodeType":"YulFunctionCall","src":"4294:25:0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4280:3:0"},"nodeType":"YulFunctionCall","src":"4280:40:0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4274:5:0"},"nodeType":"YulFunctionCall","src":"4274:47:0"},{"kind":"number","nodeType":"YulLiteral","src":"4323:4:0","type":"","value":"0xFF"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4270:3:0"},"nodeType":"YulFunctionCall","src":"4270:58:0"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4262:3:0"},"nodeType":"YulFunctionCall","src":"4262:67:0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4358:2:0","type":"","value":"12"},{"arguments":[{"arguments":[{"arguments":[{"name":"tablePtr","nodeType":"YulIdentifier","src":"4376:8:0"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4394:2:0","type":"","value":"16"},{"name":"input","nodeType":"YulIdentifier","src":"4398:5:0"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"4390:3:0"},"nodeType":"YulFunctionCall","src":"4390:14:0"},{"kind":"number","nodeType":"YulLiteral","src":"4406:4:0","type":"","value":"0xFF"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4386:3:0"},"nodeType":"YulFunctionCall","src":"4386:25:0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4372:3:0"},"nodeType":"YulFunctionCall","src":"4372:40:0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4366:5:0"},"nodeType":"YulFunctionCall","src":"4366:47:0"},{"kind":"number","nodeType":"YulLiteral","src":"4415:4:0","type":"","value":"0xFF"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4362:3:0"},"nodeType":"YulFunctionCall","src":"4362:58:0"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4354:3:0"},"nodeType":"YulFunctionCall","src":"4354:67:0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4234:3:0"},"nodeType":"YulFunctionCall","src":"4234:188:0"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4476:1:0","type":"","value":"6"},{"arguments":[{"arguments":[{"arguments":[{"name":"tablePtr","nodeType":"YulIdentifier","src":"4493:8:0"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4512:1:0","type":"","value":"8"},{"name":"input","nodeType":"YulIdentifier","src":"4515:5:0"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"4507:3:0"},"nodeType":"YulFunctionCall","src":"4507:14:0"},{"kind":"number","nodeType":"YulLiteral","src":"4523:4:0","type":"","value":"0xFF"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4503:3:0"},"nodeType":"YulFunctionCall","src":"4503:25:0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:0"},"nodeType":"YulFunctionCall","src":"4489:40:0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4483:5:0"},"nodeType":"YulFunctionCall","src":"4483:47:0"},{"kind":"number","nodeType":"YulLiteral","src":"4532:4:0","type":"","value":"0xFF"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4479:3:0"},"nodeType":"YulFunctionCall","src":"4479:58:0"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4471:3:0"},"nodeType":"YulFunctionCall","src":"4471:67:0"},{"arguments":[{"arguments":[{"arguments":[{"name":"tablePtr","nodeType":"YulIdentifier","src":"4585:8:0"},{"arguments":[{"name":"input","nodeType":"YulIdentifier","src":"4607:5:0"},{"kind":"number","nodeType":"YulLiteral","src":"4615:4:0","type":"","value":"0xFF"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4595:3:0"},"nodeType":"YulFunctionCall","src":"4595:25:0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4581:3:0"},"nodeType":"YulFunctionCall","src":"4581:40:0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4575:5:0"},"nodeType":"YulFunctionCall","src":"4575:47:0"},{"kind":"number","nodeType":"YulLiteral","src":"4624:4:0","type":"","value":"0xFF"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4571:3:0"},"nodeType":"YulFunctionCall","src":"4571:58:0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4443:3:0"},"nodeType":"YulFunctionCall","src":"4443:208:0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4210:3:0"},"nodeType":"YulFunctionCall","src":"4210:459:0"},"variables":[{"name":"output","nodeType":"YulTypedName","src":"4200:6:0","type":""}]},{"expression":{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"4693:9:0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4708:3:0","type":"","value":"232"},{"name":"output","nodeType":"YulIdentifier","src":"4713:6:0"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4704:3:0"},"nodeType":"YulFunctionCall","src":"4704:16:0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4686:6:0"},"nodeType":"YulFunctionCall","src":"4686:35:0"},"nodeType":"YulExpressionStatement","src":"4686:35:0"},{"nodeType":"YulAssignment","src":"4738:30:0","value":{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"4755:9:0"},{"kind":"number","nodeType":"YulLiteral","src":"4766:1:0","type":"","value":"3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4751:3:0"},"nodeType":"YulFunctionCall","src":"4751:17:0"},"variableNames":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"4738:9:0"}]}]},"condition":{"arguments":[{"name":"dataPtr","nodeType":"YulIdentifier","src":"3993:7:0"},{"name":"endPtr","nodeType":"YulIdentifier","src":"4002:6:0"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3990:2:0"},"nodeType":"YulFunctionCall","src":"3990:19:0"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4010:2:0","statements":[]},"pre":{"nodeType":"YulBlock","src":"3987:2:0","statements":[]},"src":"3983:799:0"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":60,"isOffset":false,"isSlot":false,"src":"3287:4:0","valueSize":1},{"declaration":60,"isOffset":false,"isSlot":false,"src":"3299:4:0","valueSize":1},{"declaration":60,"isOffset":false,"isSlot":false,"src":"3765:4:0","valueSize":1},{"declaration":60,"isOffset":false,"isSlot":false,"src":"3815:4:0","valueSize":1},{"declaration":91,"isOffset":false,"isSlot":false,"src":"3371:10:0","valueSize":1},{"declaration":91,"isOffset":false,"isSlot":false,"src":"3389:10:0","valueSize":1},{"declaration":91,"isOffset":false,"isSlot":false,"src":"3480:10:0","valueSize":1},{"declaration":91,"isOffset":false,"isSlot":false,"src":"3498:10:0","valueSize":1},{"declaration":91,"isOffset":false,"isSlot":false,"src":"3617:10:0","valueSize":1},{"declaration":101,"isOffset":false,"isSlot":false,"src":"3609:6:0","valueSize":1},{"declaration":101,"isOffset":false,"isSlot":false,"src":"3900:6:0","valueSize":1},{"declaration":87,"isOffset":false,"isSlot":false,"src":"3702:5:0","valueSize":1}],"id":109,"nodeType":"InlineAssembly","src":"3205:1587:0"},{"expression":{"id":110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":101,"src":"4809:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":58,"id":111,"nodeType":"Return","src":"4802:13:0"}]},"id":113,"implemented":true,"kind":"function","modifiers":[],"name":"decode","nodeType":"FunctionDefinition","parameters":{"id":55,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":113,"src":"2660:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":53,"name":"string","nodeType":"ElementaryTypeName","src":"2660:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2659:21:0"},"returnParameters":{"id":58,"nodeType":"ParameterList","parameters":[{"constant":false,"id":57,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":113,"src":"2704:12:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":56,"name":"bytes","nodeType":"ElementaryTypeName","src":"2704:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2703:14:0"},"scope":114,"src":"2644:2178:0","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":115,"src":"186:4638:0"}],"src":"33:4792:0"},"id":0},"contracts/elixir-core/ElixirFactory.sol":{"ast":{"absolutePath":"contracts/elixir-core/ElixirFactory.sol","exportedSymbols":{"Clones":[30992],"ElixirFactory":[404],"IElixirFactory":[3251],"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779]},"id":405,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":116,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"38:23:1"},{"absolutePath":"openzeppelin-contracts-solc-0.7/proxy/Clones.sol","file":"openzeppelin-contracts-solc-0.7/proxy/Clones.sol","id":117,"nodeType":"ImportDirective","scope":405,"sourceUnit":30993,"src":"65:58:1","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/IElixirFactory.sol","file":"./interfaces/IElixirFactory.sol","id":118,"nodeType":"ImportDirective","scope":405,"sourceUnit":3252,"src":"127:41:1","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"./interfaces/IElixirPool.sol","id":119,"nodeType":"ImportDirective","scope":405,"sourceUnit":3274,"src":"170:38:1","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":121,"name":"IElixirFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":3251,"src":"367:14:1","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirFactory_$3251","typeString":"contract IElixirFactory"}},"id":122,"nodeType":"InheritanceSpecifier","src":"367:14:1"}],"contractDependencies":[3251],"contractKind":"contract","documentation":{"id":120,"nodeType":"StructuredDocumentation","src":"212:129:1","text":"@title Canonical Elixir factory\n @notice Deploys Elixir pools and manages ownership and control over pool protocol fees"},"fullyImplemented":true,"id":404,"linearizedBaseContracts":[404,3251],"name":"ElixirFactory","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[3198],"constant":false,"documentation":{"id":123,"nodeType":"StructuredDocumentation","src":"389:30:1","text":"@inheritdoc IElixirFactory"},"functionSelector":"5c60da1b","id":126,"mutability":"immutable","name":"implementation","nodeType":"VariableDeclaration","overrides":{"id":125,"nodeType":"OverrideSpecifier","overrides":[],"src":"450:8:1"},"scope":404,"src":"425:48:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":124,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"baseFunctions":[3204],"constant":false,"documentation":{"id":127,"nodeType":"StructuredDocumentation","src":"482:30:1","text":"@inheritdoc IElixirFactory"},"functionSelector":"8da5cb5b","id":130,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","overrides":{"id":129,"nodeType":"OverrideSpecifier","overrides":[],"src":"533:8:1"},"scope":404,"src":"518:29:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":128,"name":"address","nodeType":"ElementaryTypeName","src":"518:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"baseFunctions":[3212],"constant":false,"documentation":{"id":131,"nodeType":"StructuredDocumentation","src":"556:30:1","text":"@inheritdoc IElixirFactory"},"functionSelector":"22afcccb","id":136,"mutability":"mutable","name":"feeAmountTickSpacing","nodeType":"VariableDeclaration","overrides":{"id":135,"nodeType":"OverrideSpecifier","overrides":[],"src":"624:8:1"},"scope":404,"src":"592:61:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint24_$_t_int24_$","typeString":"mapping(uint24 => int24)"},"typeName":{"id":134,"keyType":{"id":132,"name":"uint24","nodeType":"ElementaryTypeName","src":"600:6:1","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"Mapping","src":"592:24:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint24_$_t_int24_$","typeString":"mapping(uint24 => int24)"},"valueType":{"id":133,"name":"int24","nodeType":"ElementaryTypeName","src":"610:5:1","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}},"visibility":"public"},{"baseFunctions":[3224],"constant":false,"documentation":{"id":137,"nodeType":"StructuredDocumentation","src":"660:30:1","text":"@inheritdoc IElixirFactory"},"functionSelector":"1698ee82","id":146,"mutability":"mutable","name":"getPool","nodeType":"VariableDeclaration","overrides":{"id":145,"nodeType":"OverrideSpecifier","overrides":[],"src":"788:8:1"},"scope":404,"src":"696:108:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint24_$_t_address_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint24 => address)))"},"typeName":{"id":144,"keyType":{"id":138,"name":"address","nodeType":"ElementaryTypeName","src":"704:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"696:66:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint24_$_t_address_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint24 => address)))"},"valueType":{"id":143,"keyType":{"id":139,"name":"address","nodeType":"ElementaryTypeName","src":"723:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"715:46:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint24_$_t_address_$_$","typeString":"mapping(address => mapping(uint24 => address))"},"valueType":{"id":142,"keyType":{"id":140,"name":"uint24","nodeType":"ElementaryTypeName","src":"742:6:1","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"Mapping","src":"734:26:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint24_$_t_address_$","typeString":"mapping(uint24 => address)"},"valueType":{"id":141,"name":"address","nodeType":"ElementaryTypeName","src":"752:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}}}},"visibility":"public"},{"body":{"id":202,"nodeType":"Block","src":"850:390:1","statements":[{"expression":{"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":151,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126,"src":"861:14:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":152,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"878:15:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"861:32:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":154,"nodeType":"ExpressionStatement","src":"861:32:1"},{"expression":{"id":158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":155,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"906:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":156,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"914:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"914:10:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"906:18:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":159,"nodeType":"ExpressionStatement","src":"906:18:1"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"961:1:1","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":162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"953:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":161,"name":"address","nodeType":"ElementaryTypeName","src":"953:7:1","typeDescriptions":{}}},"id":164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"953:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":165,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"965:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"965:10:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":160,"name":"OwnerChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3172,"src":"940:12:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"940:36:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":168,"nodeType":"EmitStatement","src":"935:41:1"},{"expression":{"id":173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":169,"name":"feeAmountTickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136,"src":"989:20:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint24_$_t_int24_$","typeString":"mapping(uint24 => int24)"}},"id":171,"indexExpression":{"hexValue":"353030","id":170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1010:3:1","typeDescriptions":{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"},"value":"500"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"989:25:1","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3130","id":172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1017:2:1","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"989:30:1","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":174,"nodeType":"ExpressionStatement","src":"989:30:1"},{"eventCall":{"arguments":[{"hexValue":"353030","id":176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1052:3:1","typeDescriptions":{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"},"value":"500"},{"hexValue":"3130","id":177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1057:2:1","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"},{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}],"id":175,"name":"FeeAmountEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3192,"src":"1035:16:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint24_$_t_int24_$returns$__$","typeString":"function (uint24,int24)"}},"id":178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1035:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":179,"nodeType":"EmitStatement","src":"1030:30:1"},{"expression":{"id":184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":180,"name":"feeAmountTickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136,"src":"1071:20:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint24_$_t_int24_$","typeString":"mapping(uint24 => int24)"}},"id":182,"indexExpression":{"hexValue":"33303030","id":181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1092:4:1","typeDescriptions":{"typeIdentifier":"t_rational_3000_by_1","typeString":"int_const 3000"},"value":"3000"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1071:26:1","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3630","id":183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1100:2:1","typeDescriptions":{"typeIdentifier":"t_rational_60_by_1","typeString":"int_const 60"},"value":"60"},"src":"1071:31:1","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":185,"nodeType":"ExpressionStatement","src":"1071:31:1"},{"eventCall":{"arguments":[{"hexValue":"33303030","id":187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1135:4:1","typeDescriptions":{"typeIdentifier":"t_rational_3000_by_1","typeString":"int_const 3000"},"value":"3000"},{"hexValue":"3630","id":188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1141:2:1","typeDescriptions":{"typeIdentifier":"t_rational_60_by_1","typeString":"int_const 60"},"value":"60"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_3000_by_1","typeString":"int_const 3000"},{"typeIdentifier":"t_rational_60_by_1","typeString":"int_const 60"}],"id":186,"name":"FeeAmountEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3192,"src":"1118:16:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint24_$_t_int24_$returns$__$","typeString":"function (uint24,int24)"}},"id":189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1118:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":190,"nodeType":"EmitStatement","src":"1113:31:1"},{"expression":{"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":191,"name":"feeAmountTickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136,"src":"1155:20:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint24_$_t_int24_$","typeString":"mapping(uint24 => int24)"}},"id":193,"indexExpression":{"hexValue":"3130303030","id":192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1176:5:1","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1155:27:1","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"323030","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1185:3:1","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},"src":"1155:33:1","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":196,"nodeType":"ExpressionStatement","src":"1155:33:1"},{"eventCall":{"arguments":[{"hexValue":"3130303030","id":198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1221:5:1","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},{"hexValue":"323030","id":199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1228:3:1","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"}],"id":197,"name":"FeeAmountEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3192,"src":"1204:16:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint24_$_t_int24_$returns$__$","typeString":"function (uint24,int24)"}},"id":200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1204:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":201,"nodeType":"EmitStatement","src":"1199:33:1"}]},"id":203,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":148,"mutability":"mutable","name":"_implementation","nodeType":"VariableDeclaration","scope":203,"src":"825:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":147,"name":"address","nodeType":"ElementaryTypeName","src":"825:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"824:25:1"},"returnParameters":{"id":150,"nodeType":"ParameterList","parameters":[],"src":"850:0:1"},"scope":404,"src":"813:427:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3236],"body":{"id":326,"nodeType":"Block","src":"1423:849:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":217,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":206,"src":"1442:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":218,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":208,"src":"1452:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1442:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":216,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1434:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1434:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":221,"nodeType":"ExpressionStatement","src":"1434:25:1"},{"assignments":[223,225],"declarations":[{"constant":false,"id":223,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":326,"src":"1471:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":222,"name":"address","nodeType":"ElementaryTypeName","src":"1471:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":225,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":326,"src":"1487:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":224,"name":"address","nodeType":"ElementaryTypeName","src":"1487:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":236,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":226,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":206,"src":"1505:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":227,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":208,"src":"1514:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1505:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"id":232,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":208,"src":"1569:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":233,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":206,"src":"1577:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":234,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1568:16:1","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1505:79:1","trueExpression":{"components":[{"id":229,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":206,"src":"1537:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":230,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":208,"src":"1545:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":231,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1536:16:1","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"VariableDeclarationStatement","src":"1470:114:1"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":238,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":223,"src":"1603:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1621:1:1","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":240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1613:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":239,"name":"address","nodeType":"ElementaryTypeName","src":"1613:7:1","typeDescriptions":{}}},"id":242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1613:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1603:20:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":237,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1595:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1595:29:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":245,"nodeType":"ExpressionStatement","src":"1595:29:1"},{"assignments":[247],"declarations":[{"constant":false,"id":247,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":326,"src":"1635:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":246,"name":"int24","nodeType":"ElementaryTypeName","src":"1635:5:1","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":251,"initialValue":{"baseExpression":{"id":248,"name":"feeAmountTickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136,"src":"1655:20:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint24_$_t_int24_$","typeString":"mapping(uint24 => int24)"}},"id":250,"indexExpression":{"id":249,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":210,"src":"1676:3:1","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1655:25:1","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"1635:45:1"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":253,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":247,"src":"1699:11:1","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1714:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1699:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":252,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1691:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1691:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":257,"nodeType":"ExpressionStatement","src":"1691:25:1"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":259,"name":"getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"1735:7:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint24_$_t_address_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint24 => address)))"}},"id":261,"indexExpression":{"id":260,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":223,"src":"1743:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1735:15:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint24_$_t_address_$_$","typeString":"mapping(address => mapping(uint24 => address))"}},"id":263,"indexExpression":{"id":262,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":225,"src":"1751:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1735:23:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint24_$_t_address_$","typeString":"mapping(uint24 => address)"}},"id":265,"indexExpression":{"id":264,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":210,"src":"1759:3:1","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1735:28:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1775:1:1","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":267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1767:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":266,"name":"address","nodeType":"ElementaryTypeName","src":"1767:7:1","typeDescriptions":{}}},"id":269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1767:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1735:42:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":258,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1727:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1727:51:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":272,"nodeType":"ExpressionStatement","src":"1727:51:1"},{"expression":{"id":286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":273,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":214,"src":"1789:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":276,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126,"src":"1836:14:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":280,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":223,"src":"1886:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":281,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":225,"src":"1894:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":282,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":210,"src":"1902:3:1","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":278,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1875:3:1","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":279,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1875:10:1","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1875:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":277,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1865:9:1","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1865:42:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":274,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30992,"src":"1796:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$30992_$","typeString":"type(library Clones)"}},"id":275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":30957,"src":"1796:25:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1796:122:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1789:129:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":287,"nodeType":"ExpressionStatement","src":"1789:129:1"},{"expression":{"arguments":[{"id":292,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":223,"src":"1958:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":293,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":225,"src":"1966:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":294,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":210,"src":"1974:3:1","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"id":295,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":247,"src":"1979:11:1","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"arguments":[{"id":289,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":214,"src":"1941:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":288,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1929:11:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1929:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":3628,"src":"1929:28:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint24_$_t_int24_$returns$__$","typeString":"function (address,address,uint24,int24) external"}},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1929:62:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":297,"nodeType":"ExpressionStatement","src":"1929:62:1"},{"expression":{"id":306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"id":298,"name":"getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"2002:7:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint24_$_t_address_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint24 => address)))"}},"id":302,"indexExpression":{"id":299,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":223,"src":"2010:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2002:15:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint24_$_t_address_$_$","typeString":"mapping(address => mapping(uint24 => address))"}},"id":303,"indexExpression":{"id":300,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":225,"src":"2018:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2002:23:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint24_$_t_address_$","typeString":"mapping(uint24 => address)"}},"id":304,"indexExpression":{"id":301,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":210,"src":"2026:3:1","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2002:28:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":305,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":214,"src":"2033:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2002:35:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":307,"nodeType":"ExpressionStatement","src":"2002:35:1"},{"expression":{"id":316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"id":308,"name":"getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"2162:7:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint24_$_t_address_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint24 => address)))"}},"id":312,"indexExpression":{"id":309,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":225,"src":"2170:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2162:15:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint24_$_t_address_$_$","typeString":"mapping(address => mapping(uint24 => address))"}},"id":313,"indexExpression":{"id":310,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":223,"src":"2178:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2162:23:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint24_$_t_address_$","typeString":"mapping(uint24 => address)"}},"id":314,"indexExpression":{"id":311,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":210,"src":"2186:3:1","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2162:28:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":315,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":214,"src":"2193:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2162:35:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":317,"nodeType":"ExpressionStatement","src":"2162:35:1"},{"eventCall":{"arguments":[{"id":319,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":223,"src":"2225:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":320,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":225,"src":"2233:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":321,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":210,"src":"2241:3:1","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"id":322,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":247,"src":"2246:11:1","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":323,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":214,"src":"2259:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_address","typeString":"address"}],"id":318,"name":"PoolCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3185,"src":"2213:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint24_$_t_int24_$_t_address_$returns$__$","typeString":"function (address,address,uint24,int24,address)"}},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2213:51:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":325,"nodeType":"EmitStatement","src":"2208:56:1"}]},"documentation":{"id":204,"nodeType":"StructuredDocumentation","src":"1248:30:1","text":"@inheritdoc IElixirFactory"},"functionSelector":"a1671295","id":327,"implemented":true,"kind":"function","modifiers":[],"name":"createPool","nodeType":"FunctionDefinition","overrides":{"id":212,"nodeType":"OverrideSpecifier","overrides":[],"src":"1391:8:1"},"parameters":{"id":211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":206,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":327,"src":"1314:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":205,"name":"address","nodeType":"ElementaryTypeName","src":"1314:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":208,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":327,"src":"1339:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":207,"name":"address","nodeType":"ElementaryTypeName","src":"1339:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":210,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":327,"src":"1364:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":209,"name":"uint24","nodeType":"ElementaryTypeName","src":"1364:6:1","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"1303:78:1"},"returnParameters":{"id":215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":214,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":327,"src":"1409:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":213,"name":"address","nodeType":"ElementaryTypeName","src":"1409:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1408:14:1"},"scope":404,"src":"1284:988:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3242],"body":{"id":350,"nodeType":"Block","src":"2368:115:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":335,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2387:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2387:10:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":337,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"2401:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2387:19:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":334,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2379:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2379:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":340,"nodeType":"ExpressionStatement","src":"2379:28:1"},{"eventCall":{"arguments":[{"id":342,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"2436:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":343,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":330,"src":"2443:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":341,"name":"OwnerChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3172,"src":"2423:12:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2423:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":345,"nodeType":"EmitStatement","src":"2418:32:1"},{"expression":{"id":348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":346,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"2461:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":347,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":330,"src":"2469:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2461:14:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":349,"nodeType":"ExpressionStatement","src":"2461:14:1"}]},"documentation":{"id":328,"nodeType":"StructuredDocumentation","src":"2280:30:1","text":"@inheritdoc IElixirFactory"},"functionSelector":"13af4035","id":351,"implemented":true,"kind":"function","modifiers":[],"name":"setOwner","nodeType":"FunctionDefinition","overrides":{"id":332,"nodeType":"OverrideSpecifier","overrides":[],"src":"2359:8:1"},"parameters":{"id":331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":330,"mutability":"mutable","name":"_owner","nodeType":"VariableDeclaration","scope":351,"src":"2334:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":329,"name":"address","nodeType":"ElementaryTypeName","src":"2334:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2333:16:1"},"returnParameters":{"id":333,"nodeType":"ParameterList","parameters":[],"src":"2368:0:1"},"scope":404,"src":"2316:167:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3250],"body":{"id":402,"nodeType":"Block","src":"2599:569:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":361,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2618:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2618:10:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":363,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"2632:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2618:19:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":360,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2610:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2610:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":366,"nodeType":"ExpressionStatement","src":"2610:28:1"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint24","typeString":"uint24"},"id":370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":368,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":354,"src":"2657:3:1","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"31303030303030","id":369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2663:7:1","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1000000"},"src":"2657:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":367,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2649:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2649:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":372,"nodeType":"ExpressionStatement","src":"2649:22:1"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":374,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":356,"src":"2969:11:1","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2983:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2969:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":377,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":356,"src":"2988:11:1","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3136333834","id":378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3002:5:1","typeDescriptions":{"typeIdentifier":"t_rational_16384_by_1","typeString":"int_const 16384"},"value":"16384"},"src":"2988:19:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2969:38:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":373,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2961:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2961:47:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":382,"nodeType":"ExpressionStatement","src":"2961:47:1"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":384,"name":"feeAmountTickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136,"src":"3027:20:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint24_$_t_int24_$","typeString":"mapping(uint24 => int24)"}},"id":386,"indexExpression":{"id":385,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":354,"src":"3048:3:1","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3027:25:1","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3056:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3027:30:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":383,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3019:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3019:39:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":390,"nodeType":"ExpressionStatement","src":"3019:39:1"},{"expression":{"id":395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":391,"name":"feeAmountTickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136,"src":"3071:20:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint24_$_t_int24_$","typeString":"mapping(uint24 => int24)"}},"id":393,"indexExpression":{"id":392,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":354,"src":"3092:3:1","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3071:25:1","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":394,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":356,"src":"3099:11:1","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3071:39:1","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":396,"nodeType":"ExpressionStatement","src":"3071:39:1"},{"eventCall":{"arguments":[{"id":398,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":354,"src":"3143:3:1","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"id":399,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":356,"src":"3148:11:1","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"id":397,"name":"FeeAmountEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3192,"src":"3126:16:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint24_$_t_int24_$returns$__$","typeString":"function (uint24,int24)"}},"id":400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3126:34:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":401,"nodeType":"EmitStatement","src":"3121:39:1"}]},"documentation":{"id":352,"nodeType":"StructuredDocumentation","src":"2491:30:1","text":"@inheritdoc IElixirFactory"},"functionSelector":"8a7c195f","id":403,"implemented":true,"kind":"function","modifiers":[],"name":"enableFeeAmount","nodeType":"FunctionDefinition","overrides":{"id":358,"nodeType":"OverrideSpecifier","overrides":[],"src":"2590:8:1"},"parameters":{"id":357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":354,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":403,"src":"2552:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":353,"name":"uint24","nodeType":"ElementaryTypeName","src":"2552:6:1","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":356,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":403,"src":"2564:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":355,"name":"int24","nodeType":"ElementaryTypeName","src":"2564:5:1","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2551:31:1"},"returnParameters":{"id":359,"nodeType":"ParameterList","parameters":[],"src":"2599:0:1"},"scope":404,"src":"2527:641:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":405,"src":"341:2830:1"}],"src":"38:3135:1"},"id":1},"contracts/elixir-core/ElixirPool.sol":{"ast":{"absolutePath":"contracts/elixir-core/ElixirPool.sol","exportedSymbols":{"BitMath":[4058],"ElixirPool":[3090],"FixedPoint128":[4065],"FixedPoint96":[4075],"FullMath":[4248],"IERC20Minimal":[3162],"IElixirFactory":[3251],"IElixirFlashCallback":[3287],"IElixirMintCallback":[3301],"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"IElixirSwapCallback":[3315],"LiquidityMath":[4300],"LowGasSafeMath":[4430],"Oracle":[5283],"Position":[5456],"SafeCast":[5526],"SqrtPriceMath":[6042],"SwapMath":[6303],"Tick":[6776],"TickBitmap":[7032],"TickMath":[7567],"TransferHelper":[7618],"UnsafeMath":[7634]},"id":3091,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":406,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"38:23:2"},{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"./interfaces/IElixirPool.sol","id":407,"nodeType":"ImportDirective","scope":3091,"sourceUnit":3274,"src":"65:38:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/LowGasSafeMath.sol","file":"./libraries/LowGasSafeMath.sol","id":408,"nodeType":"ImportDirective","scope":3091,"sourceUnit":4431,"src":"107:40:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/SafeCast.sol","file":"./libraries/SafeCast.sol","id":409,"nodeType":"ImportDirective","scope":3091,"sourceUnit":5527,"src":"149:34:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/Tick.sol","file":"./libraries/Tick.sol","id":410,"nodeType":"ImportDirective","scope":3091,"sourceUnit":6777,"src":"185:30:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/TickBitmap.sol","file":"./libraries/TickBitmap.sol","id":411,"nodeType":"ImportDirective","scope":3091,"sourceUnit":7033,"src":"217:36:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/Position.sol","file":"./libraries/Position.sol","id":412,"nodeType":"ImportDirective","scope":3091,"sourceUnit":5457,"src":"255:34:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/Oracle.sol","file":"./libraries/Oracle.sol","id":413,"nodeType":"ImportDirective","scope":3091,"sourceUnit":5284,"src":"291:32:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/FullMath.sol","file":"./libraries/FullMath.sol","id":414,"nodeType":"ImportDirective","scope":3091,"sourceUnit":4249,"src":"327:34:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/FixedPoint128.sol","file":"./libraries/FixedPoint128.sol","id":415,"nodeType":"ImportDirective","scope":3091,"sourceUnit":4066,"src":"363:39:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/TransferHelper.sol","file":"./libraries/TransferHelper.sol","id":416,"nodeType":"ImportDirective","scope":3091,"sourceUnit":7619,"src":"404:40:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/TickMath.sol","file":"./libraries/TickMath.sol","id":417,"nodeType":"ImportDirective","scope":3091,"sourceUnit":7568,"src":"446:34:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/LiquidityMath.sol","file":"./libraries/LiquidityMath.sol","id":418,"nodeType":"ImportDirective","scope":3091,"sourceUnit":4301,"src":"482:39:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/SqrtPriceMath.sol","file":"./libraries/SqrtPriceMath.sol","id":419,"nodeType":"ImportDirective","scope":3091,"sourceUnit":6043,"src":"523:39:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/SwapMath.sol","file":"./libraries/SwapMath.sol","id":420,"nodeType":"ImportDirective","scope":3091,"sourceUnit":6304,"src":"564:34:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/IElixirFactory.sol","file":"./interfaces/IElixirFactory.sol","id":421,"nodeType":"ImportDirective","scope":3091,"sourceUnit":3252,"src":"602:41:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/IERC20Minimal.sol","file":"./interfaces/IERC20Minimal.sol","id":422,"nodeType":"ImportDirective","scope":3091,"sourceUnit":3163,"src":"645:40:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol","file":"./interfaces/callback/IElixirMintCallback.sol","id":423,"nodeType":"ImportDirective","scope":3091,"sourceUnit":3302,"src":"687:55:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol","file":"./interfaces/callback/IElixirSwapCallback.sol","id":424,"nodeType":"ImportDirective","scope":3091,"sourceUnit":3316,"src":"744:55:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/callback/IElixirFlashCallback.sol","file":"./interfaces/callback/IElixirFlashCallback.sol","id":425,"nodeType":"ImportDirective","scope":3091,"sourceUnit":3288,"src":"801:56:2","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":426,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":3273,"src":"884:11:2","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":427,"nodeType":"InheritanceSpecifier","src":"884:11:2"}],"contractDependencies":[3273,3411,3447,3573,3613,3659,3779],"contractKind":"contract","fullyImplemented":true,"id":3090,"linearizedBaseContracts":[3090,3273,3573,3659,3411,3447,3779,3613],"name":"ElixirPool","nodeType":"ContractDefinition","nodes":[{"id":430,"libraryName":{"id":428,"name":"LowGasSafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":4430,"src":"909:14:2","typeDescriptions":{"typeIdentifier":"t_contract$_LowGasSafeMath_$4430","typeString":"library LowGasSafeMath"}},"nodeType":"UsingForDirective","src":"903:33:2","typeName":{"id":429,"name":"uint256","nodeType":"ElementaryTypeName","src":"928:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":433,"libraryName":{"id":431,"name":"LowGasSafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":4430,"src":"948:14:2","typeDescriptions":{"typeIdentifier":"t_contract$_LowGasSafeMath_$4430","typeString":"library LowGasSafeMath"}},"nodeType":"UsingForDirective","src":"942:32:2","typeName":{"id":432,"name":"int256","nodeType":"ElementaryTypeName","src":"967:6:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}},{"id":436,"libraryName":{"id":434,"name":"SafeCast","nodeType":"UserDefinedTypeName","referencedDeclaration":5526,"src":"986:8:2","typeDescriptions":{"typeIdentifier":"t_contract$_SafeCast_$5526","typeString":"library SafeCast"}},"nodeType":"UsingForDirective","src":"980:27:2","typeName":{"id":435,"name":"uint256","nodeType":"ElementaryTypeName","src":"999:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":439,"libraryName":{"id":437,"name":"SafeCast","nodeType":"UserDefinedTypeName","referencedDeclaration":5526,"src":"1019:8:2","typeDescriptions":{"typeIdentifier":"t_contract$_SafeCast_$5526","typeString":"library SafeCast"}},"nodeType":"UsingForDirective","src":"1013:26:2","typeName":{"id":438,"name":"int256","nodeType":"ElementaryTypeName","src":"1032:6:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}},{"id":444,"libraryName":{"id":440,"name":"Tick","nodeType":"UserDefinedTypeName","referencedDeclaration":6776,"src":"1051:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_Tick_$6776","typeString":"library Tick"}},"nodeType":"UsingForDirective","src":"1045:43:2","typeName":{"id":443,"keyType":{"id":441,"name":"int24","nodeType":"ElementaryTypeName","src":"1068:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Mapping","src":"1060:27:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"valueType":{"id":442,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":6335,"src":"1077:9:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"}}}},{"id":449,"libraryName":{"id":445,"name":"TickBitmap","nodeType":"UserDefinedTypeName","referencedDeclaration":7032,"src":"1100:10:2","typeDescriptions":{"typeIdentifier":"t_contract$_TickBitmap_$7032","typeString":"library TickBitmap"}},"nodeType":"UsingForDirective","src":"1094:47:2","typeName":{"id":448,"keyType":{"id":446,"name":"int16","nodeType":"ElementaryTypeName","src":"1123:5:2","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Mapping","src":"1115:25:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"valueType":{"id":447,"name":"uint256","nodeType":"ElementaryTypeName","src":"1132:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},{"id":454,"libraryName":{"id":450,"name":"Position","nodeType":"UserDefinedTypeName","referencedDeclaration":5456,"src":"1153:8:2","typeDescriptions":{"typeIdentifier":"t_contract$_Position_$5456","typeString":"library Position"}},"nodeType":"UsingForDirective","src":"1147:53:2","typeName":{"id":453,"keyType":{"id":451,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1174:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1166:33:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Info_$5300_storage_$","typeString":"mapping(bytes32 => struct Position.Info)"},"valueType":{"id":452,"name":"Position.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":5300,"src":"1185:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info"}}}},{"id":457,"libraryName":{"id":455,"name":"Position","nodeType":"UserDefinedTypeName","referencedDeclaration":5456,"src":"1212:8:2","typeDescriptions":{"typeIdentifier":"t_contract$_Position_$5456","typeString":"library Position"}},"nodeType":"UsingForDirective","src":"1206:33:2","typeName":{"id":456,"name":"Position.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":5300,"src":"1225:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info"}}},{"id":462,"libraryName":{"id":458,"name":"Oracle","nodeType":"UserDefinedTypeName","referencedDeclaration":5283,"src":"1251:6:2","typeDescriptions":{"typeIdentifier":"t_contract$_Oracle_$5283","typeString":"library Oracle"}},"nodeType":"UsingForDirective","src":"1245:43:2","typeName":{"baseType":{"id":459,"name":"Oracle.Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"1262:18:2","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"id":461,"length":{"hexValue":"3635353335","id":460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1281:5:2","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"nodeType":"ArrayTypeName","src":"1262:25:2","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation[65535]"}}},{"baseFunctions":[3582],"constant":false,"documentation":{"id":463,"nodeType":"StructuredDocumentation","src":"1296:37:2","text":"@inheritdoc IElixirPoolImmutables"},"functionSelector":"c45a0155","id":466,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","overrides":{"id":465,"nodeType":"OverrideSpecifier","overrides":[],"src":"1354:8:2"},"scope":3090,"src":"1339:31:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":464,"name":"address","nodeType":"ElementaryTypeName","src":"1339:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"baseFunctions":[3588],"constant":false,"documentation":{"id":467,"nodeType":"StructuredDocumentation","src":"1377:37:2","text":"@inheritdoc IElixirPoolImmutables"},"functionSelector":"0dfe1681","id":470,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","overrides":{"id":469,"nodeType":"OverrideSpecifier","overrides":[],"src":"1435:8:2"},"scope":3090,"src":"1420:30:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":468,"name":"address","nodeType":"ElementaryTypeName","src":"1420:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"baseFunctions":[3594],"constant":false,"documentation":{"id":471,"nodeType":"StructuredDocumentation","src":"1457:37:2","text":"@inheritdoc IElixirPoolImmutables"},"functionSelector":"d21220a7","id":474,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","overrides":{"id":473,"nodeType":"OverrideSpecifier","overrides":[],"src":"1515:8:2"},"scope":3090,"src":"1500:30:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":472,"name":"address","nodeType":"ElementaryTypeName","src":"1500:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"baseFunctions":[3600],"constant":false,"documentation":{"id":475,"nodeType":"StructuredDocumentation","src":"1537:37:2","text":"@inheritdoc IElixirPoolImmutables"},"functionSelector":"ddca3f43","id":478,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","overrides":{"id":477,"nodeType":"OverrideSpecifier","overrides":[],"src":"1594:8:2"},"scope":3090,"src":"1580:26:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":476,"name":"uint24","nodeType":"ElementaryTypeName","src":"1580:6:2","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"public"},{"baseFunctions":[3606],"constant":false,"documentation":{"id":479,"nodeType":"StructuredDocumentation","src":"1615:37:2","text":"@inheritdoc IElixirPoolImmutables"},"functionSelector":"d0c93a7c","id":482,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","overrides":{"id":481,"nodeType":"OverrideSpecifier","overrides":[],"src":"1671:8:2"},"scope":3090,"src":"1658:33:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":480,"name":"int24","nodeType":"ElementaryTypeName","src":"1658:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"public"},{"baseFunctions":[3612],"constant":false,"documentation":{"id":483,"nodeType":"StructuredDocumentation","src":"1700:37:2","text":"@inheritdoc IElixirPoolImmutables"},"functionSelector":"70cf754a","id":486,"mutability":"mutable","name":"maxLiquidityPerTick","nodeType":"VariableDeclaration","overrides":{"id":485,"nodeType":"OverrideSpecifier","overrides":[],"src":"1758:8:2"},"scope":3090,"src":"1743:43:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":484,"name":"uint128","nodeType":"ElementaryTypeName","src":"1743:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"public"},{"canonicalName":"ElixirPool.Slot0","id":501,"members":[{"constant":false,"id":488,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":501,"src":"1849:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":487,"name":"uint160","nodeType":"ElementaryTypeName","src":"1849:7:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":490,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":501,"src":"1909:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":489,"name":"int24","nodeType":"ElementaryTypeName","src":"1909:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":492,"mutability":"mutable","name":"observationIndex","nodeType":"VariableDeclaration","scope":501,"src":"2000:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":491,"name":"uint16","nodeType":"ElementaryTypeName","src":"2000:6:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":494,"mutability":"mutable","name":"observationCardinality","nodeType":"VariableDeclaration","scope":501,"src":"2111:29:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":493,"name":"uint16","nodeType":"ElementaryTypeName","src":"2111:6:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":496,"mutability":"mutable","name":"observationCardinalityNext","nodeType":"VariableDeclaration","scope":501,"src":"2245:33:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":495,"name":"uint16","nodeType":"ElementaryTypeName","src":"2245:6:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":498,"mutability":"mutable","name":"feeProtocol","nodeType":"VariableDeclaration","scope":501,"src":"2435:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":497,"name":"uint8","nodeType":"ElementaryTypeName","src":"2435:5:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":500,"mutability":"mutable","name":"unlocked","nodeType":"VariableDeclaration","scope":501,"src":"2502:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":499,"name":"bool","nodeType":"ElementaryTypeName","src":"2502:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"Slot0","nodeType":"StructDefinition","scope":3090,"src":"1795:728:2","visibility":"public"},{"baseFunctions":[3680],"constant":false,"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"2529:32:2","text":"@inheritdoc IElixirPoolState"},"functionSelector":"3850c7bd","id":505,"mutability":"mutable","name":"slot0","nodeType":"VariableDeclaration","overrides":{"id":504,"nodeType":"OverrideSpecifier","overrides":[],"src":"2580:8:2"},"scope":3090,"src":"2567:27:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0"},"typeName":{"id":503,"name":"Slot0","nodeType":"UserDefinedTypeName","referencedDeclaration":501,"src":"2567:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage_ptr","typeString":"struct ElixirPool.Slot0"}},"visibility":"public"},{"canonicalName":"ElixirPool.RewardSlot","id":510,"members":[{"constant":false,"id":507,"mutability":"mutable","name":"rewardPerSecondX48","nodeType":"VariableDeclaration","scope":510,"src":"2632:26:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":506,"name":"uint144","nodeType":"ElementaryTypeName","src":"2632:7:2","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"},{"constant":false,"id":509,"mutability":"mutable","name":"rewardRateEffectiveUntil","nodeType":"VariableDeclaration","scope":510,"src":"2669:31:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":508,"name":"uint32","nodeType":"ElementaryTypeName","src":"2669:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"name":"RewardSlot","nodeType":"StructDefinition","scope":3090,"src":"2603:105:2","visibility":"public"},{"baseFunctions":[3688],"constant":false,"documentation":{"id":511,"nodeType":"StructuredDocumentation","src":"2714:32:2","text":"@inheritdoc IElixirPoolState"},"functionSelector":"94fd4a3e","id":514,"mutability":"mutable","name":"rewardSlot","nodeType":"VariableDeclaration","overrides":{"id":513,"nodeType":"OverrideSpecifier","overrides":[],"src":"2770:8:2"},"scope":3090,"src":"2752:37:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_RewardSlot_$510_storage","typeString":"struct ElixirPool.RewardSlot"},"typeName":{"id":512,"name":"RewardSlot","nodeType":"UserDefinedTypeName","referencedDeclaration":510,"src":"2752:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_RewardSlot_$510_storage_ptr","typeString":"struct ElixirPool.RewardSlot"}},"visibility":"public"},{"baseFunctions":[3694],"constant":false,"documentation":{"id":515,"nodeType":"StructuredDocumentation","src":"2798:32:2","text":"@inheritdoc IElixirPoolState"},"functionSelector":"f3058399","id":518,"mutability":"mutable","name":"feeGrowthGlobal0X128","nodeType":"VariableDeclaration","overrides":{"id":517,"nodeType":"OverrideSpecifier","overrides":[],"src":"2851:8:2"},"scope":3090,"src":"2836:44:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":516,"name":"uint256","nodeType":"ElementaryTypeName","src":"2836:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"baseFunctions":[3700],"constant":false,"documentation":{"id":519,"nodeType":"StructuredDocumentation","src":"2887:32:2","text":"@inheritdoc IElixirPoolState"},"functionSelector":"46141319","id":522,"mutability":"mutable","name":"feeGrowthGlobal1X128","nodeType":"VariableDeclaration","overrides":{"id":521,"nodeType":"OverrideSpecifier","overrides":[],"src":"2940:8:2"},"scope":3090,"src":"2925:44:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":520,"name":"uint256","nodeType":"ElementaryTypeName","src":"2925:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"canonicalName":"ElixirPool.ProtocolFees","id":527,"members":[{"constant":false,"id":524,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":527,"src":"3066:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":523,"name":"uint128","nodeType":"ElementaryTypeName","src":"3066:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":526,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":527,"src":"3091:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":525,"name":"uint128","nodeType":"ElementaryTypeName","src":"3091:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"ProtocolFees","nodeType":"StructDefinition","scope":3090,"src":"3035:78:2","visibility":"public"},{"baseFunctions":[3708],"constant":false,"documentation":{"id":528,"nodeType":"StructuredDocumentation","src":"3119:32:2","text":"@inheritdoc IElixirPoolState"},"functionSelector":"1ad8b03b","id":531,"mutability":"mutable","name":"protocolFees","nodeType":"VariableDeclaration","overrides":{"id":530,"nodeType":"OverrideSpecifier","overrides":[],"src":"3177:8:2"},"scope":3090,"src":"3157:41:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolFees_$527_storage","typeString":"struct ElixirPool.ProtocolFees"},"typeName":{"id":529,"name":"ProtocolFees","nodeType":"UserDefinedTypeName","referencedDeclaration":527,"src":"3157:12:2","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolFees_$527_storage_ptr","typeString":"struct ElixirPool.ProtocolFees"}},"visibility":"public"},{"baseFunctions":[3714],"constant":false,"documentation":{"id":532,"nodeType":"StructuredDocumentation","src":"3207:32:2","text":"@inheritdoc IElixirPoolState"},"functionSelector":"1a686502","id":535,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":{"id":534,"nodeType":"OverrideSpecifier","overrides":[],"src":"3260:8:2"},"scope":3090,"src":"3245:33:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":533,"name":"uint128","nodeType":"ElementaryTypeName","src":"3245:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"public"},{"baseFunctions":[3738],"constant":false,"documentation":{"id":536,"nodeType":"StructuredDocumentation","src":"3287:32:2","text":"@inheritdoc IElixirPoolState"},"functionSelector":"f30dba93","id":541,"mutability":"mutable","name":"ticks","nodeType":"VariableDeclaration","overrides":{"id":540,"nodeType":"OverrideSpecifier","overrides":[],"src":"3360:8:2"},"scope":3090,"src":"3325:49:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"typeName":{"id":539,"keyType":{"id":537,"name":"int24","nodeType":"ElementaryTypeName","src":"3333:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Mapping","src":"3325:27:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"valueType":{"id":538,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":6335,"src":"3342:9:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"}}},"visibility":"public"},{"baseFunctions":[3746],"constant":false,"documentation":{"id":542,"nodeType":"StructuredDocumentation","src":"3381:32:2","text":"@inheritdoc IElixirPoolState"},"functionSelector":"5339c296","id":547,"mutability":"mutable","name":"tickBitmap","nodeType":"VariableDeclaration","overrides":{"id":546,"nodeType":"OverrideSpecifier","overrides":[],"src":"3452:8:2"},"scope":3090,"src":"3419:52:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"typeName":{"id":545,"keyType":{"id":543,"name":"int16","nodeType":"ElementaryTypeName","src":"3427:5:2","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Mapping","src":"3419:25:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"valueType":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"3436:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"baseFunctions":[3762],"constant":false,"documentation":{"id":548,"nodeType":"StructuredDocumentation","src":"3478:32:2","text":"@inheritdoc IElixirPoolState"},"functionSelector":"514ea4bf","id":553,"mutability":"mutable","name":"positions","nodeType":"VariableDeclaration","overrides":{"id":552,"nodeType":"OverrideSpecifier","overrides":[],"src":"3557:8:2"},"scope":3090,"src":"3516:59:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Info_$5300_storage_$","typeString":"mapping(bytes32 => struct Position.Info)"},"typeName":{"id":551,"keyType":{"id":549,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3524:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"3516:33:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Info_$5300_storage_$","typeString":"mapping(bytes32 => struct Position.Info)"},"valueType":{"id":550,"name":"Position.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":5300,"src":"3535:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info"}}},"visibility":"public"},{"baseFunctions":[3778],"constant":false,"documentation":{"id":554,"nodeType":"StructuredDocumentation","src":"3582:32:2","text":"@inheritdoc IElixirPoolState"},"functionSelector":"252c09d7","id":559,"mutability":"mutable","name":"observations","nodeType":"VariableDeclaration","overrides":{"id":558,"nodeType":"OverrideSpecifier","overrides":[],"src":"3653:8:2"},"scope":3090,"src":"3620:54:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage","typeString":"struct Oracle.Observation[65535]"},"typeName":{"baseType":{"id":555,"name":"Oracle.Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"3620:18:2","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"id":557,"length":{"hexValue":"3635353335","id":556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3639:5:2","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"nodeType":"ArrayTypeName","src":"3620:25:2","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation[65535]"}},"visibility":"public"},{"body":{"id":581,"nodeType":"Block","src":"4050:126:2","statements":[{"expression":{"arguments":[{"expression":{"id":563,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"4069:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":564,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"unlocked","nodeType":"MemberAccess","referencedDeclaration":500,"src":"4069:14:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c4f4b","id":565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4085:5:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_e01ebc6b01bbf458b3d355b6e649efe64599751670c5d19175619893ecf97529","typeString":"literal_string \"LOK\""},"value":"LOK"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e01ebc6b01bbf458b3d355b6e649efe64599751670c5d19175619893ecf97529","typeString":"literal_string \"LOK\""}],"id":562,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4061:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4061:30:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":567,"nodeType":"ExpressionStatement","src":"4061:30:2"},{"expression":{"id":572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":568,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"4102:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":570,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"unlocked","nodeType":"MemberAccess","referencedDeclaration":500,"src":"4102:14:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4119:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"4102:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":573,"nodeType":"ExpressionStatement","src":"4102:22:2"},{"id":574,"nodeType":"PlaceholderStatement","src":"4135:1:2"},{"expression":{"id":579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":575,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"4147:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":577,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"unlocked","nodeType":"MemberAccess","referencedDeclaration":500,"src":"4147:14:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4164:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4147:21:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":580,"nodeType":"ExpressionStatement","src":"4147:21:2"}]},"documentation":{"id":560,"nodeType":"StructuredDocumentation","src":"3683:345:2","text":"@dev Mutually exclusive reentrancy protection into the pool to/from a method. This method also prevents entrance\n to a function before the pool is initialized. The reentrancy guard is required throughout the contract because\n we use balance checks to determine the payment status of interactions such as mint, swap and flash."},"id":582,"name":"lock","nodeType":"ModifierDefinition","parameters":{"id":561,"nodeType":"ParameterList","parameters":[],"src":"4047:2:2"},"src":"4034:142:2","virtual":false,"visibility":"internal"},{"body":{"id":597,"nodeType":"Block","src":"4320:85:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":586,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4339:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4339:10:2","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":589,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":466,"src":"4368:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":588,"name":"IElixirFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3251,"src":"4353:14:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirFactory_$3251_$","typeString":"type(contract IElixirFactory)"}},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4353:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirFactory_$3251","typeString":"contract IElixirFactory"}},"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":3204,"src":"4353:29:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4353:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4339:45:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":585,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4331:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4331:54:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":595,"nodeType":"ExpressionStatement","src":"4331:54:2"},{"id":596,"nodeType":"PlaceholderStatement","src":"4396:1:2"}]},"documentation":{"id":583,"nodeType":"StructuredDocumentation","src":"4184:102:2","text":"@dev Prevents calling a function from anyone except the address returned by IElixirFactory#owner()"},"id":598,"name":"onlyFactoryOwner","nodeType":"ModifierDefinition","parameters":{"id":584,"nodeType":"ParameterList","parameters":[],"src":"4317:2:2"},"src":"4292:113:2","virtual":false,"visibility":"internal"},{"baseFunctions":[3628],"body":{"id":648,"nodeType":"Block","src":"4563:278:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":612,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":466,"src":"4582:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4601:1:2","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":614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4593:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":613,"name":"address","nodeType":"ElementaryTypeName","src":"4593:7:2","typeDescriptions":{}}},"id":616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4593:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4582:21:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":611,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4574:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4574:30:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":619,"nodeType":"ExpressionStatement","src":"4574:30:2"},{"expression":{"id":623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":620,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":466,"src":"4617:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":621,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4627:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4627:10:2","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4617:20:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":624,"nodeType":"ExpressionStatement","src":"4617:20:2"},{"expression":{"id":627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":625,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"4648:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":626,"name":"_token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":601,"src":"4657:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4648:16:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":628,"nodeType":"ExpressionStatement","src":"4648:16:2"},{"expression":{"id":631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":629,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"4675:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":630,"name":"_token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":603,"src":"4684:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4675:16:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":632,"nodeType":"ExpressionStatement","src":"4675:16:2"},{"expression":{"id":635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":633,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"4702:3:2","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":634,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":605,"src":"4708:4:2","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"4702:10:2","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":636,"nodeType":"ExpressionStatement","src":"4702:10:2"},{"expression":{"id":639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":637,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":482,"src":"4723:11:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":638,"name":"_tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":607,"src":"4737:12:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"4723:26:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":640,"nodeType":"ExpressionStatement","src":"4723:26:2"},{"expression":{"id":646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":641,"name":"maxLiquidityPerTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":486,"src":"4760:19:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":644,"name":"_tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":607,"src":"4820:12:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":642,"name":"Tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6776,"src":"4782:4:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Tick_$6776_$","typeString":"type(library Tick)"}},"id":643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickSpacingToMaxLiquidityPerTick","nodeType":"MemberAccess","referencedDeclaration":6386,"src":"4782:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint128_$","typeString":"function (int24) pure returns (uint128)"}},"id":645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4782:51:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"4760:73:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":647,"nodeType":"ExpressionStatement","src":"4760:73:2"}]},"documentation":{"id":599,"nodeType":"StructuredDocumentation","src":"4413:39:2","text":"@inheritdoc IElixirPoolOwnerActions"},"functionSelector":"14f2705c","id":649,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","overrides":{"id":609,"nodeType":"OverrideSpecifier","overrides":[],"src":"4554:8:2"},"parameters":{"id":608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":601,"mutability":"mutable","name":"_token0","nodeType":"VariableDeclaration","scope":649,"src":"4478:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":600,"name":"address","nodeType":"ElementaryTypeName","src":"4478:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":603,"mutability":"mutable","name":"_token1","nodeType":"VariableDeclaration","scope":649,"src":"4495:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":602,"name":"address","nodeType":"ElementaryTypeName","src":"4495:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":605,"mutability":"mutable","name":"_fee","nodeType":"VariableDeclaration","scope":649,"src":"4512:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":604,"name":"uint24","nodeType":"ElementaryTypeName","src":"4512:6:2","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":607,"mutability":"mutable","name":"_tickSpacing","nodeType":"VariableDeclaration","scope":649,"src":"4525:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":606,"name":"int24","nodeType":"ElementaryTypeName","src":"4525:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"4477:67:2"},"returnParameters":{"id":610,"nodeType":"ParameterList","parameters":[],"src":"4563:0:2"},"scope":3090,"src":"4458:383:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":680,"nodeType":"Block","src":"4967:170:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":658,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":652,"src":"4986:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":659,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":654,"src":"4998:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"4986:21:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"544c55","id":661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5009:5:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_06776ee9cbc7ad0c1c06e0539ee449ea9f1cfe5ae7f3eda3c33aaa56fb586d6b","typeString":"literal_string \"TLU\""},"value":"TLU"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_06776ee9cbc7ad0c1c06e0539ee449ea9f1cfe5ae7f3eda3c33aaa56fb586d6b","typeString":"literal_string \"TLU\""}],"id":657,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4978:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4978:37:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":663,"nodeType":"ExpressionStatement","src":"4978:37:2"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":665,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":652,"src":"5034:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":666,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"5047:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_TICK","nodeType":"MemberAccess","referencedDeclaration":7040,"src":"5047:17:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"5034:30:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"544c4d","id":669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5066:5:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f9b85a186c017db58134196c73d3823c64ac15bc5fdab86c88cfc6bb064f2e5","typeString":"literal_string \"TLM\""},"value":"TLM"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f9b85a186c017db58134196c73d3823c64ac15bc5fdab86c88cfc6bb064f2e5","typeString":"literal_string \"TLM\""}],"id":664,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5026:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5026:46:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":671,"nodeType":"ExpressionStatement","src":"5026:46:2"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":673,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":654,"src":"5091:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":674,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"5104:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_TICK","nodeType":"MemberAccess","referencedDeclaration":7045,"src":"5104:17:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"5091:30:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"54554d","id":677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5123:5:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_95f36cdfdff7cff798fd6265395ae5b2ff6ffb0b1fac3580c0e5d24a0519f359","typeString":"literal_string \"TUM\""},"value":"TUM"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_95f36cdfdff7cff798fd6265395ae5b2ff6ffb0b1fac3580c0e5d24a0519f359","typeString":"literal_string \"TUM\""}],"id":672,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5083:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5083:46:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":679,"nodeType":"ExpressionStatement","src":"5083:46:2"}]},"documentation":{"id":650,"nodeType":"StructuredDocumentation","src":"4849:45:2","text":"@dev Common checks for valid tick inputs."},"id":681,"implemented":true,"kind":"function","modifiers":[],"name":"checkTicks","nodeType":"FunctionDefinition","parameters":{"id":655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":652,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":681,"src":"4920:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":651,"name":"int24","nodeType":"ElementaryTypeName","src":"4920:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":654,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":681,"src":"4937:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":653,"name":"int24","nodeType":"ElementaryTypeName","src":"4937:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"4919:34:2"},"returnParameters":{"id":656,"nodeType":"ParameterList","parameters":[],"src":"4967:0:2"},"scope":3090,"src":"4900:237:2","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":693,"nodeType":"Block","src":"5327:74:2","statements":[{"expression":{"arguments":[{"expression":{"id":689,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5352:5:2","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"5352:15:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5345:6:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":687,"name":"uint32","nodeType":"ElementaryTypeName","src":"5345:6:2","typeDescriptions":{}}},"id":691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5345:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":686,"id":692,"nodeType":"Return","src":"5338:30:2"}]},"documentation":{"id":682,"nodeType":"StructuredDocumentation","src":"5145:110:2","text":"@dev Returns the block timestamp truncated to 32 bits, i.e. mod 2**32. This method is overridden in tests."},"id":694,"implemented":true,"kind":"function","modifiers":[],"name":"_blockTimestamp","nodeType":"FunctionDefinition","parameters":{"id":683,"nodeType":"ParameterList","parameters":[],"src":"5285:2:2"},"returnParameters":{"id":686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":685,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":694,"src":"5319:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":684,"name":"uint32","nodeType":"ElementaryTypeName","src":"5319:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"5318:8:2"},"scope":3090,"src":"5261:140:2","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":737,"nodeType":"Block","src":"5651:261:2","statements":[{"assignments":[703,705],"declarations":[{"constant":false,"id":703,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":737,"src":"5663:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":702,"name":"bool","nodeType":"ElementaryTypeName","src":"5663:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":705,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":737,"src":"5677:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":704,"name":"bytes","nodeType":"ElementaryTypeName","src":"5677:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":719,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"id":710,"name":"IERC20Minimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3162,"src":"5752:13:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Minimal_$3162_$","typeString":"type(contract IERC20Minimal)"}},"id":711,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":3101,"src":"5752:23:2","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_address_$returns$_t_uint256_$","typeString":"function IERC20Minimal.balanceOf(address) view returns (uint256)"}},"id":712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"5752:32:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"arguments":[{"id":715,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5794:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_ElixirPool_$3090","typeString":"contract ElixirPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ElixirPool_$3090","typeString":"contract ElixirPool"}],"id":714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5786:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":713,"name":"address","nodeType":"ElementaryTypeName","src":"5786:7:2","typeDescriptions":{}}},"id":716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5786:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":708,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5729:3:2","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":709,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"5729:22:2","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5729:71:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":706,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":697,"src":"5698:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"staticcall","nodeType":"MemberAccess","src":"5698:16:2","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":718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5698:113:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5662:149:2"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":721,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"5830:7:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":722,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":705,"src":"5841:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5841:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3332","id":724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5856:2:2","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"5841:17:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5830:28:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":720,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5822:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5822:37:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":728,"nodeType":"ExpressionStatement","src":"5822:37:2"},{"expression":{"arguments":[{"id":731,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":705,"src":"5888:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":733,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5895:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":732,"name":"uint256","nodeType":"ElementaryTypeName","src":"5895:7:2","typeDescriptions":{}}}],"id":734,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5894:9:2","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":729,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5877:3:2","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":730,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"5877:10:2","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5877:27:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":701,"id":736,"nodeType":"Return","src":"5870:34:2"}]},"documentation":{"id":695,"nodeType":"StructuredDocumentation","src":"5409:173:2","text":"@dev Get the pool's balance of token\n @dev This function is gas optimized to avoid a redundant extcodesize check in addition to the returndatasize\n check"},"id":738,"implemented":true,"kind":"function","modifiers":[],"name":"balance","nodeType":"FunctionDefinition","parameters":{"id":698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":697,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":738,"src":"5605:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":696,"name":"address","nodeType":"ElementaryTypeName","src":"5605:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5604:15:2"},"returnParameters":{"id":701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":700,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":738,"src":"5642:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":699,"name":"uint256","nodeType":"ElementaryTypeName","src":"5642:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5641:9:2"},"scope":3090,"src":"5588:324:2","stateMutability":"view","virtual":false,"visibility":"private"},{"canonicalName":"ElixirPool.SnapshotCache","id":749,"members":[{"constant":false,"id":740,"mutability":"mutable","name":"tickCumulative","nodeType":"VariableDeclaration","scope":749,"src":"5952:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":739,"name":"int56","nodeType":"ElementaryTypeName","src":"5952:5:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":742,"mutability":"mutable","name":"secondsPerLiquidityOutsideX128","nodeType":"VariableDeclaration","scope":749,"src":"5983:38:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":741,"name":"uint160","nodeType":"ElementaryTypeName","src":"5983:7:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":744,"mutability":"mutable","name":"secondsOutside","nodeType":"VariableDeclaration","scope":749,"src":"6032:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":743,"name":"uint32","nodeType":"ElementaryTypeName","src":"6032:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":746,"mutability":"mutable","name":"rewardPerLiquidityOutsideX64","nodeType":"VariableDeclaration","scope":749,"src":"6064:36:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":745,"name":"uint192","nodeType":"ElementaryTypeName","src":"6064:7:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"},{"constant":false,"id":748,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":749,"src":"6111:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":747,"name":"bool","nodeType":"ElementaryTypeName","src":"6111:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"SnapshotCache","nodeType":"StructDefinition","scope":3090,"src":"5920:215:2","visibility":"public"},{"baseFunctions":[3446],"body":{"id":973,"nodeType":"Block","src":"6519:3478:2","statements":[{"expression":{"arguments":[{"id":767,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"6541:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":768,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":754,"src":"6552:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"id":766,"name":"checkTicks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":681,"src":"6530:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$_t_int24_$returns$__$","typeString":"function (int24,int24) pure"}},"id":769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6530:32:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":770,"nodeType":"ExpressionStatement","src":"6530:32:2"},{"assignments":[772],"declarations":[{"constant":false,"id":772,"mutability":"mutable","name":"cacheLower","nodeType":"VariableDeclaration","scope":973,"src":"6575:31:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache"},"typeName":{"id":771,"name":"SnapshotCache","nodeType":"UserDefinedTypeName","referencedDeclaration":749,"src":"6575:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_storage_ptr","typeString":"struct ElixirPool.SnapshotCache"}},"visibility":"internal"}],"id":773,"nodeType":"VariableDeclarationStatement","src":"6575:31:2"},{"assignments":[775],"declarations":[{"constant":false,"id":775,"mutability":"mutable","name":"cacheUpper","nodeType":"VariableDeclaration","scope":973,"src":"6617:31:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache"},"typeName":{"id":774,"name":"SnapshotCache","nodeType":"UserDefinedTypeName","referencedDeclaration":749,"src":"6617:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_storage_ptr","typeString":"struct ElixirPool.SnapshotCache"}},"visibility":"internal"}],"id":776,"nodeType":"VariableDeclarationStatement","src":"6617:31:2"},{"id":853,"nodeType":"Block","src":"6661:1268:2","statements":[{"assignments":[780],"declarations":[{"constant":false,"id":780,"mutability":"mutable","name":"lower","nodeType":"VariableDeclaration","scope":853,"src":"6676:23:2","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"},"typeName":{"id":779,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":6335,"src":"6676:9:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"}},"visibility":"internal"}],"id":784,"initialValue":{"baseExpression":{"id":781,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":541,"src":"6702:5:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":783,"indexExpression":{"id":782,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"6708:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6702:16:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage","typeString":"struct Tick.Info storage ref"}},"nodeType":"VariableDeclarationStatement","src":"6676:42:2"},{"assignments":[788],"declarations":[{"constant":false,"id":788,"mutability":"mutable","name":"upper","nodeType":"VariableDeclaration","scope":853,"src":"6733:23:2","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"},"typeName":{"id":787,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":6335,"src":"6733:9:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"}},"visibility":"internal"}],"id":792,"initialValue":{"baseExpression":{"id":789,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":541,"src":"6759:5:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":791,"indexExpression":{"id":790,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":754,"src":"6765:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6759:16:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage","typeString":"struct Tick.Info storage ref"}},"nodeType":"VariableDeclarationStatement","src":"6733:42:2"},{"expression":{"id":816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":793,"name":"cacheLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"6809:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":795,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tickCumulative","nodeType":"MemberAccess","referencedDeclaration":740,"src":"6809:25:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"expression":{"id":796,"name":"cacheLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"6853:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":797,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"secondsPerLiquidityOutsideX128","nodeType":"MemberAccess","referencedDeclaration":742,"src":"6853:41:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":798,"name":"cacheLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"6913:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":799,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"secondsOutside","nodeType":"MemberAccess","referencedDeclaration":744,"src":"6913:25:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":800,"name":"cacheLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"6957:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":801,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"rewardPerLiquidityOutsideX64","nodeType":"MemberAccess","referencedDeclaration":746,"src":"6957:39:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},{"expression":{"id":802,"name":"cacheLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"7015:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":803,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"initialized","nodeType":"MemberAccess","referencedDeclaration":748,"src":"7015:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":804,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6790:262:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int56_$_t_uint160_$_t_uint32_$_t_uint192_$_t_bool_$","typeString":"tuple(int56,uint160,uint32,uint192,bool)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"expression":{"id":805,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":780,"src":"7074:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":806,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickCumulativeOutside","nodeType":"MemberAccess","referencedDeclaration":6326,"src":"7074:27:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"expression":{"id":807,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":780,"src":"7120:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":808,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsPerLiquidityOutsideX128","nodeType":"MemberAccess","referencedDeclaration":6328,"src":"7120:36:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":809,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":780,"src":"7175:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":810,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsOutside","nodeType":"MemberAccess","referencedDeclaration":6330,"src":"7175:20:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":811,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":780,"src":"7214:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":812,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityOutsideX64","nodeType":"MemberAccess","referencedDeclaration":6334,"src":"7214:34:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},{"expression":{"id":813,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":780,"src":"7267:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":814,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialized","nodeType":"MemberAccess","referencedDeclaration":6332,"src":"7267:17:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":815,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7055:244:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int56_$_t_uint160_$_t_uint32_$_t_uint192_$_t_bool_$","typeString":"tuple(int56,uint160,uint32,uint192,bool)"}},"src":"6790:509:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":817,"nodeType":"ExpressionStatement","src":"6790:509:2"},{"expression":{"arguments":[{"expression":{"id":819,"name":"cacheLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"7322:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":820,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialized","nodeType":"MemberAccess","referencedDeclaration":748,"src":"7322:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":818,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7314:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7314:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":822,"nodeType":"ExpressionStatement","src":"7314:31:2"},{"expression":{"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":823,"name":"cacheUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"7381:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":825,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tickCumulative","nodeType":"MemberAccess","referencedDeclaration":740,"src":"7381:25:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"expression":{"id":826,"name":"cacheUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"7425:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":827,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"secondsPerLiquidityOutsideX128","nodeType":"MemberAccess","referencedDeclaration":742,"src":"7425:41:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":828,"name":"cacheUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"7485:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":829,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"secondsOutside","nodeType":"MemberAccess","referencedDeclaration":744,"src":"7485:25:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":830,"name":"cacheUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"7529:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":831,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"rewardPerLiquidityOutsideX64","nodeType":"MemberAccess","referencedDeclaration":746,"src":"7529:39:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},{"expression":{"id":832,"name":"cacheUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"7587:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":833,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"initialized","nodeType":"MemberAccess","referencedDeclaration":748,"src":"7587:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":834,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7362:262:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int56_$_t_uint160_$_t_uint32_$_t_uint192_$_t_bool_$","typeString":"tuple(int56,uint160,uint32,uint192,bool)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"expression":{"id":835,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"7646:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":836,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickCumulativeOutside","nodeType":"MemberAccess","referencedDeclaration":6326,"src":"7646:27:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"expression":{"id":837,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"7692:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":838,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsPerLiquidityOutsideX128","nodeType":"MemberAccess","referencedDeclaration":6328,"src":"7692:36:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":839,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"7747:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":840,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsOutside","nodeType":"MemberAccess","referencedDeclaration":6330,"src":"7747:20:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":841,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"7786:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":842,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityOutsideX64","nodeType":"MemberAccess","referencedDeclaration":6334,"src":"7786:34:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},{"expression":{"id":843,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"7839:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":844,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialized","nodeType":"MemberAccess","referencedDeclaration":6332,"src":"7839:17:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":845,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7627:244:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int56_$_t_uint160_$_t_uint32_$_t_uint192_$_t_bool_$","typeString":"tuple(int56,uint160,uint32,uint192,bool)"}},"src":"7362:509:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":847,"nodeType":"ExpressionStatement","src":"7362:509:2"},{"expression":{"arguments":[{"expression":{"id":849,"name":"cacheUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"7894:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":850,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialized","nodeType":"MemberAccess","referencedDeclaration":748,"src":"7894:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":848,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7886:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7886:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":852,"nodeType":"ExpressionStatement","src":"7886:31:2"}]},{"assignments":[855],"declarations":[{"constant":false,"id":855,"mutability":"mutable","name":"_slot0","nodeType":"VariableDeclaration","scope":973,"src":"7941:19:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0"},"typeName":{"id":854,"name":"Slot0","nodeType":"UserDefinedTypeName","referencedDeclaration":501,"src":"7941:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage_ptr","typeString":"struct ElixirPool.Slot0"}},"visibility":"internal"}],"id":857,"initialValue":{"id":856,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"7963:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"nodeType":"VariableDeclarationStatement","src":"7941:27:2"},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":858,"name":"_slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":855,"src":"7985:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":859,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":490,"src":"7985:11:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":860,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"7999:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"7985:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":885,"name":"_slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":855,"src":"8417:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":886,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":490,"src":"8417:11:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":887,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":754,"src":"8431:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"8417:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":970,"nodeType":"Block","src":"9593:397:2","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":948,"name":"cacheUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"9634:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":949,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickCumulative","nodeType":"MemberAccess","referencedDeclaration":740,"src":"9634:25:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":950,"name":"cacheLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"9662:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":951,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickCumulative","nodeType":"MemberAccess","referencedDeclaration":740,"src":"9662:25:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"9634:53:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":953,"name":"cacheUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"9706:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":954,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsPerLiquidityOutsideX128","nodeType":"MemberAccess","referencedDeclaration":742,"src":"9706:41:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":955,"name":"cacheLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"9750:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":956,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsPerLiquidityOutsideX128","nodeType":"MemberAccess","referencedDeclaration":742,"src":"9750:41:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"9706:85:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":958,"name":"cacheUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"9810:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsOutside","nodeType":"MemberAccess","referencedDeclaration":744,"src":"9810:25:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":960,"name":"cacheLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"9838:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":961,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsOutside","nodeType":"MemberAccess","referencedDeclaration":744,"src":"9838:25:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9810:53:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":963,"name":"cacheUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"9882:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":964,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityOutsideX64","nodeType":"MemberAccess","referencedDeclaration":746,"src":"9882:39:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":965,"name":"cacheLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"9924:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":966,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityOutsideX64","nodeType":"MemberAccess","referencedDeclaration":746,"src":"9924:39:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"9882:81:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":968,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9615:363:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int56_$_t_uint160_$_t_uint32_$_t_uint192_$","typeString":"tuple(int56,uint160,uint32,uint192)"}},"functionReturnParameters":765,"id":969,"nodeType":"Return","src":"9608:370:2"}]},"id":971,"nodeType":"IfStatement","src":"8413:1577:2","trueBody":{"id":947,"nodeType":"Block","src":"8442:1145:2","statements":[{"assignments":[890],"declarations":[{"constant":false,"id":890,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":947,"src":"8457:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":889,"name":"uint32","nodeType":"ElementaryTypeName","src":"8457:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":893,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":891,"name":"_blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":694,"src":"8471:15:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8471:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"8457:31:2"},{"assignments":[895,897,899],"declarations":[{"constant":false,"id":895,"mutability":"mutable","name":"tickCumulative","nodeType":"VariableDeclaration","scope":947,"src":"8522:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":894,"name":"int56","nodeType":"ElementaryTypeName","src":"8522:5:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":897,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128","nodeType":"VariableDeclaration","scope":947,"src":"8561:41:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":896,"name":"uint160","nodeType":"ElementaryTypeName","src":"8561:7:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":899,"mutability":"mutable","name":"rewardPerLiquidityCumulativeX64","nodeType":"VariableDeclaration","scope":947,"src":"8621:39:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":898,"name":"uint192","nodeType":"ElementaryTypeName","src":"8621:7:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"id":916,"initialValue":{"arguments":[{"id":902,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":890,"src":"8723:4:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"30","id":903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8746:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":904,"name":"_slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":855,"src":"8766:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":905,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":490,"src":"8766:11:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":906,"name":"_slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":855,"src":"8796:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":907,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"observationIndex","nodeType":"MemberAccess","referencedDeclaration":492,"src":"8796:23:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":908,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":535,"src":"8838:9:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":909,"name":"rewardSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"8866:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_RewardSlot_$510_storage","typeString":"struct ElixirPool.RewardSlot storage ref"}},"id":910,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerSecondX48","nodeType":"MemberAccess","referencedDeclaration":507,"src":"8866:29:2","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},{"expression":{"id":911,"name":"rewardSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"8914:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_RewardSlot_$510_storage","typeString":"struct ElixirPool.RewardSlot storage ref"}},"id":912,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardRateEffectiveUntil","nodeType":"MemberAccess","referencedDeclaration":509,"src":"8914:35:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":913,"name":"_slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":855,"src":"8968:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":914,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"observationCardinality","nodeType":"MemberAccess","referencedDeclaration":494,"src":"8968:29:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint144","typeString":"uint144"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":900,"name":"observations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"8678:12:2","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage","typeString":"struct Oracle.Observation storage ref[65535] storage ref"}},"id":901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observeSingle","nodeType":"MemberAccess","referencedDeclaration":5175,"src":"8678:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$_t_uint32_$_t_uint32_$_t_int24_$_t_uint16_$_t_uint128_$_t_uint144_$_t_uint32_$_t_uint16_$returns$_t_int56_$_t_uint160_$_t_uint192_$bound_to$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$","typeString":"function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32,int24,uint16,uint128,uint144,uint32,uint16) view returns (int56,uint160,uint192)"}},"id":915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8678:334:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int56_$_t_uint160_$_t_uint192_$","typeString":"tuple(int56,uint160,uint192)"}},"nodeType":"VariableDeclarationStatement","src":"8503:509:2"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":917,"name":"tickCumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":895,"src":"9053:14:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":918,"name":"cacheLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"9070:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":919,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickCumulative","nodeType":"MemberAccess","referencedDeclaration":740,"src":"9070:25:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"9053:42:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":921,"name":"cacheUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"9098:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":922,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickCumulative","nodeType":"MemberAccess","referencedDeclaration":740,"src":"9098:25:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"9053:70:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":924,"name":"secondsPerLiquidityCumulativeX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":897,"src":"9142:33:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":925,"name":"cacheLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"9199:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":926,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsPerLiquidityOutsideX128","nodeType":"MemberAccess","referencedDeclaration":742,"src":"9199:41:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"9142:98:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":928,"name":"cacheUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"9264:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":929,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsPerLiquidityOutsideX128","nodeType":"MemberAccess","referencedDeclaration":742,"src":"9264:41:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"9142:163:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":931,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":890,"src":"9324:4:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":932,"name":"cacheLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"9331:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":933,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsOutside","nodeType":"MemberAccess","referencedDeclaration":744,"src":"9331:25:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9324:32:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":935,"name":"cacheUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"9359:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":936,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsOutside","nodeType":"MemberAccess","referencedDeclaration":744,"src":"9359:25:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9324:60:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":938,"name":"rewardPerLiquidityCumulativeX64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":899,"src":"9403:31:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":939,"name":"cacheLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"9458:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":940,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityOutsideX64","nodeType":"MemberAccess","referencedDeclaration":746,"src":"9458:39:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"9403:94:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":942,"name":"cacheUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"9521:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":943,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityOutsideX64","nodeType":"MemberAccess","referencedDeclaration":746,"src":"9521:39:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"9403:157:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":945,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9034:541:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int56_$_t_uint160_$_t_uint32_$_t_uint192_$","typeString":"tuple(int56,uint160,uint32,uint192)"}},"functionReturnParameters":765,"id":946,"nodeType":"Return","src":"9027:548:2"}]}},"id":972,"nodeType":"IfStatement","src":"7981:2009:2","trueBody":{"id":884,"nodeType":"Block","src":"8010:397:2","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":862,"name":"cacheLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"8051:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":863,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickCumulative","nodeType":"MemberAccess","referencedDeclaration":740,"src":"8051:25:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":864,"name":"cacheUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"8079:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":865,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickCumulative","nodeType":"MemberAccess","referencedDeclaration":740,"src":"8079:25:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"8051:53:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":867,"name":"cacheLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"8123:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":868,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsPerLiquidityOutsideX128","nodeType":"MemberAccess","referencedDeclaration":742,"src":"8123:41:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":869,"name":"cacheUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"8167:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":870,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsPerLiquidityOutsideX128","nodeType":"MemberAccess","referencedDeclaration":742,"src":"8167:41:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"8123:85:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":872,"name":"cacheLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"8227:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":873,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsOutside","nodeType":"MemberAccess","referencedDeclaration":744,"src":"8227:25:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":874,"name":"cacheUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"8255:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":875,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsOutside","nodeType":"MemberAccess","referencedDeclaration":744,"src":"8255:25:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"8227:53:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":877,"name":"cacheLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"8299:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":878,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityOutsideX64","nodeType":"MemberAccess","referencedDeclaration":746,"src":"8299:39:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":879,"name":"cacheUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"8341:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_SnapshotCache_$749_memory_ptr","typeString":"struct ElixirPool.SnapshotCache memory"}},"id":880,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityOutsideX64","nodeType":"MemberAccess","referencedDeclaration":746,"src":"8341:39:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"8299:81:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":882,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8032:363:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int56_$_t_uint160_$_t_uint32_$_t_uint192_$","typeString":"tuple(int56,uint160,uint32,uint192)"}},"functionReturnParameters":765,"id":883,"nodeType":"Return","src":"8025:370:2"}]}}]},"documentation":{"id":750,"nodeType":"StructuredDocumentation","src":"6143:39:2","text":"@inheritdoc IElixirPoolDerivedState"},"functionSelector":"a38807f2","id":974,"implemented":true,"kind":"function","modifiers":[],"name":"snapshotCumulativesInside","nodeType":"FunctionDefinition","overrides":{"id":756,"nodeType":"OverrideSpecifier","overrides":[],"src":"6298:8:2"},"parameters":{"id":755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":752,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":974,"src":"6223:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":751,"name":"int24","nodeType":"ElementaryTypeName","src":"6223:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":754,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":974,"src":"6240:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":753,"name":"int24","nodeType":"ElementaryTypeName","src":"6240:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"6222:34:2"},"returnParameters":{"id":765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":758,"mutability":"mutable","name":"tickCumulativeInside","nodeType":"VariableDeclaration","scope":974,"src":"6339:26:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":757,"name":"int56","nodeType":"ElementaryTypeName","src":"6339:5:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":760,"mutability":"mutable","name":"secondsPerLiquidityInsideX128","nodeType":"VariableDeclaration","scope":974,"src":"6380:37:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":759,"name":"uint160","nodeType":"ElementaryTypeName","src":"6380:7:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":762,"mutability":"mutable","name":"secondsInside","nodeType":"VariableDeclaration","scope":974,"src":"6432:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":761,"name":"uint32","nodeType":"ElementaryTypeName","src":"6432:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":764,"mutability":"mutable","name":"rewardPerLiquidityInsideX64","nodeType":"VariableDeclaration","scope":974,"src":"6467:35:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":763,"name":"uint192","nodeType":"ElementaryTypeName","src":"6467:7:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"6324:189:2"},"scope":3090,"src":"6188:3809:2","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3430],"body":{"id":1009,"nodeType":"Block","src":"10357:387:2","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":993,"name":"_blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":694,"src":"10427:15:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10427:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":995,"name":"secondsAgos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":978,"src":"10463:11:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_calldata_ptr","typeString":"uint32[] calldata"}},{"expression":{"id":996,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"10493:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":997,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":490,"src":"10493:10:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":998,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"10522:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":999,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"observationIndex","nodeType":"MemberAccess","referencedDeclaration":492,"src":"10522:22:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":1000,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":535,"src":"10563:9:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":1001,"name":"rewardSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"10591:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_RewardSlot_$510_storage","typeString":"struct ElixirPool.RewardSlot storage ref"}},"id":1002,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerSecondX48","nodeType":"MemberAccess","referencedDeclaration":507,"src":"10591:29:2","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},{"expression":{"id":1003,"name":"rewardSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"10639:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_RewardSlot_$510_storage","typeString":"struct ElixirPool.RewardSlot storage ref"}},"id":1004,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardRateEffectiveUntil","nodeType":"MemberAccess","referencedDeclaration":509,"src":"10639:35:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":1005,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"10693:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":1006,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"observationCardinality","nodeType":"MemberAccess","referencedDeclaration":494,"src":"10693:28:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_array$_t_uint32_$dyn_calldata_ptr","typeString":"uint32[] calldata"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint144","typeString":"uint144"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":991,"name":"observations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"10388:12:2","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage","typeString":"struct Oracle.Observation storage ref[65535] storage ref"}},"id":992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observe","nodeType":"MemberAccess","referencedDeclaration":5282,"src":"10388:20:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$_t_uint32_$_t_array$_t_uint32_$dyn_memory_ptr_$_t_int24_$_t_uint16_$_t_uint128_$_t_uint144_$_t_uint32_$_t_uint16_$returns$_t_array$_t_int56_$dyn_memory_ptr_$_t_array$_t_uint160_$dyn_memory_ptr_$_t_array$_t_uint192_$dyn_memory_ptr_$bound_to$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$","typeString":"function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32[] memory,int24,uint16,uint128,uint144,uint32,uint16) view returns (int56[] memory,uint160[] memory,uint192[] memory)"}},"id":1007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10388:348:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_int56_$dyn_memory_ptr_$_t_array$_t_uint160_$dyn_memory_ptr_$_t_array$_t_uint192_$dyn_memory_ptr_$","typeString":"tuple(int56[] memory,uint160[] memory,uint192[] memory)"}},"functionReturnParameters":990,"id":1008,"nodeType":"Return","src":"10368:368:2"}]},"documentation":{"id":975,"nodeType":"StructuredDocumentation","src":"10005:39:2","text":"@inheritdoc IElixirPoolDerivedState"},"functionSelector":"883bdbfd","id":1010,"implemented":true,"kind":"function","modifiers":[],"name":"observe","nodeType":"FunctionDefinition","overrides":{"id":980,"nodeType":"OverrideSpecifier","overrides":[],"src":"10139:8:2"},"parameters":{"id":979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":978,"mutability":"mutable","name":"secondsAgos","nodeType":"VariableDeclaration","scope":1010,"src":"10067:29:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_calldata_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":976,"name":"uint32","nodeType":"ElementaryTypeName","src":"10067:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":977,"nodeType":"ArrayTypeName","src":"10067:8:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"}],"src":"10066:31:2"},"returnParameters":{"id":990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":983,"mutability":"mutable","name":"tickCumulatives","nodeType":"VariableDeclaration","scope":1010,"src":"10180:30:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[]"},"typeName":{"baseType":{"id":981,"name":"int56","nodeType":"ElementaryTypeName","src":"10180:5:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":982,"nodeType":"ArrayTypeName","src":"10180:7:2","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_storage_ptr","typeString":"int56[]"}},"visibility":"internal"},{"constant":false,"id":986,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128s","nodeType":"VariableDeclaration","scope":1010,"src":"10225:51:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[]"},"typeName":{"baseType":{"id":984,"name":"uint160","nodeType":"ElementaryTypeName","src":"10225:7:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":985,"nodeType":"ArrayTypeName","src":"10225:9:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"},{"constant":false,"id":989,"mutability":"mutable","name":"rewardPerLiquidityCumulativeX64s","nodeType":"VariableDeclaration","scope":1010,"src":"10291:49:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$dyn_memory_ptr","typeString":"uint192[]"},"typeName":{"baseType":{"id":987,"name":"uint192","nodeType":"ElementaryTypeName","src":"10291:7:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"id":988,"nodeType":"ArrayTypeName","src":"10291:9:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$dyn_storage_ptr","typeString":"uint192[]"}},"visibility":"internal"}],"src":"10165:186:2"},"scope":3090,"src":"10050:694:2","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3410],"body":{"id":1047,"nodeType":"Block","src":"10926:538:2","statements":[{"assignments":[1020],"declarations":[{"constant":false,"id":1020,"mutability":"mutable","name":"observationCardinalityNextOld","nodeType":"VariableDeclaration","scope":1047,"src":"10937:36:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1019,"name":"uint16","nodeType":"ElementaryTypeName","src":"10937:6:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":1023,"initialValue":{"expression":{"id":1021,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"10976:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":1022,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"observationCardinalityNext","nodeType":"MemberAccess","referencedDeclaration":496,"src":"10976:32:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"VariableDeclarationStatement","src":"10937:71:2"},{"assignments":[1025],"declarations":[{"constant":false,"id":1025,"mutability":"mutable","name":"observationCardinalityNextNew","nodeType":"VariableDeclaration","scope":1047,"src":"11036:36:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1024,"name":"uint16","nodeType":"ElementaryTypeName","src":"11036:6:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":1031,"initialValue":{"arguments":[{"id":1028,"name":"observationCardinalityNextOld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1020,"src":"11107:29:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":1029,"name":"observationCardinalityNext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1013,"src":"11151:26:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":1026,"name":"observations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"11075:12:2","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage","typeString":"struct Oracle.Observation storage ref[65535] storage ref"}},"id":1027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"grow","nodeType":"MemberAccess","referencedDeclaration":4717,"src":"11075:17:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$_t_uint16_$_t_uint16_$returns$_t_uint16_$bound_to$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$","typeString":"function (struct Oracle.Observation storage ref[65535] storage pointer,uint16,uint16) returns (uint16)"}},"id":1030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11075:113:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"VariableDeclarationStatement","src":"11036:152:2"},{"expression":{"id":1036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1032,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"11199:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":1034,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"observationCardinalityNext","nodeType":"MemberAccess","referencedDeclaration":496,"src":"11199:32:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1035,"name":"observationCardinalityNextNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"11234:29:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"11199:64:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":1037,"nodeType":"ExpressionStatement","src":"11199:64:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":1040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1038,"name":"observationCardinalityNextOld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1020,"src":"11278:29:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1039,"name":"observationCardinalityNextNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"11311:29:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"11278:62:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"11274:182:2","trueBody":{"eventCall":{"arguments":[{"id":1042,"name":"observationCardinalityNextOld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1020,"src":"11395:29:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":1043,"name":"observationCardinalityNextNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"11426:29:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":1041,"name":"IncreaseObservationCardinalityNext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3543,"src":"11360:34:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint16_$_t_uint16_$returns$__$","typeString":"function (uint16,uint16)"}},"id":1044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11360:96:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1045,"nodeType":"EmitStatement","src":"11355:101:2"}}]},"documentation":{"id":1011,"nodeType":"StructuredDocumentation","src":"10752:34:2","text":"@inheritdoc IElixirPoolActions"},"functionSelector":"32148f67","id":1048,"implemented":true,"kind":"function","modifiers":[{"id":1017,"modifierName":{"id":1016,"name":"lock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":582,"src":"10916:4:2","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"10916:4:2"}],"name":"increaseObservationCardinalityNext","nodeType":"FunctionDefinition","overrides":{"id":1015,"nodeType":"OverrideSpecifier","overrides":[],"src":"10898:8:2"},"parameters":{"id":1014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1013,"mutability":"mutable","name":"observationCardinalityNext","nodeType":"VariableDeclaration","scope":1048,"src":"10836:33:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1012,"name":"uint16","nodeType":"ElementaryTypeName","src":"10836:6:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"10835:35:2"},"returnParameters":{"id":1018,"nodeType":"ParameterList","parameters":[],"src":"10926:0:2"},"scope":3090,"src":"10792:672:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3324],"body":{"id":1097,"nodeType":"Block","src":"11629:579:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":1059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1056,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"11648:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":1057,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":488,"src":"11648:18:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11670:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11648:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4149","id":1060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11673:4:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_78dda996de494b599fdb66c8365826df9b80d101d1cea931b5fa3753fca7ab85","typeString":"literal_string \"AI\""},"value":"AI"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_78dda996de494b599fdb66c8365826df9b80d101d1cea931b5fa3753fca7ab85","typeString":"literal_string \"AI\""}],"id":1055,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11640:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11640:38:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1062,"nodeType":"ExpressionStatement","src":"11640:38:2"},{"assignments":[1064],"declarations":[{"constant":false,"id":1064,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":1097,"src":"11691:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1063,"name":"int24","nodeType":"ElementaryTypeName","src":"11691:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":1069,"initialValue":{"arguments":[{"id":1067,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1051,"src":"11732:12:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":1065,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"11704:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":1066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getTickAtSqrtRatio","nodeType":"MemberAccess","referencedDeclaration":7566,"src":"11704:27:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_int24_$","typeString":"function (uint160) pure returns (int24)"}},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11704:41:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"11691:54:2"},{"assignments":[1071,1073],"declarations":[{"constant":false,"id":1071,"mutability":"mutable","name":"cardinality","nodeType":"VariableDeclaration","scope":1097,"src":"11759:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1070,"name":"uint16","nodeType":"ElementaryTypeName","src":"11759:6:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":1073,"mutability":"mutable","name":"cardinalityNext","nodeType":"VariableDeclaration","scope":1097,"src":"11779:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1072,"name":"uint16","nodeType":"ElementaryTypeName","src":"11779:6:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":1079,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1076,"name":"_blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":694,"src":"11829:15:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11829:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":1074,"name":"observations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"11805:12:2","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage","typeString":"struct Oracle.Observation storage ref[65535] storage ref"}},"id":1075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":4582,"src":"11805:23:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$_t_uint32_$returns$_t_uint16_$_t_uint16_$bound_to$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$","typeString":"function (struct Oracle.Observation storage ref[65535] storage pointer,uint32) returns (uint16,uint16)"}},"id":1078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11805:42:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint16_$","typeString":"tuple(uint16,uint16)"}},"nodeType":"VariableDeclarationStatement","src":"11758:89:2"},{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1080,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"11860:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1082,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1051,"src":"11903:12:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":1083,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1064,"src":"11936:4:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"hexValue":"30","id":1084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11973:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":1085,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1071,"src":"12013:11:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":1086,"name":"cardinalityNext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1073,"src":"12067:15:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"hexValue":"30","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12110:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"74727565","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12136:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1081,"name":"Slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"11868:5:2","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Slot0_$501_storage_ptr_$","typeString":"type(struct ElixirPool.Slot0 storage pointer)"}},"id":1089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["sqrtPriceX96","tick","observationIndex","observationCardinality","observationCardinalityNext","feeProtocol","unlocked"],"nodeType":"FunctionCall","src":"11868:284:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"src":"11860:292:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":1091,"nodeType":"ExpressionStatement","src":"11860:292:2"},{"eventCall":{"arguments":[{"id":1093,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1051,"src":"12181:12:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":1094,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1064,"src":"12195:4:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int24","typeString":"int24"}],"id":1092,"name":"Initialize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3457,"src":"12170:10:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint160_$_t_int24_$returns$__$","typeString":"function (uint160,int24)"}},"id":1095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12170:30:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1096,"nodeType":"EmitStatement","src":"12165:35:2"}]},"documentation":{"id":1049,"nodeType":"StructuredDocumentation","src":"11472:91:2","text":"@inheritdoc IElixirPoolActions\n @dev not locked because it initializes unlocked"},"functionSelector":"f637731d","id":1098,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","overrides":{"id":1053,"nodeType":"OverrideSpecifier","overrides":[],"src":"11620:8:2"},"parameters":{"id":1052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1051,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":1098,"src":"11589:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1050,"name":"uint160","nodeType":"ElementaryTypeName","src":"11589:7:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"11588:22:2"},"returnParameters":{"id":1054,"nodeType":"ParameterList","parameters":[],"src":"11629:0:2"},"scope":3090,"src":"11569:639:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"ElixirPool.ModifyPositionParams","id":1107,"members":[{"constant":false,"id":1100,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1107,"src":"12302:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1099,"name":"address","nodeType":"ElementaryTypeName","src":"12302:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1102,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":1107,"src":"12379:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1101,"name":"int24","nodeType":"ElementaryTypeName","src":"12379:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1104,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":1107,"src":"12405:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1103,"name":"int24","nodeType":"ElementaryTypeName","src":"12405:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1106,"mutability":"mutable","name":"liquidityDelta","nodeType":"VariableDeclaration","scope":1107,"src":"12467:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":1105,"name":"int128","nodeType":"ElementaryTypeName","src":"12467:6:2","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"name":"ModifyPositionParams","nodeType":"StructDefinition","scope":3090,"src":"12216:280:2","visibility":"public"},{"body":{"id":1271,"nodeType":"Block","src":"13189:2750:2","statements":[{"expression":{"arguments":[{"expression":{"id":1120,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"13211:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}},"id":1121,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":1102,"src":"13211:16:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":1122,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"13229:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}},"id":1123,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":1104,"src":"13229:16:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"id":1119,"name":"checkTicks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":681,"src":"13200:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$_t_int24_$returns$__$","typeString":"function (int24,int24) pure"}},"id":1124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13200:46:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1125,"nodeType":"ExpressionStatement","src":"13200:46:2"},{"assignments":[1127],"declarations":[{"constant":false,"id":1127,"mutability":"mutable","name":"_slot0","nodeType":"VariableDeclaration","scope":1271,"src":"13259:19:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0"},"typeName":{"id":1126,"name":"Slot0","nodeType":"UserDefinedTypeName","referencedDeclaration":501,"src":"13259:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage_ptr","typeString":"struct ElixirPool.Slot0"}},"visibility":"internal"}],"id":1129,"initialValue":{"id":1128,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"13281:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"nodeType":"VariableDeclarationStatement","src":"13259:27:2"},{"expression":{"id":1143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1130,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1113,"src":"13329:8:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":1132,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"13370:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}},"id":1133,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":1100,"src":"13370:12:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1134,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"13397:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}},"id":1135,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":1102,"src":"13397:16:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":1136,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"13428:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}},"id":1137,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":1104,"src":"13428:16:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":1138,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"13459:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}},"id":1139,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityDelta","nodeType":"MemberAccess","referencedDeclaration":1106,"src":"13459:21:2","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"expression":{"id":1140,"name":"_slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1127,"src":"13495:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":1141,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":490,"src":"13495:11:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_int24","typeString":"int24"}],"id":1131,"name":"_updatePosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1451,"src":"13340:15:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_int24_$_t_int24_$_t_int128_$_t_int24_$returns$_t_struct$_Info_$5300_storage_ptr_$","typeString":"function (address,int24,int24,int128,int24) returns (struct Position.Info storage pointer)"}},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13340:177:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"src":"13329:188:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"id":1144,"nodeType":"ExpressionStatement","src":"13329:188:2"},{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":1148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1145,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"13534:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}},"id":1146,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityDelta","nodeType":"MemberAccess","referencedDeclaration":1106,"src":"13534:21:2","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13559:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13534:26:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1270,"nodeType":"IfStatement","src":"13530:2402:2","trueBody":{"id":1269,"nodeType":"Block","src":"13562:2370:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1149,"name":"_slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1127,"src":"13581:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":1150,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":490,"src":"13581:11:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1151,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"13595:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}},"id":1152,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":1102,"src":"13595:16:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"13581:30:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1173,"name":"_slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1127,"src":"14127:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":1174,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":490,"src":"14127:11:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1175,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"14141:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}},"id":1176,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":1104,"src":"14141:16:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"14127:30:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1266,"nodeType":"Block","src":"15417:504:2","statements":[{"expression":{"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1248,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"15667:7:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":1253,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"15757:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}},"id":1254,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":1102,"src":"15757:16:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":1251,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"15729:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":1252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":7427,"src":"15729:27:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15729:45:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"expression":{"id":1258,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"15825:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}},"id":1259,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":1104,"src":"15825:16:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":1256,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"15797:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":1257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":7427,"src":"15797:27:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":1260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15797:45:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":1261,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"15865:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}},"id":1262,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityDelta","nodeType":"MemberAccess","referencedDeclaration":1106,"src":"15865:21:2","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":1249,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"15677:13:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":6041,"src":"15677:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$","typeString":"function (uint160,uint160,int128) pure returns (int256)"}},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15677:228:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"15667:238:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1265,"nodeType":"ExpressionStatement","src":"15667:238:2"}]},"id":1267,"nodeType":"IfStatement","src":"14123:1798:2","trueBody":{"id":1247,"nodeType":"Block","src":"14159:1252:2","statements":[{"assignments":[1179],"declarations":[{"constant":false,"id":1179,"mutability":"mutable","name":"liquidityBefore","nodeType":"VariableDeclaration","scope":1247,"src":"14238:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1178,"name":"uint128","nodeType":"ElementaryTypeName","src":"14238:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":1181,"initialValue":{"id":1180,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":535,"src":"14264:9:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"14238:35:2"},{"expression":{"id":1206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":1182,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"14367:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":1184,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"observationIndex","nodeType":"MemberAccess","referencedDeclaration":492,"src":"14367:22:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"id":1185,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"14391:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":1186,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"observationCardinality","nodeType":"MemberAccess","referencedDeclaration":494,"src":"14391:28:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":1187,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"14366:54:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint16_$","typeString":"tuple(uint16,uint16)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":1190,"name":"_slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1127,"src":"14464:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":1191,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"observationIndex","nodeType":"MemberAccess","referencedDeclaration":492,"src":"14464:23:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1192,"name":"_blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":694,"src":"14510:15:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":1193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14510:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":1194,"name":"_slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1127,"src":"14550:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":1195,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":490,"src":"14550:11:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1196,"name":"liquidityBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1179,"src":"14584:15:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":1197,"name":"rewardSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14622:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_RewardSlot_$510_storage","typeString":"struct ElixirPool.RewardSlot storage ref"}},"id":1198,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerSecondX48","nodeType":"MemberAccess","referencedDeclaration":507,"src":"14622:29:2","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},{"expression":{"id":1199,"name":"rewardSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14674:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_RewardSlot_$510_storage","typeString":"struct ElixirPool.RewardSlot storage ref"}},"id":1200,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardRateEffectiveUntil","nodeType":"MemberAccess","referencedDeclaration":509,"src":"14674:35:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":1201,"name":"_slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1127,"src":"14732:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":1202,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"observationCardinality","nodeType":"MemberAccess","referencedDeclaration":494,"src":"14732:29:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"id":1203,"name":"_slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1127,"src":"14784:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":1204,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"observationCardinalityNext","nodeType":"MemberAccess","referencedDeclaration":496,"src":"14784:33:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint144","typeString":"uint144"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":1188,"name":"observations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"14423:12:2","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage","typeString":"struct Oracle.Observation storage ref[65535] storage ref"}},"id":1189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"write","nodeType":"MemberAccess","referencedDeclaration":4669,"src":"14423:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$_t_uint16_$_t_uint32_$_t_int24_$_t_uint128_$_t_uint144_$_t_uint32_$_t_uint16_$_t_uint16_$returns$_t_uint16_$_t_uint16_$bound_to$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$","typeString":"function (struct Oracle.Observation storage ref[65535] storage pointer,uint16,uint32,int24,uint128,uint144,uint32,uint16,uint16) returns (uint16,uint16)"}},"id":1205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14423:413:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint16_$","typeString":"tuple(uint16,uint16)"}},"src":"14366:470:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1207,"nodeType":"ExpressionStatement","src":"14366:470:2"},{"expression":{"id":1221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1208,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1115,"src":"14857:7:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":1211,"name":"_slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1127,"src":"14919:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":1212,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":488,"src":"14919:19:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"expression":{"id":1215,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"14989:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}},"id":1216,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":1104,"src":"14989:16:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":1213,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"14961:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":1214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":7427,"src":"14961:27:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":1217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14961:45:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":1218,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"15029:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}},"id":1219,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityDelta","nodeType":"MemberAccess","referencedDeclaration":1106,"src":"15029:21:2","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":1209,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"14867:13:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":1210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":5999,"src":"14867:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$","typeString":"function (uint160,uint160,int128) pure returns (int256)"}},"id":1220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14867:202:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14857:212:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1222,"nodeType":"ExpressionStatement","src":"14857:212:2"},{"expression":{"id":1236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1223,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"15088:7:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":1228,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"15178:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}},"id":1229,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":1102,"src":"15178:16:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":1226,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"15150:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":7427,"src":"15150:27:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":1230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15150:45:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":1231,"name":"_slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1127,"src":"15218:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":1232,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":488,"src":"15218:19:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":1233,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"15260:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}},"id":1234,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityDelta","nodeType":"MemberAccess","referencedDeclaration":1106,"src":"15260:21:2","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":1224,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"15098:13:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":1225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":6041,"src":"15098:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$","typeString":"function (uint160,uint160,int128) pure returns (int256)"}},"id":1235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15098:202:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"15088:212:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1237,"nodeType":"ExpressionStatement","src":"15088:212:2"},{"expression":{"id":1245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1238,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":535,"src":"15321:9:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1241,"name":"liquidityBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1179,"src":"15356:15:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":1242,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"15373:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}},"id":1243,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityDelta","nodeType":"MemberAccess","referencedDeclaration":1106,"src":"15373:21:2","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":1239,"name":"LiquidityMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4300,"src":"15333:13:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityMath_$4300_$","typeString":"type(library LiquidityMath)"}},"id":1240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"addDelta","nodeType":"MemberAccess","referencedDeclaration":4299,"src":"15333:22:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint128_$_t_int128_$returns$_t_uint128_$","typeString":"function (uint128,int128) pure returns (uint128)"}},"id":1244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15333:62:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"15321:74:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":1246,"nodeType":"ExpressionStatement","src":"15321:74:2"}]}},"id":1268,"nodeType":"IfStatement","src":"13577:2344:2","trueBody":{"id":1172,"nodeType":"Block","src":"13613:504:2","statements":[{"expression":{"id":1170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1154,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1115,"src":"13863:7:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":1159,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"13953:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}},"id":1160,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":1102,"src":"13953:16:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":1157,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"13925:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":1158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":7427,"src":"13925:27:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":1161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13925:45:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"expression":{"id":1164,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"14021:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}},"id":1165,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":1104,"src":"14021:16:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":1162,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"13993:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":1163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":7427,"src":"13993:27:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":1166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13993:45:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":1167,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"14061:6:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}},"id":1168,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityDelta","nodeType":"MemberAccess","referencedDeclaration":1106,"src":"14061:21:2","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":1155,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"13873:13:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":1156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":5999,"src":"13873:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$","typeString":"function (uint160,uint160,int128) pure returns (int256)"}},"id":1169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13873:228:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13863:238:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1171,"nodeType":"ExpressionStatement","src":"13863:238:2"}]}}]}}]},"documentation":{"id":1108,"nodeType":"StructuredDocumentation","src":"12504:464:2","text":"@dev Effect some changes to a position\n @param params the position details and the change to the position's liquidity to effect\n @return position a storage pointer referencing the position with the given owner and tick range\n @return amount0 the amount of token0 owed to the pool, negative if the pool should pay the recipient\n @return amount1 the amount of token1 owed to the pool, negative if the pool should pay the recipient"},"id":1272,"implemented":true,"kind":"function","modifiers":[],"name":"_modifyPosition","nodeType":"FunctionDefinition","parameters":{"id":1111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1110,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":1272,"src":"12999:34:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams"},"typeName":{"id":1109,"name":"ModifyPositionParams","nodeType":"UserDefinedTypeName","referencedDeclaration":1107,"src":"12999:20:2","typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_storage_ptr","typeString":"struct ElixirPool.ModifyPositionParams"}},"visibility":"internal"}],"src":"12998:36:2"},"returnParameters":{"id":1118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1113,"mutability":"mutable","name":"position","nodeType":"VariableDeclaration","scope":1272,"src":"13084:30:2","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info"},"typeName":{"id":1112,"name":"Position.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":5300,"src":"13084:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info"}},"visibility":"internal"},{"constant":false,"id":1115,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":1272,"src":"13129:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1114,"name":"int256","nodeType":"ElementaryTypeName","src":"13129:6:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1117,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":1272,"src":"13158:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1116,"name":"int256","nodeType":"ElementaryTypeName","src":"13158:6:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"13069:114:2"},"scope":3090,"src":"12974:2965:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1450,"nodeType":"Block","src":"16480:2884:2","statements":[{"expression":{"id":1295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1288,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1286,"src":"16491:8:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1291,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"16516:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1292,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"16523:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1293,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1279,"src":"16534:9:2","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":1289,"name":"positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":553,"src":"16502:9:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Info_$5300_storage_$","typeString":"mapping(bytes32 => struct Position.Info storage ref)"}},"id":1290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"get","nodeType":"MemberAccess","referencedDeclaration":5330,"src":"16502:13:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_mapping$_t_bytes32_$_t_struct$_Info_$5300_storage_$_$_t_address_$_t_int24_$_t_int24_$returns$_t_struct$_Info_$5300_storage_ptr_$bound_to$_t_mapping$_t_bytes32_$_t_struct$_Info_$5300_storage_$_$","typeString":"function (mapping(bytes32 => struct Position.Info storage ref),address,int24,int24) view returns (struct Position.Info storage pointer)"}},"id":1294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16502:42:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"src":"16491:53:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"id":1296,"nodeType":"ExpressionStatement","src":"16491:53:2"},{"assignments":[1298],"declarations":[{"constant":false,"id":1298,"mutability":"mutable","name":"_feeGrowthGlobal0X128","nodeType":"VariableDeclaration","scope":1450,"src":"16557:29:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1297,"name":"uint256","nodeType":"ElementaryTypeName","src":"16557:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1300,"initialValue":{"id":1299,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"16589:20:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16557:52:2"},{"assignments":[1302],"declarations":[{"constant":false,"id":1302,"mutability":"mutable","name":"_feeGrowthGlobal1X128","nodeType":"VariableDeclaration","scope":1450,"src":"16650:29:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1301,"name":"uint256","nodeType":"ElementaryTypeName","src":"16650:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1304,"initialValue":{"id":1303,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"16682:20:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16650:52:2"},{"assignments":[1306],"declarations":[{"constant":false,"id":1306,"mutability":"mutable","name":"flippedLower","nodeType":"VariableDeclaration","scope":1450,"src":"16795:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1305,"name":"bool","nodeType":"ElementaryTypeName","src":"16795:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1307,"nodeType":"VariableDeclarationStatement","src":"16795:17:2"},{"assignments":[1309],"declarations":[{"constant":false,"id":1309,"mutability":"mutable","name":"flippedUpper","nodeType":"VariableDeclaration","scope":1450,"src":"16823:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1308,"name":"bool","nodeType":"ElementaryTypeName","src":"16823:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1310,"nodeType":"VariableDeclarationStatement","src":"16823:17:2"},{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":1313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1311,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1281,"src":"16855:14:2","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16873:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16855:19:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1405,"nodeType":"IfStatement","src":"16851:1885:2","trueBody":{"id":1404,"nodeType":"Block","src":"16876:1860:2","statements":[{"assignments":[1315],"declarations":[{"constant":false,"id":1315,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":1404,"src":"16891:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1314,"name":"uint32","nodeType":"ElementaryTypeName","src":"16891:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":1318,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1316,"name":"_blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":694,"src":"16905:15:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":1317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16905:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"16891:31:2"},{"assignments":[1320,1322,1324],"declarations":[{"constant":false,"id":1320,"mutability":"mutable","name":"tickCumulative","nodeType":"VariableDeclaration","scope":1404,"src":"16956:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":1319,"name":"int56","nodeType":"ElementaryTypeName","src":"16956:5:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":1322,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128","nodeType":"VariableDeclaration","scope":1404,"src":"16995:41:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1321,"name":"uint160","nodeType":"ElementaryTypeName","src":"16995:7:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":1324,"mutability":"mutable","name":"rewardPerLiquidityCumulativeX64","nodeType":"VariableDeclaration","scope":1404,"src":"17055:39:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":1323,"name":"uint192","nodeType":"ElementaryTypeName","src":"17055:7:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"id":1341,"initialValue":{"arguments":[{"id":1327,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1315,"src":"17157:4:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"30","id":1328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17180:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":1329,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"17200:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":1330,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":490,"src":"17200:10:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":1331,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"17229:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":1332,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"observationIndex","nodeType":"MemberAccess","referencedDeclaration":492,"src":"17229:22:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":1333,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":535,"src":"17270:9:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":1334,"name":"rewardSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"17298:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_RewardSlot_$510_storage","typeString":"struct ElixirPool.RewardSlot storage ref"}},"id":1335,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerSecondX48","nodeType":"MemberAccess","referencedDeclaration":507,"src":"17298:29:2","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},{"expression":{"id":1336,"name":"rewardSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"17346:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_RewardSlot_$510_storage","typeString":"struct ElixirPool.RewardSlot storage ref"}},"id":1337,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardRateEffectiveUntil","nodeType":"MemberAccess","referencedDeclaration":509,"src":"17346:35:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":1338,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"17400:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":1339,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"observationCardinality","nodeType":"MemberAccess","referencedDeclaration":494,"src":"17400:28:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint144","typeString":"uint144"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":1325,"name":"observations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"17112:12:2","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage","typeString":"struct Oracle.Observation storage ref[65535] storage ref"}},"id":1326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observeSingle","nodeType":"MemberAccess","referencedDeclaration":5175,"src":"17112:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$_t_uint32_$_t_uint32_$_t_int24_$_t_uint16_$_t_uint128_$_t_uint144_$_t_uint32_$_t_uint16_$returns$_t_int56_$_t_uint160_$_t_uint192_$bound_to$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$","typeString":"function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32,int24,uint16,uint128,uint144,uint32,uint16) view returns (int56,uint160,uint192)"}},"id":1340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17112:331:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int56_$_t_uint160_$_t_uint192_$","typeString":"tuple(int56,uint160,uint192)"}},"nodeType":"VariableDeclarationStatement","src":"16937:506:2"},{"assignments":[1343],"declarations":[{"constant":false,"id":1343,"mutability":"mutable","name":"_maxLiquidityPerTick","nodeType":"VariableDeclaration","scope":1404,"src":"17460:28:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1342,"name":"uint128","nodeType":"ElementaryTypeName","src":"17460:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":1345,"initialValue":{"id":1344,"name":"maxLiquidityPerTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":486,"src":"17491:19:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"17460:50:2"},{"expression":{"id":1361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1346,"name":"flippedLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1306,"src":"17555:12:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1349,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"17601:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1350,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1283,"src":"17629:4:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1351,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1281,"src":"17652:14:2","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"id":1352,"name":"_feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"17685:21:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1353,"name":"_feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1302,"src":"17725:21:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1354,"name":"secondsPerLiquidityCumulativeX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1322,"src":"17765:33:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":1355,"name":"tickCumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"17817:14:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"id":1356,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1315,"src":"17850:4:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"66616c7365","id":1357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17873:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":1358,"name":"_maxLiquidityPerTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1343,"src":"17897:20:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":1359,"name":"rewardPerLiquidityCumulativeX64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1324,"src":"17936:31:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int56","typeString":"int56"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint192","typeString":"uint192"}],"expression":{"id":1347,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":541,"src":"17570:5:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":1348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"update","nodeType":"MemberAccess","referencedDeclaration":6667,"src":"17570:12:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$_t_int24_$_t_int24_$_t_int128_$_t_uint256_$_t_uint256_$_t_uint160_$_t_int56_$_t_uint32_$_t_bool_$_t_uint128_$_t_uint192_$returns$_t_bool_$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$","typeString":"function (mapping(int24 => struct Tick.Info storage ref),int24,int24,int128,uint256,uint256,uint160,int56,uint32,bool,uint128,uint192) returns (bool)"}},"id":1360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17570:412:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17555:427:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1362,"nodeType":"ExpressionStatement","src":"17555:427:2"},{"expression":{"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1363,"name":"flippedUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1309,"src":"17997:12:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1366,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1279,"src":"18043:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1367,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1283,"src":"18071:4:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1368,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1281,"src":"18094:14:2","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"id":1369,"name":"_feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"18127:21:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1370,"name":"_feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1302,"src":"18167:21:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1371,"name":"secondsPerLiquidityCumulativeX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1322,"src":"18207:33:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":1372,"name":"tickCumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"18259:14:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"id":1373,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1315,"src":"18292:4:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"74727565","id":1374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18315:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":1375,"name":"_maxLiquidityPerTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1343,"src":"18338:20:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":1376,"name":"rewardPerLiquidityCumulativeX64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1324,"src":"18377:31:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int56","typeString":"int56"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint192","typeString":"uint192"}],"expression":{"id":1364,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":541,"src":"18012:5:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":1365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"update","nodeType":"MemberAccess","referencedDeclaration":6667,"src":"18012:12:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$_t_int24_$_t_int24_$_t_int128_$_t_uint256_$_t_uint256_$_t_uint160_$_t_int56_$_t_uint32_$_t_bool_$_t_uint128_$_t_uint192_$returns$_t_bool_$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$","typeString":"function (mapping(int24 => struct Tick.Info storage ref),int24,int24,int128,uint256,uint256,uint160,int56,uint32,bool,uint128,uint192) returns (bool)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18012:411:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17997:426:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1379,"nodeType":"ExpressionStatement","src":"17997:426:2"},{"assignments":[1381],"declarations":[{"constant":false,"id":1381,"mutability":"mutable","name":"_tickSpacing","nodeType":"VariableDeclaration","scope":1404,"src":"18440:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1380,"name":"int24","nodeType":"ElementaryTypeName","src":"18440:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":1383,"initialValue":{"id":1382,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":482,"src":"18461:11:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"18440:32:2"},{"condition":{"id":1384,"name":"flippedLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1306,"src":"18521:12:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1393,"nodeType":"IfStatement","src":"18517:97:2","trueBody":{"id":1392,"nodeType":"Block","src":"18535:79:2","statements":[{"expression":{"arguments":[{"id":1388,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"18574:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1389,"name":"_tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"18585:12:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":1385,"name":"tickBitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":547,"src":"18554:10:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":1387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"flipTick","nodeType":"MemberAccess","referencedDeclaration":6852,"src":"18554:19:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int16_$_t_uint256_$_$_t_int24_$_t_int24_$returns$__$bound_to$_t_mapping$_t_int16_$_t_uint256_$_$","typeString":"function (mapping(int16 => uint256),int24,int24)"}},"id":1390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18554:44:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1391,"nodeType":"ExpressionStatement","src":"18554:44:2"}]}},{"condition":{"id":1394,"name":"flippedUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1309,"src":"18632:12:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1403,"nodeType":"IfStatement","src":"18628:97:2","trueBody":{"id":1402,"nodeType":"Block","src":"18646:79:2","statements":[{"expression":{"arguments":[{"id":1398,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1279,"src":"18685:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1399,"name":"_tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"18696:12:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":1395,"name":"tickBitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":547,"src":"18665:10:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"flipTick","nodeType":"MemberAccess","referencedDeclaration":6852,"src":"18665:19:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int16_$_t_uint256_$_$_t_int24_$_t_int24_$returns$__$bound_to$_t_mapping$_t_int16_$_t_uint256_$_$","typeString":"function (mapping(int16 => uint256),int24,int24)"}},"id":1400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18665:44:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1401,"nodeType":"ExpressionStatement","src":"18665:44:2"}]}}]}},{"assignments":[1407,1409],"declarations":[{"constant":false,"id":1407,"mutability":"mutable","name":"feeGrowthInside0X128","nodeType":"VariableDeclaration","scope":1450,"src":"18749:28:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"18749:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1409,"mutability":"mutable","name":"feeGrowthInside1X128","nodeType":"VariableDeclaration","scope":1450,"src":"18779:28:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1408,"name":"uint256","nodeType":"ElementaryTypeName","src":"18779:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1418,"initialValue":{"arguments":[{"id":1412,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"18850:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1413,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1279,"src":"18874:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1414,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1283,"src":"18898:4:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1415,"name":"_feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"18917:21:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1416,"name":"_feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1302,"src":"18953:21:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1410,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":541,"src":"18811:5:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":1411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getFeeGrowthInside","nodeType":"MemberAccess","referencedDeclaration":6509,"src":"18811:24:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$_t_int24_$_t_int24_$_t_int24_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$","typeString":"function (mapping(int24 => struct Tick.Info storage ref),int24,int24,int24,uint256,uint256) view returns (uint256,uint256)"}},"id":1417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18811:174:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"18748:237:2"},{"expression":{"arguments":[{"id":1422,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1281,"src":"19014:14:2","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"id":1423,"name":"feeGrowthInside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"19030:20:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1424,"name":"feeGrowthInside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1409,"src":"19052:20:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1419,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1286,"src":"18998:8:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"id":1421,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"update","nodeType":"MemberAccess","referencedDeclaration":5455,"src":"18998:15:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Info_$5300_storage_ptr_$_t_int128_$_t_uint256_$_t_uint256_$returns$__$bound_to$_t_struct$_Info_$5300_storage_ptr_$","typeString":"function (struct Position.Info storage pointer,int128,uint256,uint256)"}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18998:75:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1426,"nodeType":"ExpressionStatement","src":"18998:75:2"},{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":1429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1427,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1281,"src":"19147:14:2","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19164:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19147:18:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1449,"nodeType":"IfStatement","src":"19143:214:2","trueBody":{"id":1448,"nodeType":"Block","src":"19167:190:2","statements":[{"condition":{"id":1430,"name":"flippedLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1306,"src":"19186:12:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1438,"nodeType":"IfStatement","src":"19182:75:2","trueBody":{"id":1437,"nodeType":"Block","src":"19200:57:2","statements":[{"expression":{"arguments":[{"id":1434,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"19231:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":1431,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":541,"src":"19219:5:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":1433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"clear","nodeType":"MemberAccess","referencedDeclaration":6683,"src":"19219:11:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$_t_int24_$returns$__$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$","typeString":"function (mapping(int24 => struct Tick.Info storage ref),int24)"}},"id":1435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19219:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1436,"nodeType":"ExpressionStatement","src":"19219:22:2"}]}},{"condition":{"id":1439,"name":"flippedUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1309,"src":"19275:12:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1447,"nodeType":"IfStatement","src":"19271:75:2","trueBody":{"id":1446,"nodeType":"Block","src":"19289:57:2","statements":[{"expression":{"arguments":[{"id":1443,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1279,"src":"19320:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":1440,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":541,"src":"19308:5:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":1442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"clear","nodeType":"MemberAccess","referencedDeclaration":6683,"src":"19308:11:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$_t_int24_$returns$__$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$","typeString":"function (mapping(int24 => struct Tick.Info storage ref),int24)"}},"id":1444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19308:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1445,"nodeType":"ExpressionStatement","src":"19308:22:2"}]}}]}}]},"documentation":{"id":1273,"nodeType":"StructuredDocumentation","src":"15947:317:2","text":"@dev Gets and updates a position with the given liquidity delta\n @param owner the owner of the position\n @param tickLower the lower tick of the position's tick range\n @param tickUpper the upper tick of the position's tick range\n @param tick the current tick, passed to avoid sloads"},"id":1451,"implemented":true,"kind":"function","modifiers":[],"name":"_updatePosition","nodeType":"FunctionDefinition","parameters":{"id":1284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1275,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1451,"src":"16305:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1274,"name":"address","nodeType":"ElementaryTypeName","src":"16305:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1277,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":1451,"src":"16329:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1276,"name":"int24","nodeType":"ElementaryTypeName","src":"16329:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1279,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":1451,"src":"16355:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1278,"name":"int24","nodeType":"ElementaryTypeName","src":"16355:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1281,"mutability":"mutable","name":"liquidityDelta","nodeType":"VariableDeclaration","scope":1451,"src":"16381:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":1280,"name":"int128","nodeType":"ElementaryTypeName","src":"16381:6:2","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":1283,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":1451,"src":"16413:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1282,"name":"int24","nodeType":"ElementaryTypeName","src":"16413:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"16294:136:2"},"returnParameters":{"id":1287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1286,"mutability":"mutable","name":"position","nodeType":"VariableDeclaration","scope":1451,"src":"16448:30:2","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info"},"typeName":{"id":1285,"name":"Position.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":5300,"src":"16448:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info"}},"visibility":"internal"}],"src":"16447:32:2"},"scope":3090,"src":"16270:3094:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[3342],"body":{"id":1597,"nodeType":"Block","src":"19634:1043:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1473,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1460,"src":"19653:6:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19662:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19653:10:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1472,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"19645:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19645:19:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1477,"nodeType":"ExpressionStatement","src":"19645:19:2"},{"assignments":[null,1479,1481],"declarations":[null,{"constant":false,"id":1479,"mutability":"mutable","name":"amount0Int","nodeType":"VariableDeclaration","scope":1597,"src":"19678:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1478,"name":"int256","nodeType":"ElementaryTypeName","src":"19678:6:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1481,"mutability":"mutable","name":"amount1Int","nodeType":"VariableDeclaration","scope":1597,"src":"19697:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1480,"name":"int256","nodeType":"ElementaryTypeName","src":"19697:6:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":1495,"initialValue":{"arguments":[{"arguments":[{"id":1484,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1454,"src":"19795:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1485,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1456,"src":"19834:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1486,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"19873:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1489,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1460,"src":"19924:6:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":1488,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19917:6:2","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":1487,"name":"int256","nodeType":"ElementaryTypeName","src":"19917:6:2","typeDescriptions":{}}},"id":1490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19917:14:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5501,"src":"19917:23:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int128_$bound_to$_t_int256_$","typeString":"function (int256) pure returns (int128)"}},"id":1492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19917:25:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int128","typeString":"int128"}],"id":1483,"name":"ModifyPositionParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1107,"src":"19748:20:2","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ModifyPositionParams_$1107_storage_ptr_$","typeString":"type(struct ElixirPool.ModifyPositionParams storage pointer)"}},"id":1493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["owner","tickLower","tickUpper","liquidityDelta"],"nodeType":"FunctionCall","src":"19748:210:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}],"id":1482,"name":"_modifyPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"19718:15:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_ModifyPositionParams_$1107_memory_ptr_$returns$_t_struct$_Info_$5300_storage_ptr_$_t_int256_$_t_int256_$","typeString":"function (struct ElixirPool.ModifyPositionParams memory) returns (struct Position.Info storage pointer,int256,int256)"}},"id":1494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19718:251:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_struct$_Info_$5300_storage_ptr_$_t_int256_$_t_int256_$","typeString":"tuple(struct Position.Info storage pointer,int256,int256)"}},"nodeType":"VariableDeclarationStatement","src":"19675:294:2"},{"expression":{"id":1501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1496,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"19982:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1499,"name":"amount0Int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"20000:10:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1498,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19992:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1497,"name":"uint256","nodeType":"ElementaryTypeName","src":"19992:7:2","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19992:19:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19982:29:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1502,"nodeType":"ExpressionStatement","src":"19982:29:2"},{"expression":{"id":1508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1503,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"20022:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1506,"name":"amount1Int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1481,"src":"20040:10:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20032:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1504,"name":"uint256","nodeType":"ElementaryTypeName","src":"20032:7:2","typeDescriptions":{}}},"id":1507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20032:19:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20022:29:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1509,"nodeType":"ExpressionStatement","src":"20022:29:2"},{"assignments":[1511],"declarations":[{"constant":false,"id":1511,"mutability":"mutable","name":"balance0Before","nodeType":"VariableDeclaration","scope":1597,"src":"20064:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1510,"name":"uint256","nodeType":"ElementaryTypeName","src":"20064:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1512,"nodeType":"VariableDeclarationStatement","src":"20064:22:2"},{"assignments":[1514],"declarations":[{"constant":false,"id":1514,"mutability":"mutable","name":"balance1Before","nodeType":"VariableDeclaration","scope":1597,"src":"20097:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1513,"name":"uint256","nodeType":"ElementaryTypeName","src":"20097:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1515,"nodeType":"VariableDeclarationStatement","src":"20097:22:2"},{"assignments":[1517],"declarations":[{"constant":false,"id":1517,"mutability":"mutable","name":"_token0","nodeType":"VariableDeclaration","scope":1597,"src":"20130:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1516,"name":"address","nodeType":"ElementaryTypeName","src":"20130:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1519,"initialValue":{"id":1518,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"20148:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"20130:24:2"},{"assignments":[1521],"declarations":[{"constant":false,"id":1521,"mutability":"mutable","name":"_token1","nodeType":"VariableDeclaration","scope":1597,"src":"20165:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1520,"name":"address","nodeType":"ElementaryTypeName","src":"20165:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1523,"initialValue":{"id":1522,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"20183:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"20165:24:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1524,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"20204:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20214:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20204:11:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1533,"nodeType":"IfStatement","src":"20200:50:2","trueBody":{"expression":{"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1527,"name":"balance0Before","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1511,"src":"20217:14:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1529,"name":"_token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1517,"src":"20242:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1528,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"20234:7:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20234:16:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20217:33:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1532,"nodeType":"ExpressionStatement","src":"20217:33:2"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1534,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"20265:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20275:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20265:11:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1543,"nodeType":"IfStatement","src":"20261:50:2","trueBody":{"expression":{"id":1541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1537,"name":"balance1Before","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1514,"src":"20278:14:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1539,"name":"_token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1521,"src":"20303:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1538,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"20295:7:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20295:16:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20278:33:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1542,"nodeType":"ExpressionStatement","src":"20278:33:2"}},{"expression":{"arguments":[{"id":1549,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"20373:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1550,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"20382:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1551,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1462,"src":"20391:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"expression":{"id":1545,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"20342:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"20342:10:2","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":1544,"name":"IElixirMintCallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3301,"src":"20322:19:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirMintCallback_$3301_$","typeString":"type(contract IElixirMintCallback)"}},"id":1547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20322:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirMintCallback_$3301","typeString":"contract IElixirMintCallback"}},"id":1548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"elixirMintCallback","nodeType":"MemberAccess","referencedDeclaration":3300,"src":"20322:50:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (uint256,uint256,bytes memory) external"}},"id":1552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20322:74:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1553,"nodeType":"ExpressionStatement","src":"20322:74:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1554,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"20411:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20421:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20411:11:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1569,"nodeType":"IfStatement","src":"20407:79:2","trueBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1560,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"20451:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1558,"name":"balance0Before","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1511,"src":"20432:14:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":4325,"src":"20432:18:2","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":1561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20432:27:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":1563,"name":"_token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1517,"src":"20471:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1562,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"20463:7:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20463:16:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20432:47:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d30","id":1566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20481:4:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_9dd967dd89b196c3d39f30180cbfe6d91b2a16dc0c0a05c39a100e33eea78be7","typeString":"literal_string \"M0\""},"value":"M0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9dd967dd89b196c3d39f30180cbfe6d91b2a16dc0c0a05c39a100e33eea78be7","typeString":"literal_string \"M0\""}],"id":1557,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"20424:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20424:62:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1568,"nodeType":"ExpressionStatement","src":"20424:62:2"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1570,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"20501:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20511:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20501:11:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1585,"nodeType":"IfStatement","src":"20497:79:2","trueBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1576,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"20541:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1574,"name":"balance1Before","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1514,"src":"20522:14:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":4325,"src":"20522:18:2","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":1577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20522:27:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":1579,"name":"_token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1521,"src":"20561:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1578,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"20553:7:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20553:16:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20522:47:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d31","id":1582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20571:4:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_b12041addd3285c2b6d2a98e6dc83b6f7dc08f5942fa2296e6ce355782d133de","typeString":"literal_string \"M1\""},"value":"M1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b12041addd3285c2b6d2a98e6dc83b6f7dc08f5942fa2296e6ce355782d133de","typeString":"literal_string \"M1\""}],"id":1573,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"20514:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20514:62:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1584,"nodeType":"ExpressionStatement","src":"20514:62:2"}},{"eventCall":{"arguments":[{"expression":{"id":1587,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"20599:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"20599:10:2","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":1589,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1454,"src":"20611:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1590,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1456,"src":"20622:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1591,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"20633:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1592,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1460,"src":"20644:6:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":1593,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"20652:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1594,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"20661:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"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"}],"id":1586,"name":"Mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3474,"src":"20594:4:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_int24_$_t_int24_$_t_uint128_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,int24,int24,uint128,uint256,uint256)"}},"id":1595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20594:75:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1596,"nodeType":"EmitStatement","src":"20589:80:2"}]},"documentation":{"id":1452,"nodeType":"StructuredDocumentation","src":"19372:34:2","text":"@inheritdoc IElixirPoolActions"},"functionSelector":"3c8a7d8d","id":1598,"implemented":true,"kind":"function","modifiers":[{"id":1466,"modifierName":{"id":1465,"name":"lock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":582,"src":"19586:4:2","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"19586:4:2"}],"name":"mint","nodeType":"FunctionDefinition","overrides":{"id":1464,"nodeType":"OverrideSpecifier","overrides":[],"src":"19577:8:2"},"parameters":{"id":1463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1454,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":1598,"src":"19436:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1453,"name":"address","nodeType":"ElementaryTypeName","src":"19436:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1456,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":1598,"src":"19464:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1455,"name":"int24","nodeType":"ElementaryTypeName","src":"19464:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1458,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":1598,"src":"19490:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1457,"name":"int24","nodeType":"ElementaryTypeName","src":"19490:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1460,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1598,"src":"19516:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1459,"name":"uint128","nodeType":"ElementaryTypeName","src":"19516:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":1462,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":1598,"src":"19541:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1461,"name":"bytes","nodeType":"ElementaryTypeName","src":"19541:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19425:142:2"},"returnParameters":{"id":1471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1468,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":1598,"src":"19600:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1467,"name":"uint256","nodeType":"ElementaryTypeName","src":"19600:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1470,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":1598,"src":"19617:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1469,"name":"uint256","nodeType":"ElementaryTypeName","src":"19617:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19599:34:2"},"scope":3090,"src":"19412:1265:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3360],"body":{"id":1701,"nodeType":"Block","src":"20965:818:2","statements":[{"assignments":[1622],"declarations":[{"constant":false,"id":1622,"mutability":"mutable","name":"position","nodeType":"VariableDeclaration","scope":1701,"src":"21089:30:2","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info"},"typeName":{"id":1621,"name":"Position.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":5300,"src":"21089:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info"}},"visibility":"internal"}],"id":1630,"initialValue":{"arguments":[{"expression":{"id":1625,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"21136:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"21136:10:2","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":1627,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1603,"src":"21148:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1628,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1605,"src":"21159:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":1623,"name":"positions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":553,"src":"21122:9:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Info_$5300_storage_$","typeString":"mapping(bytes32 => struct Position.Info storage ref)"}},"id":1624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"get","nodeType":"MemberAccess","referencedDeclaration":5330,"src":"21122:13:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_mapping$_t_bytes32_$_t_struct$_Info_$5300_storage_$_$_t_address_$_t_int24_$_t_int24_$returns$_t_struct$_Info_$5300_storage_ptr_$bound_to$_t_mapping$_t_bytes32_$_t_struct$_Info_$5300_storage_$_$","typeString":"function (mapping(bytes32 => struct Position.Info storage ref),address,int24,int24) view returns (struct Position.Info storage pointer)"}},"id":1629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21122:47:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"21089:80:2"},{"expression":{"id":1640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1631,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1615,"src":"21182:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":1635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1632,"name":"amount0Requested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"21192:16:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":1633,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1622,"src":"21211:8:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"id":1634,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed0","nodeType":"MemberAccess","referencedDeclaration":5297,"src":"21211:20:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"21192:39:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1638,"name":"amount0Requested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"21257:16:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":1639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21192:81:2","trueExpression":{"expression":{"id":1636,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1622,"src":"21234:8:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"id":1637,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed0","nodeType":"MemberAccess","referencedDeclaration":5297,"src":"21234:20:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"21182:91:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":1641,"nodeType":"ExpressionStatement","src":"21182:91:2"},{"expression":{"id":1651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1642,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1617,"src":"21284:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":1646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1643,"name":"amount1Requested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1609,"src":"21294:16:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":1644,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1622,"src":"21313:8:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"id":1645,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed1","nodeType":"MemberAccess","referencedDeclaration":5299,"src":"21313:20:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"21294:39:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1649,"name":"amount1Requested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1609,"src":"21359:16:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":1650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21294:81:2","trueExpression":{"expression":{"id":1647,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1622,"src":"21336:8:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"id":1648,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed1","nodeType":"MemberAccess","referencedDeclaration":5299,"src":"21336:20:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"21284:91:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":1652,"nodeType":"ExpressionStatement","src":"21284:91:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":1655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1653,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1615,"src":"21392:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21402:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21392:11:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1671,"nodeType":"IfStatement","src":"21388:145:2","trueBody":{"id":1670,"nodeType":"Block","src":"21405:128:2","statements":[{"expression":{"id":1660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1656,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1622,"src":"21420:8:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"id":1658,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tokensOwed0","nodeType":"MemberAccess","referencedDeclaration":5297,"src":"21420:20:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":1659,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1615,"src":"21444:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"21420:31:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":1661,"nodeType":"ExpressionStatement","src":"21420:31:2"},{"expression":{"arguments":[{"id":1665,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"21494:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1666,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1601,"src":"21502:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1667,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1615,"src":"21513:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":1662,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7618,"src":"21466:14:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$7618_$","typeString":"type(library TransferHelper)"}},"id":1664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":7617,"src":"21466:27:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21466:55:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1669,"nodeType":"ExpressionStatement","src":"21466:55:2"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":1674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1672,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1617,"src":"21547:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21557:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21547:11:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1690,"nodeType":"IfStatement","src":"21543:145:2","trueBody":{"id":1689,"nodeType":"Block","src":"21560:128:2","statements":[{"expression":{"id":1679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1675,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1622,"src":"21575:8:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"id":1677,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tokensOwed1","nodeType":"MemberAccess","referencedDeclaration":5299,"src":"21575:20:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":1678,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1617,"src":"21599:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"21575:31:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":1680,"nodeType":"ExpressionStatement","src":"21575:31:2"},{"expression":{"arguments":[{"id":1684,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"21649:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1685,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1601,"src":"21657:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1686,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1617,"src":"21668:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":1681,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7618,"src":"21621:14:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$7618_$","typeString":"type(library TransferHelper)"}},"id":1683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":7617,"src":"21621:27:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21621:55:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1688,"nodeType":"ExpressionStatement","src":"21621:55:2"}]}},{"eventCall":{"arguments":[{"expression":{"id":1692,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"21713:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"21713:10:2","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":1694,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1601,"src":"21725:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1695,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1603,"src":"21736:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1696,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1605,"src":"21747:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1697,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1615,"src":"21758:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":1698,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1617,"src":"21767:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":1691,"name":"Collect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3489,"src":"21705:7:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_int24_$_t_int24_$_t_uint128_$_t_uint128_$returns$__$","typeString":"function (address,address,int24,int24,uint128,uint128)"}},"id":1699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21705:70:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1700,"nodeType":"EmitStatement","src":"21700:75:2"}]},"documentation":{"id":1599,"nodeType":"StructuredDocumentation","src":"20685:34:2","text":"@inheritdoc IElixirPoolActions"},"functionSelector":"4f1eb3d8","id":1702,"implemented":true,"kind":"function","modifiers":[{"id":1613,"modifierName":{"id":1612,"name":"lock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":582,"src":"20917:4:2","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"20917:4:2"}],"name":"collect","nodeType":"FunctionDefinition","overrides":{"id":1611,"nodeType":"OverrideSpecifier","overrides":[],"src":"20908:8:2"},"parameters":{"id":1610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1601,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":1702,"src":"20752:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1600,"name":"address","nodeType":"ElementaryTypeName","src":"20752:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1603,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":1702,"src":"20780:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1602,"name":"int24","nodeType":"ElementaryTypeName","src":"20780:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1605,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":1702,"src":"20806:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1604,"name":"int24","nodeType":"ElementaryTypeName","src":"20806:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1607,"mutability":"mutable","name":"amount0Requested","nodeType":"VariableDeclaration","scope":1702,"src":"20832:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1606,"name":"uint128","nodeType":"ElementaryTypeName","src":"20832:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":1609,"mutability":"mutable","name":"amount1Requested","nodeType":"VariableDeclaration","scope":1702,"src":"20867:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1608,"name":"uint128","nodeType":"ElementaryTypeName","src":"20867:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"20741:157:2"},"returnParameters":{"id":1618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1615,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":1702,"src":"20931:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1614,"name":"uint128","nodeType":"ElementaryTypeName","src":"20931:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":1617,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":1702,"src":"20948:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1616,"name":"uint128","nodeType":"ElementaryTypeName","src":"20948:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"20930:34:2"},"scope":3090,"src":"20725:1058:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3374],"body":{"id":1801,"nodeType":"Block","src":"21995:760:2","statements":[{"assignments":[1722,1724,1726],"declarations":[{"constant":false,"id":1722,"mutability":"mutable","name":"position","nodeType":"VariableDeclaration","scope":1801,"src":"22007:30:2","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info"},"typeName":{"id":1721,"name":"Position.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":5300,"src":"22007:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info"}},"visibility":"internal"},{"constant":false,"id":1724,"mutability":"mutable","name":"amount0Int","nodeType":"VariableDeclaration","scope":1801,"src":"22039:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1723,"name":"int256","nodeType":"ElementaryTypeName","src":"22039:6:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1726,"mutability":"mutable","name":"amount1Int","nodeType":"VariableDeclaration","scope":1801,"src":"22058:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1725,"name":"int256","nodeType":"ElementaryTypeName","src":"22058:6:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":1742,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":1729,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"22156:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"22156:10:2","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":1731,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"22196:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1732,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1707,"src":"22235:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"22279:26:2","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1735,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1709,"src":"22287:6:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":1734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22280:6:2","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":1733,"name":"int256","nodeType":"ElementaryTypeName","src":"22280:6:2","typeDescriptions":{}}},"id":1736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22280:14:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5501,"src":"22280:23:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int128_$bound_to$_t_int256_$","typeString":"function (int256) pure returns (int128)"}},"id":1738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22280:25:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int128","typeString":"int128"}],"id":1728,"name":"ModifyPositionParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1107,"src":"22109:20:2","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ModifyPositionParams_$1107_storage_ptr_$","typeString":"type(struct ElixirPool.ModifyPositionParams storage pointer)"}},"id":1740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["owner","tickLower","tickUpper","liquidityDelta"],"nodeType":"FunctionCall","src":"22109:212:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ModifyPositionParams_$1107_memory_ptr","typeString":"struct ElixirPool.ModifyPositionParams memory"}],"id":1727,"name":"_modifyPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"22079:15:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_ModifyPositionParams_$1107_memory_ptr_$returns$_t_struct$_Info_$5300_storage_ptr_$_t_int256_$_t_int256_$","typeString":"function (struct ElixirPool.ModifyPositionParams memory) returns (struct Position.Info storage pointer,int256,int256)"}},"id":1741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22079:253:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_struct$_Info_$5300_storage_ptr_$_t_int256_$_t_int256_$","typeString":"tuple(struct Position.Info storage pointer,int256,int256)"}},"nodeType":"VariableDeclarationStatement","src":"22006:326:2"},{"expression":{"id":1749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1743,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1715,"src":"22345:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"22363:11:2","subExpression":{"id":1746,"name":"amount0Int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1724,"src":"22364:10:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1745,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22355:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1744,"name":"uint256","nodeType":"ElementaryTypeName","src":"22355:7:2","typeDescriptions":{}}},"id":1748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22355:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22345:30:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1750,"nodeType":"ExpressionStatement","src":"22345:30:2"},{"expression":{"id":1757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1751,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1717,"src":"22386:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"22404:11:2","subExpression":{"id":1754,"name":"amount1Int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1726,"src":"22405:10:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1753,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22396:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1752,"name":"uint256","nodeType":"ElementaryTypeName","src":"22396:7:2","typeDescriptions":{}}},"id":1756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22396:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22386:30:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1758,"nodeType":"ExpressionStatement","src":"22386:30:2"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1759,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1715,"src":"22433:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22443:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22433:11:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1762,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1717,"src":"22448:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22458:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22448:11:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22433:26:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1790,"nodeType":"IfStatement","src":"22429:237:2","trueBody":{"id":1789,"nodeType":"Block","src":"22461:205:2","statements":[{"expression":{"id":1787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":1766,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"22477:8:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"id":1768,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tokensOwed0","nodeType":"MemberAccess","referencedDeclaration":5297,"src":"22477:20:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":1769,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"22499:8:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"id":1770,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tokensOwed1","nodeType":"MemberAccess","referencedDeclaration":5299,"src":"22499:20:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":1771,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"22476:44:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint128)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":1778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1772,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"22542:8:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"id":1773,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed0","nodeType":"MemberAccess","referencedDeclaration":5297,"src":"22542:20:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"id":1776,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1715,"src":"22573:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22565:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":1774,"name":"uint128","nodeType":"ElementaryTypeName","src":"22565:7:2","typeDescriptions":{}}},"id":1777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22565:16:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"22542:39:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":1785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1779,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"22600:8:2","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"id":1780,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed1","nodeType":"MemberAccess","referencedDeclaration":5299,"src":"22600:20:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"id":1783,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1717,"src":"22631:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1782,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22623:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":1781,"name":"uint128","nodeType":"ElementaryTypeName","src":"22623:7:2","typeDescriptions":{}}},"id":1784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22623:16:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"22600:39:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":1786,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22523:131:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint128)"}},"src":"22476:178:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1788,"nodeType":"ExpressionStatement","src":"22476:178:2"}]}},{"eventCall":{"arguments":[{"expression":{"id":1792,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"22688:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"22688:10:2","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":1794,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"22700:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1795,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1707,"src":"22711:9:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1796,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1709,"src":"22722:6:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":1797,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1715,"src":"22730:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1798,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1717,"src":"22739:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"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"}],"id":1791,"name":"Burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"22683:4:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_int24_$_t_int24_$_t_uint128_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,int24,int24,uint128,uint256,uint256)"}},"id":1799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22683:64:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1800,"nodeType":"EmitStatement","src":"22678:69:2"}]},"documentation":{"id":1703,"nodeType":"StructuredDocumentation","src":"21791:34:2","text":"@inheritdoc IElixirPoolActions"},"functionSelector":"a34123a7","id":1802,"implemented":true,"kind":"function","modifiers":[{"id":1713,"modifierName":{"id":1712,"name":"lock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":582,"src":"21947:4:2","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"21947:4:2"}],"name":"burn","nodeType":"FunctionDefinition","overrides":{"id":1711,"nodeType":"OverrideSpecifier","overrides":[],"src":"21938:8:2"},"parameters":{"id":1710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1705,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":1802,"src":"21855:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1704,"name":"int24","nodeType":"ElementaryTypeName","src":"21855:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1707,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":1802,"src":"21881:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1706,"name":"int24","nodeType":"ElementaryTypeName","src":"21881:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1709,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1802,"src":"21907:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1708,"name":"uint128","nodeType":"ElementaryTypeName","src":"21907:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"21844:84:2"},"returnParameters":{"id":1718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1715,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":1802,"src":"21961:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1714,"name":"uint256","nodeType":"ElementaryTypeName","src":"21961:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1717,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":1802,"src":"21978:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1716,"name":"uint256","nodeType":"ElementaryTypeName","src":"21978:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21960:34:2"},"scope":3090,"src":"21831:924:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"ElixirPool.SwapCache","id":1825,"members":[{"constant":false,"id":1804,"mutability":"mutable","name":"feeProtocol","nodeType":"VariableDeclaration","scope":1825,"src":"22840:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1803,"name":"uint8","nodeType":"ElementaryTypeName","src":"22840:5:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1806,"mutability":"mutable","name":"liquidityStart","nodeType":"VariableDeclaration","scope":1825,"src":"22919:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1805,"name":"uint128","nodeType":"ElementaryTypeName","src":"22919:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":1808,"mutability":"mutable","name":"blockTimestamp","nodeType":"VariableDeclaration","scope":1825,"src":"22999:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1807,"name":"uint32","nodeType":"ElementaryTypeName","src":"22999:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1810,"mutability":"mutable","name":"tickCumulative","nodeType":"VariableDeclaration","scope":1825,"src":"23132:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":1809,"name":"int56","nodeType":"ElementaryTypeName","src":"23132:5:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":1812,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128","nodeType":"VariableDeclaration","scope":1825,"src":"23277:41:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1811,"name":"uint160","nodeType":"ElementaryTypeName","src":"23277:7:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":1814,"mutability":"mutable","name":"computedLatestObservation","nodeType":"VariableDeclaration","scope":1825,"src":"23402:30:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1813,"name":"bool","nodeType":"ElementaryTypeName","src":"23402:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1816,"mutability":"mutable","name":"rewardPerLiquidityCumulativeX64","nodeType":"VariableDeclaration","scope":1825,"src":"23572:39:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":1815,"name":"uint192","nodeType":"ElementaryTypeName","src":"23572:7:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"},{"constant":false,"id":1818,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":1825,"src":"23694:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":1817,"name":"uint24","nodeType":"ElementaryTypeName","src":"23694:6:2","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":1820,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":1825,"src":"23749:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1819,"name":"int24","nodeType":"ElementaryTypeName","src":"23749:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1822,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":1825,"src":"23848:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1821,"name":"address","nodeType":"ElementaryTypeName","src":"23848:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1824,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":1825,"src":"23945:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1823,"name":"address","nodeType":"ElementaryTypeName","src":"23945:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"SwapCache","nodeType":"StructDefinition","scope":3090,"src":"22763:1204:2","visibility":"public"},{"canonicalName":"ElixirPool.SwapState","id":1840,"members":[{"constant":false,"id":1827,"mutability":"mutable","name":"amountSpecifiedRemaining","nodeType":"VariableDeclaration","scope":1840,"src":"24180:31:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1826,"name":"int256","nodeType":"ElementaryTypeName","src":"24180:6:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1829,"mutability":"mutable","name":"amountCalculated","nodeType":"VariableDeclaration","scope":1840,"src":"24294:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1828,"name":"int256","nodeType":"ElementaryTypeName","src":"24294:6:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1831,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":1840,"src":"24360:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1830,"name":"uint160","nodeType":"ElementaryTypeName","src":"24360:7:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":1833,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":1840,"src":"24446:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1832,"name":"int24","nodeType":"ElementaryTypeName","src":"24446:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1835,"mutability":"mutable","name":"feeGrowthGlobalX128","nodeType":"VariableDeclaration","scope":1840,"src":"24520:27:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1834,"name":"uint256","nodeType":"ElementaryTypeName","src":"24520:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1837,"mutability":"mutable","name":"protocolFee","nodeType":"VariableDeclaration","scope":1840,"src":"24613:19:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1836,"name":"uint128","nodeType":"ElementaryTypeName","src":"24613:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":1839,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":1840,"src":"24686:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1838,"name":"uint128","nodeType":"ElementaryTypeName","src":"24686:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"SwapState","nodeType":"StructDefinition","scope":3090,"src":"24072:639:2","visibility":"public"},{"canonicalName":"ElixirPool.StepComputations","id":1855,"members":[{"constant":false,"id":1842,"mutability":"mutable","name":"sqrtPriceStartX96","nodeType":"VariableDeclaration","scope":1855,"src":"24805:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1841,"name":"uint160","nodeType":"ElementaryTypeName","src":"24805:7:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":1844,"mutability":"mutable","name":"tickNext","nodeType":"VariableDeclaration","scope":1855,"src":"24922:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1843,"name":"int24","nodeType":"ElementaryTypeName","src":"24922:5:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1846,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":1855,"src":"24998:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1845,"name":"bool","nodeType":"ElementaryTypeName","src":"24998:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1848,"mutability":"mutable","name":"sqrtPriceNextX96","nodeType":"VariableDeclaration","scope":1855,"src":"25073:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1847,"name":"uint160","nodeType":"ElementaryTypeName","src":"25073:7:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":1850,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":1855,"src":"25162:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1849,"name":"uint256","nodeType":"ElementaryTypeName","src":"25162:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1852,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":1855,"src":"25231:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1851,"name":"uint256","nodeType":"ElementaryTypeName","src":"25231:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1854,"mutability":"mutable","name":"feeAmount","nodeType":"VariableDeclaration","scope":1855,"src":"25301:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1853,"name":"uint256","nodeType":"ElementaryTypeName","src":"25301:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"StepComputations","nodeType":"StructDefinition","scope":3090,"src":"24719:607:2","visibility":"public"},{"baseFunctions":[3392],"body":{"id":2570,"nodeType":"Block","src":"25607:9432:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1875,"name":"amountSpecified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"25626:15:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25645:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25626:20:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4153","id":1878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25648:4:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_327b9f048a93c937a955c6a689ad68cff8daabdfc5fb8cf29fcae1bac2ddb4d5","typeString":"literal_string \"AS\""},"value":"AS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_327b9f048a93c937a955c6a689ad68cff8daabdfc5fb8cf29fcae1bac2ddb4d5","typeString":"literal_string \"AS\""}],"id":1874,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"25618:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25618:35:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1880,"nodeType":"ExpressionStatement","src":"25618:35:2"},{"assignments":[1882],"declarations":[{"constant":false,"id":1882,"mutability":"mutable","name":"slot0Start","nodeType":"VariableDeclaration","scope":2570,"src":"25666:23:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0"},"typeName":{"id":1881,"name":"Slot0","nodeType":"UserDefinedTypeName","referencedDeclaration":501,"src":"25666:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage_ptr","typeString":"struct ElixirPool.Slot0"}},"visibility":"internal"}],"id":1884,"initialValue":{"id":1883,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"25692:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"nodeType":"VariableDeclarationStatement","src":"25666:31:2"},{"expression":{"arguments":[{"expression":{"id":1886,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"25718:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":1887,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"unlocked","nodeType":"MemberAccess","referencedDeclaration":500,"src":"25718:19:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c4f4b","id":1888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25739:5:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_e01ebc6b01bbf458b3d355b6e649efe64599751670c5d19175619893ecf97529","typeString":"literal_string \"LOK\""},"value":"LOK"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e01ebc6b01bbf458b3d355b6e649efe64599751670c5d19175619893ecf97529","typeString":"literal_string \"LOK\""}],"id":1885,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"25710:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25710:35:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1890,"nodeType":"ExpressionStatement","src":"25710:35:2"},{"expression":{"arguments":[{"condition":{"id":1892,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"25778:10:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":1905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1902,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"25918:17:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":1903,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"25938:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":1904,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":488,"src":"25938:23:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"25918:43:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":1909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1906,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"25965:17:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1907,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"25985:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":1908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":7053,"src":"25985:23:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"25965:43:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25918:90:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"25778:230:2","trueExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":1896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1893,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"25808:17:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1894,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"25828:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":1895,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":488,"src":"25828:23:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"25808:43:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":1900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1897,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"25855:17:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":1898,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"25875:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":1899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":7049,"src":"25875:23:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"25855:43:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25808:90:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53504c","id":1912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"26023:5:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_a6cefa06f60ee34e0c8820e8870f7587ccd717d8768771226759d789a9582094","typeString":"literal_string \"SPL\""},"value":"SPL"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a6cefa06f60ee34e0c8820e8870f7587ccd717d8768771226759d789a9582094","typeString":"literal_string \"SPL\""}],"id":1891,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"25756:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25756:283:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1914,"nodeType":"ExpressionStatement","src":"25756:283:2"},{"expression":{"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1915,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"26052:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":1917,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"unlocked","nodeType":"MemberAccess","referencedDeclaration":500,"src":"26052:14:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":1918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"26069:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"26052:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1920,"nodeType":"ExpressionStatement","src":"26052:22:2"},{"assignments":[1922],"declarations":[{"constant":false,"id":1922,"mutability":"mutable","name":"cache","nodeType":"VariableDeclaration","scope":2570,"src":"26087:22:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache"},"typeName":{"id":1921,"name":"SwapCache","nodeType":"UserDefinedTypeName","referencedDeclaration":1825,"src":"26087:9:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_storage_ptr","typeString":"struct ElixirPool.SwapCache"}},"visibility":"internal"}],"id":1948,"initialValue":{"arguments":[{"id":1924,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":535,"src":"26153:9:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1925,"name":"_blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":694,"src":"26193:15:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":1926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26193:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"condition":{"id":1927,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"26238:10:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1933,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"26284:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":1934,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeProtocol","nodeType":"MemberAccess","referencedDeclaration":498,"src":"26284:22:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":1935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26310:1:2","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"26284:27:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1937,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26283:29:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"26238:74:2","trueExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1928,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"26252:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":1929,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeProtocol","nodeType":"MemberAccess","referencedDeclaration":498,"src":"26252:22:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"3136","id":1930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26277:2:2","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"26252:27:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1932,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26251:29:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"hexValue":"30","id":1939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26362:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":1940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26394:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"66616c7365","id":1941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"26437:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26490:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":1943,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"26511:3:2","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"id":1944,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":482,"src":"26542:11:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":1945,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"26576:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1946,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"26605:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1923,"name":"SwapCache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1825,"src":"26112:9:2","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapCache_$1825_storage_ptr_$","typeString":"type(struct ElixirPool.SwapCache storage pointer)"}},"id":1947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["liquidityStart","blockTimestamp","feeProtocol","secondsPerLiquidityCumulativeX128","tickCumulative","computedLatestObservation","rewardPerLiquidityCumulativeX64","fee","tickSpacing","token0","token1"],"nodeType":"FunctionCall","src":"26112:511:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"nodeType":"VariableDeclarationStatement","src":"26087:536:2"},{"assignments":[1950],"declarations":[{"constant":false,"id":1950,"mutability":"mutable","name":"exactInput","nodeType":"VariableDeclaration","scope":2570,"src":"26636:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1949,"name":"bool","nodeType":"ElementaryTypeName","src":"26636:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1954,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1951,"name":"amountSpecified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"26654:15:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26672:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"26654:19:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"26636:37:2"},{"assignments":[1956],"declarations":[{"constant":false,"id":1956,"mutability":"mutable","name":"state","nodeType":"VariableDeclaration","scope":2570,"src":"26686:22:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState"},"typeName":{"id":1955,"name":"SwapState","nodeType":"UserDefinedTypeName","referencedDeclaration":1840,"src":"26686:9:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_storage_ptr","typeString":"struct ElixirPool.SwapState"}},"visibility":"internal"}],"id":1972,"initialValue":{"arguments":[{"id":1958,"name":"amountSpecified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"26762:15:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"hexValue":"30","id":1959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26810:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":1960,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"26840:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":1961,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":488,"src":"26840:23:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":1962,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"26884:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":1963,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":490,"src":"26884:15:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"condition":{"id":1964,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"26935:10:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1966,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"26971:20:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"26935:56:2","trueExpression":{"id":1965,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"26948:20:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":1968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27019:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":1969,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"27046:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":1970,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityStart","nodeType":"MemberAccess","referencedDeclaration":1806,"src":"27046:20:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":1957,"name":"SwapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"26711:9:2","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapState_$1840_storage_ptr_$","typeString":"type(struct ElixirPool.SwapState storage pointer)"}},"id":1971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["amountSpecifiedRemaining","amountCalculated","sqrtPriceX96","tick","feeGrowthGlobalX128","protocolFee","liquidity"],"nodeType":"FunctionCall","src":"26711:367:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"nodeType":"VariableDeclarationStatement","src":"26686:392:2"},{"body":{"id":2314,"nodeType":"Block","src":"27295:4925:2","statements":[{"assignments":[1983],"declarations":[{"constant":false,"id":1983,"mutability":"mutable","name":"step","nodeType":"VariableDeclaration","scope":2314,"src":"27310:28:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations"},"typeName":{"id":1982,"name":"StepComputations","nodeType":"UserDefinedTypeName","referencedDeclaration":1855,"src":"27310:16:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_storage_ptr","typeString":"struct ElixirPool.StepComputations"}},"visibility":"internal"}],"id":1984,"nodeType":"VariableDeclarationStatement","src":"27310:28:2"},{"expression":{"id":1990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1985,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"27355:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":1987,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"sqrtPriceStartX96","nodeType":"MemberAccess","referencedDeclaration":1842,"src":"27355:22:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":1988,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"27380:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":1989,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":1831,"src":"27380:18:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"27355:43:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":1991,"nodeType":"ExpressionStatement","src":"27355:43:2"},{"expression":{"id":2006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":1992,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"27416:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":1994,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tickNext","nodeType":"MemberAccess","referencedDeclaration":1844,"src":"27416:13:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":1995,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"27431:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":1996,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"initialized","nodeType":"MemberAccess","referencedDeclaration":1846,"src":"27431:16:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1997,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"27415:33:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int24_$_t_bool_$","typeString":"tuple(int24,bool)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":2000,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"27513:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2001,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":1833,"src":"27513:10:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":2002,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"27542:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2003,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":1820,"src":"27542:17:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":2004,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"27578:10:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":1998,"name":"tickBitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":547,"src":"27451:10:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":1999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"nextInitializedTickWithinOneWord","nodeType":"MemberAccess","referencedDeclaration":7031,"src":"27451:43:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_mapping$_t_int16_$_t_uint256_$_$_t_int24_$_t_int24_$_t_bool_$returns$_t_int24_$_t_bool_$bound_to$_t_mapping$_t_int16_$_t_uint256_$_$","typeString":"function (mapping(int16 => uint256),int24,int24,bool) view returns (int24,bool)"}},"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"27451:152:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int24_$_t_bool_$","typeString":"tuple(int24,bool)"}},"src":"27415:188:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2007,"nodeType":"ExpressionStatement","src":"27415:188:2"},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":2012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2008,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"27738:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2009,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickNext","nodeType":"MemberAccess","referencedDeclaration":1844,"src":"27738:13:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2010,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"27754:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":2011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_TICK","nodeType":"MemberAccess","referencedDeclaration":7040,"src":"27754:17:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"27738:33:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":2025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2021,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"27851:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2022,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickNext","nodeType":"MemberAccess","referencedDeclaration":1844,"src":"27851:13:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":2023,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"27867:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":2024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_TICK","nodeType":"MemberAccess","referencedDeclaration":7045,"src":"27867:17:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"27851:33:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2034,"nodeType":"IfStatement","src":"27847:107:2","trueBody":{"id":2033,"nodeType":"Block","src":"27886:68:2","statements":[{"expression":{"id":2031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2026,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"27905:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2028,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tickNext","nodeType":"MemberAccess","referencedDeclaration":1844,"src":"27905:13:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2029,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"27921:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_TICK","nodeType":"MemberAccess","referencedDeclaration":7045,"src":"27921:17:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"27905:33:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":2032,"nodeType":"ExpressionStatement","src":"27905:33:2"}]}},"id":2035,"nodeType":"IfStatement","src":"27734:220:2","trueBody":{"id":2020,"nodeType":"Block","src":"27773:68:2","statements":[{"expression":{"id":2018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2013,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"27792:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2015,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tickNext","nodeType":"MemberAccess","referencedDeclaration":1844,"src":"27792:13:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2016,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"27808:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":2017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_TICK","nodeType":"MemberAccess","referencedDeclaration":7040,"src":"27808:17:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"27792:33:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":2019,"nodeType":"ExpressionStatement","src":"27792:33:2"}]}},{"expression":{"id":2044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2036,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"28018:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2038,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"sqrtPriceNextX96","nodeType":"MemberAccess","referencedDeclaration":1848,"src":"28018:21:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":2041,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"28070:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2042,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickNext","nodeType":"MemberAccess","referencedDeclaration":1844,"src":"28070:13:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":2039,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"28042:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":2040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":7427,"src":"28042:27:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":2043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28042:42:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"28018:66:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":2045,"nodeType":"ExpressionStatement","src":"28018:66:2"},{"expression":{"id":2082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":2046,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"28222:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2048,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":1831,"src":"28222:18:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":2049,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"28242:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2050,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":1850,"src":"28242:13:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2051,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"28257:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2052,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":1852,"src":"28257:14:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2053,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"28273:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2054,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeAmount","nodeType":"MemberAccess","referencedDeclaration":1854,"src":"28273:14:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2055,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"28221:67:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint160,uint256,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":2058,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"28334:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2059,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":1831,"src":"28334:18:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"condition":{"components":[{"condition":{"id":2060,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"28372:10:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":2068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2065,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"28429:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2066,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceNextX96","nodeType":"MemberAccess","referencedDeclaration":1848,"src":"28429:21:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2067,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"28453:17:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"28429:41:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"28372:98:2","trueExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":2064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2061,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"28385:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2062,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceNextX96","nodeType":"MemberAccess","referencedDeclaration":1848,"src":"28385:21:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2063,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"28409:17:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"28385:41:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2070,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"28371:100:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":2072,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"28536:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2073,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceNextX96","nodeType":"MemberAccess","referencedDeclaration":1848,"src":"28536:21:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":2074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"28371:186:2","trueExpression":{"id":2071,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"28495:17:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":2075,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"28576:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2076,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":1839,"src":"28576:15:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":2077,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"28610:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2078,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amountSpecifiedRemaining","nodeType":"MemberAccess","referencedDeclaration":1827,"src":"28610:30:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"expression":{"id":2079,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"28659:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2080,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":1818,"src":"28659:9:2","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":2056,"name":"SwapMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6303,"src":"28291:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapMath_$6303_$","typeString":"type(library SwapMath)"}},"id":2057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeSwapStep","nodeType":"MemberAccess","referencedDeclaration":6302,"src":"28291:24:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_int256_$_t_uint24_$returns$_t_uint160_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (uint160,uint160,uint128,int256,uint24) pure returns (uint160,uint256,uint256,uint256)"}},"id":2081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28291:392:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint160,uint256,uint256,uint256)"}},"src":"28221:462:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2083,"nodeType":"ExpressionStatement","src":"28221:462:2"},{"condition":{"id":2084,"name":"exactInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1950,"src":"28704:10:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2138,"nodeType":"Block","src":"28931:209:2","statements":[{"expression":{"id":2119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2112,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"28950:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2114,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"amountSpecifiedRemaining","nodeType":"MemberAccess","referencedDeclaration":1827,"src":"28950:30:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":2115,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"28984:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2116,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":1852,"src":"28984:14:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5525,"src":"28984:23:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":2118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28984:25:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28950:59:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2120,"nodeType":"ExpressionStatement","src":"28950:59:2"},{"expression":{"id":2136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2121,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"29028:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2123,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"amountCalculated","nodeType":"MemberAccess","referencedDeclaration":1829,"src":"29028:22:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2127,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"29081:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2128,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":1850,"src":"29081:13:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":2129,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"29097:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeAmount","nodeType":"MemberAccess","referencedDeclaration":1854,"src":"29097:14:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29081:30:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2132,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"29080:32:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5525,"src":"29080:41:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":2134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29080:43:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"expression":{"id":2124,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"29053:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2125,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amountCalculated","nodeType":"MemberAccess","referencedDeclaration":1829,"src":"29053:22:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":4402,"src":"29053:26:2","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":2135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29053:71:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29028:96:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2137,"nodeType":"ExpressionStatement","src":"29028:96:2"}]},"id":2139,"nodeType":"IfStatement","src":"28700:440:2","trueBody":{"id":2111,"nodeType":"Block","src":"28716:209:2","statements":[{"expression":{"id":2096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2085,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"28735:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2087,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"amountSpecifiedRemaining","nodeType":"MemberAccess","referencedDeclaration":1827,"src":"28735:30:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2088,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"28770:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2089,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":1850,"src":"28770:13:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":2090,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"28786:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2091,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeAmount","nodeType":"MemberAccess","referencedDeclaration":1854,"src":"28786:14:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28770:30:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2093,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"28769:32:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5525,"src":"28769:41:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28769:43:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28735:77:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2097,"nodeType":"ExpressionStatement","src":"28735:77:2"},{"expression":{"id":2109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2098,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"28831:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2100,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"amountCalculated","nodeType":"MemberAccess","referencedDeclaration":1829,"src":"28831:22:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":2104,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"28883:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2105,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":1852,"src":"28883:14:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5525,"src":"28883:23:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":2107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28883:25:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"expression":{"id":2101,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"28856:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2102,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amountCalculated","nodeType":"MemberAccess","referencedDeclaration":1829,"src":"28856:22:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":4429,"src":"28856:26:2","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":2108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28856:53:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28831:78:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2110,"nodeType":"ExpressionStatement","src":"28831:78:2"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2140,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"29278:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2141,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeProtocol","nodeType":"MemberAccess","referencedDeclaration":1804,"src":"29278:17:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29298:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"29278:21:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2168,"nodeType":"IfStatement","src":"29274:208:2","trueBody":{"id":2167,"nodeType":"Block","src":"29301:181:2","statements":[{"assignments":[2145],"declarations":[{"constant":false,"id":2145,"mutability":"mutable","name":"delta","nodeType":"VariableDeclaration","scope":2167,"src":"29320:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2144,"name":"uint256","nodeType":"ElementaryTypeName","src":"29320:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2151,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2146,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"29336:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2147,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeAmount","nodeType":"MemberAccess","referencedDeclaration":1854,"src":"29336:14:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":2148,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"29353:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2149,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeProtocol","nodeType":"MemberAccess","referencedDeclaration":1804,"src":"29353:17:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"29336:34:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29320:50:2"},{"expression":{"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2152,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"29389:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2154,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeAmount","nodeType":"MemberAccess","referencedDeclaration":1854,"src":"29389:14:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":2155,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2145,"src":"29407:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29389:23:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2157,"nodeType":"ExpressionStatement","src":"29389:23:2"},{"expression":{"id":2165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2158,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"29431:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2160,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":1837,"src":"29431:17:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":2163,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2145,"src":"29460:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29452:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":2161,"name":"uint128","nodeType":"ElementaryTypeName","src":"29452:7:2","typeDescriptions":{}}},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29452:14:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"29431:35:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2166,"nodeType":"ExpressionStatement","src":"29431:35:2"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2169,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"29544:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2170,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":1839,"src":"29544:15:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29562:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"29544:19:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2187,"nodeType":"IfStatement","src":"29540:139:2","trueBody":{"expression":{"id":2185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2173,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"29582:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2175,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthGlobalX128","nodeType":"MemberAccess","referencedDeclaration":1835,"src":"29582:25:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"expression":{"id":2178,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"29627:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2179,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeAmount","nodeType":"MemberAccess","referencedDeclaration":1854,"src":"29627:14:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2180,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4065,"src":"29643:13:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$4065_$","typeString":"type(library FixedPoint128)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":4064,"src":"29643:18:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2182,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"29663:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2183,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":1839,"src":"29663:15:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":2176,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"29611:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":2177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"29611:15:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29611:68:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29582:97:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2186,"nodeType":"ExpressionStatement","src":"29582:97:2"}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":2192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2188,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"29756:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2189,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":1831,"src":"29756:18:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2190,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"29778:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2191,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceNextX96","nodeType":"MemberAccess","referencedDeclaration":1848,"src":"29778:21:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"29756:43:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":2300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2296,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"31947:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2297,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":1831,"src":"31947:18:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2298,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"31969:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2299,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceStartX96","nodeType":"MemberAccess","referencedDeclaration":1842,"src":"31969:22:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"31947:44:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2312,"nodeType":"IfStatement","src":"31943:266:2","trueBody":{"id":2311,"nodeType":"Block","src":"31993:216:2","statements":[{"expression":{"id":2309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2301,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"32133:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2303,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":1833,"src":"32133:10:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":2306,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"32174:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2307,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":1831,"src":"32174:18:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":2304,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"32146:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getTickAtSqrtRatio","nodeType":"MemberAccess","referencedDeclaration":7566,"src":"32146:27:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_int24_$","typeString":"function (uint160) pure returns (int24)"}},"id":2308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32146:47:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"32133:60:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":2310,"nodeType":"ExpressionStatement","src":"32133:60:2"}]}},"id":2313,"nodeType":"IfStatement","src":"29752:2457:2","trueBody":{"id":2295,"nodeType":"Block","src":"29801:2136:2","statements":[{"condition":{"expression":{"id":2193,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"29896:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2194,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialized","nodeType":"MemberAccess","referencedDeclaration":1846,"src":"29896:16:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2281,"nodeType":"IfStatement","src":"29892:1950:2","trueBody":{"id":2280,"nodeType":"Block","src":"29914:1928:2","statements":[{"condition":{"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"30113:32:2","subExpression":{"expression":{"id":2195,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"30114:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2196,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"computedLatestObservation","nodeType":"MemberAccess","referencedDeclaration":1814,"src":"30114:31:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2233,"nodeType":"IfStatement","src":"30109:854:2","trueBody":{"id":2232,"nodeType":"Block","src":"30147:816:2","statements":[{"expression":{"id":2224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":2198,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"30205:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2200,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tickCumulative","nodeType":"MemberAccess","referencedDeclaration":1810,"src":"30205:20:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"expression":{"id":2201,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"30256:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2202,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"secondsPerLiquidityCumulativeX128","nodeType":"MemberAccess","referencedDeclaration":1812,"src":"30256:39:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":2203,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"30326:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2204,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"rewardPerLiquidityCumulativeX64","nodeType":"MemberAccess","referencedDeclaration":1816,"src":"30326:37:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":2205,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"30174:216:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int56_$_t_uint160_$_t_uint192_$","typeString":"tuple(int56,uint160,uint192)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":2208,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"30450:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2209,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":1808,"src":"30450:20:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"30","id":2210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30501:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":2211,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"30533:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":2212,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":490,"src":"30533:15:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":2213,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"30579:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":2214,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"observationIndex","nodeType":"MemberAccess","referencedDeclaration":492,"src":"30579:27:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"id":2215,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"30637:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2216,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityStart","nodeType":"MemberAccess","referencedDeclaration":1806,"src":"30637:20:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":2217,"name":"rewardSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"30688:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_RewardSlot_$510_storage","typeString":"struct ElixirPool.RewardSlot storage ref"}},"id":2218,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerSecondX48","nodeType":"MemberAccess","referencedDeclaration":507,"src":"30688:29:2","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},{"expression":{"id":2219,"name":"rewardSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"30748:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_RewardSlot_$510_storage","typeString":"struct ElixirPool.RewardSlot storage ref"}},"id":2220,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardRateEffectiveUntil","nodeType":"MemberAccess","referencedDeclaration":509,"src":"30748:35:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":2221,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"30814:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":2222,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"observationCardinality","nodeType":"MemberAccess","referencedDeclaration":494,"src":"30814:33:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint144","typeString":"uint144"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":2206,"name":"observations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"30393:12:2","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage","typeString":"struct Oracle.Observation storage ref[65535] storage ref"}},"id":2207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observeSingle","nodeType":"MemberAccess","referencedDeclaration":5175,"src":"30393:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$_t_uint32_$_t_uint32_$_t_int24_$_t_uint16_$_t_uint128_$_t_uint144_$_t_uint32_$_t_uint16_$returns$_t_int56_$_t_uint160_$_t_uint192_$bound_to$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$","typeString":"function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32,int24,uint16,uint128,uint144,uint32,uint16) view returns (int56,uint160,uint192)"}},"id":2223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30393:481:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int56_$_t_uint160_$_t_uint192_$","typeString":"tuple(int56,uint160,uint192)"}},"src":"30174:700:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2225,"nodeType":"ExpressionStatement","src":"30174:700:2"},{"expression":{"id":2230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2226,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"30901:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2228,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"computedLatestObservation","nodeType":"MemberAccess","referencedDeclaration":1814,"src":"30901:31:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"30935:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"30901:38:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2231,"nodeType":"ExpressionStatement","src":"30901:38:2"}]}},{"assignments":[2235],"declarations":[{"constant":false,"id":2235,"mutability":"mutable","name":"liquidityNet","nodeType":"VariableDeclaration","scope":2280,"src":"30985:19:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":2234,"name":"int128","nodeType":"ElementaryTypeName","src":"30985:6:2","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"id":2261,"initialValue":{"arguments":[{"expression":{"id":2238,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"31045:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2239,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickNext","nodeType":"MemberAccess","referencedDeclaration":1844,"src":"31045:13:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"components":[{"condition":{"id":2240,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"31086:10:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2243,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"31127:20:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"31086:61:2","trueExpression":{"expression":{"id":2241,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"31099:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2242,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthGlobalX128","nodeType":"MemberAccess","referencedDeclaration":1835,"src":"31099:25:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2245,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31085:63:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"components":[{"condition":{"id":2246,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"31176:10:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":2248,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"31212:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2249,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthGlobalX128","nodeType":"MemberAccess","referencedDeclaration":1835,"src":"31212:25:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"31176:61:2","trueExpression":{"id":2247,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"31189:20:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2251,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31175:63:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2252,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"31265:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2253,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsPerLiquidityCumulativeX128","nodeType":"MemberAccess","referencedDeclaration":1812,"src":"31265:39:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":2254,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"31331:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2255,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickCumulative","nodeType":"MemberAccess","referencedDeclaration":1810,"src":"31331:20:2","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"expression":{"id":2256,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"31378:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2257,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":1808,"src":"31378:20:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":2258,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"31425:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2259,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityCumulativeX64","nodeType":"MemberAccess","referencedDeclaration":1816,"src":"31425:37:2","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int56","typeString":"int56"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint192","typeString":"uint192"}],"expression":{"id":2236,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":541,"src":"31007:5:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":2237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"cross","nodeType":"MemberAccess","referencedDeclaration":6775,"src":"31007:11:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$_t_int24_$_t_uint256_$_t_uint256_$_t_uint160_$_t_int56_$_t_uint32_$_t_uint192_$returns$_t_int128_$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$","typeString":"function (mapping(int24 => struct Tick.Info storage ref),int24,uint256,uint256,uint160,int56,uint32,uint192) returns (int128)"}},"id":2260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"31007:478:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"VariableDeclarationStatement","src":"30985:500:2"},{"condition":{"id":2262,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"31686:10:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2268,"nodeType":"IfStatement","src":"31682:44:2","trueBody":{"expression":{"id":2266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2263,"name":"liquidityNet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"31698:12:2","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"31713:13:2","subExpression":{"id":2264,"name":"liquidityNet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"31714:12:2","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"31698:28:2","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":2267,"nodeType":"ExpressionStatement","src":"31698:28:2"}},{"expression":{"id":2278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2269,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"31751:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2271,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":1839,"src":"31751:15:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":2274,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"31792:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2275,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":1839,"src":"31792:15:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":2276,"name":"liquidityNet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"31809:12:2","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":2272,"name":"LiquidityMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4300,"src":"31769:13:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityMath_$4300_$","typeString":"type(library LiquidityMath)"}},"id":2273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"addDelta","nodeType":"MemberAccess","referencedDeclaration":4299,"src":"31769:22:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint128_$_t_int128_$returns$_t_uint128_$","typeString":"function (uint128,int128) pure returns (uint128)"}},"id":2277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"31769:53:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"31751:71:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2279,"nodeType":"ExpressionStatement","src":"31751:71:2"}]}},{"expression":{"id":2293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2282,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"31862:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2284,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":1833,"src":"31862:10:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":2285,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"31875:10:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":2290,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"31908:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2291,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickNext","nodeType":"MemberAccess","referencedDeclaration":1844,"src":"31908:13:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":2292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"31875:46:2","trueExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":2289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2286,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"31888:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_StepComputations_$1855_memory_ptr","typeString":"struct ElixirPool.StepComputations memory"}},"id":2287,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickNext","nodeType":"MemberAccess","referencedDeclaration":1844,"src":"31888:13:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31904:1:2","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"31888:17:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"31862:59:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":2294,"nodeType":"ExpressionStatement","src":"31862:59:2"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1973,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"27215:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":1974,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amountSpecifiedRemaining","nodeType":"MemberAccess","referencedDeclaration":1827,"src":"27215:30:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27249:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"27215:35:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":1980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1977,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"27254:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":1978,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":1831,"src":"27254:18:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1979,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"27276:17:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"27254:39:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"27215:78:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2315,"nodeType":"WhileStatement","src":"27208:5012:2"},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":2320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2316,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"32305:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2317,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":1833,"src":"32305:10:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2318,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"32319:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":2319,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":490,"src":"32319:15:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"32305:29:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2372,"nodeType":"Block","src":"33090:114:2","statements":[{"expression":{"id":2370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2365,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"33153:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":2367,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":488,"src":"33153:18:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2368,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"33174:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2369,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":1831,"src":"33174:18:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"33153:39:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":2371,"nodeType":"ExpressionStatement","src":"33153:39:2"}]},"id":2373,"nodeType":"IfStatement","src":"32301:903:2","trueBody":{"id":2364,"nodeType":"Block","src":"32336:748:2","statements":[{"assignments":[2322,2324],"declarations":[{"constant":false,"id":2322,"mutability":"mutable","name":"observationIndex","nodeType":"VariableDeclaration","scope":2364,"src":"32352:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":2321,"name":"uint16","nodeType":"ElementaryTypeName","src":"32352:6:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":2324,"mutability":"mutable","name":"observationCardinality","nodeType":"VariableDeclaration","scope":2364,"src":"32377:29:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":2323,"name":"uint16","nodeType":"ElementaryTypeName","src":"32377:6:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":2344,"initialValue":{"arguments":[{"expression":{"id":2327,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"32447:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":2328,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"observationIndex","nodeType":"MemberAccess","referencedDeclaration":492,"src":"32447:27:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"id":2329,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"32493:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2330,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":1808,"src":"32493:20:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":2331,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"32532:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":2332,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":490,"src":"32532:15:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":2333,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"32566:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2334,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityStart","nodeType":"MemberAccess","referencedDeclaration":1806,"src":"32566:20:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":2335,"name":"rewardSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"32605:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_RewardSlot_$510_storage","typeString":"struct ElixirPool.RewardSlot storage ref"}},"id":2336,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerSecondX48","nodeType":"MemberAccess","referencedDeclaration":507,"src":"32605:29:2","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},{"expression":{"id":2337,"name":"rewardSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"32653:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_RewardSlot_$510_storage","typeString":"struct ElixirPool.RewardSlot storage ref"}},"id":2338,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardRateEffectiveUntil","nodeType":"MemberAccess","referencedDeclaration":509,"src":"32653:35:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":2339,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"32707:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":2340,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"observationCardinality","nodeType":"MemberAccess","referencedDeclaration":494,"src":"32707:33:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"id":2341,"name":"slot0Start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"32759:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_memory_ptr","typeString":"struct ElixirPool.Slot0 memory"}},"id":2342,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"observationCardinalityNext","nodeType":"MemberAccess","referencedDeclaration":496,"src":"32759:37:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint144","typeString":"uint144"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":2325,"name":"observations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"32410:12:2","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage","typeString":"struct Oracle.Observation storage ref[65535] storage ref"}},"id":2326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"write","nodeType":"MemberAccess","referencedDeclaration":4669,"src":"32410:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$_t_uint16_$_t_uint32_$_t_int24_$_t_uint128_$_t_uint144_$_t_uint32_$_t_uint16_$_t_uint16_$returns$_t_uint16_$_t_uint16_$bound_to$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$","typeString":"function (struct Oracle.Observation storage ref[65535] storage pointer,uint16,uint32,int24,uint128,uint144,uint32,uint16,uint16) returns (uint16,uint16)"}},"id":2343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32410:401:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint16_$","typeString":"tuple(uint16,uint16)"}},"nodeType":"VariableDeclarationStatement","src":"32351:460:2"},{"expression":{"id":2362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":2345,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"32827:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":2347,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":488,"src":"32827:18:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":2348,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"32847:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":2349,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":490,"src":"32847:10:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":2350,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"32859:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":2351,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"observationIndex","nodeType":"MemberAccess","referencedDeclaration":492,"src":"32859:22:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"id":2352,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"32883:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":2353,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"observationCardinality","nodeType":"MemberAccess","referencedDeclaration":494,"src":"32883:28:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":2354,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"32826:86:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$","typeString":"tuple(uint160,int24,uint16,uint16)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"expression":{"id":2355,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"32934:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":1831,"src":"32934:18:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":2357,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"32971:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2358,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":1833,"src":"32971:10:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":2359,"name":"observationIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"33000:16:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":2360,"name":"observationCardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2324,"src":"33035:22:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":2361,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"32915:157:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$","typeString":"tuple(uint160,int24,uint16,uint16)"}},"src":"32826:246:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2363,"nodeType":"ExpressionStatement","src":"32826:246:2"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2374,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"33263:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2375,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityStart","nodeType":"MemberAccess","referencedDeclaration":1806,"src":"33263:20:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2376,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"33287:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2377,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":1839,"src":"33287:15:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"33263:39:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2384,"nodeType":"IfStatement","src":"33259:72:2","trueBody":{"expression":{"id":2382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2379,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":535,"src":"33304:9:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2380,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"33316:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2381,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":1839,"src":"33316:15:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"33304:27:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2383,"nodeType":"ExpressionStatement","src":"33304:27:2"}},{"condition":{"id":2385,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"33517:10:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2421,"nodeType":"Block","src":"33692:157:2","statements":[{"expression":{"id":2407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2404,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"33707:20:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2405,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"33730:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2406,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthGlobalX128","nodeType":"MemberAccess","referencedDeclaration":1835,"src":"33730:25:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33707:48:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2408,"nodeType":"ExpressionStatement","src":"33707:48:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2409,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"33774:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2410,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":1837,"src":"33774:17:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33794:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"33774:21:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2420,"nodeType":"IfStatement","src":"33770:67:2","trueBody":{"expression":{"id":2418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2413,"name":"protocolFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"33797:12:2","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolFees_$527_storage","typeString":"struct ElixirPool.ProtocolFees storage ref"}},"id":2415,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":526,"src":"33797:19:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":2416,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"33820:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2417,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":1837,"src":"33820:17:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"33797:40:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2419,"nodeType":"ExpressionStatement","src":"33797:40:2"}}]},"id":2422,"nodeType":"IfStatement","src":"33513:336:2","trueBody":{"id":2403,"nodeType":"Block","src":"33529:157:2","statements":[{"expression":{"id":2389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2386,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"33544:20:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2387,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"33567:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2388,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthGlobalX128","nodeType":"MemberAccess","referencedDeclaration":1835,"src":"33567:25:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33544:48:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2390,"nodeType":"ExpressionStatement","src":"33544:48:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2391,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"33611:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2392,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":1837,"src":"33611:17:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33631:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"33611:21:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2402,"nodeType":"IfStatement","src":"33607:67:2","trueBody":{"expression":{"id":2400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2395,"name":"protocolFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"33634:12:2","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolFees_$527_storage","typeString":"struct ElixirPool.ProtocolFees storage ref"}},"id":2397,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":524,"src":"33634:19:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":2398,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"33657:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2399,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":1837,"src":"33657:17:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"33634:40:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2401,"nodeType":"ExpressionStatement","src":"33634:40:2"}}]}},{"expression":{"id":2444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2423,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1870,"src":"33862:7:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":2424,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1872,"src":"33871:7:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2425,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"33861:18:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2426,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"33882:10:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2427,"name":"exactInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1950,"src":"33896:10:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"33882:24:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"expression":{"id":2436,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"34013:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2437,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amountCalculated","nodeType":"MemberAccess","referencedDeclaration":1829,"src":"34013:22:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2438,"name":"amountSpecified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"34037:15:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":2439,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"34055:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2440,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amountSpecifiedRemaining","nodeType":"MemberAccess","referencedDeclaration":1827,"src":"34055:30:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"34037:48:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2442,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"34012:74:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":2443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"33882:204:2","trueExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2429,"name":"amountSpecified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"33923:15:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":2430,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"33941:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2431,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amountSpecifiedRemaining","nodeType":"MemberAccess","referencedDeclaration":1827,"src":"33941:30:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33923:48:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"expression":{"id":2433,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"33973:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2434,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amountCalculated","nodeType":"MemberAccess","referencedDeclaration":1829,"src":"33973:22:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2435,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"33922:74:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"src":"33861:225:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2445,"nodeType":"ExpressionStatement","src":"33861:225:2"},{"condition":{"id":2446,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"34152:10:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2548,"nodeType":"Block","src":"34529:359:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2498,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1870,"src":"34548:7:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":2499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34558:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"34548:11:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2514,"nodeType":"IfStatement","src":"34544:88:2","trueBody":{"expression":{"arguments":[{"expression":{"id":2504,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"34589:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2505,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":1822,"src":"34589:12:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1858,"src":"34603:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"34622:8:2","subExpression":{"id":2509,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1870,"src":"34623:7:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34614:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2507,"name":"uint256","nodeType":"ElementaryTypeName","src":"34614:7:2","typeDescriptions":{}}},"id":2511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34614:17:2","tryCall":false,"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":2501,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7618,"src":"34561:14:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$7618_$","typeString":"type(library TransferHelper)"}},"id":2503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":7617,"src":"34561:27:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34561:71:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2513,"nodeType":"ExpressionStatement","src":"34561:71:2"}},{"assignments":[2516],"declarations":[{"constant":false,"id":2516,"mutability":"mutable","name":"balance1Before","nodeType":"VariableDeclaration","scope":2548,"src":"34649:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2515,"name":"uint256","nodeType":"ElementaryTypeName","src":"34649:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2521,"initialValue":{"arguments":[{"expression":{"id":2518,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"34682:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2519,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":1824,"src":"34682:12:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2517,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"34674:7:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34674:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"34649:46:2"},{"expression":{"arguments":[{"id":2527,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1870,"src":"34761:7:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":2528,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1872,"src":"34770:7:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":2529,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1866,"src":"34779:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"expression":{"id":2523,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"34730:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"34730:10:2","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":2522,"name":"IElixirSwapCallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3315,"src":"34710:19:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirSwapCallback_$3315_$","typeString":"type(contract IElixirSwapCallback)"}},"id":2525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34710:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirSwapCallback_$3315","typeString":"contract IElixirSwapCallback"}},"id":2526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"elixirSwapCallback","nodeType":"MemberAccess","referencedDeclaration":3314,"src":"34710:50:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_int256_$_t_int256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (int256,int256,bytes memory) external"}},"id":2530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34710:74:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2531,"nodeType":"ExpressionStatement","src":"34710:74:2"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":2537,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1872,"src":"34834:7:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2536,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34826:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2535,"name":"uint256","nodeType":"ElementaryTypeName","src":"34826:7:2","typeDescriptions":{}}},"id":2538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34826:16:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2533,"name":"balance1Before","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2516,"src":"34807:14:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":4325,"src":"34807:18:2","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":2539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34807:36:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"expression":{"id":2541,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"34855:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2542,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":1824,"src":"34855:12:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2540,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"34847:7:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34847:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34807:61:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494941","id":2545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"34870:5:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_ead9ba8f24b0c9c3e87a0076a48a0a166e1d5cd0bd355971195d20d966e145fc","typeString":"literal_string \"IIA\""},"value":"IIA"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ead9ba8f24b0c9c3e87a0076a48a0a166e1d5cd0bd355971195d20d966e145fc","typeString":"literal_string \"IIA\""}],"id":2532,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"34799:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34799:77:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2547,"nodeType":"ExpressionStatement","src":"34799:77:2"}]},"id":2549,"nodeType":"IfStatement","src":"34148:740:2","trueBody":{"id":2497,"nodeType":"Block","src":"34164:359:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2447,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1872,"src":"34183:7:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34193:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"34183:11:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2463,"nodeType":"IfStatement","src":"34179:88:2","trueBody":{"expression":{"arguments":[{"expression":{"id":2453,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"34224:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2454,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":1824,"src":"34224:12:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2455,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1858,"src":"34238:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"34257:8:2","subExpression":{"id":2458,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1872,"src":"34258:7:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34249:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2456,"name":"uint256","nodeType":"ElementaryTypeName","src":"34249:7:2","typeDescriptions":{}}},"id":2460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34249:17:2","tryCall":false,"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":2450,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7618,"src":"34196:14:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$7618_$","typeString":"type(library TransferHelper)"}},"id":2452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":7617,"src":"34196:27:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34196:71:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2462,"nodeType":"ExpressionStatement","src":"34196:71:2"}},{"assignments":[2465],"declarations":[{"constant":false,"id":2465,"mutability":"mutable","name":"balance0Before","nodeType":"VariableDeclaration","scope":2497,"src":"34284:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2464,"name":"uint256","nodeType":"ElementaryTypeName","src":"34284:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2470,"initialValue":{"arguments":[{"expression":{"id":2467,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"34317:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2468,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":1822,"src":"34317:12:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2466,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"34309:7:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34309:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"34284:46:2"},{"expression":{"arguments":[{"id":2476,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1870,"src":"34396:7:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":2477,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1872,"src":"34405:7:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":2478,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1866,"src":"34414:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"expression":{"id":2472,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"34365:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"34365:10:2","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":2471,"name":"IElixirSwapCallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3315,"src":"34345:19:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirSwapCallback_$3315_$","typeString":"type(contract IElixirSwapCallback)"}},"id":2474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34345:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirSwapCallback_$3315","typeString":"contract IElixirSwapCallback"}},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"elixirSwapCallback","nodeType":"MemberAccess","referencedDeclaration":3314,"src":"34345:50:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_int256_$_t_int256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (int256,int256,bytes memory) external"}},"id":2479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34345:74:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2480,"nodeType":"ExpressionStatement","src":"34345:74:2"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":2486,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1870,"src":"34469:7:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2485,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34461:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2484,"name":"uint256","nodeType":"ElementaryTypeName","src":"34461:7:2","typeDescriptions":{}}},"id":2487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34461:16:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2482,"name":"balance0Before","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2465,"src":"34442:14:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":4325,"src":"34442:18:2","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":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34442:36:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"expression":{"id":2490,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"34490:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCache_$1825_memory_ptr","typeString":"struct ElixirPool.SwapCache memory"}},"id":2491,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":1822,"src":"34490:12:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2489,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"34482:7:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34482:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34442:61:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494941","id":2494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"34505:5:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_ead9ba8f24b0c9c3e87a0076a48a0a166e1d5cd0bd355971195d20d966e145fc","typeString":"literal_string \"IIA\""},"value":"IIA"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ead9ba8f24b0c9c3e87a0076a48a0a166e1d5cd0bd355971195d20d966e145fc","typeString":"literal_string \"IIA\""}],"id":2481,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"34434:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34434:77:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2496,"nodeType":"ExpressionStatement","src":"34434:77:2"}]}},{"eventCall":{"arguments":[{"expression":{"id":2551,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"34910:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"34910:10:2","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":2553,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1858,"src":"34922:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2554,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1870,"src":"34933:7:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":2555,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1872,"src":"34942:7:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"expression":{"id":2556,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"34951:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2557,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceX96","nodeType":"MemberAccess","referencedDeclaration":1831,"src":"34951:18:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":2558,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"34971:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2559,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":1839,"src":"34971:15:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":2560,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"34988:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$1840_memory_ptr","typeString":"struct ElixirPool.SwapState memory"}},"id":2561,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":1833,"src":"34988:10:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_int24","typeString":"int24"}],"id":2550,"name":"Swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3521,"src":"34905:4:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_int256_$_t_int256_$_t_uint160_$_t_uint128_$_t_int24_$returns$__$","typeString":"function (address,address,int256,int256,uint160,uint128,int24)"}},"id":2562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34905:94:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2563,"nodeType":"EmitStatement","src":"34900:99:2"},{"expression":{"id":2568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2564,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"35010:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":2566,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"unlocked","nodeType":"MemberAccess","referencedDeclaration":500,"src":"35010:14:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"35027:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"35010:21:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2569,"nodeType":"ExpressionStatement","src":"35010:21:2"}]},"documentation":{"id":1856,"nodeType":"StructuredDocumentation","src":"25334:34:2","text":"@inheritdoc IElixirPoolActions"},"functionSelector":"128acb08","id":2571,"implemented":true,"kind":"function","modifiers":[],"name":"swap","nodeType":"FunctionDefinition","overrides":{"id":1868,"nodeType":"OverrideSpecifier","overrides":[],"src":"25557:8:2"},"parameters":{"id":1867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1858,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2571,"src":"25398:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1857,"name":"address","nodeType":"ElementaryTypeName","src":"25398:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1860,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":2571,"src":"25426:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1859,"name":"bool","nodeType":"ElementaryTypeName","src":"25426:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1862,"mutability":"mutable","name":"amountSpecified","nodeType":"VariableDeclaration","scope":2571,"src":"25452:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1861,"name":"int256","nodeType":"ElementaryTypeName","src":"25452:6:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1864,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":2571,"src":"25485:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1863,"name":"uint160","nodeType":"ElementaryTypeName","src":"25485:7:2","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":1866,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":2571,"src":"25521:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1865,"name":"bytes","nodeType":"ElementaryTypeName","src":"25521:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"25387:160:2"},"returnParameters":{"id":1873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1870,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":2571,"src":"25575:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1869,"name":"int256","nodeType":"ElementaryTypeName","src":"25575:6:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1872,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":2571,"src":"25591:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1871,"name":"int256","nodeType":"ElementaryTypeName","src":"25591:6:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25574:32:2"},"scope":3090,"src":"25374:9665:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"ElixirPool.FlashCache","id":2582,"members":[{"constant":false,"id":2573,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":2582,"src":"35147:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2572,"name":"address","nodeType":"ElementaryTypeName","src":"35147:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2575,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":2582,"src":"35244:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2574,"name":"address","nodeType":"ElementaryTypeName","src":"35244:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2577,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":2582,"src":"35330:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":2576,"name":"uint24","nodeType":"ElementaryTypeName","src":"35330:6:2","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":2579,"mutability":"mutable","name":"fee0","nodeType":"VariableDeclaration","scope":2582,"src":"35418:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2578,"name":"uint256","nodeType":"ElementaryTypeName","src":"35418:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2581,"mutability":"mutable","name":"fee1","nodeType":"VariableDeclaration","scope":2582,"src":"35509:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2580,"name":"uint256","nodeType":"ElementaryTypeName","src":"35509:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"FlashCache","nodeType":"StructDefinition","scope":3090,"src":"35047:482:2","visibility":"public"},{"baseFunctions":[3404],"body":{"id":2854,"nodeType":"Block","src":"35732:2055:2","statements":[{"assignments":[2598],"declarations":[{"constant":false,"id":2598,"mutability":"mutable","name":"_liquidity","nodeType":"VariableDeclaration","scope":2854,"src":"35743:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2597,"name":"uint128","nodeType":"ElementaryTypeName","src":"35743:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":2600,"initialValue":{"id":2599,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":535,"src":"35764:9:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"35743:30:2"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2602,"name":"_liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2598,"src":"35792:10:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35805:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"35792:14:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c","id":2605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"35808:3:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_8aa64f937099b65a4febc243a5ae0f2d6416bb9e473c30dd29c1ee498fb7c5a8","typeString":"literal_string \"L\""},"value":"L"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8aa64f937099b65a4febc243a5ae0f2d6416bb9e473c30dd29c1ee498fb7c5a8","typeString":"literal_string \"L\""}],"id":2601,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"35784:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35784:28:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2607,"nodeType":"ExpressionStatement","src":"35784:28:2"},{"assignments":[2609],"declarations":[{"constant":false,"id":2609,"mutability":"mutable","name":"cache","nodeType":"VariableDeclaration","scope":2854,"src":"35825:23:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCache_$2582_memory_ptr","typeString":"struct ElixirPool.FlashCache"},"typeName":{"id":2608,"name":"FlashCache","nodeType":"UserDefinedTypeName","referencedDeclaration":2582,"src":"35825:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCache_$2582_storage_ptr","typeString":"struct ElixirPool.FlashCache"}},"visibility":"internal"}],"id":2617,"initialValue":{"arguments":[{"id":2611,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"35885:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2612,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"35914:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2613,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"35940:3:2","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"hexValue":"30","id":2614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35964:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":2615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35986:1:2","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_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2610,"name":"FlashCache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2582,"src":"35851:10:2","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_FlashCache_$2582_storage_ptr_$","typeString":"type(struct ElixirPool.FlashCache storage pointer)"}},"id":2616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee","fee0","fee1"],"nodeType":"FunctionCall","src":"35851:148:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_FlashCache_$2582_memory_ptr","typeString":"struct ElixirPool.FlashCache memory"}},"nodeType":"VariableDeclarationStatement","src":"35825:174:2"},{"expression":{"id":2628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2618,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2609,"src":"36012:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCache_$2582_memory_ptr","typeString":"struct ElixirPool.FlashCache memory"}},"id":2620,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"fee0","nodeType":"MemberAccess","referencedDeclaration":2579,"src":"36012:10:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2623,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2587,"src":"36051:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2624,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2609,"src":"36060:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCache_$2582_memory_ptr","typeString":"struct ElixirPool.FlashCache memory"}},"id":2625,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":2577,"src":"36060:9:2","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"hexValue":"316536","id":2626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36071:3:2","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1e6"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"}],"expression":{"id":2621,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"36025:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":2622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":4247,"src":"36025:25:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36025:50:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36012:63:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2629,"nodeType":"ExpressionStatement","src":"36012:63:2"},{"expression":{"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2630,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2609,"src":"36086:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCache_$2582_memory_ptr","typeString":"struct ElixirPool.FlashCache memory"}},"id":2632,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"fee1","nodeType":"MemberAccess","referencedDeclaration":2581,"src":"36086:10:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2635,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2589,"src":"36125:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2636,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2609,"src":"36134:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCache_$2582_memory_ptr","typeString":"struct ElixirPool.FlashCache memory"}},"id":2637,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":2577,"src":"36134:9:2","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"hexValue":"316536","id":2638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36145:3:2","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1e6"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"}],"expression":{"id":2633,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"36099:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":2634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":4247,"src":"36099:25:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36099:50:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36086:63:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2641,"nodeType":"ExpressionStatement","src":"36086:63:2"},{"assignments":[2643],"declarations":[{"constant":false,"id":2643,"mutability":"mutable","name":"balance0Before","nodeType":"VariableDeclaration","scope":2854,"src":"36160:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2642,"name":"uint256","nodeType":"ElementaryTypeName","src":"36160:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2648,"initialValue":{"arguments":[{"expression":{"id":2645,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2609,"src":"36193:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCache_$2582_memory_ptr","typeString":"struct ElixirPool.FlashCache memory"}},"id":2646,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":2573,"src":"36193:12:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2644,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"36185:7:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36185:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"36160:46:2"},{"assignments":[2650],"declarations":[{"constant":false,"id":2650,"mutability":"mutable","name":"balance1Before","nodeType":"VariableDeclaration","scope":2854,"src":"36217:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2649,"name":"uint256","nodeType":"ElementaryTypeName","src":"36217:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2655,"initialValue":{"arguments":[{"expression":{"id":2652,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2609,"src":"36250:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCache_$2582_memory_ptr","typeString":"struct ElixirPool.FlashCache memory"}},"id":2653,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":2575,"src":"36250:12:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2651,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"36242:7:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36242:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"36217:46:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2656,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2587,"src":"36280:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36290:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"36280:11:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2668,"nodeType":"IfStatement","src":"36276:78:2","trueBody":{"expression":{"arguments":[{"expression":{"id":2662,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2609,"src":"36321:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCache_$2582_memory_ptr","typeString":"struct ElixirPool.FlashCache memory"}},"id":2663,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":2573,"src":"36321:12:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2664,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2585,"src":"36335:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2665,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2587,"src":"36346:7:2","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":2659,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7618,"src":"36293:14:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$7618_$","typeString":"type(library TransferHelper)"}},"id":2661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":7617,"src":"36293:27:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36293:61:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2667,"nodeType":"ExpressionStatement","src":"36293:61:2"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2669,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2589,"src":"36369:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36379:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"36369:11:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2681,"nodeType":"IfStatement","src":"36365:78:2","trueBody":{"expression":{"arguments":[{"expression":{"id":2675,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2609,"src":"36410:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCache_$2582_memory_ptr","typeString":"struct ElixirPool.FlashCache memory"}},"id":2676,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":2575,"src":"36410:12:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2677,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2585,"src":"36424:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2678,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2589,"src":"36435:7:2","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":2672,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7618,"src":"36382:14:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$7618_$","typeString":"type(library TransferHelper)"}},"id":2674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":7617,"src":"36382:27:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36382:61:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2680,"nodeType":"ExpressionStatement","src":"36382:61:2"}},{"expression":{"arguments":[{"expression":{"id":2687,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2609,"src":"36509:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCache_$2582_memory_ptr","typeString":"struct ElixirPool.FlashCache memory"}},"id":2688,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee0","nodeType":"MemberAccess","referencedDeclaration":2579,"src":"36509:10:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2689,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2609,"src":"36521:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCache_$2582_memory_ptr","typeString":"struct ElixirPool.FlashCache memory"}},"id":2690,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee1","nodeType":"MemberAccess","referencedDeclaration":2581,"src":"36521:10:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2691,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2591,"src":"36533:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"expression":{"id":2683,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"36477:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"36477:10:2","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":2682,"name":"IElixirFlashCallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3287,"src":"36456:20:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirFlashCallback_$3287_$","typeString":"type(contract IElixirFlashCallback)"}},"id":2685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36456:32:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirFlashCallback_$3287","typeString":"contract IElixirFlashCallback"}},"id":2686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"elixirFlashCallback","nodeType":"MemberAccess","referencedDeclaration":3286,"src":"36456:52:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (uint256,uint256,bytes memory) external"}},"id":2692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36456:82:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2693,"nodeType":"ExpressionStatement","src":"36456:82:2"},{"assignments":[2695],"declarations":[{"constant":false,"id":2695,"mutability":"mutable","name":"balance0After","nodeType":"VariableDeclaration","scope":2854,"src":"36551:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"36551:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2700,"initialValue":{"arguments":[{"expression":{"id":2697,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2609,"src":"36583:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCache_$2582_memory_ptr","typeString":"struct ElixirPool.FlashCache memory"}},"id":2698,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":2573,"src":"36583:12:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2696,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"36575:7:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36575:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"36551:45:2"},{"assignments":[2702],"declarations":[{"constant":false,"id":2702,"mutability":"mutable","name":"balance1After","nodeType":"VariableDeclaration","scope":2854,"src":"36607:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2701,"name":"uint256","nodeType":"ElementaryTypeName","src":"36607:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2707,"initialValue":{"arguments":[{"expression":{"id":2704,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2609,"src":"36639:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCache_$2582_memory_ptr","typeString":"struct ElixirPool.FlashCache memory"}},"id":2705,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":2575,"src":"36639:12:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2703,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"36631:7:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36631:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"36607:45:2"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":2711,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2609,"src":"36692:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCache_$2582_memory_ptr","typeString":"struct ElixirPool.FlashCache memory"}},"id":2712,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee0","nodeType":"MemberAccess","referencedDeclaration":2579,"src":"36692:10:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2709,"name":"balance0Before","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2643,"src":"36673:14:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":4325,"src":"36673:18:2","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":2713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36673:30:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":2714,"name":"balance0After","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"36707:13:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36673:47:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4630","id":2716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"36722:4:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_03a44893a6f04a1de143742ff3f2d3f895f4c0834e5d5ed116313011722d95d5","typeString":"literal_string \"F0\""},"value":"F0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_03a44893a6f04a1de143742ff3f2d3f895f4c0834e5d5ed116313011722d95d5","typeString":"literal_string \"F0\""}],"id":2708,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"36665:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36665:62:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2718,"nodeType":"ExpressionStatement","src":"36665:62:2"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":2722,"name":"cache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2609,"src":"36765:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCache_$2582_memory_ptr","typeString":"struct ElixirPool.FlashCache memory"}},"id":2723,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee1","nodeType":"MemberAccess","referencedDeclaration":2581,"src":"36765:10:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2720,"name":"balance1Before","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2650,"src":"36746:14:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":4325,"src":"36746:18:2","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":2724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36746:30:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":2725,"name":"balance1After","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2702,"src":"36780:13:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36746:47:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4631","id":2727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"36795:4:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_61f8f8560327748d3d32b99138645b9511e5310a7109d5ec11cbfb1b408602cf","typeString":"literal_string \"F1\""},"value":"F1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61f8f8560327748d3d32b99138645b9511e5310a7109d5ec11cbfb1b408602cf","typeString":"literal_string \"F1\""}],"id":2719,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"36738:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36738:62:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2729,"nodeType":"ExpressionStatement","src":"36738:62:2"},{"assignments":[2731],"declarations":[{"constant":false,"id":2731,"mutability":"mutable","name":"paid0","nodeType":"VariableDeclaration","scope":2854,"src":"36902:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2730,"name":"uint256","nodeType":"ElementaryTypeName","src":"36902:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2735,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2732,"name":"balance0After","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"36918:13:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2733,"name":"balance0Before","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2643,"src":"36934:14:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36918:30:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"36902:46:2"},{"assignments":[2737],"declarations":[{"constant":false,"id":2737,"mutability":"mutable","name":"paid1","nodeType":"VariableDeclaration","scope":2854,"src":"36959:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2736,"name":"uint256","nodeType":"ElementaryTypeName","src":"36959:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2741,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2738,"name":"balance1After","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2702,"src":"36975:13:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2739,"name":"balance1Before","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2650,"src":"36991:14:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36975:30:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"36959:46:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2742,"name":"paid0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2731,"src":"37022:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37030:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"37022:9:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2792,"nodeType":"IfStatement","src":"37018:337:2","trueBody":{"id":2791,"nodeType":"Block","src":"37033:322:2","statements":[{"assignments":[2746],"declarations":[{"constant":false,"id":2746,"mutability":"mutable","name":"feeProtocol0","nodeType":"VariableDeclaration","scope":2791,"src":"37048:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2745,"name":"uint8","nodeType":"ElementaryTypeName","src":"37048:5:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":2751,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2747,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"37069:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":2748,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeProtocol","nodeType":"MemberAccess","referencedDeclaration":498,"src":"37069:17:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"3136","id":2749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37089:2:2","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"37069:22:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"37048:43:2"},{"assignments":[2753],"declarations":[{"constant":false,"id":2753,"mutability":"mutable","name":"fees0","nodeType":"VariableDeclaration","scope":2791,"src":"37106:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2752,"name":"uint256","nodeType":"ElementaryTypeName","src":"37106:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2762,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2754,"name":"feeProtocol0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2746,"src":"37122:12:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37138:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"37122:17:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2758,"name":"paid0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2731,"src":"37146:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2759,"name":"feeProtocol0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2746,"src":"37154:12:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"37146:20:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"37122:44:2","trueExpression":{"hexValue":"30","id":2757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37142:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"37106:60:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2765,"name":"fees0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"37193:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2764,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37185:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":2763,"name":"uint128","nodeType":"ElementaryTypeName","src":"37185:7:2","typeDescriptions":{}}},"id":2766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37185:14:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37202:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"37185:18:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2778,"nodeType":"IfStatement","src":"37181:61:2","trueBody":{"expression":{"id":2776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2769,"name":"protocolFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"37205:12:2","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolFees_$527_storage","typeString":"struct ElixirPool.ProtocolFees storage ref"}},"id":2771,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":524,"src":"37205:19:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":2774,"name":"fees0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"37236:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37228:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":2772,"name":"uint128","nodeType":"ElementaryTypeName","src":"37228:7:2","typeDescriptions":{}}},"id":2775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37228:14:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"37205:37:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2777,"nodeType":"ExpressionStatement","src":"37205:37:2"}},{"expression":{"id":2789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2779,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"37257:20:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2782,"name":"paid0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2731,"src":"37297:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2783,"name":"fees0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"37305:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"37297:13:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2785,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4065,"src":"37312:13:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$4065_$","typeString":"type(library FixedPoint128)"}},"id":2786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":4064,"src":"37312:18:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2787,"name":"_liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2598,"src":"37332:10:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":2780,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"37281:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":2781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"37281:15:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37281:62:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"37257:86:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2790,"nodeType":"ExpressionStatement","src":"37257:86:2"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2793,"name":"paid1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2737,"src":"37369:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37377:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"37369:9:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2843,"nodeType":"IfStatement","src":"37365:337:2","trueBody":{"id":2842,"nodeType":"Block","src":"37380:322:2","statements":[{"assignments":[2797],"declarations":[{"constant":false,"id":2797,"mutability":"mutable","name":"feeProtocol1","nodeType":"VariableDeclaration","scope":2842,"src":"37395:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2796,"name":"uint8","nodeType":"ElementaryTypeName","src":"37395:5:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":2802,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2798,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"37416:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":2799,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeProtocol","nodeType":"MemberAccess","referencedDeclaration":498,"src":"37416:17:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":2800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37437:1:2","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"37416:22:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"37395:43:2"},{"assignments":[2804],"declarations":[{"constant":false,"id":2804,"mutability":"mutable","name":"fees1","nodeType":"VariableDeclaration","scope":2842,"src":"37453:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2803,"name":"uint256","nodeType":"ElementaryTypeName","src":"37453:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2813,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2805,"name":"feeProtocol1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"37469:12:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37485:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"37469:17:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2809,"name":"paid1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2737,"src":"37493:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2810,"name":"feeProtocol1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"37501:12:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"37493:20:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"37469:44:2","trueExpression":{"hexValue":"30","id":2808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37489:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"37453:60:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2816,"name":"fees1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2804,"src":"37540:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37532:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":2814,"name":"uint128","nodeType":"ElementaryTypeName","src":"37532:7:2","typeDescriptions":{}}},"id":2817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37532:14:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37549:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"37532:18:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2829,"nodeType":"IfStatement","src":"37528:61:2","trueBody":{"expression":{"id":2827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2820,"name":"protocolFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"37552:12:2","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolFees_$527_storage","typeString":"struct ElixirPool.ProtocolFees storage ref"}},"id":2822,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":526,"src":"37552:19:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":2825,"name":"fees1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2804,"src":"37583:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37575:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":2823,"name":"uint128","nodeType":"ElementaryTypeName","src":"37575:7:2","typeDescriptions":{}}},"id":2826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37575:14:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"37552:37:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2828,"nodeType":"ExpressionStatement","src":"37552:37:2"}},{"expression":{"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2830,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"37604:20:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2833,"name":"paid1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2737,"src":"37644:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2834,"name":"fees1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2804,"src":"37652:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"37644:13:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2836,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4065,"src":"37659:13:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$4065_$","typeString":"type(library FixedPoint128)"}},"id":2837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":4064,"src":"37659:18:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2838,"name":"_liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2598,"src":"37679:10:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":2831,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"37628:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":2832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"37628:15:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37628:62:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"37604:86:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2841,"nodeType":"ExpressionStatement","src":"37604:86:2"}]}},{"eventCall":{"arguments":[{"expression":{"id":2845,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"37725:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"37725:10:2","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":2847,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2585,"src":"37737:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2848,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2587,"src":"37748:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2849,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2589,"src":"37757:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2850,"name":"paid0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2731,"src":"37766:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2851,"name":"paid1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2737,"src":"37773:5:2","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"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2844,"name":"Flash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3536,"src":"37719:5:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256,uint256,uint256)"}},"id":2852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37719:60:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2853,"nodeType":"EmitStatement","src":"37714:65:2"}]},"documentation":{"id":2583,"nodeType":"StructuredDocumentation","src":"35537:34:2","text":"@inheritdoc IElixirPoolActions"},"functionSelector":"490e6cbc","id":2855,"implemented":true,"kind":"function","modifiers":[{"id":2595,"modifierName":{"id":2594,"name":"lock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":582,"src":"35727:4:2","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"35727:4:2"}],"name":"flash","nodeType":"FunctionDefinition","overrides":{"id":2593,"nodeType":"OverrideSpecifier","overrides":[],"src":"35718:8:2"},"parameters":{"id":2592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2585,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2855,"src":"35602:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2584,"name":"address","nodeType":"ElementaryTypeName","src":"35602:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2587,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":2855,"src":"35630:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2586,"name":"uint256","nodeType":"ElementaryTypeName","src":"35630:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2589,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":2855,"src":"35656:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2588,"name":"uint256","nodeType":"ElementaryTypeName","src":"35656:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2591,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":2855,"src":"35682:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2590,"name":"bytes","nodeType":"ElementaryTypeName","src":"35682:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"35591:117:2"},"returnParameters":{"id":2596,"nodeType":"ParameterList","parameters":[],"src":"35732:0:2"},"scope":3090,"src":"35577:2210:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3636],"body":{"id":2925,"nodeType":"Block","src":"37944:417:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2869,"name":"feeProtocol0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2858,"src":"37978:12:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37994:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"37978:17:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2872,"name":"feeProtocol0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2858,"src":"38000:12:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"34","id":2873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38016:1:2","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"38000:17:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2875,"name":"feeProtocol0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2858,"src":"38021:12:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"3130","id":2876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38037:2:2","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"38021:18:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"38000:39:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2879,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"37999:41:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"37978:62:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2881,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"37977:64:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2882,"name":"feeProtocol1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2860,"src":"38063:12:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38079:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38063:17:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2885,"name":"feeProtocol1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2860,"src":"38085:12:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"34","id":2886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38101:1:2","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"38085:17:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2888,"name":"feeProtocol1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2860,"src":"38106:12:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"3130","id":2889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38122:2:2","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"38106:18:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"38085:39:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2892,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"38084:41:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"38063:62:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2894,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"38062:64:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"37977:149:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2868,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"37955:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":2896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37955:182:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2897,"nodeType":"ExpressionStatement","src":"37955:182:2"},{"assignments":[2899],"declarations":[{"constant":false,"id":2899,"mutability":"mutable","name":"feeProtocolOld","nodeType":"VariableDeclaration","scope":2925,"src":"38148:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2898,"name":"uint8","nodeType":"ElementaryTypeName","src":"38148:5:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":2902,"initialValue":{"expression":{"id":2900,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"38171:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":2901,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeProtocol","nodeType":"MemberAccess","referencedDeclaration":498,"src":"38171:17:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"38148:40:2"},{"expression":{"id":2912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2903,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"38199:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":2905,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeProtocol","nodeType":"MemberAccess","referencedDeclaration":498,"src":"38199:17:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2906,"name":"feeProtocol0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2858,"src":"38219:12:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2907,"name":"feeProtocol1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2860,"src":"38235:12:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":2908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38251:1:2","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"38235:17:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2910,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"38234:19:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"38219:34:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"38199:54:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":2913,"nodeType":"ExpressionStatement","src":"38199:54:2"},{"eventCall":{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2915,"name":"feeProtocolOld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2899,"src":"38284:14:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"3136","id":2916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38301:2:2","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"38284:19:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2918,"name":"feeProtocolOld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2899,"src":"38305:14:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":2919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38323:1:2","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"38305:19:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2921,"name":"feeProtocol0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2858,"src":"38326:12:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2922,"name":"feeProtocol1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2860,"src":"38340:12:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":2914,"name":"SetFeeProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3554,"src":"38269:14:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_uint8_$_t_uint8_$returns$__$","typeString":"function (uint8,uint8,uint8,uint8)"}},"id":2923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38269:84:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2924,"nodeType":"EmitStatement","src":"38264:89:2"}]},"documentation":{"id":2856,"nodeType":"StructuredDocumentation","src":"37795:39:2","text":"@inheritdoc IElixirPoolOwnerActions"},"functionSelector":"8206a4d1","id":2926,"implemented":true,"kind":"function","modifiers":[{"id":2864,"modifierName":{"id":2863,"name":"lock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":582,"src":"37922:4:2","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"37922:4:2"},{"id":2866,"modifierName":{"id":2865,"name":"onlyFactoryOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":598,"src":"37927:16:2","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"37927:16:2"}],"name":"setFeeProtocol","nodeType":"FunctionDefinition","overrides":{"id":2862,"nodeType":"OverrideSpecifier","overrides":[],"src":"37913:8:2"},"parameters":{"id":2861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2858,"mutability":"mutable","name":"feeProtocol0","nodeType":"VariableDeclaration","scope":2926,"src":"37864:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2857,"name":"uint8","nodeType":"ElementaryTypeName","src":"37864:5:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2860,"mutability":"mutable","name":"feeProtocol1","nodeType":"VariableDeclaration","scope":2926,"src":"37884:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2859,"name":"uint8","nodeType":"ElementaryTypeName","src":"37884:5:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"37863:40:2"},"returnParameters":{"id":2867,"nodeType":"ParameterList","parameters":[],"src":"37944:0:2"},"scope":3090,"src":"37840:521:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3650],"body":{"id":3029,"nodeType":"Block","src":"38627:824:2","statements":[{"expression":{"id":2954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2945,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"38638:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2946,"name":"amount0Requested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2931,"src":"38648:16:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":2947,"name":"protocolFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"38667:12:2","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolFees_$527_storage","typeString":"struct ElixirPool.ProtocolFees storage ref"}},"id":2948,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":524,"src":"38667:19:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"38648:38:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2952,"name":"amount0Requested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2931,"src":"38711:16:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38648:79:2","trueExpression":{"expression":{"id":2950,"name":"protocolFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"38689:12:2","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolFees_$527_storage","typeString":"struct ElixirPool.ProtocolFees storage ref"}},"id":2951,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":524,"src":"38689:19:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"38638:89:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2955,"nodeType":"ExpressionStatement","src":"38638:89:2"},{"expression":{"id":2965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2956,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2943,"src":"38738:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2957,"name":"amount1Requested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2933,"src":"38748:16:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":2958,"name":"protocolFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"38767:12:2","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolFees_$527_storage","typeString":"struct ElixirPool.ProtocolFees storage ref"}},"id":2959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":526,"src":"38767:19:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"38748:38:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2963,"name":"amount1Requested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2933,"src":"38811:16:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38748:79:2","trueExpression":{"expression":{"id":2961,"name":"protocolFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"38789:12:2","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolFees_$527_storage","typeString":"struct ElixirPool.ProtocolFees storage ref"}},"id":2962,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":526,"src":"38789:19:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"38738:89:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2966,"nodeType":"ExpressionStatement","src":"38738:89:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2967,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"38844:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38854:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38844:11:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2993,"nodeType":"IfStatement","src":"38840:260:2","trueBody":{"id":2992,"nodeType":"Block","src":"38857:243:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2970,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"38876:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2971,"name":"protocolFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"38887:12:2","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolFees_$527_storage","typeString":"struct ElixirPool.ProtocolFees storage ref"}},"id":2972,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":524,"src":"38887:19:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"38876:30:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2977,"nodeType":"IfStatement","src":"38872:45:2","trueBody":{"expression":{"id":2975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"38908:9:2","subExpression":{"id":2974,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"38908:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2976,"nodeType":"ExpressionStatement","src":"38908:9:2"}},{"expression":{"id":2982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2978,"name":"protocolFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"38988:12:2","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolFees_$527_storage","typeString":"struct ElixirPool.ProtocolFees storage ref"}},"id":2980,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":524,"src":"38988:19:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":2981,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"39011:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"38988:30:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2983,"nodeType":"ExpressionStatement","src":"38988:30:2"},{"expression":{"arguments":[{"id":2987,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"39061:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2988,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2929,"src":"39069:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2989,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"39080:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":2984,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7618,"src":"39033:14:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$7618_$","typeString":"type(library TransferHelper)"}},"id":2986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":7617,"src":"39033:27:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39033:55:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2991,"nodeType":"ExpressionStatement","src":"39033:55:2"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":2996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2994,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2943,"src":"39114:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39124:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"39114:11:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3020,"nodeType":"IfStatement","src":"39110:260:2","trueBody":{"id":3019,"nodeType":"Block","src":"39127:243:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":3000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2997,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2943,"src":"39146:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2998,"name":"protocolFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"39157:12:2","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolFees_$527_storage","typeString":"struct ElixirPool.ProtocolFees storage ref"}},"id":2999,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":526,"src":"39157:19:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"39146:30:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3004,"nodeType":"IfStatement","src":"39142:45:2","trueBody":{"expression":{"id":3002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"39178:9:2","subExpression":{"id":3001,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2943,"src":"39178:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":3003,"nodeType":"ExpressionStatement","src":"39178:9:2"}},{"expression":{"id":3009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3005,"name":"protocolFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"39258:12:2","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolFees_$527_storage","typeString":"struct ElixirPool.ProtocolFees storage ref"}},"id":3007,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":526,"src":"39258:19:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":3008,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2943,"src":"39281:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"39258:30:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":3010,"nodeType":"ExpressionStatement","src":"39258:30:2"},{"expression":{"arguments":[{"id":3014,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"39331:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3015,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2929,"src":"39339:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3016,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2943,"src":"39350:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":3011,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7618,"src":"39303:14:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$7618_$","typeString":"type(library TransferHelper)"}},"id":3013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":7617,"src":"39303:27:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39303:55:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3018,"nodeType":"ExpressionStatement","src":"39303:55:2"}]}},{"eventCall":{"arguments":[{"expression":{"id":3022,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"39403:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"39403:10:2","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":3024,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2929,"src":"39415:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3025,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"39426:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":3026,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2943,"src":"39435:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":3021,"name":"CollectProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3565,"src":"39387:15:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint128_$_t_uint128_$returns$__$","typeString":"function (address,address,uint128,uint128)"}},"id":3027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39387:56:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3028,"nodeType":"EmitStatement","src":"39382:61:2"}]},"documentation":{"id":2927,"nodeType":"StructuredDocumentation","src":"38369:39:2","text":"@inheritdoc IElixirPoolOwnerActions"},"functionSelector":"85b66729","id":3030,"implemented":true,"kind":"function","modifiers":[{"id":2937,"modifierName":{"id":2936,"name":"lock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":582,"src":"38562:4:2","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"38562:4:2"},{"id":2939,"modifierName":{"id":2938,"name":"onlyFactoryOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":598,"src":"38567:16:2","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"38567:16:2"}],"name":"collectProtocol","nodeType":"FunctionDefinition","overrides":{"id":2935,"nodeType":"OverrideSpecifier","overrides":[],"src":"38553:8:2"},"parameters":{"id":2934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2929,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3030,"src":"38449:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2928,"name":"address","nodeType":"ElementaryTypeName","src":"38449:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2931,"mutability":"mutable","name":"amount0Requested","nodeType":"VariableDeclaration","scope":3030,"src":"38477:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2930,"name":"uint128","nodeType":"ElementaryTypeName","src":"38477:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":2933,"mutability":"mutable","name":"amount1Requested","nodeType":"VariableDeclaration","scope":3030,"src":"38512:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2932,"name":"uint128","nodeType":"ElementaryTypeName","src":"38512:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"38438:105:2"},"returnParameters":{"id":2944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2941,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":3030,"src":"38593:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2940,"name":"uint128","nodeType":"ElementaryTypeName","src":"38593:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":2943,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":3030,"src":"38610:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2942,"name":"uint128","nodeType":"ElementaryTypeName","src":"38610:7:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"38592:34:2"},"scope":3090,"src":"38414:1037:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3658],"body":{"id":3088,"nodeType":"Block","src":"39653:714:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3044,"name":"rewardRateEffectiveUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"39672:24:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":3045,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"39700:5:2","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"39700:15:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"39672:43:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3043,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"39664:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":3048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39664:52:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3049,"nodeType":"ExpressionStatement","src":"39664:52:2"},{"expression":{"id":3074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":3050,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"39730:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":3052,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"observationIndex","nodeType":"MemberAccess","referencedDeclaration":492,"src":"39730:22:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"id":3053,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"39754:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":3054,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"observationCardinality","nodeType":"MemberAccess","referencedDeclaration":494,"src":"39754:28:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":3055,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"39729:54:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint16_$","typeString":"tuple(uint16,uint16)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3058,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"39819:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":3059,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"observationIndex","nodeType":"MemberAccess","referencedDeclaration":492,"src":"39819:22:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"arguments":[],"expression":{"argumentTypes":[],"id":3060,"name":"_blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":694,"src":"39856:15:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":3061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39856:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":3062,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"39888:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":3063,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":490,"src":"39888:10:2","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":3064,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":535,"src":"39913:9:2","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":3065,"name":"rewardSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"39937:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_RewardSlot_$510_storage","typeString":"struct ElixirPool.RewardSlot storage ref"}},"id":3066,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerSecondX48","nodeType":"MemberAccess","referencedDeclaration":507,"src":"39937:29:2","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},{"expression":{"id":3067,"name":"rewardSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"39981:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_RewardSlot_$510_storage","typeString":"struct ElixirPool.RewardSlot storage ref"}},"id":3068,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardRateEffectiveUntil","nodeType":"MemberAccess","referencedDeclaration":509,"src":"39981:35:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":3069,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"40031:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":3070,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"observationCardinality","nodeType":"MemberAccess","referencedDeclaration":494,"src":"40031:28:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"id":3071,"name":"slot0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"40074:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Slot0_$501_storage","typeString":"struct ElixirPool.Slot0 storage ref"}},"id":3072,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"observationCardinalityNext","nodeType":"MemberAccess","referencedDeclaration":496,"src":"40074:32:2","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint144","typeString":"uint144"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":3056,"name":"observations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"39786:12:2","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage","typeString":"struct Oracle.Observation storage ref[65535] storage ref"}},"id":3057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"write","nodeType":"MemberAccess","referencedDeclaration":4669,"src":"39786:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$_t_uint16_$_t_uint32_$_t_int24_$_t_uint128_$_t_uint144_$_t_uint32_$_t_uint16_$_t_uint16_$returns$_t_uint16_$_t_uint16_$bound_to$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$","typeString":"function (struct Oracle.Observation storage ref[65535] storage pointer,uint16,uint32,int24,uint128,uint144,uint32,uint16,uint16) returns (uint16,uint16)"}},"id":3073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39786:331:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint16_$","typeString":"tuple(uint16,uint16)"}},"src":"39729:388:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3075,"nodeType":"ExpressionStatement","src":"39729:388:2"},{"expression":{"id":3081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3076,"name":"rewardSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"40128:10:2","typeDescriptions":{"typeIdentifier":"t_struct$_RewardSlot_$510_storage","typeString":"struct ElixirPool.RewardSlot storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3078,"name":"rewardPerSecondX48","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"40187:18:2","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},{"id":3079,"name":"rewardRateEffectiveUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"40246:24:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint144","typeString":"uint144"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":3077,"name":"RewardSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":510,"src":"40141:10:2","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RewardSlot_$510_storage_ptr_$","typeString":"type(struct ElixirPool.RewardSlot storage pointer)"}},"id":3080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["rewardPerSecondX48","rewardRateEffectiveUntil"],"nodeType":"FunctionCall","src":"40141:141:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RewardSlot_$510_memory_ptr","typeString":"struct ElixirPool.RewardSlot memory"}},"src":"40128:154:2","typeDescriptions":{"typeIdentifier":"t_struct$_RewardSlot_$510_storage","typeString":"struct ElixirPool.RewardSlot storage ref"}},"id":3082,"nodeType":"ExpressionStatement","src":"40128:154:2"},{"eventCall":{"arguments":[{"id":3084,"name":"rewardPerSecondX48","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"40314:18:2","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},{"id":3085,"name":"rewardRateEffectiveUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"40334:24:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint144","typeString":"uint144"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":3083,"name":"SetRewardRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3572,"src":"40300:13:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint144_$_t_uint32_$returns$__$","typeString":"function (uint144,uint32)"}},"id":3086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"40300:59:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3087,"nodeType":"EmitStatement","src":"40295:64:2"}]},"documentation":{"id":3031,"nodeType":"StructuredDocumentation","src":"39459:39:2","text":"@inheritdoc IElixirPoolOwnerActions"},"functionSelector":"218064e5","id":3089,"implemented":true,"kind":"function","modifiers":[{"id":3039,"modifierName":{"id":3038,"name":"lock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":582,"src":"39631:4:2","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"39631:4:2"},{"id":3041,"modifierName":{"id":3040,"name":"onlyFactoryOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":598,"src":"39636:16:2","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"39636:16:2"}],"name":"setRewardRate","nodeType":"FunctionDefinition","overrides":{"id":3037,"nodeType":"OverrideSpecifier","overrides":[],"src":"39622:8:2"},"parameters":{"id":3036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3033,"mutability":"mutable","name":"rewardPerSecondX48","nodeType":"VariableDeclaration","scope":3089,"src":"39537:26:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":3032,"name":"uint144","nodeType":"ElementaryTypeName","src":"39537:7:2","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"},{"constant":false,"id":3035,"mutability":"mutable","name":"rewardRateEffectiveUntil","nodeType":"VariableDeclaration","scope":3089,"src":"39574:31:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3034,"name":"uint32","nodeType":"ElementaryTypeName","src":"39574:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"39526:86:2"},"returnParameters":{"id":3042,"nodeType":"ParameterList","parameters":[],"src":"39653:0:2"},"scope":3090,"src":"39504:863:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3091,"src":"861:39509:2"}],"src":"38:40334:2"},"id":2},"contracts/elixir-core/interfaces/IERC20Minimal.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/IERC20Minimal.sol","exportedSymbols":{"IERC20Minimal":[3162]},"id":3163,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3092,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:3"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":3093,"nodeType":"StructuredDocumentation","src":"74:131:3","text":"@title Minimal ERC20 interface for Pangolin\n @notice Contains a subset of the full ERC20 interface that is used in Elixir"},"fullyImplemented":false,"id":3162,"linearizedBaseContracts":[3162],"name":"IERC20Minimal","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3094,"nodeType":"StructuredDocumentation","src":"236:203:3","text":"@notice Returns the balance of a token\n @param account The account for which to look up the number of tokens it has, i.e. its balance\n @return The number of tokens held by the account"},"functionSelector":"70a08231","id":3101,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":3097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3096,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3101,"src":"464:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3095,"name":"address","nodeType":"ElementaryTypeName","src":"464:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"463:17:3"},"returnParameters":{"id":3100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3099,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3101,"src":"504:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3098,"name":"uint256","nodeType":"ElementaryTypeName","src":"504:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"503:9:3"},"scope":3162,"src":"445:68:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3102,"nodeType":"StructuredDocumentation","src":"521:336:3","text":"@notice Transfers the amount of token from the `msg.sender` to the recipient\n @param recipient The account that will receive the amount transferred\n @param amount The number of tokens to send from the sender to the recipient\n @return Returns true for a successful transfer, false for an unsuccessful transfer"},"functionSelector":"a9059cbb","id":3111,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":3107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3104,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3111,"src":"881:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3103,"name":"address","nodeType":"ElementaryTypeName","src":"881:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3106,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3111,"src":"900:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3105,"name":"uint256","nodeType":"ElementaryTypeName","src":"900:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"880:35:3"},"returnParameters":{"id":3110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3109,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3111,"src":"934:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3108,"name":"bool","nodeType":"ElementaryTypeName","src":"934:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"933:6:3"},"scope":3162,"src":"863:77:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3112,"nodeType":"StructuredDocumentation","src":"948:253:3","text":"@notice Returns the current allowance given to a spender by an owner\n @param owner The account of the token owner\n @param spender The account of the token spender\n @return The current allowance granted by `owner` to `spender`"},"functionSelector":"dd62ed3e","id":3121,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":3117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3114,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":3121,"src":"1226:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3113,"name":"address","nodeType":"ElementaryTypeName","src":"1226:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3116,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":3121,"src":"1241:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3115,"name":"address","nodeType":"ElementaryTypeName","src":"1241:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1225:32:3"},"returnParameters":{"id":3120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3119,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3121,"src":"1281:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3118,"name":"uint256","nodeType":"ElementaryTypeName","src":"1281:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1280:9:3"},"scope":3162,"src":"1207:83:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3122,"nodeType":"StructuredDocumentation","src":"1298:346:3","text":"@notice Sets the allowance of a spender from the `msg.sender` to the value `amount`\n @param spender The account which will be allowed to spend a given amount of the owners tokens\n @param amount The amount of tokens allowed to be used by `spender`\n @return Returns true for a successful approval, false for unsuccessful"},"functionSelector":"095ea7b3","id":3131,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":3127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3124,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":3131,"src":"1667:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3123,"name":"address","nodeType":"ElementaryTypeName","src":"1667:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3126,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3131,"src":"1684:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3125,"name":"uint256","nodeType":"ElementaryTypeName","src":"1684:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1666:33:3"},"returnParameters":{"id":3130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3129,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3131,"src":"1718:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3128,"name":"bool","nodeType":"ElementaryTypeName","src":"1718:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1717:6:3"},"scope":3162,"src":"1650:74:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3132,"nodeType":"StructuredDocumentation","src":"1732:375:3","text":"@notice Transfers `amount` tokens from `sender` to `recipient` up to the allowance given to the `msg.sender`\n @param sender The account from which the transfer will be initiated\n @param recipient The recipient of the transfer\n @param amount The amount of the transfer\n @return Returns true for a successful transfer, false for unsuccessful"},"functionSelector":"23b872dd","id":3143,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":3139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3134,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3143,"src":"2145:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3133,"name":"address","nodeType":"ElementaryTypeName","src":"2145:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3136,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3143,"src":"2170:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3135,"name":"address","nodeType":"ElementaryTypeName","src":"2170:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3138,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3143,"src":"2198:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3137,"name":"uint256","nodeType":"ElementaryTypeName","src":"2198:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2134:85:3"},"returnParameters":{"id":3142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3141,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3143,"src":"2238:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3140,"name":"bool","nodeType":"ElementaryTypeName","src":"2238:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2237:6:3"},"scope":3162,"src":"2113:131:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":3144,"nodeType":"StructuredDocumentation","src":"2252:372:3","text":"@notice Event emitted when tokens are transferred from one address to another, either via `#transfer` or `#transferFrom`.\n @param from The account from which the tokens were sent, i.e. the balance decreased\n @param to The account to which the tokens were sent, i.e. the balance increased\n @param value The amount of tokens that were transferred"},"id":3152,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":3151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3146,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":3152,"src":"2645:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3145,"name":"address","nodeType":"ElementaryTypeName","src":"2645:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3148,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":3152,"src":"2667:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3147,"name":"address","nodeType":"ElementaryTypeName","src":"2667:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3150,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":3152,"src":"2687:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3149,"name":"uint256","nodeType":"ElementaryTypeName","src":"2687:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2644:57:3"},"src":"2630:72:3"},{"anonymous":false,"documentation":{"id":3153,"nodeType":"StructuredDocumentation","src":"2710:324:3","text":"@notice Event emitted when the approval amount for the spender of a given owner's tokens changes.\n @param owner The account that approved spending of its tokens\n @param spender The account for which the spending allowance was modified\n @param value The new allowance from the owner to the spender"},"id":3161,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":3160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3155,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":3161,"src":"3055:21:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3154,"name":"address","nodeType":"ElementaryTypeName","src":"3055:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3157,"indexed":true,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":3161,"src":"3078:23:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3156,"name":"address","nodeType":"ElementaryTypeName","src":"3078:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3159,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":3161,"src":"3103:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3158,"name":"uint256","nodeType":"ElementaryTypeName","src":"3103:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3054:63:3"},"src":"3040:78:3"}],"scope":3163,"src":"205:2916:3"}],"src":"46:3077:3"},"id":3},"contracts/elixir-core/interfaces/IElixirFactory.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/IElixirFactory.sol","exportedSymbols":{"IElixirFactory":[3251]},"id":3252,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3164,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:4"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":3165,"nodeType":"StructuredDocumentation","src":"74:153:4","text":"@title The interface for the Elixir Factory\n @notice The Elixir Factory facilitates creation of Elixir pools and control over the protocol fees"},"fullyImplemented":false,"id":3251,"linearizedBaseContracts":[3251],"name":"IElixirFactory","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":3166,"nodeType":"StructuredDocumentation","src":"259:187:4","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":3172,"name":"OwnerChanged","nodeType":"EventDefinition","parameters":{"id":3171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3168,"indexed":true,"mutability":"mutable","name":"oldOwner","nodeType":"VariableDeclaration","scope":3172,"src":"471:24:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3167,"name":"address","nodeType":"ElementaryTypeName","src":"471:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3170,"indexed":true,"mutability":"mutable","name":"newOwner","nodeType":"VariableDeclaration","scope":3172,"src":"497:24:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3169,"name":"address","nodeType":"ElementaryTypeName","src":"497:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"470:52:4"},"src":"452:71:4"},{"anonymous":false,"documentation":{"id":3173,"nodeType":"StructuredDocumentation","src":"531:426:4","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":3185,"name":"PoolCreated","nodeType":"EventDefinition","parameters":{"id":3184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3175,"indexed":true,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":3185,"src":"991:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3174,"name":"address","nodeType":"ElementaryTypeName","src":"991:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3177,"indexed":true,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":3185,"src":"1024:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3176,"name":"address","nodeType":"ElementaryTypeName","src":"1024:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3179,"indexed":true,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":3185,"src":"1057:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3178,"name":"uint24","nodeType":"ElementaryTypeName","src":"1057:6:4","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":3181,"indexed":false,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":3185,"src":"1086:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3180,"name":"int24","nodeType":"ElementaryTypeName","src":"1086:5:4","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3183,"indexed":false,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":3185,"src":"1114:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3182,"name":"address","nodeType":"ElementaryTypeName","src":"1114:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"980:153:4"},"src":"963:171:4"},{"anonymous":false,"documentation":{"id":3186,"nodeType":"StructuredDocumentation","src":"1142:277:4","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":3192,"name":"FeeAmountEnabled","nodeType":"EventDefinition","parameters":{"id":3191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3188,"indexed":true,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":3192,"src":"1448:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3187,"name":"uint24","nodeType":"ElementaryTypeName","src":"1448:6:4","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":3190,"indexed":true,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":3192,"src":"1468:25:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3189,"name":"int24","nodeType":"ElementaryTypeName","src":"1468:5:4","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1447:47:4"},"src":"1425:70:4"},{"documentation":{"id":3193,"nodeType":"StructuredDocumentation","src":"1503:115:4","text":"@notice Returns the implementation contract of the pool\n @return The address of the pool implementation"},"functionSelector":"5c60da1b","id":3198,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nodeType":"FunctionDefinition","parameters":{"id":3194,"nodeType":"ParameterList","parameters":[],"src":"1647:2:4"},"returnParameters":{"id":3197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3196,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3198,"src":"1673:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3195,"name":"address","nodeType":"ElementaryTypeName","src":"1673:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1672:9:4"},"scope":3251,"src":"1624:58:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3199,"nodeType":"StructuredDocumentation","src":"1690:165:4","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":3204,"implemented":false,"kind":"function","modifiers":[],"name":"owner","nodeType":"FunctionDefinition","parameters":{"id":3200,"nodeType":"ParameterList","parameters":[],"src":"1875:2:4"},"returnParameters":{"id":3203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3202,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3204,"src":"1901:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3201,"name":"address","nodeType":"ElementaryTypeName","src":"1901:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1900:9:4"},"scope":3251,"src":"1861:49:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3205,"nodeType":"StructuredDocumentation","src":"1918:351:4","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":3212,"implemented":false,"kind":"function","modifiers":[],"name":"feeAmountTickSpacing","nodeType":"FunctionDefinition","parameters":{"id":3208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3207,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":3212,"src":"2305:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3206,"name":"uint24","nodeType":"ElementaryTypeName","src":"2305:6:4","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"2304:12:4"},"returnParameters":{"id":3211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3210,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3212,"src":"2340:5:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3209,"name":"int24","nodeType":"ElementaryTypeName","src":"2340:5:4","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2339:7:4"},"scope":3251,"src":"2275:72:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3213,"nodeType":"StructuredDocumentation","src":"2355:476:4","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":3224,"implemented":false,"kind":"function","modifiers":[],"name":"getPool","nodeType":"FunctionDefinition","parameters":{"id":3220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3215,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":3224,"src":"2864:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3214,"name":"address","nodeType":"ElementaryTypeName","src":"2864:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3217,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":3224,"src":"2889:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3216,"name":"address","nodeType":"ElementaryTypeName","src":"2889:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3219,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":3224,"src":"2914:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3218,"name":"uint24","nodeType":"ElementaryTypeName","src":"2914:6:4","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"2853:78:4"},"returnParameters":{"id":3223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3222,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":3224,"src":"2955:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3221,"name":"address","nodeType":"ElementaryTypeName","src":"2955:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2954:14:4"},"scope":3251,"src":"2837:132:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3225,"nodeType":"StructuredDocumentation","src":"2977:561:4","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":3236,"implemented":false,"kind":"function","modifiers":[],"name":"createPool","nodeType":"FunctionDefinition","parameters":{"id":3232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3227,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":3236,"src":"3574:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3226,"name":"address","nodeType":"ElementaryTypeName","src":"3574:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3229,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":3236,"src":"3599:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3228,"name":"address","nodeType":"ElementaryTypeName","src":"3599:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3231,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":3236,"src":"3624:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3230,"name":"uint24","nodeType":"ElementaryTypeName","src":"3624:6:4","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"3563:78:4"},"returnParameters":{"id":3235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3234,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":3236,"src":"3660:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3233,"name":"address","nodeType":"ElementaryTypeName","src":"3660:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3659:14:4"},"scope":3251,"src":"3544:130:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3237,"nodeType":"StructuredDocumentation","src":"3682:146:4","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":3242,"implemented":false,"kind":"function","modifiers":[],"name":"setOwner","nodeType":"FunctionDefinition","parameters":{"id":3240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3239,"mutability":"mutable","name":"_owner","nodeType":"VariableDeclaration","scope":3242,"src":"3852:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3238,"name":"address","nodeType":"ElementaryTypeName","src":"3852:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3851:16:4"},"returnParameters":{"id":3241,"nodeType":"ParameterList","parameters":[],"src":"3876:0:4"},"scope":3251,"src":"3834:43:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3243,"nodeType":"StructuredDocumentation","src":"3885:329:4","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":3250,"implemented":false,"kind":"function","modifiers":[],"name":"enableFeeAmount","nodeType":"FunctionDefinition","parameters":{"id":3248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3245,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":3250,"src":"4245:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3244,"name":"uint24","nodeType":"ElementaryTypeName","src":"4245:6:4","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":3247,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":3250,"src":"4257:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3246,"name":"int24","nodeType":"ElementaryTypeName","src":"4257:5:4","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"4244:31:4"},"returnParameters":{"id":3249,"nodeType":"ParameterList","parameters":[],"src":"4284:0:4"},"scope":3251,"src":"4220:65:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3252,"src":"227:4061:4"}],"src":"46:4244:4"},"id":4},"contracts/elixir-core/interfaces/IElixirPool.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","exportedSymbols":{"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779]},"id":3274,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3253,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:5"},{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol","file":"./pool/IElixirPoolImmutables.sol","id":3254,"nodeType":"ImportDirective","scope":3274,"sourceUnit":3614,"src":"74:42:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol","file":"./pool/IElixirPoolState.sol","id":3255,"nodeType":"ImportDirective","scope":3274,"sourceUnit":3780,"src":"118:37:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol","file":"./pool/IElixirPoolDerivedState.sol","id":3256,"nodeType":"ImportDirective","scope":3274,"sourceUnit":3448,"src":"157:44:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol","file":"./pool/IElixirPoolActions.sol","id":3257,"nodeType":"ImportDirective","scope":3274,"sourceUnit":3412,"src":"203:39:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol","file":"./pool/IElixirPoolOwnerActions.sol","id":3258,"nodeType":"ImportDirective","scope":3274,"sourceUnit":3660,"src":"244:44:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol","file":"./pool/IElixirPoolEvents.sol","id":3259,"nodeType":"ImportDirective","scope":3274,"sourceUnit":3574,"src":"290:38:5","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3261,"name":"IElixirPoolImmutables","nodeType":"UserDefinedTypeName","referencedDeclaration":3613,"src":"628:21:5","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPoolImmutables_$3613","typeString":"contract IElixirPoolImmutables"}},"id":3262,"nodeType":"InheritanceSpecifier","src":"628:21:5"},{"baseName":{"id":3263,"name":"IElixirPoolState","nodeType":"UserDefinedTypeName","referencedDeclaration":3779,"src":"656:16:5","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPoolState_$3779","typeString":"contract IElixirPoolState"}},"id":3264,"nodeType":"InheritanceSpecifier","src":"656:16:5"},{"baseName":{"id":3265,"name":"IElixirPoolDerivedState","nodeType":"UserDefinedTypeName","referencedDeclaration":3447,"src":"679:23:5","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPoolDerivedState_$3447","typeString":"contract IElixirPoolDerivedState"}},"id":3266,"nodeType":"InheritanceSpecifier","src":"679:23:5"},{"baseName":{"id":3267,"name":"IElixirPoolActions","nodeType":"UserDefinedTypeName","referencedDeclaration":3411,"src":"709:18:5","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPoolActions_$3411","typeString":"contract IElixirPoolActions"}},"id":3268,"nodeType":"InheritanceSpecifier","src":"709:18:5"},{"baseName":{"id":3269,"name":"IElixirPoolOwnerActions","nodeType":"UserDefinedTypeName","referencedDeclaration":3659,"src":"734:23:5","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPoolOwnerActions_$3659","typeString":"contract IElixirPoolOwnerActions"}},"id":3270,"nodeType":"InheritanceSpecifier","src":"734:23:5"},{"baseName":{"id":3271,"name":"IElixirPoolEvents","nodeType":"UserDefinedTypeName","referencedDeclaration":3573,"src":"764:17:5","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPoolEvents_$3573","typeString":"contract IElixirPoolEvents"}},"id":3272,"nodeType":"InheritanceSpecifier","src":"764:17:5"}],"contractDependencies":[3411,3447,3573,3613,3659,3779],"contractKind":"interface","documentation":{"id":3260,"nodeType":"StructuredDocumentation","src":"332:266:5","text":"@title The interface for a Elixir Pool\n @notice A Pangolin 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":3273,"linearizedBaseContracts":[3273,3573,3659,3411,3447,3779,3613],"name":"IElixirPool","nodeType":"ContractDefinition","nodes":[],"scope":3274,"src":"598:191:5"}],"src":"46:745:5"},"id":5},"contracts/elixir-core/interfaces/callback/IElixirFlashCallback.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/callback/IElixirFlashCallback.sol","exportedSymbols":{"IElixirFlashCallback":[3287]},"id":3288,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3275,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:6"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":3276,"nodeType":"StructuredDocumentation","src":"74:142:6","text":"@title Callback for IElixirPoolActions#flash\n @notice Any contract that calls IElixirPoolActions#flash must implement this interface"},"fullyImplemented":false,"id":3287,"linearizedBaseContracts":[3287],"name":"IElixirFlashCallback","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3277,"nodeType":"StructuredDocumentation","src":"254:590:6","text":"@notice Called to `msg.sender` after transferring to the recipient from IElixirPool#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 ElixirPool deployed by the canonical ElixirFactory.\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 IElixirPoolActions#flash call"},"functionSelector":"0659efa6","id":3286,"implemented":false,"kind":"function","modifiers":[],"name":"elixirFlashCallback","nodeType":"FunctionDefinition","parameters":{"id":3284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3279,"mutability":"mutable","name":"fee0","nodeType":"VariableDeclaration","scope":3286,"src":"889:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3278,"name":"uint256","nodeType":"ElementaryTypeName","src":"889:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3281,"mutability":"mutable","name":"fee1","nodeType":"VariableDeclaration","scope":3286,"src":"912:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3280,"name":"uint256","nodeType":"ElementaryTypeName","src":"912:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3283,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":3286,"src":"935:19:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3282,"name":"bytes","nodeType":"ElementaryTypeName","src":"935:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"878:83:6"},"returnParameters":{"id":3285,"nodeType":"ParameterList","parameters":[],"src":"970:0:6"},"scope":3287,"src":"850:121:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3288,"src":"216:758:6"}],"src":"46:930:6"},"id":6},"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol","exportedSymbols":{"IElixirMintCallback":[3301]},"id":3302,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3289,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:7"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":3290,"nodeType":"StructuredDocumentation","src":"74:140:7","text":"@title Callback for IElixirPoolActions#mint\n @notice Any contract that calls IElixirPoolActions#mint must implement this interface"},"fullyImplemented":false,"id":3301,"linearizedBaseContracts":[3301],"name":"IElixirMintCallback","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3291,"nodeType":"StructuredDocumentation","src":"251:578:7","text":"@notice Called to `msg.sender` after minting liquidity to a position from IElixirPool#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 ElixirPool deployed by the canonical ElixirFactory.\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 IElixirPoolActions#mint call"},"functionSelector":"1507a8f4","id":3300,"implemented":false,"kind":"function","modifiers":[],"name":"elixirMintCallback","nodeType":"FunctionDefinition","parameters":{"id":3298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3293,"mutability":"mutable","name":"amount0Owed","nodeType":"VariableDeclaration","scope":3300,"src":"873:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3292,"name":"uint256","nodeType":"ElementaryTypeName","src":"873:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3295,"mutability":"mutable","name":"amount1Owed","nodeType":"VariableDeclaration","scope":3300,"src":"903:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3294,"name":"uint256","nodeType":"ElementaryTypeName","src":"903:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3297,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":3300,"src":"933:19:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3296,"name":"bytes","nodeType":"ElementaryTypeName","src":"933:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"862:97:7"},"returnParameters":{"id":3299,"nodeType":"ParameterList","parameters":[],"src":"968:0:7"},"scope":3301,"src":"835:134:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3302,"src":"214:758:7"}],"src":"46:928:7"},"id":7},"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol","exportedSymbols":{"IElixirSwapCallback":[3315]},"id":3316,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3303,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:8"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":3304,"nodeType":"StructuredDocumentation","src":"74:140:8","text":"@title Callback for IElixirPoolActions#swap\n @notice Any contract that calls IElixirPoolActions#swap must implement this interface"},"fullyImplemented":false,"id":3315,"linearizedBaseContracts":[3315],"name":"IElixirSwapCallback","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3305,"nodeType":"StructuredDocumentation","src":"251:894:8","text":"@notice Called to `msg.sender` after executing a swap via IElixirPool#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 ElixirPool deployed by the canonical ElixirFactory.\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 IElixirPoolActions#swap call"},"functionSelector":"d804d7a7","id":3314,"implemented":false,"kind":"function","modifiers":[],"name":"elixirSwapCallback","nodeType":"FunctionDefinition","parameters":{"id":3312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3307,"mutability":"mutable","name":"amount0Delta","nodeType":"VariableDeclaration","scope":3314,"src":"1189:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3306,"name":"int256","nodeType":"ElementaryTypeName","src":"1189:6:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3309,"mutability":"mutable","name":"amount1Delta","nodeType":"VariableDeclaration","scope":3314,"src":"1219:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3308,"name":"int256","nodeType":"ElementaryTypeName","src":"1219:6:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3311,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":3314,"src":"1249:19:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3310,"name":"bytes","nodeType":"ElementaryTypeName","src":"1249:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1178:97:8"},"returnParameters":{"id":3313,"nodeType":"ParameterList","parameters":[],"src":"1284:0:8"},"scope":3315,"src":"1151:134:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3316,"src":"214:1074:8"}],"src":"46:1244:8"},"id":8},"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol","exportedSymbols":{"IElixirPoolActions":[3411]},"id":3412,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3317,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:9"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":3318,"nodeType":"StructuredDocumentation","src":"74:104:9","text":"@title Permissionless pool actions\n @notice Contains pool methods that can be called by anyone"},"fullyImplemented":false,"id":3411,"linearizedBaseContracts":[3411],"name":"IElixirPoolActions","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3319,"nodeType":"StructuredDocumentation","src":"214:208:9","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":3324,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":3322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3321,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":3324,"src":"448:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3320,"name":"uint160","nodeType":"ElementaryTypeName","src":"448:7:9","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"447:22:9"},"returnParameters":{"id":3323,"nodeType":"ParameterList","parameters":[],"src":"478:0:9"},"scope":3411,"src":"428:51:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3325,"nodeType":"StructuredDocumentation","src":"487:1033:9","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 IElixirMintCallback#elixirMintCallback\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":3342,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":3336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3327,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3342,"src":"1550:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3326,"name":"address","nodeType":"ElementaryTypeName","src":"1550:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3329,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":3342,"src":"1578:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3328,"name":"int24","nodeType":"ElementaryTypeName","src":"1578:5:9","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3331,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":3342,"src":"1604:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3330,"name":"int24","nodeType":"ElementaryTypeName","src":"1604:5:9","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3333,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3342,"src":"1630:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3332,"name":"uint128","nodeType":"ElementaryTypeName","src":"1630:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3335,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":3342,"src":"1655:19:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3334,"name":"bytes","nodeType":"ElementaryTypeName","src":"1655:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1539:142:9"},"returnParameters":{"id":3341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3338,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":3342,"src":"1700:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3337,"name":"uint256","nodeType":"ElementaryTypeName","src":"1700:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3340,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":3342,"src":"1717:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3339,"name":"uint256","nodeType":"ElementaryTypeName","src":"1717:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1699:34:9"},"scope":3411,"src":"1526:208:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3343,"nodeType":"StructuredDocumentation","src":"1742:1064:9","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":3360,"implemented":false,"kind":"function","modifiers":[],"name":"collect","nodeType":"FunctionDefinition","parameters":{"id":3354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3345,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3360,"src":"2839:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3344,"name":"address","nodeType":"ElementaryTypeName","src":"2839:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3347,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":3360,"src":"2867:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3346,"name":"int24","nodeType":"ElementaryTypeName","src":"2867:5:9","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3349,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":3360,"src":"2893:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3348,"name":"int24","nodeType":"ElementaryTypeName","src":"2893:5:9","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3351,"mutability":"mutable","name":"amount0Requested","nodeType":"VariableDeclaration","scope":3360,"src":"2919:24:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3350,"name":"uint128","nodeType":"ElementaryTypeName","src":"2919:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3353,"mutability":"mutable","name":"amount1Requested","nodeType":"VariableDeclaration","scope":3360,"src":"2954:24:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3352,"name":"uint128","nodeType":"ElementaryTypeName","src":"2954:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2828:157:9"},"returnParameters":{"id":3359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3356,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":3360,"src":"3004:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3355,"name":"uint128","nodeType":"ElementaryTypeName","src":"3004:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3358,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":3360,"src":"3021:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3357,"name":"uint128","nodeType":"ElementaryTypeName","src":"3021:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3003:34:9"},"scope":3411,"src":"2812:226:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3361,"nodeType":"StructuredDocumentation","src":"3046:638:9","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":3374,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":3368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3363,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":3374,"src":"3714:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3362,"name":"int24","nodeType":"ElementaryTypeName","src":"3714:5:9","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3365,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":3374,"src":"3740:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3364,"name":"int24","nodeType":"ElementaryTypeName","src":"3740:5:9","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3367,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3374,"src":"3766:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3366,"name":"uint128","nodeType":"ElementaryTypeName","src":"3766:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3703:84:9"},"returnParameters":{"id":3373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3370,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":3374,"src":"3806:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3369,"name":"uint256","nodeType":"ElementaryTypeName","src":"3806:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3372,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":3374,"src":"3823:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3371,"name":"uint256","nodeType":"ElementaryTypeName","src":"3823:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3805:34:9"},"scope":3411,"src":"3690:150:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3375,"nodeType":"StructuredDocumentation","src":"3848:1018:9","text":"@notice Swap token0 for token1, or token1 for token0\n @dev The caller of this method receives a callback in the form of IElixirSwapCallback#elixirSwapCallback\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":3392,"implemented":false,"kind":"function","modifiers":[],"name":"swap","nodeType":"FunctionDefinition","parameters":{"id":3386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3377,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3392,"src":"4896:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3376,"name":"address","nodeType":"ElementaryTypeName","src":"4896:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3379,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":3392,"src":"4924:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3378,"name":"bool","nodeType":"ElementaryTypeName","src":"4924:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3381,"mutability":"mutable","name":"amountSpecified","nodeType":"VariableDeclaration","scope":3392,"src":"4950:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3380,"name":"int256","nodeType":"ElementaryTypeName","src":"4950:6:9","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3383,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":3392,"src":"4983:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3382,"name":"uint160","nodeType":"ElementaryTypeName","src":"4983:7:9","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":3385,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":3392,"src":"5019:19:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3384,"name":"bytes","nodeType":"ElementaryTypeName","src":"5019:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4885:160:9"},"returnParameters":{"id":3391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3388,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":3392,"src":"5064:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3387,"name":"int256","nodeType":"ElementaryTypeName","src":"5064:6:9","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3390,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":3392,"src":"5080:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3389,"name":"int256","nodeType":"ElementaryTypeName","src":"5080:6:9","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"5063:32:9"},"scope":3411,"src":"4872:224:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3393,"nodeType":"StructuredDocumentation","src":"5104:658:9","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 IElixirFlashCallback#elixirFlashCallback\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":3404,"implemented":false,"kind":"function","modifiers":[],"name":"flash","nodeType":"FunctionDefinition","parameters":{"id":3402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3395,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3404,"src":"5793:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3394,"name":"address","nodeType":"ElementaryTypeName","src":"5793:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3397,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":3404,"src":"5821:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3396,"name":"uint256","nodeType":"ElementaryTypeName","src":"5821:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3399,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":3404,"src":"5847:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3398,"name":"uint256","nodeType":"ElementaryTypeName","src":"5847:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3401,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":3404,"src":"5873:19:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3400,"name":"bytes","nodeType":"ElementaryTypeName","src":"5873:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5782:117:9"},"returnParameters":{"id":3403,"nodeType":"ParameterList","parameters":[],"src":"5908:0:9"},"scope":3411,"src":"5768:141:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3405,"nodeType":"StructuredDocumentation","src":"5917:370:9","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":3410,"implemented":false,"kind":"function","modifiers":[],"name":"increaseObservationCardinalityNext","nodeType":"FunctionDefinition","parameters":{"id":3408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3407,"mutability":"mutable","name":"observationCardinalityNext","nodeType":"VariableDeclaration","scope":3410,"src":"6337:33:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3406,"name":"uint16","nodeType":"ElementaryTypeName","src":"6337:6:9","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"6336:35:9"},"returnParameters":{"id":3409,"nodeType":"ParameterList","parameters":[],"src":"6380:0:9"},"scope":3411,"src":"6293:88:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3412,"src":"178:6206:9"}],"src":"46:6340:9"},"id":9},"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol","exportedSymbols":{"IElixirPoolDerivedState":[3447]},"id":3448,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3413,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:10"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":3414,"nodeType":"StructuredDocumentation","src":"74:225:10","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":3447,"linearizedBaseContracts":[3447],"name":"IElixirPoolDerivedState","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3415,"nodeType":"StructuredDocumentation","src":"340:1054:10","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":3430,"implemented":false,"kind":"function","modifiers":[],"name":"observe","nodeType":"FunctionDefinition","parameters":{"id":3419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3418,"mutability":"mutable","name":"secondsAgos","nodeType":"VariableDeclaration","scope":3430,"src":"1417:29:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_calldata_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":3416,"name":"uint32","nodeType":"ElementaryTypeName","src":"1417:6:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":3417,"nodeType":"ArrayTypeName","src":"1417:8:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"}],"src":"1416:31:10"},"returnParameters":{"id":3429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3422,"mutability":"mutable","name":"tickCumulatives","nodeType":"VariableDeclaration","scope":3430,"src":"1512:30:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[]"},"typeName":{"baseType":{"id":3420,"name":"int56","nodeType":"ElementaryTypeName","src":"1512:5:10","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":3421,"nodeType":"ArrayTypeName","src":"1512:7:10","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_storage_ptr","typeString":"int56[]"}},"visibility":"internal"},{"constant":false,"id":3425,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128s","nodeType":"VariableDeclaration","scope":3430,"src":"1557:51:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[]"},"typeName":{"baseType":{"id":3423,"name":"uint160","nodeType":"ElementaryTypeName","src":"1557:7:10","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":3424,"nodeType":"ArrayTypeName","src":"1557:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"},{"constant":false,"id":3428,"mutability":"mutable","name":"rewardPerLiquidityCumulativeX64s","nodeType":"VariableDeclaration","scope":3430,"src":"1623:49:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$dyn_memory_ptr","typeString":"uint192[]"},"typeName":{"baseType":{"id":3426,"name":"uint192","nodeType":"ElementaryTypeName","src":"1623:7:10","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"id":3427,"nodeType":"ArrayTypeName","src":"1623:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$dyn_storage_ptr","typeString":"uint192[]"}},"visibility":"internal"}],"src":"1497:186:10"},"scope":3447,"src":"1400:284:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3431,"nodeType":"StructuredDocumentation","src":"1692:779:10","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":3446,"implemented":false,"kind":"function","modifiers":[],"name":"snapshotCumulativesInside","nodeType":"FunctionDefinition","parameters":{"id":3436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3433,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":3446,"src":"2512:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3432,"name":"int24","nodeType":"ElementaryTypeName","src":"2512:5:10","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3435,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":3446,"src":"2529:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3434,"name":"int24","nodeType":"ElementaryTypeName","src":"2529:5:10","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2511:34:10"},"returnParameters":{"id":3445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3438,"mutability":"mutable","name":"tickCumulativeInside","nodeType":"VariableDeclaration","scope":3446,"src":"2610:26:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":3437,"name":"int56","nodeType":"ElementaryTypeName","src":"2610:5:10","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":3440,"mutability":"mutable","name":"secondsPerLiquidityInsideX128","nodeType":"VariableDeclaration","scope":3446,"src":"2651:37:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3439,"name":"uint160","nodeType":"ElementaryTypeName","src":"2651:7:10","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":3442,"mutability":"mutable","name":"secondsInside","nodeType":"VariableDeclaration","scope":3446,"src":"2703:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3441,"name":"uint32","nodeType":"ElementaryTypeName","src":"2703:6:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3444,"mutability":"mutable","name":"rewardPerLiquidityInsideX64","nodeType":"VariableDeclaration","scope":3446,"src":"2738:35:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":3443,"name":"uint192","nodeType":"ElementaryTypeName","src":"2738:7:10","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"2595:189:10"},"scope":3447,"src":"2477:308:10","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3448,"src":"299:2489:10"}],"src":"46:2744:10"},"id":10},"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol","exportedSymbols":{"IElixirPoolEvents":[3573]},"id":3574,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3449,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:11"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":3450,"nodeType":"StructuredDocumentation","src":"74:90:11","text":"@title Events emitted by a pool\n @notice Contains all events emitted by the pool"},"fullyImplemented":true,"id":3573,"linearizedBaseContracts":[3573],"name":"IElixirPoolEvents","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":3451,"nodeType":"StructuredDocumentation","src":"199:347:11","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":3457,"name":"Initialize","nodeType":"EventDefinition","parameters":{"id":3456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3453,"indexed":false,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":3457,"src":"569:20:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3452,"name":"uint160","nodeType":"ElementaryTypeName","src":"569:7:11","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":3455,"indexed":false,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":3457,"src":"591:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3454,"name":"int24","nodeType":"ElementaryTypeName","src":"591:5:11","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"568:34:11"},"src":"552:51:11"},{"anonymous":false,"documentation":{"id":3458,"nodeType":"StructuredDocumentation","src":"611:558:11","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":3474,"name":"Mint","nodeType":"EventDefinition","parameters":{"id":3473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3460,"indexed":false,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3474,"src":"1196:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3459,"name":"address","nodeType":"ElementaryTypeName","src":"1196:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3462,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":3474,"src":"1221:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3461,"name":"address","nodeType":"ElementaryTypeName","src":"1221:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3464,"indexed":true,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":3474,"src":"1253:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3463,"name":"int24","nodeType":"ElementaryTypeName","src":"1253:5:11","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3466,"indexed":true,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":3474,"src":"1287:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3465,"name":"int24","nodeType":"ElementaryTypeName","src":"1287:5:11","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3468,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3474,"src":"1321:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3467,"name":"uint128","nodeType":"ElementaryTypeName","src":"1321:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3470,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":3474,"src":"1346:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3469,"name":"uint256","nodeType":"ElementaryTypeName","src":"1346:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3472,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":3474,"src":"1372:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3471,"name":"uint256","nodeType":"ElementaryTypeName","src":"1372:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1185:209:11"},"src":"1175:220:11"},{"anonymous":false,"documentation":{"id":3475,"nodeType":"StructuredDocumentation","src":"1403:499:11","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":3489,"name":"Collect","nodeType":"EventDefinition","parameters":{"id":3488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3477,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":3489,"src":"1932:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3476,"name":"address","nodeType":"ElementaryTypeName","src":"1932:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3479,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3489,"src":"1964:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3478,"name":"address","nodeType":"ElementaryTypeName","src":"1964:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3481,"indexed":true,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":3489,"src":"1992:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3480,"name":"int24","nodeType":"ElementaryTypeName","src":"1992:5:11","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3483,"indexed":true,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":3489,"src":"2026:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3482,"name":"int24","nodeType":"ElementaryTypeName","src":"2026:5:11","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3485,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":3489,"src":"2060:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3484,"name":"uint128","nodeType":"ElementaryTypeName","src":"2060:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3487,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":3489,"src":"2086:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3486,"name":"uint128","nodeType":"ElementaryTypeName","src":"2086:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1921:187:11"},"src":"1908:201:11"},{"anonymous":false,"documentation":{"id":3490,"nodeType":"StructuredDocumentation","src":"2117:530:11","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":3504,"name":"Burn","nodeType":"EventDefinition","parameters":{"id":3503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3492,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":3504,"src":"2674:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3491,"name":"address","nodeType":"ElementaryTypeName","src":"2674:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3494,"indexed":true,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":3504,"src":"2706:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3493,"name":"int24","nodeType":"ElementaryTypeName","src":"2706:5:11","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3496,"indexed":true,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":3504,"src":"2740:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3495,"name":"int24","nodeType":"ElementaryTypeName","src":"2740:5:11","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3498,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3504,"src":"2774:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3497,"name":"uint128","nodeType":"ElementaryTypeName","src":"2774:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3500,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":3504,"src":"2799:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3499,"name":"uint256","nodeType":"ElementaryTypeName","src":"2799:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3502,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":3504,"src":"2825:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3501,"name":"uint256","nodeType":"ElementaryTypeName","src":"2825:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2663:184:11"},"src":"2653:195:11"},{"anonymous":false,"documentation":{"id":3505,"nodeType":"StructuredDocumentation","src":"2856:607:11","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":3521,"name":"Swap","nodeType":"EventDefinition","parameters":{"id":3520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3507,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3521,"src":"3490:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3506,"name":"address","nodeType":"ElementaryTypeName","src":"3490:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3509,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3521,"src":"3523:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3508,"name":"address","nodeType":"ElementaryTypeName","src":"3523:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3511,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":3521,"src":"3559:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3510,"name":"int256","nodeType":"ElementaryTypeName","src":"3559:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3513,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":3521,"src":"3584:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3512,"name":"int256","nodeType":"ElementaryTypeName","src":"3584:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3515,"indexed":false,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":3521,"src":"3609:20:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3514,"name":"uint160","nodeType":"ElementaryTypeName","src":"3609:7:11","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":3517,"indexed":false,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":3521,"src":"3640:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3516,"name":"uint128","nodeType":"ElementaryTypeName","src":"3640:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3519,"indexed":false,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":3521,"src":"3668:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3518,"name":"int24","nodeType":"ElementaryTypeName","src":"3668:5:11","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"3479:206:11"},"src":"3469:217:11"},{"anonymous":false,"documentation":{"id":3522,"nodeType":"StructuredDocumentation","src":"3694:568:11","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":3536,"name":"Flash","nodeType":"EventDefinition","parameters":{"id":3535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3524,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3536,"src":"4290:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3523,"name":"address","nodeType":"ElementaryTypeName","src":"4290:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3526,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3536,"src":"4323:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3525,"name":"address","nodeType":"ElementaryTypeName","src":"4323:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3528,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":3536,"src":"4359:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3527,"name":"uint256","nodeType":"ElementaryTypeName","src":"4359:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3530,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":3536,"src":"4385:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3529,"name":"uint256","nodeType":"ElementaryTypeName","src":"4385:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3532,"indexed":false,"mutability":"mutable","name":"paid0","nodeType":"VariableDeclaration","scope":3536,"src":"4411:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3531,"name":"uint256","nodeType":"ElementaryTypeName","src":"4411:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3534,"indexed":false,"mutability":"mutable","name":"paid1","nodeType":"VariableDeclaration","scope":3536,"src":"4435:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3533,"name":"uint256","nodeType":"ElementaryTypeName","src":"4435:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4279:176:11"},"src":"4268:188:11"},{"anonymous":false,"documentation":{"id":3537,"nodeType":"StructuredDocumentation","src":"4464:455:11","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":3543,"name":"IncreaseObservationCardinalityNext","nodeType":"EventDefinition","parameters":{"id":3542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3539,"indexed":false,"mutability":"mutable","name":"observationCardinalityNextOld","nodeType":"VariableDeclaration","scope":3543,"src":"4976:36:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3538,"name":"uint16","nodeType":"ElementaryTypeName","src":"4976:6:11","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":3541,"indexed":false,"mutability":"mutable","name":"observationCardinalityNextNew","nodeType":"VariableDeclaration","scope":3543,"src":"5023:36:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3540,"name":"uint16","nodeType":"ElementaryTypeName","src":"5023:6:11","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"4965:101:11"},"src":"4925:142:11"},{"anonymous":false,"documentation":{"id":3544,"nodeType":"StructuredDocumentation","src":"5075:374:11","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":3554,"name":"SetFeeProtocol","nodeType":"EventDefinition","parameters":{"id":3553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3546,"indexed":false,"mutability":"mutable","name":"feeProtocol0Old","nodeType":"VariableDeclaration","scope":3554,"src":"5476:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3545,"name":"uint8","nodeType":"ElementaryTypeName","src":"5476:5:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3548,"indexed":false,"mutability":"mutable","name":"feeProtocol1Old","nodeType":"VariableDeclaration","scope":3554,"src":"5499:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3547,"name":"uint8","nodeType":"ElementaryTypeName","src":"5499:5:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3550,"indexed":false,"mutability":"mutable","name":"feeProtocol0New","nodeType":"VariableDeclaration","scope":3554,"src":"5522:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3549,"name":"uint8","nodeType":"ElementaryTypeName","src":"5522:5:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3552,"indexed":false,"mutability":"mutable","name":"feeProtocol1New","nodeType":"VariableDeclaration","scope":3554,"src":"5545:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3551,"name":"uint8","nodeType":"ElementaryTypeName","src":"5545:5:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"5475:92:11"},"src":"5455:113:11"},{"anonymous":false,"documentation":{"id":3555,"nodeType":"StructuredDocumentation","src":"5576:388:11","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":3565,"name":"CollectProtocol","nodeType":"EventDefinition","parameters":{"id":3564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3557,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3565,"src":"5992:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3556,"name":"address","nodeType":"ElementaryTypeName","src":"5992:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3559,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3565,"src":"6016:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3558,"name":"address","nodeType":"ElementaryTypeName","src":"6016:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3561,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":3565,"src":"6043:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3560,"name":"uint128","nodeType":"ElementaryTypeName","src":"6043:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3563,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":3565,"src":"6060:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3562,"name":"uint128","nodeType":"ElementaryTypeName","src":"6060:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5991:85:11"},"src":"5970:107:11"},{"anonymous":false,"documentation":{"id":3566,"nodeType":"StructuredDocumentation","src":"6085:231:11","text":"@notice Emitted when the reward rate is changed by the owner\n @param rewardPerSecondX48 The new reward rate per second (in Q48)\n @param rewardRateEffectiveUntil The timestamp when the new reward rate will expire"},"id":3572,"name":"SetRewardRate","nodeType":"EventDefinition","parameters":{"id":3571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3568,"indexed":false,"mutability":"mutable","name":"rewardPerSecondX48","nodeType":"VariableDeclaration","scope":3572,"src":"6342:26:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":3567,"name":"uint144","nodeType":"ElementaryTypeName","src":"6342:7:11","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"},{"constant":false,"id":3570,"indexed":false,"mutability":"mutable","name":"rewardRateEffectiveUntil","nodeType":"VariableDeclaration","scope":3572,"src":"6370:31:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3569,"name":"uint32","nodeType":"ElementaryTypeName","src":"6370:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"6341:61:11"},"src":"6322:81:11"}],"scope":3574,"src":"164:6242:11"}],"src":"46:6362:11"},"id":11},"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol","exportedSymbols":{"IElixirPoolImmutables":[3613]},"id":3614,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3575,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:12"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":3576,"nodeType":"StructuredDocumentation","src":"74:155:12","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":3613,"linearizedBaseContracts":[3613],"name":"IElixirPoolImmutables","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3577,"nodeType":"StructuredDocumentation","src":"268:136:12","text":"@notice The contract that deployed the pool, which must adhere to the IElixirFactory interface\n @return The contract address"},"functionSelector":"c45a0155","id":3582,"implemented":false,"kind":"function","modifiers":[],"name":"factory","nodeType":"FunctionDefinition","parameters":{"id":3578,"nodeType":"ParameterList","parameters":[],"src":"426:2:12"},"returnParameters":{"id":3581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3580,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3582,"src":"452:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3579,"name":"address","nodeType":"ElementaryTypeName","src":"452:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"451:9:12"},"scope":3613,"src":"410:51:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3583,"nodeType":"StructuredDocumentation","src":"469:114:12","text":"@notice The first of the two tokens of the pool, sorted by address\n @return The token contract address"},"functionSelector":"0dfe1681","id":3588,"implemented":false,"kind":"function","modifiers":[],"name":"token0","nodeType":"FunctionDefinition","parameters":{"id":3584,"nodeType":"ParameterList","parameters":[],"src":"604:2:12"},"returnParameters":{"id":3587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3586,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3588,"src":"630:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3585,"name":"address","nodeType":"ElementaryTypeName","src":"630:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"629:9:12"},"scope":3613,"src":"589:50:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3589,"nodeType":"StructuredDocumentation","src":"647:115:12","text":"@notice The second of the two tokens of the pool, sorted by address\n @return The token contract address"},"functionSelector":"d21220a7","id":3594,"implemented":false,"kind":"function","modifiers":[],"name":"token1","nodeType":"FunctionDefinition","parameters":{"id":3590,"nodeType":"ParameterList","parameters":[],"src":"783:2:12"},"returnParameters":{"id":3593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3592,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3594,"src":"809:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3591,"name":"address","nodeType":"ElementaryTypeName","src":"809:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"808:9:12"},"scope":3613,"src":"768:50:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3595,"nodeType":"StructuredDocumentation","src":"826:85:12","text":"@notice The pool's fee in hundredths of a bip, i.e. 1e-6\n @return The fee"},"functionSelector":"ddca3f43","id":3600,"implemented":false,"kind":"function","modifiers":[],"name":"fee","nodeType":"FunctionDefinition","parameters":{"id":3596,"nodeType":"ParameterList","parameters":[],"src":"929:2:12"},"returnParameters":{"id":3599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3598,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3600,"src":"955:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3597,"name":"uint24","nodeType":"ElementaryTypeName","src":"955:6:12","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"954:8:12"},"scope":3613,"src":"917:46:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3601,"nodeType":"StructuredDocumentation","src":"971:362:12","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":3606,"implemented":false,"kind":"function","modifiers":[],"name":"tickSpacing","nodeType":"FunctionDefinition","parameters":{"id":3602,"nodeType":"ParameterList","parameters":[],"src":"1359:2:12"},"returnParameters":{"id":3605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3604,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3606,"src":"1385:5:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3603,"name":"int24","nodeType":"ElementaryTypeName","src":"1385:5:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1384:7:12"},"scope":3613,"src":"1339:53:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3607,"nodeType":"StructuredDocumentation","src":"1400:366:12","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":3612,"implemented":false,"kind":"function","modifiers":[],"name":"maxLiquidityPerTick","nodeType":"FunctionDefinition","parameters":{"id":3608,"nodeType":"ParameterList","parameters":[],"src":"1800:2:12"},"returnParameters":{"id":3611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3610,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3612,"src":"1826:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3609,"name":"uint128","nodeType":"ElementaryTypeName","src":"1826:7:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1825:9:12"},"scope":3613,"src":"1772:63:12","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3614,"src":"229:1609:12"}],"src":"46:1794:12"},"id":12},"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol","exportedSymbols":{"IElixirPoolOwnerActions":[3659]},"id":3660,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3615,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:13"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":3616,"nodeType":"StructuredDocumentation","src":"74:118:13","text":"@title Permissioned pool actions\n @notice Contains pool methods that may only be called by the factory owner"},"fullyImplemented":false,"id":3659,"linearizedBaseContracts":[3659],"name":"IElixirPoolOwnerActions","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3617,"nodeType":"StructuredDocumentation","src":"233:347:13","text":"@notice Initialize the pool to set immutable parameters\n @param _token0 The first of the two tokens of the pool, sorted by address\n @param _token1 The second of the two tokens of the pool, sorted by address\n @param _fee The pool's fee in hundredths of a bip, i.e. 1e-6\n @param _tickSpacing The pool tick spacing"},"functionSelector":"14f2705c","id":3628,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":3626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3619,"mutability":"mutable","name":"_token0","nodeType":"VariableDeclaration","scope":3628,"src":"606:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3618,"name":"address","nodeType":"ElementaryTypeName","src":"606:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3621,"mutability":"mutable","name":"_token1","nodeType":"VariableDeclaration","scope":3628,"src":"623:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3620,"name":"address","nodeType":"ElementaryTypeName","src":"623:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3623,"mutability":"mutable","name":"_fee","nodeType":"VariableDeclaration","scope":3628,"src":"640:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3622,"name":"uint24","nodeType":"ElementaryTypeName","src":"640:6:13","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":3625,"mutability":"mutable","name":"_tickSpacing","nodeType":"VariableDeclaration","scope":3628,"src":"653:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3624,"name":"int24","nodeType":"ElementaryTypeName","src":"653:5:13","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"605:67:13"},"returnParameters":{"id":3627,"nodeType":"ParameterList","parameters":[],"src":"681:0:13"},"scope":3659,"src":"586:96:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3629,"nodeType":"StructuredDocumentation","src":"690:207:13","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":3636,"implemented":false,"kind":"function","modifiers":[],"name":"setFeeProtocol","nodeType":"FunctionDefinition","parameters":{"id":3634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3631,"mutability":"mutable","name":"feeProtocol0","nodeType":"VariableDeclaration","scope":3636,"src":"927:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3630,"name":"uint8","nodeType":"ElementaryTypeName","src":"927:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3633,"mutability":"mutable","name":"feeProtocol1","nodeType":"VariableDeclaration","scope":3636,"src":"947:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3632,"name":"uint8","nodeType":"ElementaryTypeName","src":"947:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"926:40:13"},"returnParameters":{"id":3635,"nodeType":"ParameterList","parameters":[],"src":"975:0:13"},"scope":3659,"src":"903:73:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3637,"nodeType":"StructuredDocumentation","src":"984:488:13","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":3650,"implemented":false,"kind":"function","modifiers":[],"name":"collectProtocol","nodeType":"FunctionDefinition","parameters":{"id":3644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3639,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3650,"src":"1513:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3638,"name":"address","nodeType":"ElementaryTypeName","src":"1513:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3641,"mutability":"mutable","name":"amount0Requested","nodeType":"VariableDeclaration","scope":3650,"src":"1541:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3640,"name":"uint128","nodeType":"ElementaryTypeName","src":"1541:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3643,"mutability":"mutable","name":"amount1Requested","nodeType":"VariableDeclaration","scope":3650,"src":"1576:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3642,"name":"uint128","nodeType":"ElementaryTypeName","src":"1576:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1502:105:13"},"returnParameters":{"id":3649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3646,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":3650,"src":"1626:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3645,"name":"uint128","nodeType":"ElementaryTypeName","src":"1626:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3648,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":3650,"src":"1643:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3647,"name":"uint128","nodeType":"ElementaryTypeName","src":"1643:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1625:34:13"},"scope":3659,"src":"1478:182:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3651,"nodeType":"StructuredDocumentation","src":"1668:239:13","text":"@notice Set the reward rate the active liquidity receives per second\n @param rewardPerSecondX48 The new reward rate per second (in Q48)\n @param rewardRateEffectiveUntil The timestamp when the new reward rate will expire"},"functionSelector":"218064e5","id":3658,"implemented":false,"kind":"function","modifiers":[],"name":"setRewardRate","nodeType":"FunctionDefinition","parameters":{"id":3656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3653,"mutability":"mutable","name":"rewardPerSecondX48","nodeType":"VariableDeclaration","scope":3658,"src":"1936:26:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":3652,"name":"uint144","nodeType":"ElementaryTypeName","src":"1936:7:13","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"},{"constant":false,"id":3655,"mutability":"mutable","name":"rewardRateEffectiveUntil","nodeType":"VariableDeclaration","scope":3658,"src":"1964:31:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3654,"name":"uint32","nodeType":"ElementaryTypeName","src":"1964:6:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1935:61:13"},"returnParameters":{"id":3657,"nodeType":"ParameterList","parameters":[],"src":"2005:0:13"},"scope":3659,"src":"1913:93:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3660,"src":"192:1817:13"}],"src":"46:1965:13"},"id":13},"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol":{"ast":{"absolutePath":"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol","exportedSymbols":{"IElixirPoolState":[3779]},"id":3780,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3661,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:14"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":3662,"nodeType":"StructuredDocumentation","src":"74:172:14","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":3779,"linearizedBaseContracts":[3779],"name":"IElixirPoolState","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3663,"nodeType":"StructuredDocumentation","src":"280:1152:14","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":3680,"implemented":false,"kind":"function","modifiers":[],"name":"slot0","nodeType":"FunctionDefinition","parameters":{"id":3664,"nodeType":"ParameterList","parameters":[],"src":"1452:2:14"},"returnParameters":{"id":3679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3666,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":3680,"src":"1519:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3665,"name":"uint160","nodeType":"ElementaryTypeName","src":"1519:7:14","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":3668,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":3680,"src":"1554:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3667,"name":"int24","nodeType":"ElementaryTypeName","src":"1554:5:14","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3670,"mutability":"mutable","name":"observationIndex","nodeType":"VariableDeclaration","scope":3680,"src":"1579:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3669,"name":"uint16","nodeType":"ElementaryTypeName","src":"1579:6:14","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":3672,"mutability":"mutable","name":"observationCardinality","nodeType":"VariableDeclaration","scope":3680,"src":"1617:29:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3671,"name":"uint16","nodeType":"ElementaryTypeName","src":"1617:6:14","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":3674,"mutability":"mutable","name":"observationCardinalityNext","nodeType":"VariableDeclaration","scope":3680,"src":"1661:33:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3673,"name":"uint16","nodeType":"ElementaryTypeName","src":"1661:6:14","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":3676,"mutability":"mutable","name":"feeProtocol","nodeType":"VariableDeclaration","scope":3680,"src":"1709:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3675,"name":"uint8","nodeType":"ElementaryTypeName","src":"1709:5:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3678,"mutability":"mutable","name":"unlocked","nodeType":"VariableDeclaration","scope":3680,"src":"1741:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3677,"name":"bool","nodeType":"ElementaryTypeName","src":"1741:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1504:261:14"},"scope":3779,"src":"1438:328:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3681,"nodeType":"StructuredDocumentation","src":"1774:717:14","text":"@notice The rewardSlot storage slot in the pool stores variables necessary to update\n Oracle.Observation.rewardPerLiquidityCumulativeX64 accumulator.\n @dev Both of the variables can be set arbitrarily by the owner. The pool does not set any restrictions on the\n values other than their variable types. The factory owner should relegate the setting of these variables to a\n reward contract that will update these variables based on a proper reward distribution logic.\n @return rewardPerSecondX48 The rewards per second promised to be distributed to the pool as a Q96.48 value\n rewardRateEffectiveUntil The timestamp when the rewardPerSecondX48 is no longer effective"},"functionSelector":"94fd4a3e","id":3688,"implemented":false,"kind":"function","modifiers":[],"name":"rewardSlot","nodeType":"FunctionDefinition","parameters":{"id":3682,"nodeType":"ParameterList","parameters":[],"src":"2516:2:14"},"returnParameters":{"id":3687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3684,"mutability":"mutable","name":"rewardPerSecondX48","nodeType":"VariableDeclaration","scope":3688,"src":"2569:26:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":3683,"name":"uint144","nodeType":"ElementaryTypeName","src":"2569:7:14","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"},{"constant":false,"id":3686,"mutability":"mutable","name":"rewardRateEffectiveUntil","nodeType":"VariableDeclaration","scope":3688,"src":"2597:31:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3685,"name":"uint32","nodeType":"ElementaryTypeName","src":"2597:6:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2568:61:14"},"scope":3779,"src":"2497:133:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3689,"nodeType":"StructuredDocumentation","src":"2638:169:14","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":3694,"implemented":false,"kind":"function","modifiers":[],"name":"feeGrowthGlobal0X128","nodeType":"FunctionDefinition","parameters":{"id":3690,"nodeType":"ParameterList","parameters":[],"src":"2842:2:14"},"returnParameters":{"id":3693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3692,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3694,"src":"2868:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3691,"name":"uint256","nodeType":"ElementaryTypeName","src":"2868:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2867:9:14"},"scope":3779,"src":"2813:64:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3695,"nodeType":"StructuredDocumentation","src":"2885:169:14","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":3700,"implemented":false,"kind":"function","modifiers":[],"name":"feeGrowthGlobal1X128","nodeType":"FunctionDefinition","parameters":{"id":3696,"nodeType":"ParameterList","parameters":[],"src":"3089:2:14"},"returnParameters":{"id":3699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3698,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3700,"src":"3115:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3697,"name":"uint256","nodeType":"ElementaryTypeName","src":"3115:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3114:9:14"},"scope":3779,"src":"3060:64:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3701,"nodeType":"StructuredDocumentation","src":"3132:148:14","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":3708,"implemented":false,"kind":"function","modifiers":[],"name":"protocolFees","nodeType":"FunctionDefinition","parameters":{"id":3702,"nodeType":"ParameterList","parameters":[],"src":"3307:2:14"},"returnParameters":{"id":3707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3704,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":3708,"src":"3360:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3703,"name":"uint128","nodeType":"ElementaryTypeName","src":"3360:7:14","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3706,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":3708,"src":"3376:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3705,"name":"uint128","nodeType":"ElementaryTypeName","src":"3376:7:14","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3359:32:14"},"scope":3779,"src":"3286:106:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3709,"nodeType":"StructuredDocumentation","src":"3400:151:14","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":3714,"implemented":false,"kind":"function","modifiers":[],"name":"liquidity","nodeType":"FunctionDefinition","parameters":{"id":3710,"nodeType":"ParameterList","parameters":[],"src":"3575:2:14"},"returnParameters":{"id":3713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3712,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3714,"src":"3601:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3711,"name":"uint128","nodeType":"ElementaryTypeName","src":"3601:7:14","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3600:9:14"},"scope":3779,"src":"3557:53:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3715,"nodeType":"StructuredDocumentation","src":"3618:1257:14","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":3738,"implemented":false,"kind":"function","modifiers":[],"name":"ticks","nodeType":"FunctionDefinition","parameters":{"id":3718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3717,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":3738,"src":"4906:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3716,"name":"int24","nodeType":"ElementaryTypeName","src":"4906:5:14","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"4895:28:14"},"returnParameters":{"id":3737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3720,"mutability":"mutable","name":"liquidityGross","nodeType":"VariableDeclaration","scope":3738,"src":"4988:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3719,"name":"uint128","nodeType":"ElementaryTypeName","src":"4988:7:14","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3722,"mutability":"mutable","name":"liquidityNet","nodeType":"VariableDeclaration","scope":3738,"src":"5025:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":3721,"name":"int128","nodeType":"ElementaryTypeName","src":"5025:6:14","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":3724,"mutability":"mutable","name":"feeGrowthOutside0X128","nodeType":"VariableDeclaration","scope":3738,"src":"5059:29:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3723,"name":"uint256","nodeType":"ElementaryTypeName","src":"5059:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3726,"mutability":"mutable","name":"feeGrowthOutside1X128","nodeType":"VariableDeclaration","scope":3738,"src":"5103:29:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3725,"name":"uint256","nodeType":"ElementaryTypeName","src":"5103:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3728,"mutability":"mutable","name":"tickCumulativeOutside","nodeType":"VariableDeclaration","scope":3738,"src":"5147:27:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":3727,"name":"int56","nodeType":"ElementaryTypeName","src":"5147:5:14","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":3730,"mutability":"mutable","name":"secondsPerLiquidityOutsideX128","nodeType":"VariableDeclaration","scope":3738,"src":"5189:38:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3729,"name":"uint160","nodeType":"ElementaryTypeName","src":"5189:7:14","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":3732,"mutability":"mutable","name":"secondsOutside","nodeType":"VariableDeclaration","scope":3738,"src":"5242:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3731,"name":"uint32","nodeType":"ElementaryTypeName","src":"5242:6:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3734,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":3738,"src":"5278:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3733,"name":"bool","nodeType":"ElementaryTypeName","src":"5278:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3736,"mutability":"mutable","name":"rewardPerLiquidityOutsideX64","nodeType":"VariableDeclaration","scope":3738,"src":"5309:36:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":3735,"name":"uint192","nodeType":"ElementaryTypeName","src":"5309:7:14","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"4973:383:14"},"scope":3779,"src":"4881:476:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3739,"nodeType":"StructuredDocumentation","src":"5365:99:14","text":"@notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information"},"functionSelector":"5339c296","id":3746,"implemented":false,"kind":"function","modifiers":[],"name":"tickBitmap","nodeType":"FunctionDefinition","parameters":{"id":3742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3741,"mutability":"mutable","name":"wordPosition","nodeType":"VariableDeclaration","scope":3746,"src":"5490:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":3740,"name":"int16","nodeType":"ElementaryTypeName","src":"5490:5:14","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"5489:20:14"},"returnParameters":{"id":3745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3744,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3746,"src":"5533:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3743,"name":"uint256","nodeType":"ElementaryTypeName","src":"5533:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5532:9:14"},"scope":3779,"src":"5470:72:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3747,"nodeType":"StructuredDocumentation","src":"5550:706:14","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":3762,"implemented":false,"kind":"function","modifiers":[],"name":"positions","nodeType":"FunctionDefinition","parameters":{"id":3750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3749,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":3762,"src":"6291:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3748,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6291:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6280:29:14"},"returnParameters":{"id":3761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3752,"mutability":"mutable","name":"_liquidity","nodeType":"VariableDeclaration","scope":3762,"src":"6374:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3751,"name":"uint128","nodeType":"ElementaryTypeName","src":"6374:7:14","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3754,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":3762,"src":"6407:32:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3753,"name":"uint256","nodeType":"ElementaryTypeName","src":"6407:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3756,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":3762,"src":"6454:32:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3755,"name":"uint256","nodeType":"ElementaryTypeName","src":"6454:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3758,"mutability":"mutable","name":"tokensOwed0","nodeType":"VariableDeclaration","scope":3762,"src":"6501:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3757,"name":"uint128","nodeType":"ElementaryTypeName","src":"6501:7:14","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3760,"mutability":"mutable","name":"tokensOwed1","nodeType":"VariableDeclaration","scope":3762,"src":"6535:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3759,"name":"uint128","nodeType":"ElementaryTypeName","src":"6535:7:14","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6359:206:14"},"scope":3779,"src":"6262:304:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3763,"nodeType":"StructuredDocumentation","src":"6574:826:14","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\n Returns rewardPerLiquidityCumulativeX64 reward per liquidity"},"functionSelector":"252c09d7","id":3778,"implemented":false,"kind":"function","modifiers":[],"name":"observations","nodeType":"FunctionDefinition","parameters":{"id":3766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3765,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":3778,"src":"7438:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3764,"name":"uint256","nodeType":"ElementaryTypeName","src":"7438:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7427:31:14"},"returnParameters":{"id":3777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3768,"mutability":"mutable","name":"blockTimestamp","nodeType":"VariableDeclaration","scope":3778,"src":"7523:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3767,"name":"uint32","nodeType":"ElementaryTypeName","src":"7523:6:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3770,"mutability":"mutable","name":"tickCumulative","nodeType":"VariableDeclaration","scope":3778,"src":"7559:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":3769,"name":"int56","nodeType":"ElementaryTypeName","src":"7559:5:14","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":3772,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128","nodeType":"VariableDeclaration","scope":3778,"src":"7594:41:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3771,"name":"uint160","nodeType":"ElementaryTypeName","src":"7594:7:14","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":3774,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":3778,"src":"7650:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3773,"name":"bool","nodeType":"ElementaryTypeName","src":"7650:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3776,"mutability":"mutable","name":"rewardPerLiquidityCumulativeX64","nodeType":"VariableDeclaration","scope":3778,"src":"7681:39:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":3775,"name":"uint192","nodeType":"ElementaryTypeName","src":"7681:7:14","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"7508:223:14"},"scope":3779,"src":"7406:326:14","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3780,"src":"246:7489:14"}],"src":"46:7691:14"},"id":14},"contracts/elixir-core/libraries/BitMath.sol":{"ast":{"absolutePath":"contracts/elixir-core/libraries/BitMath.sol","exportedSymbols":{"BitMath":[4058]},"id":4059,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3781,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:15"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":3782,"nodeType":"StructuredDocumentation","src":"74:118:15","text":"@title BitMath\n @dev This library provides functionality for computing bit properties of an unsigned integer"},"fullyImplemented":true,"id":4058,"linearizedBaseContracts":[4058],"name":"BitMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":3895,"nodeType":"Block","src":"754:692:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3791,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"773:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"777:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"773:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3790,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"765:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":3794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"765:14:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3795,"nodeType":"ExpressionStatement","src":"765:14:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3796,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"796:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3078313030303030303030303030303030303030303030303030303030303030303030","id":3797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"801:35:15","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"value":"0x100000000000000000000000000000000"},"src":"796:40:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3808,"nodeType":"IfStatement","src":"792:105:15","trueBody":{"id":3807,"nodeType":"Block","src":"838:59:15","statements":[{"expression":{"id":3801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3799,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"853:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":3800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"859:3:15","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"853:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3802,"nodeType":"ExpressionStatement","src":"853:9:15"},{"expression":{"id":3805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3803,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3788,"src":"877:1:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":3804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"882:3:15","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"877:8:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3806,"nodeType":"ExpressionStatement","src":"877:8:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3809,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"911:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30783130303030303030303030303030303030","id":3810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"916:19:15","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"value":"0x10000000000000000"},"src":"911:24:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3821,"nodeType":"IfStatement","src":"907:87:15","trueBody":{"id":3820,"nodeType":"Block","src":"937:57:15","statements":[{"expression":{"id":3814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3812,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"952:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":3813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"958:2:15","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"952:8:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3815,"nodeType":"ExpressionStatement","src":"952:8:15"},{"expression":{"id":3818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3816,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3788,"src":"975:1:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":3817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"980:2:15","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"975:7:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3819,"nodeType":"ExpressionStatement","src":"975:7:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3822,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"1008:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3078313030303030303030","id":3823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1013:11:15","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"value":"0x100000000"},"src":"1008:16:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3834,"nodeType":"IfStatement","src":"1004:79:15","trueBody":{"id":3833,"nodeType":"Block","src":"1026:57:15","statements":[{"expression":{"id":3827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3825,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"1041:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":3826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1047:2:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"1041:8:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3828,"nodeType":"ExpressionStatement","src":"1041:8:15"},{"expression":{"id":3831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3829,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3788,"src":"1064:1:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":3830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1069:2:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"1064:7:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3832,"nodeType":"ExpressionStatement","src":"1064:7:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3835,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"1097:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30783130303030","id":3836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1102:7:15","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"value":"0x10000"},"src":"1097:12:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3847,"nodeType":"IfStatement","src":"1093:75:15","trueBody":{"id":3846,"nodeType":"Block","src":"1111:57:15","statements":[{"expression":{"id":3840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3838,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"1126:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":3839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1132:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"1126:8:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3841,"nodeType":"ExpressionStatement","src":"1126:8:15"},{"expression":{"id":3844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3842,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3788,"src":"1149:1:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":3843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1154:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"1149:7:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3845,"nodeType":"ExpressionStatement","src":"1149:7:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3848,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"1182:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3078313030","id":3849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1187:5:15","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"0x100"},"src":"1182:10:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3860,"nodeType":"IfStatement","src":"1178:71:15","trueBody":{"id":3859,"nodeType":"Block","src":"1194:55:15","statements":[{"expression":{"id":3853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3851,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"1209:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":3852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1215:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1209:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3854,"nodeType":"ExpressionStatement","src":"1209:7:15"},{"expression":{"id":3857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3855,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3788,"src":"1231:1:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":3856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1236:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1231:6:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3858,"nodeType":"ExpressionStatement","src":"1231:6:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3861,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"1263:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30783130","id":3862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1268:4:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"1263:9:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3873,"nodeType":"IfStatement","src":"1259:70:15","trueBody":{"id":3872,"nodeType":"Block","src":"1274:55:15","statements":[{"expression":{"id":3866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3864,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"1289:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":3865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1295:1:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1289:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3867,"nodeType":"ExpressionStatement","src":"1289:7:15"},{"expression":{"id":3870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3868,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3788,"src":"1311:1:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":3869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1316:1:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1311:6:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3871,"nodeType":"ExpressionStatement","src":"1311:6:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3874,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"1343:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"307834","id":3875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1348:3:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x4"},"src":"1343:8:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3886,"nodeType":"IfStatement","src":"1339:69:15","trueBody":{"id":3885,"nodeType":"Block","src":"1353:55:15","statements":[{"expression":{"id":3879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3877,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"1368:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":3878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1374:1:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1368:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3880,"nodeType":"ExpressionStatement","src":"1368:7:15"},{"expression":{"id":3883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3881,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3788,"src":"1390:1:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":3882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1395:1:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1390:6:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3884,"nodeType":"ExpressionStatement","src":"1390:6:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3887,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"1422:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"307832","id":3888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1427:3:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x2"},"src":"1422:8:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3894,"nodeType":"IfStatement","src":"1418:20:15","trueBody":{"expression":{"id":3892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3890,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3788,"src":"1432:1:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1437:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1432:6:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3893,"nodeType":"ExpressionStatement","src":"1432:6:15"}}]},"documentation":{"id":3783,"nodeType":"StructuredDocumentation","src":"215:462:15","text":"@notice Returns the index of the most significant bit of the number,\n     where the least significant bit is at index 0 and the most significant bit is at index 255\n @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":3896,"implemented":true,"kind":"function","modifiers":[],"name":"mostSignificantBit","nodeType":"FunctionDefinition","parameters":{"id":3786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3785,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":3896,"src":"711:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3784,"name":"uint256","nodeType":"ElementaryTypeName","src":"711:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"710:11:15"},"returnParameters":{"id":3789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3788,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":3896,"src":"745:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3787,"name":"uint8","nodeType":"ElementaryTypeName","src":"745:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"744:9:15"},"scope":4058,"src":"683:763:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4056,"nodeType":"Block","src":"2017:862:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3905,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"2036:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2040:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2036:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3904,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2028:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":3908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2028:14:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3909,"nodeType":"ExpressionStatement","src":"2028:14:15"},{"expression":{"id":3912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3910,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3902,"src":"2055:1:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"323535","id":3911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2059:3:15","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"2055:7:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3913,"nodeType":"ExpressionStatement","src":"2055:7:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3914,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"2077:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"expression":{"arguments":[{"id":3917,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2086:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":3916,"name":"uint128","nodeType":"ElementaryTypeName","src":"2086:7:15","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":3915,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2081:4:15","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2081:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":3919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2081:17:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2077:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2101:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2077:25:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3932,"nodeType":"Block","src":"2145:36:15","statements":[{"expression":{"id":3930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3928,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"2160:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":3929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2166:3:15","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2160:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3931,"nodeType":"ExpressionStatement","src":"2160:9:15"}]},"id":3933,"nodeType":"IfStatement","src":"2073:108:15","trueBody":{"id":3927,"nodeType":"Block","src":"2104:35:15","statements":[{"expression":{"id":3925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3923,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3902,"src":"2119:1:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"313238","id":3924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2124:3:15","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2119:8:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3926,"nodeType":"ExpressionStatement","src":"2119:8:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3934,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"2195:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"expression":{"arguments":[{"id":3937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2204:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":3936,"name":"uint64","nodeType":"ElementaryTypeName","src":"2204:6:15","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":3935,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2199:4:15","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2199:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":3939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2199:16:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2195:20:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2218:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2195:24:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3952,"nodeType":"Block","src":"2261:35:15","statements":[{"expression":{"id":3950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3948,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"2276:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":3949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2282:2:15","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"2276:8:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3951,"nodeType":"ExpressionStatement","src":"2276:8:15"}]},"id":3953,"nodeType":"IfStatement","src":"2191:105:15","trueBody":{"id":3947,"nodeType":"Block","src":"2221:34:15","statements":[{"expression":{"id":3945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3943,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3902,"src":"2236:1:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3634","id":3944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2241:2:15","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"2236:7:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3946,"nodeType":"ExpressionStatement","src":"2236:7:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3954,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"2310:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"expression":{"arguments":[{"id":3957,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2319:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":3956,"name":"uint32","nodeType":"ElementaryTypeName","src":"2319:6:15","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":3955,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2314:4:15","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2314:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":3959,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2314:16:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2310:20:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2333:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2310:24:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3972,"nodeType":"Block","src":"2376:35:15","statements":[{"expression":{"id":3970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3968,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"2391:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":3969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2397:2:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"2391:8:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3971,"nodeType":"ExpressionStatement","src":"2391:8:15"}]},"id":3973,"nodeType":"IfStatement","src":"2306:105:15","trueBody":{"id":3967,"nodeType":"Block","src":"2336:34:15","statements":[{"expression":{"id":3965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3963,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3902,"src":"2351:1:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3332","id":3964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2356:2:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"2351:7:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3966,"nodeType":"ExpressionStatement","src":"2351:7:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3974,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"2425:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"expression":{"arguments":[{"id":3977,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2434:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":3976,"name":"uint16","nodeType":"ElementaryTypeName","src":"2434:6:15","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":3975,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2429:4:15","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2429:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":3979,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2429:16:15","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"2425:20:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2448:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2425:24:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3992,"nodeType":"Block","src":"2491:35:15","statements":[{"expression":{"id":3990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3988,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"2506:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":3989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2512:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"2506:8:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3991,"nodeType":"ExpressionStatement","src":"2506:8:15"}]},"id":3993,"nodeType":"IfStatement","src":"2421:105:15","trueBody":{"id":3987,"nodeType":"Block","src":"2451:34:15","statements":[{"expression":{"id":3985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3983,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3902,"src":"2466:1:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3136","id":3984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2471:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"2466:7:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3986,"nodeType":"ExpressionStatement","src":"2466:7:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3994,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"2540:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"expression":{"arguments":[{"id":3997,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2549:5:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3996,"name":"uint8","nodeType":"ElementaryTypeName","src":"2549:5:15","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":3995,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2544:4:15","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2544:11:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":3999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2544:15:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2540:19:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2562:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2540:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4012,"nodeType":"Block","src":"2604:34:15","statements":[{"expression":{"id":4010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4008,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"2619:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":4009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2625:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"2619:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4011,"nodeType":"ExpressionStatement","src":"2619:7:15"}]},"id":4013,"nodeType":"IfStatement","src":"2536:102:15","trueBody":{"id":4007,"nodeType":"Block","src":"2565:33:15","statements":[{"expression":{"id":4005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4003,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3902,"src":"2580:1:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"38","id":4004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2585:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"2580:6:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":4006,"nodeType":"ExpressionStatement","src":"2580:6:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4014,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"2652:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":4015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2656:3:15","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2652:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2662:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2652:11:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4028,"nodeType":"Block","src":"2704:34:15","statements":[{"expression":{"id":4026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4024,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"2719:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":4025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2725:1:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2719:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4027,"nodeType":"ExpressionStatement","src":"2719:7:15"}]},"id":4029,"nodeType":"IfStatement","src":"2648:90:15","trueBody":{"id":4023,"nodeType":"Block","src":"2665:33:15","statements":[{"expression":{"id":4021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4019,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3902,"src":"2680:1:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"34","id":4020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2685:1:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2680:6:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":4022,"nodeType":"ExpressionStatement","src":"2680:6:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4030,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"2752:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307833","id":4031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2756:3:15","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"0x3"},"src":"2752:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2762:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2752:11:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4044,"nodeType":"Block","src":"2804:34:15","statements":[{"expression":{"id":4042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4040,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"2819:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":4041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2825:1:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2819:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4043,"nodeType":"ExpressionStatement","src":"2819:7:15"}]},"id":4045,"nodeType":"IfStatement","src":"2748:90:15","trueBody":{"id":4039,"nodeType":"Block","src":"2765:33:15","statements":[{"expression":{"id":4037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4035,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3902,"src":"2780:1:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"32","id":4036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2785:1:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2780:6:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":4038,"nodeType":"ExpressionStatement","src":"2780:6:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4046,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"2852:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307831","id":4047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2856:3:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x1"},"src":"2852:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2862:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2852:11:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4055,"nodeType":"IfStatement","src":"2848:23:15","trueBody":{"expression":{"id":4053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4051,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3902,"src":"2865:1:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":4052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2870:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2865:6:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":4054,"nodeType":"ExpressionStatement","src":"2865:6:15"}}]},"documentation":{"id":3897,"nodeType":"StructuredDocumentation","src":"1454:485:15","text":"@notice Returns the index of the least significant bit of the number,\n     where the least significant bit is at index 0 and the most significant bit is at index 255\n @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":4057,"implemented":true,"kind":"function","modifiers":[],"name":"leastSignificantBit","nodeType":"FunctionDefinition","parameters":{"id":3900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3899,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4057,"src":"1974:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3898,"name":"uint256","nodeType":"ElementaryTypeName","src":"1974:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1973:11:15"},"returnParameters":{"id":3903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3902,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":4057,"src":"2008:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3901,"name":"uint8","nodeType":"ElementaryTypeName","src":"2008:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2007:9:15"},"scope":4058,"src":"1945:934:15","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4059,"src":"192:2690:15"}],"src":"46:2838:15"},"id":15},"contracts/elixir-core/libraries/FixedPoint128.sol":{"ast":{"absolutePath":"contracts/elixir-core/libraries/FixedPoint128.sol","exportedSymbols":{"FixedPoint128":[4065]},"id":4066,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4060,"literals":["solidity",">=","0.4",".0"],"nodeType":"PragmaDirective","src":"46:24:16"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":4061,"nodeType":"StructuredDocumentation","src":"74:142:16","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":4065,"linearizedBaseContracts":[4065],"name":"FixedPoint128","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":4064,"mutability":"constant","name":"Q128","nodeType":"VariableDeclaration","scope":4065,"src":"245:68:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4062,"name":"uint256","nodeType":"ElementaryTypeName","src":"245:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313030303030303030303030303030303030303030303030303030303030303030","id":4063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"278:35:16","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"value":"0x100000000000000000000000000000000"},"visibility":"internal"}],"scope":4066,"src":"216:101:16"}],"src":"46:273:16"},"id":16},"contracts/elixir-core/libraries/FixedPoint96.sol":{"ast":{"absolutePath":"contracts/elixir-core/libraries/FixedPoint96.sol","exportedSymbols":{"FixedPoint96":[4075]},"id":4076,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4067,"literals":["solidity",">=","0.4",".0"],"nodeType":"PragmaDirective","src":"46:24:17"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":4068,"nodeType":"StructuredDocumentation","src":"74:177:17","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":4075,"linearizedBaseContracts":[4075],"name":"FixedPoint96","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":4071,"mutability":"constant","name":"RESOLUTION","nodeType":"VariableDeclaration","scope":4075,"src":"279:39:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4069,"name":"uint8","nodeType":"ElementaryTypeName","src":"279:5:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3936","id":4070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"316:2:17","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"visibility":"internal"},{"constant":true,"id":4074,"mutability":"constant","name":"Q96","nodeType":"VariableDeclaration","scope":4075,"src":"325:59:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4072,"name":"uint256","nodeType":"ElementaryTypeName","src":"325:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307831303030303030303030303030303030303030303030303030","id":4073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"357:27:17","typeDescriptions":{"typeIdentifier":"t_rational_79228162514264337593543950336_by_1","typeString":"int_const 79228162514264337593543950336"},"value":"0x1000000000000000000000000"},"visibility":"internal"}],"scope":4076,"src":"251:137:17"}],"src":"46:344:17"},"id":17},"contracts/elixir-core/libraries/FullMath.sol":{"ast":{"absolutePath":"contracts/elixir-core/libraries/FullMath.sol","exportedSymbols":{"FullMath":[4248]},"id":4249,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4077,"literals":["solidity",">=","0.4",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:18"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":4078,"nodeType":"StructuredDocumentation","src":"68:300:18","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":4248,"linearizedBaseContracts":[4248],"name":"FullMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":4203,"nodeType":"Block","src":"894:3736:18","statements":[{"assignments":[4091],"declarations":[{"constant":false,"id":4091,"mutability":"mutable","name":"prod0","nodeType":"VariableDeclaration","scope":4203,"src":"1213:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4090,"name":"uint256","nodeType":"ElementaryTypeName","src":"1213:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4092,"nodeType":"VariableDeclarationStatement","src":"1213:13:18"},{"assignments":[4094],"declarations":[{"constant":false,"id":4094,"mutability":"mutable","name":"prod1","nodeType":"VariableDeclaration","scope":4203,"src":"1282:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4093,"name":"uint256","nodeType":"ElementaryTypeName","src":"1282:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4095,"nodeType":"VariableDeclarationStatement","src":"1282:13:18"},{"AST":{"nodeType":"YulBlock","src":"1359:145:18","statements":[{"nodeType":"YulVariableDeclaration","src":"1374:30:18","value":{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"1391:1:18"},{"name":"b","nodeType":"YulIdentifier","src":"1394:1:18"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1401:1:18","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1397:3:18"},"nodeType":"YulFunctionCall","src":"1397:6:18"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"1384:6:18"},"nodeType":"YulFunctionCall","src":"1384:20:18"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"1378:2:18","type":""}]},{"nodeType":"YulAssignment","src":"1418:18:18","value":{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"1431:1:18"},{"name":"b","nodeType":"YulIdentifier","src":"1434:1:18"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"1427:3:18"},"nodeType":"YulFunctionCall","src":"1427:9:18"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"1418:5:18"}]},{"nodeType":"YulAssignment","src":"1450:43:18","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"1467:2:18"},{"name":"prod0","nodeType":"YulIdentifier","src":"1471:5:18"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1463:3:18"},"nodeType":"YulFunctionCall","src":"1463:14:18"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"1482:2:18"},{"name":"prod0","nodeType":"YulIdentifier","src":"1486:5:18"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1479:2:18"},"nodeType":"YulFunctionCall","src":"1479:13:18"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1459:3:18"},"nodeType":"YulFunctionCall","src":"1459:34:18"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"1450:5:18"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4081,"isOffset":false,"isSlot":false,"src":"1391:1:18","valueSize":1},{"declaration":4081,"isOffset":false,"isSlot":false,"src":"1431:1:18","valueSize":1},{"declaration":4083,"isOffset":false,"isSlot":false,"src":"1394:1:18","valueSize":1},{"declaration":4083,"isOffset":false,"isSlot":false,"src":"1434:1:18","valueSize":1},{"declaration":4091,"isOffset":false,"isSlot":false,"src":"1418:5:18","valueSize":1},{"declaration":4091,"isOffset":false,"isSlot":false,"src":"1471:5:18","valueSize":1},{"declaration":4091,"isOffset":false,"isSlot":false,"src":"1486:5:18","valueSize":1},{"declaration":4094,"isOffset":false,"isSlot":false,"src":"1450:5:18","valueSize":1}],"id":4096,"nodeType":"InlineAssembly","src":"1350:154:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4097,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4094,"src":"1579:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1588:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1579:10:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4110,"nodeType":"IfStatement","src":"1575:185:18","trueBody":{"id":4109,"nodeType":"Block","src":"1591:169:18","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4101,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"1614:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1628:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1614:15:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4100,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1606:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1606:24:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4105,"nodeType":"ExpressionStatement","src":"1606:24:18"},{"AST":{"nodeType":"YulBlock","src":"1654:67:18","statements":[{"nodeType":"YulAssignment","src":"1673:33:18","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"1687:5:18"},{"name":"denominator","nodeType":"YulIdentifier","src":"1694:11:18"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"1683:3:18"},"nodeType":"YulFunctionCall","src":"1683:23:18"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"1673:6:18"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4085,"isOffset":false,"isSlot":false,"src":"1694:11:18","valueSize":1},{"declaration":4091,"isOffset":false,"isSlot":false,"src":"1687:5:18","valueSize":1},{"declaration":4088,"isOffset":false,"isSlot":false,"src":"1673:6:18","valueSize":1}],"id":4106,"nodeType":"InlineAssembly","src":"1645:76:18"},{"expression":{"id":4107,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4088,"src":"1742:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4089,"id":4108,"nodeType":"Return","src":"1735:13:18"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4112,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"1877:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4113,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4094,"src":"1891:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1877:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4111,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1869:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1869:28:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4116,"nodeType":"ExpressionStatement","src":"1869:28:18"},{"assignments":[4118],"declarations":[{"constant":false,"id":4118,"mutability":"mutable","name":"remainder","nodeType":"VariableDeclaration","scope":4203,"src":"2182:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4117,"name":"uint256","nodeType":"ElementaryTypeName","src":"2182:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4119,"nodeType":"VariableDeclarationStatement","src":"2182:17:18"},{"AST":{"nodeType":"YulBlock","src":"2219:64:18","statements":[{"nodeType":"YulAssignment","src":"2234:38:18","value":{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2254:1:18"},{"name":"b","nodeType":"YulIdentifier","src":"2257:1:18"},{"name":"denominator","nodeType":"YulIdentifier","src":"2260:11:18"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2247:6:18"},"nodeType":"YulFunctionCall","src":"2247:25:18"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"2234:9:18"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4081,"isOffset":false,"isSlot":false,"src":"2254:1:18","valueSize":1},{"declaration":4083,"isOffset":false,"isSlot":false,"src":"2257:1:18","valueSize":1},{"declaration":4085,"isOffset":false,"isSlot":false,"src":"2260:11:18","valueSize":1},{"declaration":4118,"isOffset":false,"isSlot":false,"src":"2234:9:18","valueSize":1}],"id":4120,"nodeType":"InlineAssembly","src":"2210:73:18"},{"AST":{"nodeType":"YulBlock","src":"2358:111:18","statements":[{"nodeType":"YulAssignment","src":"2373:41:18","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"2386:5:18"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"2396:9:18"},{"name":"prod0","nodeType":"YulIdentifier","src":"2407:5:18"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2393:2:18"},"nodeType":"YulFunctionCall","src":"2393:20:18"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2382:3:18"},"nodeType":"YulFunctionCall","src":"2382:32:18"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2373:5:18"}]},{"nodeType":"YulAssignment","src":"2428:30:18","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"2441:5:18"},{"name":"remainder","nodeType":"YulIdentifier","src":"2448:9:18"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2437:3:18"},"nodeType":"YulFunctionCall","src":"2437:21:18"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2428:5:18"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4091,"isOffset":false,"isSlot":false,"src":"2407:5:18","valueSize":1},{"declaration":4091,"isOffset":false,"isSlot":false,"src":"2428:5:18","valueSize":1},{"declaration":4091,"isOffset":false,"isSlot":false,"src":"2441:5:18","valueSize":1},{"declaration":4094,"isOffset":false,"isSlot":false,"src":"2373:5:18","valueSize":1},{"declaration":4094,"isOffset":false,"isSlot":false,"src":"2386:5:18","valueSize":1},{"declaration":4118,"isOffset":false,"isSlot":false,"src":"2396:9:18","valueSize":1},{"declaration":4118,"isOffset":false,"isSlot":false,"src":"2448:9:18","valueSize":1}],"id":4121,"nodeType":"InlineAssembly","src":"2349:120:18"},{"assignments":[4123],"declarations":[{"constant":false,"id":4123,"mutability":"mutable","name":"twos","nodeType":"VariableDeclaration","scope":4203,"src":"2623:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4122,"name":"uint256","nodeType":"ElementaryTypeName","src":"2623:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4128,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2638:12:18","subExpression":{"id":4124,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"2639:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":4126,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"2653:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2638:26:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2623:41:18"},{"AST":{"nodeType":"YulBlock","src":"2731:63:18","statements":[{"nodeType":"YulAssignment","src":"2746:37:18","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"2765:11:18"},{"name":"twos","nodeType":"YulIdentifier","src":"2778:4:18"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2761:3:18"},"nodeType":"YulFunctionCall","src":"2761:22:18"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"2746:11:18"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4085,"isOffset":false,"isSlot":false,"src":"2746:11:18","valueSize":1},{"declaration":4085,"isOffset":false,"isSlot":false,"src":"2765:11:18","valueSize":1},{"declaration":4123,"isOffset":false,"isSlot":false,"src":"2778:4:18","valueSize":1}],"id":4129,"nodeType":"InlineAssembly","src":"2722:72:18"},{"AST":{"nodeType":"YulBlock","src":"2870:51:18","statements":[{"nodeType":"YulAssignment","src":"2885:25:18","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"2898:5:18"},{"name":"twos","nodeType":"YulIdentifier","src":"2905:4:18"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2894:3:18"},"nodeType":"YulFunctionCall","src":"2894:16:18"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2885:5:18"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4091,"isOffset":false,"isSlot":false,"src":"2885:5:18","valueSize":1},{"declaration":4091,"isOffset":false,"isSlot":false,"src":"2898:5:18","valueSize":1},{"declaration":4123,"isOffset":false,"isSlot":false,"src":"2905:4:18","valueSize":1}],"id":4130,"nodeType":"InlineAssembly","src":"2861:60:18"},{"AST":{"nodeType":"YulBlock","src":"3113:65:18","statements":[{"nodeType":"YulAssignment","src":"3128:39:18","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3148:1:18","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"3151:4:18"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3144:3:18"},"nodeType":"YulFunctionCall","src":"3144:12:18"},{"name":"twos","nodeType":"YulIdentifier","src":"3158:4:18"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3140:3:18"},"nodeType":"YulFunctionCall","src":"3140:23:18"},{"kind":"number","nodeType":"YulLiteral","src":"3165:1:18","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3136:3:18"},"nodeType":"YulFunctionCall","src":"3136:31:18"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"3128:4:18"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4123,"isOffset":false,"isSlot":false,"src":"3128:4:18","valueSize":1},{"declaration":4123,"isOffset":false,"isSlot":false,"src":"3151:4:18","valueSize":1},{"declaration":4123,"isOffset":false,"isSlot":false,"src":"3158:4:18","valueSize":1}],"id":4131,"nodeType":"InlineAssembly","src":"3104:74:18"},{"expression":{"id":4136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4132,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4091,"src":"3188:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4133,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4094,"src":"3197:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4134,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4123,"src":"3205:4:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3197:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3188:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4137,"nodeType":"ExpressionStatement","src":"3188:21:18"},{"assignments":[4139],"declarations":[{"constant":false,"id":4139,"mutability":"mutable","name":"inv","nodeType":"VariableDeclaration","scope":4203,"src":"3550:11:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4138,"name":"uint256","nodeType":"ElementaryTypeName","src":"3550:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4146,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":4140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3565:1:18","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4141,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"3569:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3565:15:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3564:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":4144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3584:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"3564:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3550:35:18"},{"expression":{"id":4153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4147,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"3804:3:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3811:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4149,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"3815:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4150,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"3829:3:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3815:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3811:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3804:28:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4154,"nodeType":"ExpressionStatement","src":"3804:28:18"},{"expression":{"id":4161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4155,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"3863:3:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3870:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4157,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"3874:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4158,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"3888:3:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3874:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3870:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3863:28:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4162,"nodeType":"ExpressionStatement","src":"3863:28:18"},{"expression":{"id":4169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4163,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"3923:3:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3930:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4165,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"3934:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4166,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"3948:3:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3934:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3930:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3923:28:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4170,"nodeType":"ExpressionStatement","src":"3923:28:18"},{"expression":{"id":4177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4171,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"3983:3:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3990:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4173,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"3994:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4174,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"4008:3:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3994:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3990:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3983:28:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4178,"nodeType":"ExpressionStatement","src":"3983:28:18"},{"expression":{"id":4185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4179,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"4043:3:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4050:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4181,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"4054:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4182,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"4068:3:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4054:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4050:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4043:28:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4186,"nodeType":"ExpressionStatement","src":"4043:28:18"},{"expression":{"id":4193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4187,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"4104:3:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4111:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4189,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"4115:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4190,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"4129:3:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4115:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4111:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4104:28:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4194,"nodeType":"ExpressionStatement","src":"4104:28:18"},{"expression":{"id":4199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4195,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4088,"src":"4578:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4196,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4091,"src":"4587:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4197,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"4595:3:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4587:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4578:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4200,"nodeType":"ExpressionStatement","src":"4578:20:18"},{"expression":{"id":4201,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4088,"src":"4616:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4089,"id":4202,"nodeType":"Return","src":"4609:13:18"}]},"documentation":{"id":4079,"nodeType":"StructuredDocumentation","src":"392:364:18","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":4204,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nodeType":"FunctionDefinition","parameters":{"id":4086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4081,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":4204,"src":"788:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4080,"name":"uint256","nodeType":"ElementaryTypeName","src":"788:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4083,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":4204,"src":"808:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4082,"name":"uint256","nodeType":"ElementaryTypeName","src":"808:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4085,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","scope":4204,"src":"828:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4084,"name":"uint256","nodeType":"ElementaryTypeName","src":"828:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"777:77:18"},"returnParameters":{"id":4089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4088,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":4204,"src":"878:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4087,"name":"uint256","nodeType":"ElementaryTypeName","src":"878:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"877:16:18"},"scope":4248,"src":"762:3868:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4246,"nodeType":"Block","src":"5061:183:18","statements":[{"expression":{"id":4222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4216,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"5072:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4218,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4207,"src":"5088:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4219,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"5091:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4220,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4211,"src":"5094:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4217,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4204,"src":"5081:6:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5081:25:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5072:34:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4223,"nodeType":"ExpressionStatement","src":"5072:34:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4225,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4207,"src":"5128:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4226,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"5131:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4227,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4211,"src":"5134:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4224,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"5121:6:18","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5121:25:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5149:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5121:29:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4245,"nodeType":"IfStatement","src":"5117:120:18","trueBody":{"id":4244,"nodeType":"Block","src":"5152:85:18","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"5175:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":4235,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5189:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4234,"name":"uint256","nodeType":"ElementaryTypeName","src":"5189:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":4233,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5184:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5184:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":4237,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"5184:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5175:26:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4231,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5167:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5167:35:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4240,"nodeType":"ExpressionStatement","src":"5167:35:18"},{"expression":{"id":4242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5217:8:18","subExpression":{"id":4241,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"5217:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4243,"nodeType":"ExpressionStatement","src":"5217:8:18"}]}}]},"documentation":{"id":4205,"nodeType":"StructuredDocumentation","src":"4638:275:18","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":4247,"implemented":true,"kind":"function","modifiers":[],"name":"mulDivRoundingUp","nodeType":"FunctionDefinition","parameters":{"id":4212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4207,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":4247,"src":"4955:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4206,"name":"uint256","nodeType":"ElementaryTypeName","src":"4955:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4209,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":4247,"src":"4975:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4208,"name":"uint256","nodeType":"ElementaryTypeName","src":"4975:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4211,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","scope":4247,"src":"4995:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4210,"name":"uint256","nodeType":"ElementaryTypeName","src":"4995:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4944:77:18"},"returnParameters":{"id":4215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4214,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":4247,"src":"5045:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4213,"name":"uint256","nodeType":"ElementaryTypeName","src":"5045:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5044:16:18"},"scope":4248,"src":"4919:325:18","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4249,"src":"368:4879:18"}],"src":"33:5216:18"},"id":18},"contracts/elixir-core/libraries/LiquidityMath.sol":{"ast":{"absolutePath":"contracts/elixir-core/libraries/LiquidityMath.sol","exportedSymbols":{"LiquidityMath":[4300]},"id":4301,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4250,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:19"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":4251,"nodeType":"StructuredDocumentation","src":"74:39:19","text":"@title Math library for liquidity"},"fullyImplemented":true,"id":4300,"linearizedBaseContracts":[4300],"name":"LiquidityMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":4298,"nodeType":"Block","src":"465:169:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":4263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4261,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4256,"src":"480:1:19","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":4262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"484:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"480:5:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4296,"nodeType":"Block","src":"560:67:19","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":4292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":4289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4282,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4259,"src":"584:1:19","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":4288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4283,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4254,"src":"588:1:19","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"id":4286,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4256,"src":"600:1:19","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"id":4285,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"592:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":4284,"name":"uint128","nodeType":"ElementaryTypeName","src":"592:7:19","typeDescriptions":{}}},"id":4287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"592:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"588:14:19","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"584:18:19","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":4290,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"583:20:19","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4291,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4254,"src":"607:1:19","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"583:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c41","id":4293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"610:4:19","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":4281,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"575:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"575:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4295,"nodeType":"ExpressionStatement","src":"575:40:19"}]},"id":4297,"nodeType":"IfStatement","src":"476:151:19","trueBody":{"id":4280,"nodeType":"Block","src":"487:67:19","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":4276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":4273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4265,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4259,"src":"511:1:19","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":4272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4266,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4254,"src":"515:1:19","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":4270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"527:2:19","subExpression":{"id":4269,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4256,"src":"528:1:19","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"id":4268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"519:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":4267,"name":"uint128","nodeType":"ElementaryTypeName","src":"519:7:19","typeDescriptions":{}}},"id":4271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"519:11:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"515:15:19","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"511:19:19","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":4274,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"510:21:19","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4275,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4254,"src":"534:1:19","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"510:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c53","id":4277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"537:4:19","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":4264,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"502:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"502:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4279,"nodeType":"ExpressionStatement","src":"502:40:19"}]}}]},"documentation":{"id":4252,"nodeType":"StructuredDocumentation","src":"142:244:19","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":4299,"implemented":true,"kind":"function","modifiers":[],"name":"addDelta","nodeType":"FunctionDefinition","parameters":{"id":4257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4254,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4299,"src":"410:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4253,"name":"uint128","nodeType":"ElementaryTypeName","src":"410:7:19","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4256,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":4299,"src":"421:8:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":4255,"name":"int128","nodeType":"ElementaryTypeName","src":"421:6:19","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"409:21:19"},"returnParameters":{"id":4260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4259,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":4299,"src":"454:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4258,"name":"uint128","nodeType":"ElementaryTypeName","src":"454:7:19","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"453:11:19"},"scope":4300,"src":"392:242:19","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4301,"src":"113:524:19"}],"src":"46:593:19"},"id":19},"contracts/elixir-core/libraries/LowGasSafeMath.sol":{"ast":{"absolutePath":"contracts/elixir-core/libraries/LowGasSafeMath.sol","exportedSymbols":{"LowGasSafeMath":[4430]},"id":4431,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4302,"literals":["solidity",">=","0.7",".0"],"nodeType":"PragmaDirective","src":"46:24:20"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":4303,"nodeType":"StructuredDocumentation","src":"74:180:20","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":4430,"linearizedBaseContracts":[4430],"name":"LowGasSafeMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":4324,"nodeType":"Block","src":"514:44:20","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":4318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4314,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4311,"src":"534:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4315,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4306,"src":"538:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4316,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4308,"src":"542:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"538:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"534:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4319,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"533:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4320,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4306,"src":"548:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"533:16:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4313,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"525:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"525:25:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4323,"nodeType":"ExpressionStatement","src":"525:25:20"}]},"documentation":{"id":4304,"nodeType":"StructuredDocumentation","src":"284:155:20","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":4325,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":4309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4306,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4325,"src":"458:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4305,"name":"uint256","nodeType":"ElementaryTypeName","src":"458:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4308,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":4325,"src":"469:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4307,"name":"uint256","nodeType":"ElementaryTypeName","src":"469:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"457:22:20"},"returnParameters":{"id":4312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4311,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":4325,"src":"503:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4310,"name":"uint256","nodeType":"ElementaryTypeName","src":"503:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"502:11:20"},"scope":4430,"src":"445:113:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4346,"nodeType":"Block","src":"797:44:20","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":4340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4336,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"817:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4337,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4328,"src":"821:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4338,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4330,"src":"825:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"821:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"817:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4341,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"816:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4342,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4328,"src":"831:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"816:16:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4335,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"808:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"808:25:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4345,"nodeType":"ExpressionStatement","src":"808:25:20"}]},"documentation":{"id":4326,"nodeType":"StructuredDocumentation","src":"566:156:20","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":4347,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":4331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4328,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4347,"src":"741:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4327,"name":"uint256","nodeType":"ElementaryTypeName","src":"741:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4330,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":4347,"src":"752:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4329,"name":"uint256","nodeType":"ElementaryTypeName","src":"752:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"740:22:20"},"returnParameters":{"id":4334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4333,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":4347,"src":"786:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4332,"name":"uint256","nodeType":"ElementaryTypeName","src":"786:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"785:11:20"},"scope":4430,"src":"728:113:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4374,"nodeType":"Block","src":"1081:58:20","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4358,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4350,"src":"1100:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1105:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1100:6:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":4365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4361,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4355,"src":"1111:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4362,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4350,"src":"1115:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4363,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"1119:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1115:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1111:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4366,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1110:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4367,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4350,"src":"1124:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1110:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4369,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"1129:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1110:20:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1100:30:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4357,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1092:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1092:39:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4373,"nodeType":"ExpressionStatement","src":"1092:39:20"}]},"documentation":{"id":4348,"nodeType":"StructuredDocumentation","src":"849:157:20","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":4375,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":4353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4350,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4375,"src":"1025:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4349,"name":"uint256","nodeType":"ElementaryTypeName","src":"1025:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4352,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":4375,"src":"1036:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4351,"name":"uint256","nodeType":"ElementaryTypeName","src":"1036:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1024:22:20"},"returnParameters":{"id":4356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4355,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":4375,"src":"1070:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4354,"name":"uint256","nodeType":"ElementaryTypeName","src":"1070:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1069:11:20"},"scope":4430,"src":"1012:127:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4401,"nodeType":"Block","src":"1376:56:20","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":4390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4386,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4383,"src":"1396:1:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4387,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4378,"src":"1400:1:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4388,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4380,"src":"1404:1:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1400:5:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1396:9:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4391,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1395:11:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4392,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4378,"src":"1410:1:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1395:16:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4394,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4380,"src":"1416:1:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":4395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1421:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1416:6:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":4397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1415:8:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1395:28:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4385,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1387:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1387:37:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4400,"nodeType":"ExpressionStatement","src":"1387:37:20"}]},"documentation":{"id":4376,"nodeType":"StructuredDocumentation","src":"1147:157:20","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":4402,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":4381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4378,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4402,"src":"1323:8:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4377,"name":"int256","nodeType":"ElementaryTypeName","src":"1323:6:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":4380,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":4402,"src":"1333:8:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4379,"name":"int256","nodeType":"ElementaryTypeName","src":"1333:6:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1322:20:20"},"returnParameters":{"id":4384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4383,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":4402,"src":"1366:8:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4382,"name":"int256","nodeType":"ElementaryTypeName","src":"1366:6:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1365:10:20"},"scope":4430,"src":"1310:122:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4428,"nodeType":"Block","src":"1681:56:20","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":4417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4413,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"1701:1:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4414,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4405,"src":"1705:1:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4415,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4407,"src":"1709:1:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1705:5:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1701:9:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4418,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1700:11:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4419,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4405,"src":"1715:1:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1700:16:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4421,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4407,"src":"1721:1:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":4422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1726:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1721:6:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":4424,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1720:8:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1700:28:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4412,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1692:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1692:37:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4427,"nodeType":"ExpressionStatement","src":"1692:37:20"}]},"documentation":{"id":4403,"nodeType":"StructuredDocumentation","src":"1440:169:20","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":4429,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":4408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4405,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4429,"src":"1628:8:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4404,"name":"int256","nodeType":"ElementaryTypeName","src":"1628:6:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":4407,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":4429,"src":"1638:8:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4406,"name":"int256","nodeType":"ElementaryTypeName","src":"1638:6:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1627:20:20"},"returnParameters":{"id":4411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4410,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":4429,"src":"1671:8:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4409,"name":"int256","nodeType":"ElementaryTypeName","src":"1671:6:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1670:10:20"},"scope":4430,"src":"1615:122:20","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4431,"src":"254:1486:20"}],"src":"46:1696:20"},"id":20},"contracts/elixir-core/libraries/Oracle.sol":{"ast":{"absolutePath":"contracts/elixir-core/libraries/Oracle.sol","exportedSymbols":{"Oracle":[5283]},"id":5284,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":4432,"literals":["solidity",">=","0.5",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"38:31:21"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":4433,"nodeType":"StructuredDocumentation","src":"73:620:21","text":"@title Oracle\n @notice Provides price and liquidity data useful for a wide variety of system designs\n @dev Instances of stored oracle data, \"observations\", are collected in the oracle array\n Every pool is initialized with an oracle array length of 1. Anyone can pay the SSTOREs to increase the\n maximum length of the oracle array. New slots will be added when the array is fully populated.\n Observations are overwritten when the full length of the oracle array is populated.\n The most recent observation is available, independent of the length of the oracle array, by passing 0 to observe()"},"fullyImplemented":true,"id":5283,"linearizedBaseContracts":[5283],"name":"Oracle","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Oracle.Observation","id":4444,"members":[{"constant":false,"id":4435,"mutability":"mutable","name":"blockTimestamp","nodeType":"VariableDeclaration","scope":4444,"src":"796:21:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4434,"name":"uint32","nodeType":"ElementaryTypeName","src":"796:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4437,"mutability":"mutable","name":"tickCumulative","nodeType":"VariableDeclaration","scope":4444,"src":"924:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":4436,"name":"int56","nodeType":"ElementaryTypeName","src":"924:5:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":4439,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128","nodeType":"VariableDeclaration","scope":4444,"src":"1072:41:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4438,"name":"uint160","nodeType":"ElementaryTypeName","src":"1072:7:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4441,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":4444,"src":"1182:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4440,"name":"bool","nodeType":"ElementaryTypeName","src":"1182:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4443,"mutability":"mutable","name":"rewardPerLiquidityCumulativeX64","nodeType":"VariableDeclaration","scope":4444,"src":"1339:39:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":4442,"name":"uint192","nodeType":"ElementaryTypeName","src":"1339:7:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"name":"Observation","nodeType":"StructDefinition","scope":5283,"src":"715:682:21","visibility":"public"},{"body":{"id":4550,"nodeType":"Block","src":"2470:1688:21","statements":[{"assignments":[4463],"declarations":[{"constant":false,"id":4463,"mutability":"mutable","name":"delta","nodeType":"VariableDeclaration","scope":4550,"src":"2481:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4462,"name":"uint32","nodeType":"ElementaryTypeName","src":"2481:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":4468,"initialValue":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":4467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4464,"name":"blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4449,"src":"2496:14:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":4465,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4447,"src":"2513:4:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":4466,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":4435,"src":"2513:19:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2496:36:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"2481:51:21"},{"expression":{"id":4476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4469,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4453,"src":"2543:9:21","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":4472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4470,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4453,"src":"2555:9:21","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2567:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2555:13:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"31","id":4474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2583:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"id":4475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2555:29:21","trueExpression":{"id":4473,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4453,"src":"2571:9:21","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2543:41:21","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":4477,"nodeType":"ExpressionStatement","src":"2543:41:21"},{"assignments":[4479],"declarations":[{"constant":false,"id":4479,"mutability":"mutable","name":"rewardRateEffectiveDelta","nodeType":"VariableDeclaration","scope":4550,"src":"3204:31:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4478,"name":"uint32","nodeType":"ElementaryTypeName","src":"3204:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":4506,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4480,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3238:5:21","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"3238:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4484,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3261:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":4483,"name":"uint32","nodeType":"ElementaryTypeName","src":"3261:6:21","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":4482,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3256:4:21","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3256:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":4486,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"3256:16:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"3238:34:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4489,"name":"rewardRateEffectiveUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"3305:24:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":4490,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3332:5:21","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"3332:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3305:42:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":4503,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4463,"src":"3513:5:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":4504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3305:213:21","trueExpression":{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":4496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4493,"name":"rewardRateEffectiveUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"3363:24:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":4494,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4447,"src":"3391:4:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":4495,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":4435,"src":"3391:19:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"3363:47:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":4501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4498,"name":"rewardRateEffectiveUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"3451:24:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":4499,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4447,"src":"3478:4:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":4500,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":4435,"src":"3478:19:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"3451:46:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":4502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3363:134:21","trueExpression":{"hexValue":"30","id":4497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3430:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":4505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3238:280:21","trueExpression":{"hexValue":"30","id":4488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3288:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"3204:314:21"},{"expression":{"arguments":[{"id":4508,"name":"blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4449,"src":"3596:14:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":4517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4509,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4447,"src":"3645:4:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":4510,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickCumulative","nodeType":"MemberAccess","referencedDeclaration":4437,"src":"3645:19:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":4516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4513,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4451,"src":"3673:4:21","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":4512,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3667:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_int56_$","typeString":"type(int56)"},"typeName":{"id":4511,"name":"int56","nodeType":"ElementaryTypeName","src":"3667:5:21","typeDescriptions":{}}},"id":4514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3667:11:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4515,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4463,"src":"3681:5:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"3667:19:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"3645:41:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4518,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4447,"src":"3740:4:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":4519,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsPerLiquidityCumulativeX128","nodeType":"MemberAccess","referencedDeclaration":4439,"src":"3740:60:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":4525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4522,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4463,"src":"3834:5:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":4521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3826:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":4520,"name":"uint160","nodeType":"ElementaryTypeName","src":"3826:7:21","typeDescriptions":{}}},"id":4523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3826:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":4524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3844:3:21","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3826:21:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":4526,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3825:23:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4527,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4453,"src":"3851:9:21","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3825:35:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":4529,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3824:37:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3740:121:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"hexValue":"74727565","id":4531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3893:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":4547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4532,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4447,"src":"3949:4:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":4533,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityCumulativeX64","nodeType":"MemberAccess","referencedDeclaration":4443,"src":"3949:58:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":4545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":4542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":4539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4536,"name":"rewardPerSecondX48","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4455,"src":"4042:18:21","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint144","typeString":"uint144"}],"id":4535,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4034:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":4534,"name":"uint192","nodeType":"ElementaryTypeName","src":"4034:7:21","typeDescriptions":{}}},"id":4537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4034:27:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":4538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4065:2:21","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"4034:33:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":4540,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4033:35:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4541,"name":"rewardRateEffectiveDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4479,"src":"4096:24:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4033:87:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":4543,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4032:89:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4544,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4453,"src":"4124:9:21","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"4032:101:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":4546,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4031:103:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"3949:185:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_int56","typeString":"int56"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint192","typeString":"uint192"}],"id":4507,"name":"Observation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4444,"src":"3549:11:21","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Observation_$4444_storage_ptr_$","typeString":"type(struct Oracle.Observation storage pointer)"}},"id":4548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["blockTimestamp","tickCumulative","secondsPerLiquidityCumulativeX128","initialized","rewardPerLiquidityCumulativeX64"],"nodeType":"FunctionCall","src":"3549:601:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"functionReturnParameters":4461,"id":4549,"nodeType":"Return","src":"3529:621:21"}]},"documentation":{"id":4445,"nodeType":"StructuredDocumentation","src":"1405:797:21","text":"@notice Transforms a previous observation into a new observation, given the passage of time and the current tick and liquidity values\n @dev blockTimestamp _must_ be chronologically equal to or greater than last.blockTimestamp, safe for 0 or 1 overflows\n @param last The specified observation to be transformed\n @param blockTimestamp The timestamp of the new observation\n @param tick The active tick at the time of the new observation\n @param liquidity The total in-range liquidity at the time of the new observation\n @param rewardPerSecondX48 The reward rate at the time of the new observation\n @param rewardRateEffectiveUntil The timestamp after which the reward rate is zero\n @return Observation The newly populated observation"},"id":4551,"implemented":true,"kind":"function","modifiers":[],"name":"transform","nodeType":"FunctionDefinition","parameters":{"id":4458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4447,"mutability":"mutable","name":"last","nodeType":"VariableDeclaration","scope":4551,"src":"2237:23:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation"},"typeName":{"id":4446,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"2237:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"visibility":"internal"},{"constant":false,"id":4449,"mutability":"mutable","name":"blockTimestamp","nodeType":"VariableDeclaration","scope":4551,"src":"2271:21:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4448,"name":"uint32","nodeType":"ElementaryTypeName","src":"2271:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4451,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":4551,"src":"2303:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4450,"name":"int24","nodeType":"ElementaryTypeName","src":"2303:5:21","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":4453,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":4551,"src":"2324:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4452,"name":"uint128","nodeType":"ElementaryTypeName","src":"2324:7:21","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4455,"mutability":"mutable","name":"rewardPerSecondX48","nodeType":"VariableDeclaration","scope":4551,"src":"2352:26:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":4454,"name":"uint144","nodeType":"ElementaryTypeName","src":"2352:7:21","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"},{"constant":false,"id":4457,"mutability":"mutable","name":"rewardRateEffectiveUntil","nodeType":"VariableDeclaration","scope":4551,"src":"2389:31:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4456,"name":"uint32","nodeType":"ElementaryTypeName","src":"2389:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2226:201:21"},"returnParameters":{"id":4461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4460,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4551,"src":"2450:18:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation"},"typeName":{"id":4459,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"2450:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"visibility":"internal"}],"src":"2449:20:21"},"scope":5283,"src":"2208:1950:21","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":4581,"nodeType":"Block","src":"4769:276:21","statements":[{"expression":{"id":4575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4565,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4556,"src":"4780:4:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation storage ref[65535] storage pointer"}},"id":4567,"indexExpression":{"hexValue":"30","id":4566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4785:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4780:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage","typeString":"struct Oracle.Observation storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4569,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4558,"src":"4833:4:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"30","id":4570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4868:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":4571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4919:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"74727565","id":4572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4948:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":4573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5000:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4568,"name":"Observation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4444,"src":"4790:11:21","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Observation_$4444_storage_ptr_$","typeString":"type(struct Oracle.Observation storage pointer)"}},"id":4574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["blockTimestamp","tickCumulative","secondsPerLiquidityCumulativeX128","initialized","rewardPerLiquidityCumulativeX64"],"nodeType":"FunctionCall","src":"4790:223:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"src":"4780:233:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage","typeString":"struct Oracle.Observation storage ref"}},"id":4576,"nodeType":"ExpressionStatement","src":"4780:233:21"},{"expression":{"components":[{"hexValue":"31","id":4577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5032:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"31","id":4578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5035:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"id":4579,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5031:6:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_1_by_1_$_t_rational_1_by_1_$","typeString":"tuple(int_const 1,int_const 1)"}},"functionReturnParameters":4564,"id":4580,"nodeType":"Return","src":"5024:13:21"}]},"documentation":{"id":4552,"nodeType":"StructuredDocumentation","src":"4166:444:21","text":"@notice Initialize the oracle array by writing the first slot. Called once for the lifecycle of the observations array\n @param self The stored oracle array\n @param time The time of the oracle initialization, via block.timestamp truncated to uint32\n @return cardinality The number of populated elements in the oracle array\n @return cardinalityNext The new length of the oracle array, independent of population"},"id":4582,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":4559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4556,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":4582,"src":"4646:31:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation[65535]"},"typeName":{"baseType":{"id":4553,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"4646:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"id":4555,"length":{"hexValue":"3635353335","id":4554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4658:5:21","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"nodeType":"ArrayTypeName","src":"4646:18:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation[65535]"}},"visibility":"internal"},{"constant":false,"id":4558,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":4582,"src":"4688:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4557,"name":"uint32","nodeType":"ElementaryTypeName","src":"4688:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"4635:71:21"},"returnParameters":{"id":4564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4561,"mutability":"mutable","name":"cardinality","nodeType":"VariableDeclaration","scope":4582,"src":"4725:18:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4560,"name":"uint16","nodeType":"ElementaryTypeName","src":"4725:6:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":4563,"mutability":"mutable","name":"cardinalityNext","nodeType":"VariableDeclaration","scope":4582,"src":"4745:22:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4562,"name":"uint16","nodeType":"ElementaryTypeName","src":"4745:6:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"4724:44:21"},"scope":5283,"src":"4616:429:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4668,"nodeType":"Block","src":"6789:764:21","statements":[{"assignments":[4611],"declarations":[{"constant":false,"id":4611,"mutability":"mutable","name":"last","nodeType":"VariableDeclaration","scope":4668,"src":"6800:23:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation"},"typeName":{"id":4610,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"6800:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"visibility":"internal"}],"id":4615,"initialValue":{"baseExpression":{"id":4612,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4587,"src":"6826:4:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation storage ref[65535] storage pointer"}},"id":4614,"indexExpression":{"id":4613,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"6831:5:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6826:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage","typeString":"struct Oracle.Observation storage ref"}},"nodeType":"VariableDeclarationStatement","src":"6800:37:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":4619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4616,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4611,"src":"6930:4:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":4617,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":4435,"src":"6930:19:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4618,"name":"blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4591,"src":"6953:14:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"6930:37:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4624,"nodeType":"IfStatement","src":"6926:70:21","trueBody":{"expression":{"components":[{"id":4620,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"6977:5:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":4621,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4601,"src":"6984:11:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":4622,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6976:20:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint16_$","typeString":"tuple(uint16,uint16)"}},"functionReturnParameters":4609,"id":4623,"nodeType":"Return","src":"6969:27:21"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":4627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4625,"name":"cardinalityNext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4603,"src":"7082:15:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4626,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4601,"src":"7100:11:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"7082:29:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":4633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4628,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"7115:5:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":4631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4629,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4601,"src":"7125:11:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7139:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7125:15:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":4632,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7124:17:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"7115:26:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7082:59:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4644,"nodeType":"Block","src":"7212:59:21","statements":[{"expression":{"id":4642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4640,"name":"cardinalityUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4608,"src":"7227:18:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4641,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4601,"src":"7248:11:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"7227:32:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":4643,"nodeType":"ExpressionStatement","src":"7227:32:21"}]},"id":4645,"nodeType":"IfStatement","src":"7078:193:21","trueBody":{"id":4639,"nodeType":"Block","src":"7143:63:21","statements":[{"expression":{"id":4637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4635,"name":"cardinalityUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4608,"src":"7158:18:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4636,"name":"cardinalityNext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4603,"src":"7179:15:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"7158:36:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":4638,"nodeType":"ExpressionStatement","src":"7158:36:21"}]}},{"expression":{"id":4653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4646,"name":"indexUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4606,"src":"7283:12:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":4652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":4649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4647,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"7299:5:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7307:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7299:9:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":4650,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7298:11:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":4651,"name":"cardinalityUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4608,"src":"7312:18:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"7298:32:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"7283:47:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":4654,"nodeType":"ExpressionStatement","src":"7283:47:21"},{"expression":{"id":4666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4655,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4587,"src":"7341:4:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation storage ref[65535] storage pointer"}},"id":4657,"indexExpression":{"id":4656,"name":"indexUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4606,"src":"7346:12:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7341:18:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage","typeString":"struct Oracle.Observation storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4659,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4611,"src":"7386:4:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},{"id":4660,"name":"blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4591,"src":"7405:14:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4661,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4593,"src":"7434:4:21","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":4662,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4595,"src":"7453:9:21","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":4663,"name":"rewardPerSecondX48","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4597,"src":"7477:18:21","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},{"id":4664,"name":"rewardRateEffectiveUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4599,"src":"7510:24:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint144","typeString":"uint144"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":4658,"name":"transform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4551,"src":"7362:9:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Observation_$4444_memory_ptr_$_t_uint32_$_t_int24_$_t_uint128_$_t_uint144_$_t_uint32_$returns$_t_struct$_Observation_$4444_memory_ptr_$","typeString":"function (struct Oracle.Observation memory,uint32,int24,uint128,uint144,uint32) view returns (struct Oracle.Observation memory)"}},"id":4665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7362:183:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"src":"7341:204:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage","typeString":"struct Oracle.Observation storage ref"}},"id":4667,"nodeType":"ExpressionStatement","src":"7341:204:21"}]},"documentation":{"id":4583,"nodeType":"StructuredDocumentation","src":"5053:1355:21","text":"@notice Writes an oracle observation to the array\n @dev Writable at most once per block. Index represents the most recently written element. cardinality and index must be tracked externally.\n If the index is at the end of the allowable array length (according to cardinality), and the next cardinality\n is greater than the current one, cardinality may be increased. This restriction is created to preserve ordering.\n @param self The stored oracle array\n @param index The index of the observation that was most recently written to the observations array\n @param blockTimestamp The timestamp of the new observation\n @param tick The active tick at the time of the new observation\n @param liquidity The total in-range liquidity at the time of the new observation\n @param rewardPerSecondX48 The reward rate at the time of the new observation\n @param rewardRateEffectiveUntil The timestamp after which the reward rate is zero\n @param cardinality The number of populated elements in the oracle array\n @param cardinalityNext The new length of the oracle array, independent of population\n @return indexUpdated The new index of the most recently written element in the oracle array\n @return cardinalityUpdated The new cardinality of the oracle array"},"id":4669,"implemented":true,"kind":"function","modifiers":[],"name":"write","nodeType":"FunctionDefinition","parameters":{"id":4604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4587,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":4669,"src":"6439:31:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation[65535]"},"typeName":{"baseType":{"id":4584,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"6439:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"id":4586,"length":{"hexValue":"3635353335","id":4585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6451:5:21","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"nodeType":"ArrayTypeName","src":"6439:18:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation[65535]"}},"visibility":"internal"},{"constant":false,"id":4589,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":4669,"src":"6481:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4588,"name":"uint16","nodeType":"ElementaryTypeName","src":"6481:6:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":4591,"mutability":"mutable","name":"blockTimestamp","nodeType":"VariableDeclaration","scope":4669,"src":"6504:21:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4590,"name":"uint32","nodeType":"ElementaryTypeName","src":"6504:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4593,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":4669,"src":"6536:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4592,"name":"int24","nodeType":"ElementaryTypeName","src":"6536:5:21","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":4595,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":4669,"src":"6557:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4594,"name":"uint128","nodeType":"ElementaryTypeName","src":"6557:7:21","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4597,"mutability":"mutable","name":"rewardPerSecondX48","nodeType":"VariableDeclaration","scope":4669,"src":"6585:26:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":4596,"name":"uint144","nodeType":"ElementaryTypeName","src":"6585:7:21","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"},{"constant":false,"id":4599,"mutability":"mutable","name":"rewardRateEffectiveUntil","nodeType":"VariableDeclaration","scope":4669,"src":"6622:31:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4598,"name":"uint32","nodeType":"ElementaryTypeName","src":"6622:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4601,"mutability":"mutable","name":"cardinality","nodeType":"VariableDeclaration","scope":4669,"src":"6664:18:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4600,"name":"uint16","nodeType":"ElementaryTypeName","src":"6664:6:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":4603,"mutability":"mutable","name":"cardinalityNext","nodeType":"VariableDeclaration","scope":4669,"src":"6693:22:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4602,"name":"uint16","nodeType":"ElementaryTypeName","src":"6693:6:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"6428:294:21"},"returnParameters":{"id":4609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4606,"mutability":"mutable","name":"indexUpdated","nodeType":"VariableDeclaration","scope":4669,"src":"6741:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4605,"name":"uint16","nodeType":"ElementaryTypeName","src":"6741:6:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":4608,"mutability":"mutable","name":"cardinalityUpdated","nodeType":"VariableDeclaration","scope":4669,"src":"6762:25:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4607,"name":"uint16","nodeType":"ElementaryTypeName","src":"6762:6:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"6740:48:21"},"scope":5283,"src":"6414:1139:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4716,"nodeType":"Block","src":"8075:425:21","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":4686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4684,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4676,"src":"8094:7:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8104:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8094:11:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"49","id":4687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8107:3:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_8d61ecf6e15472e15b1a0f63cd77f62aa57e6edcd3871d7a841f1056fb42b216","typeString":"literal_string \"I\""},"value":"I"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8d61ecf6e15472e15b1a0f63cd77f62aa57e6edcd3871d7a841f1056fb42b216","typeString":"literal_string \"I\""}],"id":4683,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8086:7:21","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8086:25:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4689,"nodeType":"ExpressionStatement","src":"8086:25:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":4692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4690,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4678,"src":"8211:4:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4691,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4676,"src":"8219:7:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"8211:15:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4695,"nodeType":"IfStatement","src":"8207:35:21","trueBody":{"expression":{"id":4693,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4676,"src":"8235:7:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":4682,"id":4694,"nodeType":"Return","src":"8228:14:21"}},{"body":{"expression":{"id":4711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":4706,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4674,"src":"8444:4:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation storage ref[65535] storage pointer"}},"id":4708,"indexExpression":{"id":4707,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4697,"src":"8449:1:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8444:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage","typeString":"struct Oracle.Observation storage ref"}},"id":4709,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":4435,"src":"8444:22:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":4710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8469:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8444:26:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":4712,"nodeType":"ExpressionStatement","src":"8444:26:21"},"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":4702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4700,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4697,"src":"8429:1:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4701,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4678,"src":"8433:4:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"8429:8:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4713,"initializationExpression":{"assignments":[4697],"declarations":[{"constant":false,"id":4697,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":4713,"src":"8409:8:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4696,"name":"uint16","nodeType":"ElementaryTypeName","src":"8409:6:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":4699,"initialValue":{"id":4698,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4676,"src":"8420:7:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"VariableDeclarationStatement","src":"8409:18:21"},"loopExpression":{"expression":{"id":4704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8439:3:21","subExpression":{"id":4703,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4697,"src":"8439:1:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":4705,"nodeType":"ExpressionStatement","src":"8439:3:21"},"nodeType":"ForStatement","src":"8404:66:21"},{"expression":{"id":4714,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4678,"src":"8488:4:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":4682,"id":4715,"nodeType":"Return","src":"8481:11:21"}]},"documentation":{"id":4670,"nodeType":"StructuredDocumentation","src":"7561:372:21","text":"@notice Prepares the oracle array to store up to `next` observations\n @param self The stored oracle array\n @param current The current next cardinality of the oracle array\n @param next The proposed next cardinality which will be populated in the oracle array\n @return next The next cardinality which will be populated in the oracle array"},"id":4717,"implemented":true,"kind":"function","modifiers":[],"name":"grow","nodeType":"FunctionDefinition","parameters":{"id":4679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4674,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":4717,"src":"7963:31:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation[65535]"},"typeName":{"baseType":{"id":4671,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"7963:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"id":4673,"length":{"hexValue":"3635353335","id":4672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7975:5:21","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"nodeType":"ArrayTypeName","src":"7963:18:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation[65535]"}},"visibility":"internal"},{"constant":false,"id":4676,"mutability":"mutable","name":"current","nodeType":"VariableDeclaration","scope":4717,"src":"8005:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4675,"name":"uint16","nodeType":"ElementaryTypeName","src":"8005:6:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":4678,"mutability":"mutable","name":"next","nodeType":"VariableDeclaration","scope":4717,"src":"8030:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4677,"name":"uint16","nodeType":"ElementaryTypeName","src":"8030:6:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"7952:96:21"},"returnParameters":{"id":4682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4681,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4717,"src":"8067:6:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4680,"name":"uint16","nodeType":"ElementaryTypeName","src":"8067:6:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"8066:8:21"},"scope":5283,"src":"7939:561:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4771,"nodeType":"Block","src":"9016:279:21","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":4731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4729,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4722,"src":"9092:1:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4730,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"9097:4:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9092:9:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":4734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4732,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4724,"src":"9105:1:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4733,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"9110:4:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9105:9:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9092:22:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4740,"nodeType":"IfStatement","src":"9088:41:21","trueBody":{"expression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":4738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4736,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4722,"src":"9123:1:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4737,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4724,"src":"9128:1:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9123:6:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4728,"id":4739,"nodeType":"Return","src":"9116:13:21"}},{"assignments":[4742],"declarations":[{"constant":false,"id":4742,"mutability":"mutable","name":"aAdjusted","nodeType":"VariableDeclaration","scope":4771,"src":"9142:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4741,"name":"uint256","nodeType":"ElementaryTypeName","src":"9142:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4753,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":4745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4743,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4722,"src":"9162:1:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4744,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"9166:4:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9162:8:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint40","typeString":"uint40"},"id":4751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4747,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4722,"src":"9177:1:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":4750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9181:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":4749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9186:2:21","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9181:7:21","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"9177:11:21","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"id":4752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9162:26:21","trueExpression":{"id":4746,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4722,"src":"9173:1:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"nodeType":"VariableDeclarationStatement","src":"9142:46:21"},{"assignments":[4755],"declarations":[{"constant":false,"id":4755,"mutability":"mutable","name":"bAdjusted","nodeType":"VariableDeclaration","scope":4771,"src":"9199:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4754,"name":"uint256","nodeType":"ElementaryTypeName","src":"9199:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4766,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":4758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4756,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4724,"src":"9219:1:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4757,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"9223:4:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9219:8:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint40","typeString":"uint40"},"id":4764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4760,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4724,"src":"9234:1:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":4763,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9238:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":4762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9243:2:21","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9238:7:21","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"9234:11:21","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"id":4765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9219:26:21","trueExpression":{"id":4759,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4724,"src":"9230:1:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"nodeType":"VariableDeclarationStatement","src":"9199:46:21"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4767,"name":"aAdjusted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4742,"src":"9265:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4768,"name":"bAdjusted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4755,"src":"9278:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9265:22:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4728,"id":4770,"nodeType":"Return","src":"9258:29:21"}]},"documentation":{"id":4718,"nodeType":"StructuredDocumentation","src":"8508:428:21","text":"@notice comparator for 32-bit timestamps\n @dev safe for 0 or 1 overflows, a and b _must_ be chronologically before or equal to time\n @param time A timestamp truncated to 32 bits\n @param a A comparison timestamp from which to determine the relative position of `time`\n @param b From which to determine the relative position of `time`\n @return bool Whether `a` is chronologically <= `b`"},"id":4772,"implemented":true,"kind":"function","modifiers":[],"name":"lte","nodeType":"FunctionDefinition","parameters":{"id":4725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4720,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":4772,"src":"8955:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4719,"name":"uint32","nodeType":"ElementaryTypeName","src":"8955:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4722,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":4772,"src":"8968:8:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4721,"name":"uint32","nodeType":"ElementaryTypeName","src":"8968:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4724,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":4772,"src":"8978:8:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4723,"name":"uint32","nodeType":"ElementaryTypeName","src":"8978:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"8954:33:21"},"returnParameters":{"id":4728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4727,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4772,"src":"9010:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4726,"name":"bool","nodeType":"ElementaryTypeName","src":"9010:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9009:6:21"},"scope":5283,"src":"8942:353:21","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":4889,"nodeType":"Block","src":"10547:860:21","statements":[{"assignments":[4793],"declarations":[{"constant":false,"id":4793,"mutability":"mutable","name":"l","nodeType":"VariableDeclaration","scope":4889,"src":"10558:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4792,"name":"uint256","nodeType":"ElementaryTypeName","src":"10558:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4800,"initialValue":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":4799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":4796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4794,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4783,"src":"10571:5:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10579:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10571:9:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":4797,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10570:11:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":4798,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4785,"src":"10584:11:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"10570:25:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"VariableDeclarationStatement","src":"10558:37:21"},{"assignments":[4802],"declarations":[{"constant":false,"id":4802,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":4889,"src":"10628:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4801,"name":"uint256","nodeType":"ElementaryTypeName","src":"10628:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4808,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4803,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4793,"src":"10640:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4804,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4785,"src":"10644:11:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"10640:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10658:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10640:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10628:31:21"},{"assignments":[4810],"declarations":[{"constant":false,"id":4810,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":4889,"src":"10692:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4809,"name":"uint256","nodeType":"ElementaryTypeName","src":"10692:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4811,"nodeType":"VariableDeclarationStatement","src":"10692:9:21"},{"body":{"id":4887,"nodeType":"Block","src":"10725:675:21","statements":[{"expression":{"id":4820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4813,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4810,"src":"10740:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4814,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4793,"src":"10745:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4815,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4802,"src":"10749:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10745:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4817,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10744:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":4818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10754:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10744:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10740:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4821,"nodeType":"ExpressionStatement","src":"10740:15:21"},{"expression":{"id":4828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4822,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"10772:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":4823,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4777,"src":"10785:4:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation storage ref[65535] storage pointer"}},"id":4827,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4824,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4810,"src":"10790:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":4825,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4785,"src":"10794:11:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"10790:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10785:21:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage","typeString":"struct Oracle.Observation storage ref"}},"src":"10772:34:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":4829,"nodeType":"ExpressionStatement","src":"10772:34:21"},{"condition":{"id":4832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10920:23:21","subExpression":{"expression":{"id":4830,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"10921:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":4831,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialized","nodeType":"MemberAccess","referencedDeclaration":4441,"src":"10921:22:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4841,"nodeType":"IfStatement","src":"10916:100:21","trueBody":{"id":4840,"nodeType":"Block","src":"10945:71:21","statements":[{"expression":{"id":4837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4833,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4793,"src":"10964:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4834,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4810,"src":"10968:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10972:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10968:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10964:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4838,"nodeType":"ExpressionStatement","src":"10964:9:21"},{"id":4839,"nodeType":"Continue","src":"10992:8:21"}]}},{"expression":{"id":4851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4842,"name":"atOrAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4790,"src":"11032:9:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":4843,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4777,"src":"11044:4:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation storage ref[65535] storage pointer"}},"id":4850,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4844,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4810,"src":"11050:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11054:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11050:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4847,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11049:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":4848,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4785,"src":"11059:11:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"11049:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11044:27:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage","typeString":"struct Oracle.Observation storage ref"}},"src":"11032:39:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":4852,"nodeType":"ExpressionStatement","src":"11032:39:21"},{"assignments":[4854],"declarations":[{"constant":false,"id":4854,"mutability":"mutable","name":"targetAtOrAfter","nodeType":"VariableDeclaration","scope":4887,"src":"11088:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4853,"name":"bool","nodeType":"ElementaryTypeName","src":"11088:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":4861,"initialValue":{"arguments":[{"id":4856,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4779,"src":"11115:4:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":4857,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"11121:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":4858,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":4435,"src":"11121:25:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4859,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4781,"src":"11148:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":4855,"name":"lte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4772,"src":"11111:3:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint32_$_t_uint32_$_t_uint32_$returns$_t_bool_$","typeString":"function (uint32,uint32,uint32) pure returns (bool)"}},"id":4860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11111:44:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"11088:67:21"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4862,"name":"targetAtOrAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4854,"src":"11225:15:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"id":4864,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4779,"src":"11248:4:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4865,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4781,"src":"11254:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":4866,"name":"atOrAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4790,"src":"11262:9:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":4867,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":4435,"src":"11262:24:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":4863,"name":"lte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4772,"src":"11244:3:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint32_$_t_uint32_$_t_uint32_$returns$_t_bool_$","typeString":"function (uint32,uint32,uint32) pure returns (bool)"}},"id":4868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11244:43:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11225:62:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4871,"nodeType":"IfStatement","src":"11221:90:21","trueBody":{"id":4870,"nodeType":"Break","src":"11306:5:21"}},{"condition":{"id":4873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11332:16:21","subExpression":{"id":4872,"name":"targetAtOrAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4854,"src":"11333:15:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"id":4884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4880,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4793,"src":"11379:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4881,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4810,"src":"11383:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11387:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11383:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11379:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4885,"nodeType":"ExpressionStatement","src":"11379:9:21"},"id":4886,"nodeType":"IfStatement","src":"11328:60:21","trueBody":{"expression":{"id":4878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4874,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4802,"src":"11350:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4875,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4810,"src":"11354:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11358:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11354:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11350:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4879,"nodeType":"ExpressionStatement","src":"11350:9:21"}}]},"condition":{"hexValue":"74727565","id":4812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10719:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":4888,"nodeType":"WhileStatement","src":"10712:688:21"}]},"documentation":{"id":4773,"nodeType":"StructuredDocumentation","src":"9303:954:21","text":"@notice Fetches the observations beforeOrAt and atOrAfter a target, i.e. where [beforeOrAt, atOrAfter] is satisfied.\n The result may be the same observation, or adjacent observations.\n @dev The answer must be contained in the array, used when the target is located within the stored observation\n boundaries: older than the most recent observation and younger, or the same age as, the oldest observation\n @param self The stored oracle array\n @param time The current block.timestamp\n @param target The timestamp at which the reserved observation should be for\n @param index The index of the observation that was most recently written to the observations array\n @param cardinality The number of populated elements in the oracle array\n @return beforeOrAt The observation recorded before, or at, the target\n @return atOrAfter The observation recorded at, or after, the target"},"id":4890,"implemented":true,"kind":"function","modifiers":[],"name":"binarySearch","nodeType":"FunctionDefinition","parameters":{"id":4786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4777,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":4890,"src":"10295:31:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation[65535]"},"typeName":{"baseType":{"id":4774,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"10295:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"id":4776,"length":{"hexValue":"3635353335","id":4775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10307:5:21","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"nodeType":"ArrayTypeName","src":"10295:18:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation[65535]"}},"visibility":"internal"},{"constant":false,"id":4779,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":4890,"src":"10337:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4778,"name":"uint32","nodeType":"ElementaryTypeName","src":"10337:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4781,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":4890,"src":"10359:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4780,"name":"uint32","nodeType":"ElementaryTypeName","src":"10359:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4783,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":4890,"src":"10383:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4782,"name":"uint16","nodeType":"ElementaryTypeName","src":"10383:6:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":4785,"mutability":"mutable","name":"cardinality","nodeType":"VariableDeclaration","scope":4890,"src":"10406:18:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4784,"name":"uint16","nodeType":"ElementaryTypeName","src":"10406:6:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"10284:147:21"},"returnParameters":{"id":4791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4788,"mutability":"mutable","name":"beforeOrAt","nodeType":"VariableDeclaration","scope":4890,"src":"10481:29:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation"},"typeName":{"id":4787,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"10481:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"visibility":"internal"},{"constant":false,"id":4790,"mutability":"mutable","name":"atOrAfter","nodeType":"VariableDeclaration","scope":4890,"src":"10512:28:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation"},"typeName":{"id":4789,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"10512:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"visibility":"internal"}],"src":"10480:61:21"},"scope":5283,"src":"10263:1144:21","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":4993,"nodeType":"Block","src":"13037:1422:21","statements":[{"expression":{"id":4922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4918,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4914,"src":"13112:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":4919,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"13125:4:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation storage ref[65535] storage pointer"}},"id":4921,"indexExpression":{"id":4920,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4903,"src":"13130:5:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13125:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage","typeString":"struct Oracle.Observation storage ref"}},"src":"13112:24:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":4923,"nodeType":"ExpressionStatement","src":"13112:24:21"},{"condition":{"arguments":[{"id":4925,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4897,"src":"13258:4:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":4926,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4914,"src":"13264:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":4927,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":4435,"src":"13264:25:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4928,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4899,"src":"13291:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":4924,"name":"lte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4772,"src":"13254:3:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint32_$_t_uint32_$_t_uint32_$returns$_t_bool_$","typeString":"function (uint32,uint32,uint32) pure returns (bool)"}},"id":4929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13254:44:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4953,"nodeType":"IfStatement","src":"13250:731:21","trueBody":{"id":4952,"nodeType":"Block","src":"13300:681:21","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":4933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4930,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4914,"src":"13319:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":4931,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":4435,"src":"13319:25:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4932,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4899,"src":"13348:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"13319:35:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4950,"nodeType":"Block","src":"13536:434:21","statements":[{"expression":{"components":[{"id":4939,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4914,"src":"13637:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},{"arguments":[{"id":4941,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4914,"src":"13706:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},{"id":4942,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4899,"src":"13743:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4943,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4901,"src":"13776:4:21","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":4944,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4905,"src":"13807:9:21","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":4945,"name":"rewardPerSecondX48","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4907,"src":"13843:18:21","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},{"id":4946,"name":"rewardRateEffectiveUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"13888:24:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint144","typeString":"uint144"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":4940,"name":"transform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4551,"src":"13670:9:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Observation_$4444_memory_ptr_$_t_uint32_$_t_int24_$_t_uint128_$_t_uint144_$_t_uint32_$returns$_t_struct$_Observation_$4444_memory_ptr_$","typeString":"function (struct Oracle.Observation memory,uint32,int24,uint128,uint144,uint32) view returns (struct Oracle.Observation memory)"}},"id":4947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13670:265:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}}],"id":4948,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13614:340:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_struct$_Observation_$4444_memory_ptr_$_t_struct$_Observation_$4444_memory_ptr_$","typeString":"tuple(struct Oracle.Observation memory,struct Oracle.Observation memory)"}},"functionReturnParameters":4917,"id":4949,"nodeType":"Return","src":"13607:347:21"}]},"id":4951,"nodeType":"IfStatement","src":"13315:655:21","trueBody":{"id":4938,"nodeType":"Block","src":"13356:174:21","statements":[{"expression":{"components":[{"id":4934,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4914,"src":"13492:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},{"id":4935,"name":"atOrAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4916,"src":"13504:9:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}}],"id":4936,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13491:23:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_struct$_Observation_$4444_memory_ptr_$_t_struct$_Observation_$4444_memory_ptr_$","typeString":"tuple(struct Oracle.Observation memory,struct Oracle.Observation memory)"}},"functionReturnParameters":4917,"id":4937,"nodeType":"Return","src":"13484:30:21"}]}}]}},{"expression":{"id":4963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4954,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4914,"src":"14047:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":4955,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"14060:4:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation storage ref[65535] storage pointer"}},"id":4962,"indexExpression":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":4961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":4958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4956,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4903,"src":"14066:5:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14074:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14066:9:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":4959,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14065:11:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":4960,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4911,"src":"14079:11:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"14065:25:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14060:31:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage","typeString":"struct Oracle.Observation storage ref"}},"src":"14047:44:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":4964,"nodeType":"ExpressionStatement","src":"14047:44:21"},{"condition":{"id":4967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14106:23:21","subExpression":{"expression":{"id":4965,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4914,"src":"14107:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":4966,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialized","nodeType":"MemberAccess","referencedDeclaration":4441,"src":"14107:22:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4974,"nodeType":"IfStatement","src":"14102:49:21","trueBody":{"expression":{"id":4972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4968,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4914,"src":"14131:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":4969,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"14144:4:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation storage ref[65535] storage pointer"}},"id":4971,"indexExpression":{"hexValue":"30","id":4970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14149:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14144:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage","typeString":"struct Oracle.Observation storage ref"}},"src":"14131:20:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":4973,"nodeType":"ExpressionStatement","src":"14131:20:21"}},{"expression":{"arguments":[{"arguments":[{"id":4977,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4897,"src":"14265:4:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":4978,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4914,"src":"14271:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":4979,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":4435,"src":"14271:25:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4980,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4899,"src":"14298:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":4976,"name":"lte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4772,"src":"14261:3:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint32_$_t_uint32_$_t_uint32_$returns$_t_bool_$","typeString":"function (uint32,uint32,uint32) pure returns (bool)"}},"id":4981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14261:44:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f4c44","id":4982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14307:5:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_d30c0d219016dd7e5cf2b2c30c4d7c091820fc329f335b57cab26b9ff3384a9e","typeString":"literal_string \"OLD\""},"value":"OLD"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d30c0d219016dd7e5cf2b2c30c4d7c091820fc329f335b57cab26b9ff3384a9e","typeString":"literal_string \"OLD\""}],"id":4975,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14253:7:21","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14253:60:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4984,"nodeType":"ExpressionStatement","src":"14253:60:21"},{"expression":{"arguments":[{"id":4986,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"14412:4:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation storage ref[65535] storage pointer"}},{"id":4987,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4897,"src":"14418:4:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4988,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4899,"src":"14424:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4989,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4903,"src":"14432:5:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":4990,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4911,"src":"14439:11:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation storage ref[65535] storage pointer"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":4985,"name":"binarySearch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4890,"src":"14399:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$_t_uint32_$_t_uint32_$_t_uint16_$_t_uint16_$returns$_t_struct$_Observation_$4444_memory_ptr_$_t_struct$_Observation_$4444_memory_ptr_$","typeString":"function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32,uint16,uint16) view returns (struct Oracle.Observation memory,struct Oracle.Observation memory)"}},"id":4991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14399:52:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_struct$_Observation_$4444_memory_ptr_$_t_struct$_Observation_$4444_memory_ptr_$","typeString":"tuple(struct Oracle.Observation memory,struct Oracle.Observation memory)"}},"functionReturnParameters":4917,"id":4992,"nodeType":"Return","src":"14392:59:21"}]},"documentation":{"id":4891,"nodeType":"StructuredDocumentation","src":"11415:1190:21","text":"@notice Fetches the observations beforeOrAt and atOrAfter a given target, i.e. where [beforeOrAt, atOrAfter] is satisfied\n @dev Assumes there is at least 1 initialized observation.\n Used by observeSingle() to compute the counterfactual accumulator values as of a given block timestamp.\n @param self The stored oracle array\n @param time The current block.timestamp\n @param target The timestamp at which the reserved observation should be for\n @param tick The active tick at the time of the returned or simulated observation\n @param index The index of the observation that was most recently written to the observations array\n @param liquidity The total pool liquidity at the time of the call\n @param rewardPerSecondX48 The reward rate at the time of the call\n @param rewardRateEffectiveUntil The timestamp after which the reward rate is zero\n @param cardinality The number of populated elements in the oracle array\n @return beforeOrAt The observation which occurred at, or before, the given timestamp\n @return atOrAfter The observation which occurred at, or after, the given timestamp"},"id":4994,"implemented":true,"kind":"function","modifiers":[],"name":"getSurroundingObservations","nodeType":"FunctionDefinition","parameters":{"id":4912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4895,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":4994,"src":"12657:31:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation[65535]"},"typeName":{"baseType":{"id":4892,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"12657:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"id":4894,"length":{"hexValue":"3635353335","id":4893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12669:5:21","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"nodeType":"ArrayTypeName","src":"12657:18:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation[65535]"}},"visibility":"internal"},{"constant":false,"id":4897,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":4994,"src":"12699:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4896,"name":"uint32","nodeType":"ElementaryTypeName","src":"12699:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4899,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":4994,"src":"12721:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4898,"name":"uint32","nodeType":"ElementaryTypeName","src":"12721:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4901,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":4994,"src":"12745:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4900,"name":"int24","nodeType":"ElementaryTypeName","src":"12745:5:21","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":4903,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":4994,"src":"12766:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4902,"name":"uint16","nodeType":"ElementaryTypeName","src":"12766:6:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":4905,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":4994,"src":"12789:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4904,"name":"uint128","nodeType":"ElementaryTypeName","src":"12789:7:21","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4907,"mutability":"mutable","name":"rewardPerSecondX48","nodeType":"VariableDeclaration","scope":4994,"src":"12817:26:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":4906,"name":"uint144","nodeType":"ElementaryTypeName","src":"12817:7:21","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"},{"constant":false,"id":4909,"mutability":"mutable","name":"rewardRateEffectiveUntil","nodeType":"VariableDeclaration","scope":4994,"src":"12854:31:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4908,"name":"uint32","nodeType":"ElementaryTypeName","src":"12854:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4911,"mutability":"mutable","name":"cardinality","nodeType":"VariableDeclaration","scope":4994,"src":"12896:18:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4910,"name":"uint16","nodeType":"ElementaryTypeName","src":"12896:6:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"12646:275:21"},"returnParameters":{"id":4917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4914,"mutability":"mutable","name":"beforeOrAt","nodeType":"VariableDeclaration","scope":4994,"src":"12971:29:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation"},"typeName":{"id":4913,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"12971:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"visibility":"internal"},{"constant":false,"id":4916,"mutability":"mutable","name":"atOrAfter","nodeType":"VariableDeclaration","scope":4994,"src":"13002:28:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation"},"typeName":{"id":4915,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"13002:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"visibility":"internal"}],"src":"12970:61:21"},"scope":5283,"src":"12611:1848:21","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":5174,"nodeType":"Block","src":"16354:2801:21","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5024,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5003,"src":"16369:10:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16383:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16369:15:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5058,"nodeType":"IfStatement","src":"16365:573:21","trueBody":{"id":5057,"nodeType":"Block","src":"16386:552:21","statements":[{"assignments":[5028],"declarations":[{"constant":false,"id":5028,"mutability":"mutable","name":"last","nodeType":"VariableDeclaration","scope":5057,"src":"16401:23:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation"},"typeName":{"id":5027,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"16401:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"visibility":"internal"}],"id":5032,"initialValue":{"baseExpression":{"id":5029,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4999,"src":"16427:4:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation storage ref[65535] storage pointer"}},"id":5031,"indexExpression":{"id":5030,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5007,"src":"16432:5:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16427:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage","typeString":"struct Oracle.Observation storage ref"}},"nodeType":"VariableDeclarationStatement","src":"16401:37:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5033,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5028,"src":"16457:4:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5034,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":4435,"src":"16457:19:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5035,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5001,"src":"16480:4:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"16457:27:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5048,"nodeType":"IfStatement","src":"16453:286:21","trueBody":{"expression":{"id":5046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5037,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5028,"src":"16503:4:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5039,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5028,"src":"16542:4:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},{"id":5040,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5001,"src":"16569:4:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5041,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5005,"src":"16596:4:21","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":5042,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5009,"src":"16623:9:21","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":5043,"name":"rewardPerSecondX48","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5011,"src":"16655:18:21","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},{"id":5044,"name":"rewardRateEffectiveUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5013,"src":"16696:24:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint144","typeString":"uint144"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":5038,"name":"transform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4551,"src":"16510:9:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Observation_$4444_memory_ptr_$_t_uint32_$_t_int24_$_t_uint128_$_t_uint144_$_t_uint32_$returns$_t_struct$_Observation_$4444_memory_ptr_$","typeString":"function (struct Oracle.Observation memory,uint32,int24,uint128,uint144,uint32) view returns (struct Oracle.Observation memory)"}},"id":5045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16510:229:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"src":"16503:236:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5047,"nodeType":"ExpressionStatement","src":"16503:236:21"}},{"expression":{"components":[{"expression":{"id":5049,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5028,"src":"16780:4:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5050,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickCumulative","nodeType":"MemberAccess","referencedDeclaration":4437,"src":"16780:19:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"expression":{"id":5051,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5028,"src":"16818:4:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5052,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsPerLiquidityCumulativeX128","nodeType":"MemberAccess","referencedDeclaration":4439,"src":"16818:38:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":5053,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5028,"src":"16875:4:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5054,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityCumulativeX64","nodeType":"MemberAccess","referencedDeclaration":4443,"src":"16875:36:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":5055,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16761:165:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int56_$_t_uint160_$_t_uint192_$","typeString":"tuple(int56,uint160,uint192)"}},"functionReturnParameters":5023,"id":5056,"nodeType":"Return","src":"16754:172:21"}]}},{"assignments":[5060],"declarations":[{"constant":false,"id":5060,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":5174,"src":"16950:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5059,"name":"uint32","nodeType":"ElementaryTypeName","src":"16950:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":5064,"initialValue":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5061,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5001,"src":"16966:4:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5062,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5003,"src":"16973:10:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"16966:17:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"16950:33:21"},{"assignments":[5066,5068],"declarations":[{"constant":false,"id":5066,"mutability":"mutable","name":"beforeOrAt","nodeType":"VariableDeclaration","scope":5174,"src":"17011:29:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation"},"typeName":{"id":5065,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"17011:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"visibility":"internal"},{"constant":false,"id":5068,"mutability":"mutable","name":"atOrAfter","nodeType":"VariableDeclaration","scope":5174,"src":"17055:28:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation"},"typeName":{"id":5067,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"17055:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"visibility":"internal"}],"id":5080,"initialValue":{"arguments":[{"id":5070,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4999,"src":"17142:4:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation storage ref[65535] storage pointer"}},{"id":5071,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5001,"src":"17165:4:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5072,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5060,"src":"17188:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5073,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5005,"src":"17213:4:21","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":5074,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5007,"src":"17236:5:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":5075,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5009,"src":"17260:9:21","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":5076,"name":"rewardPerSecondX48","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5011,"src":"17288:18:21","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},{"id":5077,"name":"rewardRateEffectiveUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5013,"src":"17325:24:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5078,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5015,"src":"17368:11:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation storage ref[65535] storage pointer"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint144","typeString":"uint144"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":5069,"name":"getSurroundingObservations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4994,"src":"17097:26:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$_t_uint32_$_t_uint32_$_t_int24_$_t_uint16_$_t_uint128_$_t_uint144_$_t_uint32_$_t_uint16_$returns$_t_struct$_Observation_$4444_memory_ptr_$_t_struct$_Observation_$4444_memory_ptr_$","typeString":"function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32,int24,uint16,uint128,uint144,uint32,uint16) view returns (struct Oracle.Observation memory,struct Oracle.Observation memory)"}},"id":5079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17097:297:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_struct$_Observation_$4444_memory_ptr_$_t_struct$_Observation_$4444_memory_ptr_$","typeString":"tuple(struct Oracle.Observation memory,struct Oracle.Observation memory)"}},"nodeType":"VariableDeclarationStatement","src":"16996:398:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5081,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5060,"src":"17411:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":5082,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5066,"src":"17421:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5083,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":4435,"src":"17421:25:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"17411:35:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5094,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5060,"src":"17718:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":5095,"name":"atOrAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5068,"src":"17728:9:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5096,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":4435,"src":"17728:24:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"17718:34:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5171,"nodeType":"Block","src":"18018:1130:21","statements":[{"assignments":[5108],"declarations":[{"constant":false,"id":5108,"mutability":"mutable","name":"observationTimeDelta","nodeType":"VariableDeclaration","scope":5171,"src":"18069:27:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5107,"name":"uint32","nodeType":"ElementaryTypeName","src":"18069:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":5114,"initialValue":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5109,"name":"atOrAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5068,"src":"18099:9:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5110,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":4435,"src":"18099:24:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5111,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5066,"src":"18143:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5112,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":4435,"src":"18143:25:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"18099:69:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"18069:99:21"},{"assignments":[5116],"declarations":[{"constant":false,"id":5116,"mutability":"mutable","name":"targetDelta","nodeType":"VariableDeclaration","scope":5171,"src":"18183:18:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5115,"name":"uint32","nodeType":"ElementaryTypeName","src":"18183:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":5121,"initialValue":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5117,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5060,"src":"18204:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5118,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5066,"src":"18213:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5119,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":4435,"src":"18213:25:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"18204:34:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"18183:55:21"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":5135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5122,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5066,"src":"18279:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5123,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickCumulative","nodeType":"MemberAccess","referencedDeclaration":4437,"src":"18279:25:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":5134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":5131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":5128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5124,"name":"atOrAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5068,"src":"18330:9:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5125,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickCumulative","nodeType":"MemberAccess","referencedDeclaration":4437,"src":"18330:24:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5126,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5066,"src":"18357:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5127,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickCumulative","nodeType":"MemberAccess","referencedDeclaration":4437,"src":"18357:25:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"18330:52:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}}],"id":5129,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18329:54:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5130,"name":"observationTimeDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5108,"src":"18411:20:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"18329:102:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}}],"id":5132,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18328:104:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5133,"name":"targetDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5116,"src":"18456:11:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"18328:139:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"18279:188:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":5154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5136,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5066,"src":"18486:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5137,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsPerLiquidityCumulativeX128","nodeType":"MemberAccess","referencedDeclaration":4439,"src":"18486:44:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":5146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5142,"name":"atOrAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5068,"src":"18627:9:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5143,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsPerLiquidityCumulativeX128","nodeType":"MemberAccess","referencedDeclaration":4439,"src":"18627:43:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5144,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5066,"src":"18706:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5145,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsPerLiquidityCumulativeX128","nodeType":"MemberAccess","referencedDeclaration":4439,"src":"18706:44:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"18627:123:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":5141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18589:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5140,"name":"uint256","nodeType":"ElementaryTypeName","src":"18589:7:21","typeDescriptions":{}}},"id":5147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18589:188:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5148,"name":"targetDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5116,"src":"18780:11:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"18589:202:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5150,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18588:204:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5151,"name":"observationTimeDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5108,"src":"18795:20:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"18588:227:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5139,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18554:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5138,"name":"uint160","nodeType":"ElementaryTypeName","src":"18554:7:21","typeDescriptions":{}}},"id":5153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18554:284:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"18486:352:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":5168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5155,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5066,"src":"18857:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5156,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityCumulativeX64","nodeType":"MemberAccess","referencedDeclaration":4443,"src":"18857:42:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":5167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":5164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":5161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5157,"name":"atOrAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5068,"src":"18925:9:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5158,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityCumulativeX64","nodeType":"MemberAccess","referencedDeclaration":4443,"src":"18925:41:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5159,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5066,"src":"18994:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5160,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityCumulativeX64","nodeType":"MemberAccess","referencedDeclaration":4443,"src":"18994:42:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"18925:111:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":5162,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18924:113:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5163,"name":"observationTimeDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5108,"src":"19065:20:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"18924:161:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":5165,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18923:163:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5166,"name":"targetDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5116,"src":"19110:11:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"18923:198:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"18857:264:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":5169,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18260:876:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int56_$_t_uint160_$_t_uint192_$","typeString":"tuple(int56,uint160,uint192)"}},"functionReturnParameters":5023,"id":5170,"nodeType":"Return","src":"18253:883:21"}]},"id":5172,"nodeType":"IfStatement","src":"17714:1434:21","trueBody":{"id":5106,"nodeType":"Block","src":"17754:258:21","statements":[{"expression":{"components":[{"expression":{"id":5098,"name":"atOrAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5068,"src":"17839:9:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5099,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickCumulative","nodeType":"MemberAccess","referencedDeclaration":4437,"src":"17839:24:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"expression":{"id":5100,"name":"atOrAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5068,"src":"17882:9:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5101,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsPerLiquidityCumulativeX128","nodeType":"MemberAccess","referencedDeclaration":4439,"src":"17882:43:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":5102,"name":"atOrAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5068,"src":"17944:9:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5103,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityCumulativeX64","nodeType":"MemberAccess","referencedDeclaration":4443,"src":"17944:41:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":5104,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17820:180:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int56_$_t_uint160_$_t_uint192_$","typeString":"tuple(int56,uint160,uint192)"}},"functionReturnParameters":5023,"id":5105,"nodeType":"Return","src":"17813:187:21"}]}},"id":5173,"nodeType":"IfStatement","src":"17407:1741:21","trueBody":{"id":5093,"nodeType":"Block","src":"17448:260:21","statements":[{"expression":{"components":[{"expression":{"id":5085,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5066,"src":"17532:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5086,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickCumulative","nodeType":"MemberAccess","referencedDeclaration":4437,"src":"17532:25:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"expression":{"id":5087,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5066,"src":"17576:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsPerLiquidityCumulativeX128","nodeType":"MemberAccess","referencedDeclaration":4439,"src":"17576:44:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":5089,"name":"beforeOrAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5066,"src":"17639:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":5090,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityCumulativeX64","nodeType":"MemberAccess","referencedDeclaration":4443,"src":"17639:42:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":5091,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17513:183:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int56_$_t_uint160_$_t_uint192_$","typeString":"tuple(int56,uint160,uint192)"}},"functionReturnParameters":5023,"id":5092,"nodeType":"Return","src":"17506:190:21"}]}}]},"documentation":{"id":4995,"nodeType":"StructuredDocumentation","src":"14467:1368:21","text":"@dev Reverts if an observation at or before the desired observation timestamp does not exist.\n 0 may be passed as `secondsAgo' to return the current cumulative values.\n If called with a timestamp falling between two observations, returns the counterfactual accumulator values\n at exactly the timestamp between the two observations.\n @param self The stored oracle array\n @param time The current block timestamp\n @param secondsAgo The amount of time to look back, in seconds, at which point to return an observation\n @param tick The current tick\n @param index The index of the observation that was most recently written to the observations array\n @param liquidity The current in-range pool liquidity\n @param rewardPerSecondX48 The reward rate at the time of the call\n @param rewardRateEffectiveUntil The timestamp after which the reward rate is zero\n @param cardinality The number of populated elements in the oracle array\n @return tickCumulative The tick * time elapsed since the pool was first initialized, as of `secondsAgo`\n @return secondsPerLiquidityCumulativeX128 The time elapsed / max(1, liquidity) since the pool was first initialized, as of `secondsAgo`\n @return rewardPerLiquidityCumulativeX64 reward per liquidity, as of `secondsAgo`"},"id":5175,"implemented":true,"kind":"function","modifiers":[],"name":"observeSingle","nodeType":"FunctionDefinition","parameters":{"id":5016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4999,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":5175,"src":"15874:31:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation[65535]"},"typeName":{"baseType":{"id":4996,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"15874:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"id":4998,"length":{"hexValue":"3635353335","id":4997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15886:5:21","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"nodeType":"ArrayTypeName","src":"15874:18:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation[65535]"}},"visibility":"internal"},{"constant":false,"id":5001,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":5175,"src":"15916:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5000,"name":"uint32","nodeType":"ElementaryTypeName","src":"15916:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5003,"mutability":"mutable","name":"secondsAgo","nodeType":"VariableDeclaration","scope":5175,"src":"15938:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5002,"name":"uint32","nodeType":"ElementaryTypeName","src":"15938:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5005,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":5175,"src":"15966:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5004,"name":"int24","nodeType":"ElementaryTypeName","src":"15966:5:21","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":5007,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":5175,"src":"15987:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":5006,"name":"uint16","nodeType":"ElementaryTypeName","src":"15987:6:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":5009,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":5175,"src":"16010:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5008,"name":"uint128","nodeType":"ElementaryTypeName","src":"16010:7:21","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5011,"mutability":"mutable","name":"rewardPerSecondX48","nodeType":"VariableDeclaration","scope":5175,"src":"16038:26:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":5010,"name":"uint144","nodeType":"ElementaryTypeName","src":"16038:7:21","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"},{"constant":false,"id":5013,"mutability":"mutable","name":"rewardRateEffectiveUntil","nodeType":"VariableDeclaration","scope":5175,"src":"16075:31:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5012,"name":"uint32","nodeType":"ElementaryTypeName","src":"16075:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5015,"mutability":"mutable","name":"cardinality","nodeType":"VariableDeclaration","scope":5175,"src":"16117:18:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":5014,"name":"uint16","nodeType":"ElementaryTypeName","src":"16117:6:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"15863:279:21"},"returnParameters":{"id":5023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5018,"mutability":"mutable","name":"tickCumulative","nodeType":"VariableDeclaration","scope":5175,"src":"16207:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":5017,"name":"int56","nodeType":"ElementaryTypeName","src":"16207:5:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":5020,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128","nodeType":"VariableDeclaration","scope":5175,"src":"16242:41:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5019,"name":"uint160","nodeType":"ElementaryTypeName","src":"16242:7:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":5022,"mutability":"mutable","name":"rewardPerLiquidityCumulativeX64","nodeType":"VariableDeclaration","scope":5175,"src":"16298:39:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":5021,"name":"uint192","nodeType":"ElementaryTypeName","src":"16298:7:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"16192:156:21"},"scope":5283,"src":"15841:3314:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5281,"nodeType":"Block","src":"20835:813:21","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":5212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5210,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5197,"src":"20854:11:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20868:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20854:15:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"49","id":5213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20871:3:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_8d61ecf6e15472e15b1a0f63cd77f62aa57e6edcd3871d7a841f1056fb42b216","typeString":"literal_string \"I\""},"value":"I"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8d61ecf6e15472e15b1a0f63cd77f62aa57e6edcd3871d7a841f1056fb42b216","typeString":"literal_string \"I\""}],"id":5209,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"20846:7:21","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20846:29:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5215,"nodeType":"ExpressionStatement","src":"20846:29:21"},{"expression":{"id":5223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5216,"name":"tickCumulatives","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5201,"src":"20888:15:21","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":5220,"name":"secondsAgos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5185,"src":"20918:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":5221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"20918:18:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5219,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"20906:11:21","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_int56_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (int56[] memory)"},"typeName":{"baseType":{"id":5217,"name":"int56","nodeType":"ElementaryTypeName","src":"20910:5:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":5218,"nodeType":"ArrayTypeName","src":"20910:7:21","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_storage_ptr","typeString":"int56[]"}}},"id":5222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20906:31:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[] memory"}},"src":"20888:49:21","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[] memory"}},"id":5224,"nodeType":"ExpressionStatement","src":"20888:49:21"},{"expression":{"id":5232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5225,"name":"secondsPerLiquidityCumulativeX128s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5204,"src":"20948:34:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":5229,"name":"secondsAgos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5185,"src":"20999:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":5230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"20999:18:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5228,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"20985:13:21","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":5226,"name":"uint160","nodeType":"ElementaryTypeName","src":"20989:7:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":5227,"nodeType":"ArrayTypeName","src":"20989:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}}},"id":5231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20985:33:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"src":"20948:70:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"id":5233,"nodeType":"ExpressionStatement","src":"20948:70:21"},{"expression":{"id":5241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5234,"name":"rewardPerLiquidityCumulativeX64s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5207,"src":"21029:32:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$dyn_memory_ptr","typeString":"uint192[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":5238,"name":"secondsAgos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5185,"src":"21078:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":5239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"21078:18:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5237,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"21064:13:21","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint192_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint192[] memory)"},"typeName":{"baseType":{"id":5235,"name":"uint192","nodeType":"ElementaryTypeName","src":"21068:7:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"id":5236,"nodeType":"ArrayTypeName","src":"21068:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$dyn_storage_ptr","typeString":"uint192[]"}}},"id":5240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21064:33:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$dyn_memory_ptr","typeString":"uint192[] memory"}},"src":"21029:68:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$dyn_memory_ptr","typeString":"uint192[] memory"}},"id":5242,"nodeType":"ExpressionStatement","src":"21029:68:21"},{"body":{"id":5279,"nodeType":"Block","src":"21157:484:21","statements":[{"expression":{"id":5277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"baseExpression":{"id":5254,"name":"tickCumulatives","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5201,"src":"21191:15:21","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[] memory"}},"id":5256,"indexExpression":{"id":5255,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5244,"src":"21207:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21191:18:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"baseExpression":{"id":5257,"name":"secondsPerLiquidityCumulativeX128s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5204,"src":"21228:34:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"id":5259,"indexExpression":{"id":5258,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5244,"src":"21263:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21228:37:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"baseExpression":{"id":5260,"name":"rewardPerLiquidityCumulativeX64s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5207,"src":"21284:32:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$dyn_memory_ptr","typeString":"uint192[] memory"}},"id":5262,"indexExpression":{"id":5261,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5244,"src":"21317:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21284:35:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":5263,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"21172:162:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int56_$_t_uint160_$_t_uint192_$","typeString":"tuple(int56,uint160,uint192)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5265,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5180,"src":"21369:4:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation storage ref[65535] storage pointer"}},{"id":5266,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5182,"src":"21392:4:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"baseExpression":{"id":5267,"name":"secondsAgos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5185,"src":"21415:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":5269,"indexExpression":{"id":5268,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5244,"src":"21427:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21415:14:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5270,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5187,"src":"21448:4:21","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":5271,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5189,"src":"21471:5:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":5272,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5191,"src":"21495:9:21","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":5273,"name":"rewardPerSecondX48","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5193,"src":"21523:18:21","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},{"id":5274,"name":"rewardRateEffectiveUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5195,"src":"21560:24:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5275,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5197,"src":"21603:11:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation storage ref[65535] storage pointer"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint144","typeString":"uint144"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":5264,"name":"observeSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5175,"src":"21337:13:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$_t_uint32_$_t_uint32_$_t_int24_$_t_uint16_$_t_uint128_$_t_uint144_$_t_uint32_$_t_uint16_$returns$_t_int56_$_t_uint160_$_t_uint192_$","typeString":"function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32,int24,uint16,uint128,uint144,uint32,uint16) view returns (int56,uint160,uint192)"}},"id":5276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21337:292:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int56_$_t_uint160_$_t_uint192_$","typeString":"tuple(int56,uint160,uint192)"}},"src":"21172:457:21","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5278,"nodeType":"ExpressionStatement","src":"21172:457:21"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5247,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5244,"src":"21128:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":5248,"name":"secondsAgos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5185,"src":"21132:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":5249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"21132:18:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21128:22:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5280,"initializationExpression":{"assignments":[5244],"declarations":[{"constant":false,"id":5244,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":5280,"src":"21113:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5243,"name":"uint256","nodeType":"ElementaryTypeName","src":"21113:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5246,"initialValue":{"hexValue":"30","id":5245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21125:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21113:13:21"},"loopExpression":{"expression":{"id":5252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"21152:3:21","subExpression":{"id":5251,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5244,"src":"21152:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5253,"nodeType":"ExpressionStatement","src":"21152:3:21"},"nodeType":"ForStatement","src":"21108:533:21"}]},"documentation":{"id":5176,"nodeType":"StructuredDocumentation","src":"19163:1119:21","text":"@notice Returns the accumulator values as of each time seconds ago from the given time in the array of `secondsAgos`\n @dev Reverts if `secondsAgos` > oldest observation\n @param self The stored oracle array\n @param time The current block.timestamp\n @param secondsAgos Each amount of time to look back, in seconds, at which point to return an observation\n @param tick The current tick\n @param index The index of the observation that was most recently written to the observations array\n @param liquidity The current in-range pool liquidity\n @param rewardPerSecondX48 The reward rate at the time of the call\n @param rewardRateEffectiveUntil The timestamp after which the reward rate is zero\n @param cardinality The number of populated elements in the oracle array\n @return tickCumulatives The tick * time elapsed since the pool was first initialized, as of each `secondsAgo`\n @return secondsPerLiquidityCumulativeX128s The cumulative seconds / max(1, liquidity) since the pool was first initialized, as of each `secondsAgo`"},"id":5282,"implemented":true,"kind":"function","modifiers":[],"name":"observe","nodeType":"FunctionDefinition","parameters":{"id":5198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5180,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":5282,"src":"20315:31:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation[65535]"},"typeName":{"baseType":{"id":5177,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"20315:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"id":5179,"length":{"hexValue":"3635353335","id":5178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20327:5:21","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"nodeType":"ArrayTypeName","src":"20315:18:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation[65535]"}},"visibility":"internal"},{"constant":false,"id":5182,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":5282,"src":"20357:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5181,"name":"uint32","nodeType":"ElementaryTypeName","src":"20357:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5185,"mutability":"mutable","name":"secondsAgos","nodeType":"VariableDeclaration","scope":5282,"src":"20379:27:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":5183,"name":"uint32","nodeType":"ElementaryTypeName","src":"20379:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":5184,"nodeType":"ArrayTypeName","src":"20379:8:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"},{"constant":false,"id":5187,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":5282,"src":"20417:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5186,"name":"int24","nodeType":"ElementaryTypeName","src":"20417:5:21","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":5189,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":5282,"src":"20438:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":5188,"name":"uint16","nodeType":"ElementaryTypeName","src":"20438:6:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":5191,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":5282,"src":"20461:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5190,"name":"uint128","nodeType":"ElementaryTypeName","src":"20461:7:21","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5193,"mutability":"mutable","name":"rewardPerSecondX48","nodeType":"VariableDeclaration","scope":5282,"src":"20489:26:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":5192,"name":"uint144","nodeType":"ElementaryTypeName","src":"20489:7:21","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"},{"constant":false,"id":5195,"mutability":"mutable","name":"rewardRateEffectiveUntil","nodeType":"VariableDeclaration","scope":5282,"src":"20526:31:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5194,"name":"uint32","nodeType":"ElementaryTypeName","src":"20526:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5197,"mutability":"mutable","name":"cardinality","nodeType":"VariableDeclaration","scope":5282,"src":"20568:18:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":5196,"name":"uint16","nodeType":"ElementaryTypeName","src":"20568:6:21","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"20304:289:21"},"returnParameters":{"id":5208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5201,"mutability":"mutable","name":"tickCumulatives","nodeType":"VariableDeclaration","scope":5282,"src":"20658:30:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[]"},"typeName":{"baseType":{"id":5199,"name":"int56","nodeType":"ElementaryTypeName","src":"20658:5:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":5200,"nodeType":"ArrayTypeName","src":"20658:7:21","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_storage_ptr","typeString":"int56[]"}},"visibility":"internal"},{"constant":false,"id":5204,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128s","nodeType":"VariableDeclaration","scope":5282,"src":"20703:51:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[]"},"typeName":{"baseType":{"id":5202,"name":"uint160","nodeType":"ElementaryTypeName","src":"20703:7:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":5203,"nodeType":"ArrayTypeName","src":"20703:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"},{"constant":false,"id":5207,"mutability":"mutable","name":"rewardPerLiquidityCumulativeX64s","nodeType":"VariableDeclaration","scope":5282,"src":"20769:49:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$dyn_memory_ptr","typeString":"uint192[]"},"typeName":{"baseType":{"id":5205,"name":"uint192","nodeType":"ElementaryTypeName","src":"20769:7:21","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"id":5206,"nodeType":"ArrayTypeName","src":"20769:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$dyn_storage_ptr","typeString":"uint192[]"}},"visibility":"internal"}],"src":"20643:186:21"},"scope":5283,"src":"20288:1360:21","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":5284,"src":"693:20958:21"}],"src":"38:21615:21"},"id":21},"contracts/elixir-core/libraries/Position.sol":{"ast":{"absolutePath":"contracts/elixir-core/libraries/Position.sol","exportedSymbols":{"FixedPoint128":[4065],"FullMath":[4248],"LiquidityMath":[4300],"Position":[5456]},"id":5457,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":5285,"literals":["solidity",">=","0.5",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"38:31:22"},{"absolutePath":"contracts/elixir-core/libraries/FullMath.sol","file":"./FullMath.sol","id":5286,"nodeType":"ImportDirective","scope":5457,"sourceUnit":4249,"src":"73:24:22","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/FixedPoint128.sol","file":"./FixedPoint128.sol","id":5287,"nodeType":"ImportDirective","scope":5457,"sourceUnit":4066,"src":"99:29:22","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/LiquidityMath.sol","file":"./LiquidityMath.sol","id":5288,"nodeType":"ImportDirective","scope":5457,"sourceUnit":4301,"src":"130:29:22","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":5289,"nodeType":"StructuredDocumentation","src":"163:204:22","text":"@title Position\n @notice Positions represent an owner address' liquidity between a lower and upper tick boundary\n @dev Positions store additional state for tracking fees owed to the position"},"fullyImplemented":true,"id":5456,"linearizedBaseContracts":[5456],"name":"Position","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Position.Info","id":5300,"members":[{"constant":false,"id":5291,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":5300,"src":"518:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5290,"name":"uint128","nodeType":"ElementaryTypeName","src":"518:7:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5293,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":5300,"src":"639:32:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5292,"name":"uint256","nodeType":"ElementaryTypeName","src":"639:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5295,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":5300,"src":"682:32:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5294,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5297,"mutability":"mutable","name":"tokensOwed0","nodeType":"VariableDeclaration","scope":5300,"src":"790:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5296,"name":"uint128","nodeType":"ElementaryTypeName","src":"790:7:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5299,"mutability":"mutable","name":"tokensOwed1","nodeType":"VariableDeclaration","scope":5300,"src":"820:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5298,"name":"uint128","nodeType":"ElementaryTypeName","src":"820:7:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"Info","nodeType":"StructDefinition","scope":5456,"src":"436:411:22","visibility":"public"},{"body":{"id":5329,"nodeType":"Block","src":"1481:92:22","statements":[{"expression":{"id":5327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5316,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5314,"src":"1492:8:22","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":5317,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5305,"src":"1503:4:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Info_$5300_storage_$","typeString":"mapping(bytes32 => struct Position.Info storage ref)"}},"id":5326,"indexExpression":{"arguments":[{"arguments":[{"id":5321,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5307,"src":"1535:5:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5322,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5309,"src":"1542:9:22","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":5323,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5311,"src":"1553:9:22","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":5319,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1518:3:22","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1518:16:22","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1518:45:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5318,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1508:9:22","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1508:56:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1503:62:22","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage","typeString":"struct Position.Info storage ref"}},"src":"1492:73:22","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"id":5328,"nodeType":"ExpressionStatement","src":"1492:73:22"}]},"documentation":{"id":5301,"nodeType":"StructuredDocumentation","src":"855:421:22","text":"@notice Returns the Info struct of a position, given an owner and position boundaries\n @param self The mapping containing all user positions\n @param owner The address of the position owner\n @param tickLower The lower tick boundary of the position\n @param tickUpper The upper tick boundary of the position\n @return position The position info struct of the given owners' position"},"id":5330,"implemented":true,"kind":"function","modifiers":[],"name":"get","nodeType":"FunctionDefinition","parameters":{"id":5312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5305,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":5330,"src":"1305:37:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Info_$5300_storage_$","typeString":"mapping(bytes32 => struct Position.Info)"},"typeName":{"id":5304,"keyType":{"id":5302,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1313:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1305:24:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Info_$5300_storage_$","typeString":"mapping(bytes32 => struct Position.Info)"},"valueType":{"id":5303,"name":"Info","nodeType":"UserDefinedTypeName","referencedDeclaration":5300,"src":"1324:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info"}}},"visibility":"internal"},{"constant":false,"id":5307,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":5330,"src":"1353:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5306,"name":"address","nodeType":"ElementaryTypeName","src":"1353:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5309,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":5330,"src":"1377:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5308,"name":"int24","nodeType":"ElementaryTypeName","src":"1377:5:22","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":5311,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":5330,"src":"1403:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5310,"name":"int24","nodeType":"ElementaryTypeName","src":"1403:5:22","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1294:131:22"},"returnParameters":{"id":5315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5314,"mutability":"mutable","name":"position","nodeType":"VariableDeclaration","scope":5330,"src":"1449:30:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info"},"typeName":{"id":5313,"name":"Position.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":5300,"src":"1449:13:22","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info"}},"visibility":"internal"}],"src":"1448:32:22"},"scope":5456,"src":"1282:291:22","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5454,"nodeType":"Block","src":"2230:1229:22","statements":[{"assignments":[5343],"declarations":[{"constant":false,"id":5343,"mutability":"mutable","name":"_self","nodeType":"VariableDeclaration","scope":5454,"src":"2241:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_memory_ptr","typeString":"struct Position.Info"},"typeName":{"id":5342,"name":"Info","nodeType":"UserDefinedTypeName","referencedDeclaration":5300,"src":"2241:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info"}},"visibility":"internal"}],"id":5345,"initialValue":{"id":5344,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5333,"src":"2261:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2241:24:22"},{"assignments":[5347],"declarations":[{"constant":false,"id":5347,"mutability":"mutable","name":"liquidityNext","nodeType":"VariableDeclaration","scope":5454,"src":"2278:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5346,"name":"uint128","nodeType":"ElementaryTypeName","src":"2278:7:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":5348,"nodeType":"VariableDeclarationStatement","src":"2278:21:22"},{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":5351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5349,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5335,"src":"2314:14:22","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2332:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2314:19:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5375,"nodeType":"Block","src":"2492:98:22","statements":[{"expression":{"id":5373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5366,"name":"liquidityNext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5347,"src":"2507:13:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":5369,"name":"_self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5343,"src":"2546:5:22","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_memory_ptr","typeString":"struct Position.Info memory"}},"id":5370,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":5291,"src":"2546:15:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":5371,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5335,"src":"2563:14:22","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":5367,"name":"LiquidityMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4300,"src":"2523:13:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityMath_$4300_$","typeString":"type(library LiquidityMath)"}},"id":5368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"addDelta","nodeType":"MemberAccess","referencedDeclaration":4299,"src":"2523:22:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint128_$_t_int128_$returns$_t_uint128_$","typeString":"function (uint128,int128) pure returns (uint128)"}},"id":5372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2523:55:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2507:71:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":5374,"nodeType":"ExpressionStatement","src":"2507:71:22"}]},"id":5376,"nodeType":"IfStatement","src":"2310:280:22","trueBody":{"id":5365,"nodeType":"Block","src":"2335:151:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5353,"name":"_self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5343,"src":"2358:5:22","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_memory_ptr","typeString":"struct Position.Info memory"}},"id":5354,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":5291,"src":"2358:15:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2376:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2358:19:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e50","id":5357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2379:4:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebb814de87c671cfe97a338672e9700a9288a1a6d16839e238618b2b7f2aa86d","typeString":"literal_string \"NP\""},"value":"NP"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ebb814de87c671cfe97a338672e9700a9288a1a6d16839e238618b2b7f2aa86d","typeString":"literal_string \"NP\""}],"id":5352,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2350:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2350:34:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5359,"nodeType":"ExpressionStatement","src":"2350:34:22"},{"expression":{"id":5363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5360,"name":"liquidityNext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5347,"src":"2443:13:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":5361,"name":"_self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5343,"src":"2459:5:22","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_memory_ptr","typeString":"struct Position.Info memory"}},"id":5362,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":5291,"src":"2459:15:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2443:31:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":5364,"nodeType":"ExpressionStatement","src":"2443:31:22"}]}},{"assignments":[5378],"declarations":[{"constant":false,"id":5378,"mutability":"mutable","name":"tokensOwed0","nodeType":"VariableDeclaration","scope":5454,"src":"2641:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5377,"name":"uint128","nodeType":"ElementaryTypeName","src":"2641:7:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":5393,"initialValue":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5383,"name":"feeGrowthInside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5337,"src":"2701:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5384,"name":"_self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5343,"src":"2724:5:22","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_memory_ptr","typeString":"struct Position.Info memory"}},"id":5385,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthInside0LastX128","nodeType":"MemberAccess","referencedDeclaration":5293,"src":"2724:30:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2701:53:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":5387,"name":"_self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5343,"src":"2756:5:22","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_memory_ptr","typeString":"struct Position.Info memory"}},"id":5388,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":5291,"src":"2756:15:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":5389,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4065,"src":"2773:13:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$4065_$","typeString":"type(library FixedPoint128)"}},"id":5390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":4064,"src":"2773:18:22","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":5381,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"2685:8:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":5382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"2685:15:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":5391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2685:107:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2663:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5379,"name":"uint128","nodeType":"ElementaryTypeName","src":"2663:7:22","typeDescriptions":{}}},"id":5392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2663:140:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"2641:162:22"},{"assignments":[5395],"declarations":[{"constant":false,"id":5395,"mutability":"mutable","name":"tokensOwed1","nodeType":"VariableDeclaration","scope":5454,"src":"2814:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5394,"name":"uint128","nodeType":"ElementaryTypeName","src":"2814:7:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":5410,"initialValue":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5400,"name":"feeGrowthInside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5339,"src":"2874:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":5401,"name":"_self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5343,"src":"2897:5:22","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_memory_ptr","typeString":"struct Position.Info memory"}},"id":5402,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthInside1LastX128","nodeType":"MemberAccess","referencedDeclaration":5295,"src":"2897:30:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2874:53:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":5404,"name":"_self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5343,"src":"2929:5:22","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_memory_ptr","typeString":"struct Position.Info memory"}},"id":5405,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":5291,"src":"2929:15:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":5406,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4065,"src":"2946:13:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$4065_$","typeString":"type(library FixedPoint128)"}},"id":5407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":4064,"src":"2946:18:22","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":5398,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"2858:8:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":5399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"2858:15:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":5408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2858:107:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2836:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5396,"name":"uint128","nodeType":"ElementaryTypeName","src":"2836:7:22","typeDescriptions":{}}},"id":5409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2836:140:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"2814:162:22"},{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":5413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5411,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5335,"src":"3025:14:22","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3043:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3025:19:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5420,"nodeType":"IfStatement","src":"3021:55:22","trueBody":{"expression":{"id":5418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5414,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5333,"src":"3046:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"id":5416,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":5291,"src":"3046:14:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5417,"name":"liquidityNext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5347,"src":"3063:13:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3046:30:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":5419,"nodeType":"ExpressionStatement","src":"3046:30:22"}},{"expression":{"id":5425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5421,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5333,"src":"3087:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"id":5423,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthInside0LastX128","nodeType":"MemberAccess","referencedDeclaration":5293,"src":"3087:29:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5424,"name":"feeGrowthInside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5337,"src":"3119:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3087:52:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5426,"nodeType":"ExpressionStatement","src":"3087:52:22"},{"expression":{"id":5431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5427,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5333,"src":"3150:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"id":5429,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthInside1LastX128","nodeType":"MemberAccess","referencedDeclaration":5295,"src":"3150:29:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5430,"name":"feeGrowthInside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5339,"src":"3182:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3150:52:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5432,"nodeType":"ExpressionStatement","src":"3150:52:22"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5433,"name":"tokensOwed0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5378,"src":"3217:11:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3231:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3217:15:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5436,"name":"tokensOwed1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5395,"src":"3236:11:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3250:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3236:15:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3217:34:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5453,"nodeType":"IfStatement","src":"3213:239:22","trueBody":{"id":5452,"nodeType":"Block","src":"3253:199:22","statements":[{"expression":{"id":5444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5440,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5333,"src":"3363:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"id":5442,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tokensOwed0","nodeType":"MemberAccess","referencedDeclaration":5297,"src":"3363:16:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5443,"name":"tokensOwed0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5378,"src":"3383:11:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3363:31:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":5445,"nodeType":"ExpressionStatement","src":"3363:31:22"},{"expression":{"id":5450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5446,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5333,"src":"3409:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info storage pointer"}},"id":5448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tokensOwed1","nodeType":"MemberAccess","referencedDeclaration":5299,"src":"3409:16:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5449,"name":"tokensOwed1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5395,"src":"3429:11:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3409:31:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":5451,"nodeType":"ExpressionStatement","src":"3409:31:22"}]}}]},"documentation":{"id":5331,"nodeType":"StructuredDocumentation","src":"1581:473:22","text":"@notice Credits accumulated fees to a user's position\n @param self The individual position to update\n @param liquidityDelta The change in pool liquidity as a result of the position update\n @param feeGrowthInside0X128 The all-time fee growth in token0, per unit of liquidity, inside the position's tick boundaries\n @param feeGrowthInside1X128 The all-time fee growth in token1, per unit of liquidity, inside the position's tick boundaries"},"id":5455,"implemented":true,"kind":"function","modifiers":[],"name":"update","nodeType":"FunctionDefinition","parameters":{"id":5340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5333,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":5455,"src":"2086:17:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info"},"typeName":{"id":5332,"name":"Info","nodeType":"UserDefinedTypeName","referencedDeclaration":5300,"src":"2086:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$5300_storage_ptr","typeString":"struct Position.Info"}},"visibility":"internal"},{"constant":false,"id":5335,"mutability":"mutable","name":"liquidityDelta","nodeType":"VariableDeclaration","scope":5455,"src":"2114:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":5334,"name":"int128","nodeType":"ElementaryTypeName","src":"2114:6:22","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":5337,"mutability":"mutable","name":"feeGrowthInside0X128","nodeType":"VariableDeclaration","scope":5455,"src":"2146:28:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5336,"name":"uint256","nodeType":"ElementaryTypeName","src":"2146:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5339,"mutability":"mutable","name":"feeGrowthInside1X128","nodeType":"VariableDeclaration","scope":5455,"src":"2185:28:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5338,"name":"uint256","nodeType":"ElementaryTypeName","src":"2185:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2075:145:22"},"returnParameters":{"id":5341,"nodeType":"ParameterList","parameters":[],"src":"2230:0:22"},"scope":5456,"src":"2060:1399:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":5457,"src":"367:3095:22"}],"src":"38:3426:22"},"id":22},"contracts/elixir-core/libraries/SafeCast.sol":{"ast":{"absolutePath":"contracts/elixir-core/libraries/SafeCast.sol","exportedSymbols":{"SafeCast":[5526]},"id":5527,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5458,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:23"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":5459,"nodeType":"StructuredDocumentation","src":"74:96:23","text":"@title Safe casting methods\n @notice Contains methods for safely casting between types"},"fullyImplemented":true,"id":5526,"linearizedBaseContracts":[5526],"name":"SafeCast","nodeType":"ContractDefinition","nodes":[{"body":{"id":5479,"nodeType":"Block","src":"430:49:23","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":5473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5468,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5465,"src":"450:1:23","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5471,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5462,"src":"462:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5470,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"454:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5469,"name":"uint160","nodeType":"ElementaryTypeName","src":"454:7:23","typeDescriptions":{}}},"id":5472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"454:10:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"450:14:23","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":5474,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"449:16:23","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5475,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5462,"src":"469:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"449:21:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5467,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"441:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":5477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"441:30:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5478,"nodeType":"ExpressionStatement","src":"441:30:23"}]},"documentation":{"id":5460,"nodeType":"StructuredDocumentation","src":"194:166:23","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":5480,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nodeType":"FunctionDefinition","parameters":{"id":5463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5462,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":5480,"src":"385:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5461,"name":"uint256","nodeType":"ElementaryTypeName","src":"385:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"384:11:23"},"returnParameters":{"id":5466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5465,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":5480,"src":"419:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5464,"name":"uint160","nodeType":"ElementaryTypeName","src":"419:7:23","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"418:11:23"},"scope":5526,"src":"366:113:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5500,"nodeType":"Block","src":"729:48:23","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":5494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5489,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5486,"src":"749:1:23","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5492,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5483,"src":"760:1:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"753:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":5490,"name":"int128","nodeType":"ElementaryTypeName","src":"753:6:23","typeDescriptions":{}}},"id":5493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"753:9:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"749:13:23","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"id":5495,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"748:15:23","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5496,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5483,"src":"767:1:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"748:20:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5488,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"740:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":5498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"740:29:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5499,"nodeType":"ExpressionStatement","src":"740:29:23"}]},"documentation":{"id":5481,"nodeType":"StructuredDocumentation","src":"487:175:23","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":5501,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nodeType":"FunctionDefinition","parameters":{"id":5484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5483,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":5501,"src":"686:8:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5482,"name":"int256","nodeType":"ElementaryTypeName","src":"686:6:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"685:10:23"},"returnParameters":{"id":5487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5486,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":5501,"src":"719:8:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":5485,"name":"int128","nodeType":"ElementaryTypeName","src":"719:6:23","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"718:10:23"},"scope":5526,"src":"668:109:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5524,"nodeType":"Block","src":"1009:62:23","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5510,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5504,"src":"1028:1:23","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":5513,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":5511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1032:1:23","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"323535","id":5512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1035:3:23","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"1032:6:23","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"}},"src":"1028:10:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5509,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1020:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":5515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1020:19:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5516,"nodeType":"ExpressionStatement","src":"1020:19:23"},{"expression":{"id":5522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5517,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5507,"src":"1050:1:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5520,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5504,"src":"1061:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5519,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1054:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5518,"name":"int256","nodeType":"ElementaryTypeName","src":"1054:6:23","typeDescriptions":{}}},"id":5521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1054:9:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1050:13:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5523,"nodeType":"ExpressionStatement","src":"1050:13:23"}]},"documentation":{"id":5502,"nodeType":"StructuredDocumentation","src":"785:156:23","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":5525,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nodeType":"FunctionDefinition","parameters":{"id":5505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5504,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":5525,"src":"965:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5503,"name":"uint256","nodeType":"ElementaryTypeName","src":"965:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"964:11:23"},"returnParameters":{"id":5508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5507,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":5525,"src":"999:8:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5506,"name":"int256","nodeType":"ElementaryTypeName","src":"999:6:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"998:10:23"},"scope":5526,"src":"947:124:23","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5527,"src":"170:904:23"}],"src":"46:1030:23"},"id":23},"contracts/elixir-core/libraries/SqrtPriceMath.sol":{"ast":{"absolutePath":"contracts/elixir-core/libraries/SqrtPriceMath.sol","exportedSymbols":{"FixedPoint96":[4075],"FullMath":[4248],"LowGasSafeMath":[4430],"SafeCast":[5526],"SqrtPriceMath":[6042],"UnsafeMath":[7634]},"id":6043,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":5528,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"38:24:24"},{"absolutePath":"contracts/elixir-core/libraries/LowGasSafeMath.sol","file":"./LowGasSafeMath.sol","id":5529,"nodeType":"ImportDirective","scope":6043,"sourceUnit":4431,"src":"66:30:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/SafeCast.sol","file":"./SafeCast.sol","id":5530,"nodeType":"ImportDirective","scope":6043,"sourceUnit":5527,"src":"98:24:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/FullMath.sol","file":"./FullMath.sol","id":5531,"nodeType":"ImportDirective","scope":6043,"sourceUnit":4249,"src":"126:24:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/UnsafeMath.sol","file":"./UnsafeMath.sol","id":5532,"nodeType":"ImportDirective","scope":6043,"sourceUnit":7635,"src":"152:26:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/FixedPoint96.sol","file":"./FixedPoint96.sol","id":5533,"nodeType":"ImportDirective","scope":6043,"sourceUnit":4076,"src":"180:28:24","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":5534,"nodeType":"StructuredDocumentation","src":"212:169:24","text":"@title Functions based on Q64.96 sqrt price and liquidity\n @notice Contains the math that uses square root of price as a Q64.96 and liquidity to compute deltas"},"fullyImplemented":true,"id":6042,"linearizedBaseContracts":[6042],"name":"SqrtPriceMath","nodeType":"ContractDefinition","nodes":[{"id":5537,"libraryName":{"id":5535,"name":"LowGasSafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":4430,"src":"416:14:24","typeDescriptions":{"typeIdentifier":"t_contract$_LowGasSafeMath_$4430","typeString":"library LowGasSafeMath"}},"nodeType":"UsingForDirective","src":"410:33:24","typeName":{"id":5536,"name":"uint256","nodeType":"ElementaryTypeName","src":"435:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":5540,"libraryName":{"id":5538,"name":"SafeCast","nodeType":"UserDefinedTypeName","referencedDeclaration":5526,"src":"455:8:24","typeDescriptions":{"typeIdentifier":"t_contract$_SafeCast_$5526","typeString":"library SafeCast"}},"nodeType":"UsingForDirective","src":"449:27:24","typeName":{"id":5539,"name":"uint256","nodeType":"ElementaryTypeName","src":"468:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"body":{"id":5659,"nodeType":"Block","src":"1617:1209:24","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5554,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5547,"src":"1745:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1755:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1745:11:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5559,"nodeType":"IfStatement","src":"1741:32:24","trueBody":{"expression":{"id":5557,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5543,"src":"1765:8:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":5553,"id":5558,"nodeType":"Return","src":"1758:15:24"}},{"assignments":[5561],"declarations":[{"constant":false,"id":5561,"mutability":"mutable","name":"numerator1","nodeType":"VariableDeclaration","scope":5659,"src":"1784:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5560,"name":"uint256","nodeType":"ElementaryTypeName","src":"1784:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5569,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5564,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5545,"src":"1813:9:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":5563,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1805:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5562,"name":"uint256","nodeType":"ElementaryTypeName","src":"1805:7:24","typeDescriptions":{}}},"id":5565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1805:18:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"expression":{"id":5566,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4075,"src":"1827:12:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$4075_$","typeString":"type(library FixedPoint96)"}},"id":5567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"RESOLUTION","nodeType":"MemberAccess","referencedDeclaration":4071,"src":"1827:23:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1805:45:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1784:66:24"},{"condition":{"id":5570,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5549,"src":"1867:3:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5657,"nodeType":"Block","src":"2368:451:24","statements":[{"assignments":[5623],"declarations":[{"constant":false,"id":5623,"mutability":"mutable","name":"product","nodeType":"VariableDeclaration","scope":5657,"src":"2383:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5622,"name":"uint256","nodeType":"ElementaryTypeName","src":"2383:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5624,"nodeType":"VariableDeclarationStatement","src":"2383:15:24"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":5630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5626,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5623,"src":"2582:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5627,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5547,"src":"2592:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5628,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5543,"src":"2601:8:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2592:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2582:27:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5631,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2581:29:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5632,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5547,"src":"2613:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2581:38:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5634,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5543,"src":"2623:8:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2581:50:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5636,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5561,"src":"2635:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5637,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5623,"src":"2648:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2635:20:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2581:74:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5625,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2573:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":5640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2573:83:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5641,"nodeType":"ExpressionStatement","src":"2573:83:24"},{"assignments":[5643],"declarations":[{"constant":false,"id":5643,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","scope":5657,"src":"2671:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5642,"name":"uint256","nodeType":"ElementaryTypeName","src":"2671:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5647,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5644,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5561,"src":"2693:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5645,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5623,"src":"2706:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2693:20:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2671:42:24"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":5650,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5561,"src":"2761:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5651,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5543,"src":"2773:8:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":5652,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5643,"src":"2783:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5648,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"2735:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":5649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":4247,"src":"2735:25:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":5653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2735:60:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toUint160","nodeType":"MemberAccess","referencedDeclaration":5480,"src":"2735:70:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint160_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint160)"}},"id":5655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2735:72:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":5553,"id":5656,"nodeType":"Return","src":"2728:79:24"}]},"id":5658,"nodeType":"IfStatement","src":"1863:956:24","trueBody":{"id":5621,"nodeType":"Block","src":"1872:490:24","statements":[{"assignments":[5572],"declarations":[{"constant":false,"id":5572,"mutability":"mutable","name":"product","nodeType":"VariableDeclaration","scope":5621,"src":"1887:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5571,"name":"uint256","nodeType":"ElementaryTypeName","src":"1887:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5573,"nodeType":"VariableDeclarationStatement","src":"1887:15:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":5578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5574,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5572,"src":"1922:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5575,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5547,"src":"1932:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5576,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5543,"src":"1941:8:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1932:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1922:27:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5579,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1921:29:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5580,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5547,"src":"1953:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1921:38:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5582,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5543,"src":"1963:8:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1921:50:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5605,"nodeType":"IfStatement","src":"1917:328:24","trueBody":{"id":5604,"nodeType":"Block","src":"1973:272:24","statements":[{"assignments":[5585],"declarations":[{"constant":false,"id":5585,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","scope":5604,"src":"1992:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5584,"name":"uint256","nodeType":"ElementaryTypeName","src":"1992:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5589,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5586,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5561,"src":"2014:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5587,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5572,"src":"2027:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2014:20:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1992:42:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5590,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5585,"src":"2057:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5591,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5561,"src":"2072:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2057:25:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5603,"nodeType":"IfStatement","src":"2053:176:24","trueBody":{"expression":{"arguments":[{"arguments":[{"id":5597,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5561,"src":"2194:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5598,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5543,"src":"2206:8:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":5599,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5585,"src":"2216:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5595,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"2168:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":5596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":4247,"src":"2168:25:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":5600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2168:60:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5594,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2160:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5593,"name":"uint160","nodeType":"ElementaryTypeName","src":"2160:7:24","typeDescriptions":{}}},"id":5601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2160:69:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":5553,"id":5602,"nodeType":"Return","src":"2153:76:24"}}]}},{"expression":{"arguments":[{"arguments":[{"id":5610,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5561,"src":"2301:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":5616,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5547,"src":"2341:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5611,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5561,"src":"2314:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5612,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5543,"src":"2327:8:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2314:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5614,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2313:23:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":4325,"src":"2313:27:24","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":5617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2313:35:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5608,"name":"UnsafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7634,"src":"2276:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UnsafeMath_$7634_$","typeString":"type(library UnsafeMath)"}},"id":5609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divRoundingUp","nodeType":"MemberAccess","referencedDeclaration":7633,"src":"2276:24:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2276:73:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5607,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2268:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5606,"name":"uint160","nodeType":"ElementaryTypeName","src":"2268:7:24","typeDescriptions":{}}},"id":5619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2268:82:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":5553,"id":5620,"nodeType":"Return","src":"2261:89:24"}]}}]},"documentation":{"id":5541,"nodeType":"StructuredDocumentation","src":"484:942:24","text":"@notice Gets the next sqrt price given a delta of token0\n @dev Always rounds up, because in the exact output case (increasing price) we need to move the price at least\n far enough to get the desired output amount, and in the exact input case (decreasing price) we need to move the\n price less in order to not send too much output.\n The most precise formula for this is liquidity * sqrtPX96 / (liquidity +- amount * sqrtPX96),\n if this is impossible because of overflow, we calculate liquidity / (liquidity / sqrtPX96 +- amount).\n @param sqrtPX96 The starting price, i.e. before accounting for the token0 delta\n @param liquidity The amount of usable liquidity\n @param amount How much of token0 to add or remove from virtual reserves\n @param add Whether to add or remove the amount of token0\n @return The price after adding or removing amount, depending on add"},"id":5660,"implemented":true,"kind":"function","modifiers":[],"name":"getNextSqrtPriceFromAmount0RoundingUp","nodeType":"FunctionDefinition","parameters":{"id":5550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5543,"mutability":"mutable","name":"sqrtPX96","nodeType":"VariableDeclaration","scope":5660,"src":"1489:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5542,"name":"uint160","nodeType":"ElementaryTypeName","src":"1489:7:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":5545,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":5660,"src":"1516:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5544,"name":"uint128","nodeType":"ElementaryTypeName","src":"1516:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5547,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":5660,"src":"1544:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5546,"name":"uint256","nodeType":"ElementaryTypeName","src":"1544:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5549,"mutability":"mutable","name":"add","nodeType":"VariableDeclaration","scope":5660,"src":"1569:8:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5548,"name":"bool","nodeType":"ElementaryTypeName","src":"1569:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1478:106:24"},"returnParameters":{"id":5553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5552,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5660,"src":"1608:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5551,"name":"uint160","nodeType":"ElementaryTypeName","src":"1608:7:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1607:9:24"},"scope":6042,"src":"1432:1394:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5754,"nodeType":"Block","src":"3851:929:24","statements":[{"condition":{"id":5674,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5669,"src":"4022:3:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5752,"nodeType":"Block","src":"4354:419:24","statements":[{"assignments":[5713],"declarations":[{"constant":false,"id":5713,"mutability":"mutable","name":"quotient","nodeType":"VariableDeclaration","scope":5752,"src":"4369:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5712,"name":"uint256","nodeType":"ElementaryTypeName","src":"4369:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5738,"initialValue":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5714,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5667,"src":"4407:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":5717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4422:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5716,"name":"uint160","nodeType":"ElementaryTypeName","src":"4422:7:24","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":5715,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4417:4:24","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4417:13:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":5719,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"4417:17:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4407:27:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":5731,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5667,"src":"4578:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":5732,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4075,"src":"4586:12:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$4075_$","typeString":"type(library FixedPoint96)"}},"id":5733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":4074,"src":"4586:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5734,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5665,"src":"4604:9:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":5729,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"4552:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":5730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":4247,"src":"4552:25:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":5735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4552:62:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4407:207:24","trueExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5723,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5667,"src":"4483:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"expression":{"id":5724,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4075,"src":"4493:12:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$4075_$","typeString":"type(library FixedPoint96)"}},"id":5725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"RESOLUTION","nodeType":"MemberAccess","referencedDeclaration":4071,"src":"4493:23:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4483:33:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5727,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5665,"src":"4518:9:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":5721,"name":"UnsafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7634,"src":"4458:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UnsafeMath_$7634_$","typeString":"type(library UnsafeMath)"}},"id":5722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divRoundingUp","nodeType":"MemberAccess","referencedDeclaration":7633,"src":"4458:24:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4458:70:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5737,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4388:241:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4369:260:24"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5740,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5663,"src":"4654:8:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5741,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5713,"src":"4665:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4654:19:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5739,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4646:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":5743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4646:28:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5744,"nodeType":"ExpressionStatement","src":"4646:28:24"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5747,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5663,"src":"4741:8:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5748,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5713,"src":"4752:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4741:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5746,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4733:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5745,"name":"uint160","nodeType":"ElementaryTypeName","src":"4733:7:24","typeDescriptions":{}}},"id":5750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4733:28:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":5673,"id":5751,"nodeType":"Return","src":"4726:35:24"}]},"id":5753,"nodeType":"IfStatement","src":"4018:755:24","trueBody":{"id":5711,"nodeType":"Block","src":"4027:321:24","statements":[{"assignments":[5676],"declarations":[{"constant":false,"id":5676,"mutability":"mutable","name":"quotient","nodeType":"VariableDeclaration","scope":5711,"src":"4042:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5675,"name":"uint256","nodeType":"ElementaryTypeName","src":"4042:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5700,"initialValue":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5677,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5667,"src":"4080:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":5680,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4095:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5679,"name":"uint160","nodeType":"ElementaryTypeName","src":"4095:7:24","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":5678,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4090:4:24","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4090:13:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":5682,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"4090:17:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4080:27:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":5693,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5667,"src":"4218:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":5694,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4075,"src":"4226:12:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$4075_$","typeString":"type(library FixedPoint96)"}},"id":5695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":4074,"src":"4226:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5696,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5665,"src":"4244:9:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":5691,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"4202:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":5692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"4202:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":5697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4202:52:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4080:174:24","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5684,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5667,"src":"4132:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"expression":{"id":5685,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4075,"src":"4142:12:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$4075_$","typeString":"type(library FixedPoint96)"}},"id":5686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"RESOLUTION","nodeType":"MemberAccess","referencedDeclaration":4071,"src":"4142:23:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4132:33:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5688,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4131:35:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5689,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5665,"src":"4169:9:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"4131:47:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5699,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4061:208:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4042:227:24"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":5706,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5676,"src":"4315:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":5703,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5663,"src":"4301:8:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":5702,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4293:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5701,"name":"uint256","nodeType":"ElementaryTypeName","src":"4293:7:24","typeDescriptions":{}}},"id":5704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4293:17:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":4325,"src":"4293:21:24","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":5707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4293:31:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toUint160","nodeType":"MemberAccess","referencedDeclaration":5480,"src":"4293:41:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint160_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint160)"}},"id":5709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4293:43:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":5673,"id":5710,"nodeType":"Return","src":"4286:50:24"}]}}]},"documentation":{"id":5661,"nodeType":"StructuredDocumentation","src":"2834:824:24","text":"@notice Gets the next sqrt price given a delta of token1\n @dev Always rounds down, because in the exact output case (decreasing price) we need to move the price at least\n far enough to get the desired output amount, and in the exact input case (increasing price) we need to move the\n price less in order to not send too much output.\n The formula we compute is within <1 wei of the lossless version: sqrtPX96 +- amount / liquidity\n @param sqrtPX96 The starting price, i.e., before accounting for the token1 delta\n @param liquidity The amount of usable liquidity\n @param amount How much of token1 to add, or remove, from virtual reserves\n @param add Whether to add, or remove, the amount of token1\n @return The price after adding or removing `amount`"},"id":5755,"implemented":true,"kind":"function","modifiers":[],"name":"getNextSqrtPriceFromAmount1RoundingDown","nodeType":"FunctionDefinition","parameters":{"id":5670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5663,"mutability":"mutable","name":"sqrtPX96","nodeType":"VariableDeclaration","scope":5755,"src":"3723:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5662,"name":"uint160","nodeType":"ElementaryTypeName","src":"3723:7:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":5665,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":5755,"src":"3750:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5664,"name":"uint128","nodeType":"ElementaryTypeName","src":"3750:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5667,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":5755,"src":"3778:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5666,"name":"uint256","nodeType":"ElementaryTypeName","src":"3778:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5669,"mutability":"mutable","name":"add","nodeType":"VariableDeclaration","scope":5755,"src":"3803:8:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5668,"name":"bool","nodeType":"ElementaryTypeName","src":"3803:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3712:106:24"},"returnParameters":{"id":5673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5672,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5755,"src":"3842:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5671,"name":"uint160","nodeType":"ElementaryTypeName","src":"3842:7:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"3841:9:24"},"scope":6042,"src":"3664:1116:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5796,"nodeType":"Block","src":"5529:373:24","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":5772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5770,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5758,"src":"5548:8:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5559:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5548:12:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5769,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5540:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":5773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5540:21:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5774,"nodeType":"ExpressionStatement","src":"5540:21:24"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5776,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5760,"src":"5580:9:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5592:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5580:13:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5775,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5572:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":5779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5572:22:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5780,"nodeType":"ExpressionStatement","src":"5572:22:24"},{"expression":{"condition":{"id":5781,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5764,"src":"5694:10:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":5789,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5758,"src":"5858:8:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":5790,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5760,"src":"5868:9:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":5791,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"5879:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":5792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5889:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5788,"name":"getNextSqrtPriceFromAmount1RoundingDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5755,"src":"5818:39:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$","typeString":"function (uint160,uint128,uint256,bool) pure returns (uint160)"}},"id":5793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5818:76:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":5794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5694:200:24","trueExpression":{"arguments":[{"id":5783,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5758,"src":"5762:8:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":5784,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5760,"src":"5772:9:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":5785,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"5783:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":5786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5793:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5782,"name":"getNextSqrtPriceFromAmount0RoundingUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5660,"src":"5724:37:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$","typeString":"function (uint160,uint128,uint256,bool) pure returns (uint160)"}},"id":5787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5724:74:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":5768,"id":5795,"nodeType":"Return","src":"5674:220:24"}]},"documentation":{"id":5756,"nodeType":"StructuredDocumentation","src":"4788:544:24","text":"@notice Gets the next sqrt price given an input amount of token0 or token1\n @dev Throws if price or liquidity are 0, or if the next price is out of bounds\n @param sqrtPX96 The starting price, i.e., before accounting for the input amount\n @param liquidity The amount of usable liquidity\n @param amountIn How much of token0, or token1, is being swapped in\n @param zeroForOne Whether the amount in is token0 or token1\n @return sqrtQX96 The price after adding the input amount to token0 or token1"},"id":5797,"implemented":true,"kind":"function","modifiers":[],"name":"getNextSqrtPriceFromInput","nodeType":"FunctionDefinition","parameters":{"id":5765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5758,"mutability":"mutable","name":"sqrtPX96","nodeType":"VariableDeclaration","scope":5797,"src":"5383:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5757,"name":"uint160","nodeType":"ElementaryTypeName","src":"5383:7:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":5760,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":5797,"src":"5410:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5759,"name":"uint128","nodeType":"ElementaryTypeName","src":"5410:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5762,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":5797,"src":"5438:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5761,"name":"uint256","nodeType":"ElementaryTypeName","src":"5438:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5764,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":5797,"src":"5465:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5763,"name":"bool","nodeType":"ElementaryTypeName","src":"5465:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5372:115:24"},"returnParameters":{"id":5768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5767,"mutability":"mutable","name":"sqrtQX96","nodeType":"VariableDeclaration","scope":5797,"src":"5511:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5766,"name":"uint160","nodeType":"ElementaryTypeName","src":"5511:7:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"5510:18:24"},"scope":6042,"src":"5338:564:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5838,"nodeType":"Block","src":"6650:371:24","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":5814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5812,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5800,"src":"6669:8:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6680:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6669:12:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5811,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6661:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":5815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6661:21:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5816,"nodeType":"ExpressionStatement","src":"6661:21:24"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":5820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5818,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5802,"src":"6701:9:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6713:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6701:13:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5817,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6693:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":5821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6693:22:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5822,"nodeType":"ExpressionStatement","src":"6693:22:24"},{"expression":{"condition":{"id":5823,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5806,"src":"6809:10:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":5831,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5800,"src":"6975:8:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":5832,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5802,"src":"6985:9:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":5833,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5804,"src":"6996:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":5834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7007:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5830,"name":"getNextSqrtPriceFromAmount0RoundingUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5660,"src":"6937:37:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$","typeString":"function (uint160,uint128,uint256,bool) pure returns (uint160)"}},"id":5835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6937:76:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":5836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6809:204:24","trueExpression":{"arguments":[{"id":5825,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5800,"src":"6879:8:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":5826,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5802,"src":"6889:9:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":5827,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5804,"src":"6900:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":5828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6911:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5824,"name":"getNextSqrtPriceFromAmount1RoundingDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5755,"src":"6839:39:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$","typeString":"function (uint160,uint128,uint256,bool) pure returns (uint160)"}},"id":5829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6839:78:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":5810,"id":5837,"nodeType":"Return","src":"6789:224:24"}]},"documentation":{"id":5798,"nodeType":"StructuredDocumentation","src":"5910:541:24","text":"@notice Gets the next sqrt price given an output amount of token0 or token1\n @dev Throws if price or liquidity are 0 or the next price is out of bounds\n @param sqrtPX96 The starting price before accounting for the output amount\n @param liquidity The amount of usable liquidity\n @param amountOut How much of token0, or token1, is being swapped out\n @param zeroForOne Whether the amount out is token0 or token1\n @return sqrtQX96 The price after removing the output amount of token0 or token1"},"id":5839,"implemented":true,"kind":"function","modifiers":[],"name":"getNextSqrtPriceFromOutput","nodeType":"FunctionDefinition","parameters":{"id":5807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5800,"mutability":"mutable","name":"sqrtPX96","nodeType":"VariableDeclaration","scope":5839,"src":"6503:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5799,"name":"uint160","nodeType":"ElementaryTypeName","src":"6503:7:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":5802,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":5839,"src":"6530:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5801,"name":"uint128","nodeType":"ElementaryTypeName","src":"6530:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5804,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":5839,"src":"6558:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5803,"name":"uint256","nodeType":"ElementaryTypeName","src":"6558:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5806,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":5839,"src":"6586:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5805,"name":"bool","nodeType":"ElementaryTypeName","src":"6586:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6492:116:24"},"returnParameters":{"id":5810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5809,"mutability":"mutable","name":"sqrtQX96","nodeType":"VariableDeclaration","scope":5839,"src":"6632:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5808,"name":"uint160","nodeType":"ElementaryTypeName","src":"6632:7:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"6631:18:24"},"scope":6042,"src":"6457:564:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5908,"nodeType":"Block","src":"7766:612:24","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":5855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5853,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"7781:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5854,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5844,"src":"7797:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7781:29:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5864,"nodeType":"IfStatement","src":"7777:98:24","trueBody":{"expression":{"id":5862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":5856,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"7813:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":5857,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5844,"src":"7828:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":5858,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7812:30:24","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":5859,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5844,"src":"7846:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":5860,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"7861:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":5861,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7845:30:24","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"7812:63:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5863,"nodeType":"ExpressionStatement","src":"7812:63:24"}},{"assignments":[5866],"declarations":[{"constant":false,"id":5866,"mutability":"mutable","name":"numerator1","nodeType":"VariableDeclaration","scope":5908,"src":"7888:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5865,"name":"uint256","nodeType":"ElementaryTypeName","src":"7888:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5874,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5869,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5846,"src":"7917:9:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":5868,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7909:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5867,"name":"uint256","nodeType":"ElementaryTypeName","src":"7909:7:24","typeDescriptions":{}}},"id":5870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7909:18:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"expression":{"id":5871,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4075,"src":"7931:12:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$4075_$","typeString":"type(library FixedPoint96)"}},"id":5872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"RESOLUTION","nodeType":"MemberAccess","referencedDeclaration":4071,"src":"7931:23:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7909:45:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7888:66:24"},{"assignments":[5876],"declarations":[{"constant":false,"id":5876,"mutability":"mutable","name":"numerator2","nodeType":"VariableDeclaration","scope":5908,"src":"7965:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5875,"name":"uint256","nodeType":"ElementaryTypeName","src":"7965:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5880,"initialValue":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":5879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5877,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5844,"src":"7986:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5878,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"8002:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7986:29:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"7965:50:24"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":5884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5882,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"8036:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8052:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8036:17:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5881,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8028:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":5885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8028:26:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5886,"nodeType":"ExpressionStatement","src":"8028:26:24"},{"expression":{"condition":{"id":5887,"name":"roundUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5848,"src":"8087:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5900,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5866,"src":"8316:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5901,"name":"numerator2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5876,"src":"8328:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5902,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5844,"src":"8340:13:24","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":5898,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"8300:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":5899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"8300:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":5903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8300:54:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5904,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"8357:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"8300:70:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8087:283:24","trueExpression":{"arguments":[{"arguments":[{"id":5892,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5866,"src":"8187:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5893,"name":"numerator2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5876,"src":"8199:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5894,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5844,"src":"8211:13:24","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":5890,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"8161:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":5891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":4247,"src":"8161:25:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":5895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8161:64:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5896,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"8248:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":5888,"name":"UnsafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7634,"src":"8114:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UnsafeMath_$7634_$","typeString":"type(library UnsafeMath)"}},"id":5889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divRoundingUp","nodeType":"MemberAccess","referencedDeclaration":7633,"src":"8114:24:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8114:166:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5852,"id":5907,"nodeType":"Return","src":"8067:303:24"}]},"documentation":{"id":5840,"nodeType":"StructuredDocumentation","src":"7029:544:24","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":5909,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount0Delta","nodeType":"FunctionDefinition","parameters":{"id":5849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5842,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":5909,"src":"7614:21:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5841,"name":"uint160","nodeType":"ElementaryTypeName","src":"7614:7:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":5844,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":5909,"src":"7646:21:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5843,"name":"uint160","nodeType":"ElementaryTypeName","src":"7646:7:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":5846,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":5909,"src":"7678:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5845,"name":"uint128","nodeType":"ElementaryTypeName","src":"7678:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5848,"mutability":"mutable","name":"roundUp","nodeType":"VariableDeclaration","scope":5909,"src":"7706:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5847,"name":"bool","nodeType":"ElementaryTypeName","src":"7706:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7603:122:24"},"returnParameters":{"id":5852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5851,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":5909,"src":"7749:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5850,"name":"uint256","nodeType":"ElementaryTypeName","src":"7749:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7748:17:24"},"scope":6042,"src":"7579:799:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5956,"nodeType":"Block","src":"9029:357:24","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":5925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5923,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"9044:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5924,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5914,"src":"9060:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"9044:29:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5934,"nodeType":"IfStatement","src":"9040:98:24","trueBody":{"expression":{"id":5932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":5926,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"9076:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":5927,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5914,"src":"9091:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":5928,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"9075:30:24","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":5929,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5914,"src":"9109:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":5930,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"9124:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":5931,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9108:30:24","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"9075:63:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5933,"nodeType":"ExpressionStatement","src":"9075:63:24"}},{"expression":{"condition":{"id":5935,"name":"roundUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5918,"src":"9171:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":5947,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5916,"src":"9319:9:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":5950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5948,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5914,"src":"9330:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5949,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"9346:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"9330:29:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":5951,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4075,"src":"9361:12:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$4075_$","typeString":"type(library FixedPoint96)"}},"id":5952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":4074,"src":"9361:16:24","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":5945,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"9303:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":5946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"9303:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":5953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9303:75:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9171:207:24","trueExpression":{"arguments":[{"id":5938,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5916,"src":"9224:9:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":5941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5939,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5914,"src":"9235:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5940,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"9251:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"9235:29:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":5942,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4075,"src":"9266:12:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$4075_$","typeString":"type(library FixedPoint96)"}},"id":5943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":4074,"src":"9266:16:24","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":5936,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"9198:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":5937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":4247,"src":"9198:25:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":5944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9198:85:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5922,"id":5955,"nodeType":"Return","src":"9151:227:24"}]},"documentation":{"id":5910,"nodeType":"StructuredDocumentation","src":"8386:450:24","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":5957,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount1Delta","nodeType":"FunctionDefinition","parameters":{"id":5919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5912,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":5957,"src":"8877:21:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5911,"name":"uint160","nodeType":"ElementaryTypeName","src":"8877:7:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":5914,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":5957,"src":"8909:21:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5913,"name":"uint160","nodeType":"ElementaryTypeName","src":"8909:7:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":5916,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":5957,"src":"8941:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5915,"name":"uint128","nodeType":"ElementaryTypeName","src":"8941:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5918,"mutability":"mutable","name":"roundUp","nodeType":"VariableDeclaration","scope":5957,"src":"8969:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5917,"name":"bool","nodeType":"ElementaryTypeName","src":"8969:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8866:122:24"},"returnParameters":{"id":5922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5921,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":5957,"src":"9012:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5920,"name":"uint256","nodeType":"ElementaryTypeName","src":"9012:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9011:17:24"},"scope":6042,"src":"8842:544:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5998,"nodeType":"Block","src":"9899:259:24","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":5971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5969,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5964,"src":"9930:9:24","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":5970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9942:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9930:13:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":5986,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5960,"src":"10084:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":5987,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5962,"src":"10099:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":5990,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5964,"src":"10122:9:24","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"id":5989,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10114:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5988,"name":"uint128","nodeType":"ElementaryTypeName","src":"10114:7:24","typeDescriptions":{}}},"id":5991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10114:18:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"74727565","id":5992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10134:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5985,"name":"getAmount0Delta","nodeType":"Identifier","overloadedDeclarations":[5909,5999],"referencedDeclaration":5909,"src":"10068:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":5993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10068:71:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5525,"src":"10068:80:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":5995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10068:82:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9930:220:24","trueExpression":{"id":5984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"9963:85:24","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":5973,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5960,"src":"9980:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":5974,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5962,"src":"9995:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":5978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"10018:10:24","subExpression":{"id":5977,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5964,"src":"10019:9:24","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"id":5976,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10010:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5975,"name":"uint128","nodeType":"ElementaryTypeName","src":"10010:7:24","typeDescriptions":{}}},"id":5979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10010:19:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"66616c7365","id":5980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10031:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5972,"name":"getAmount0Delta","nodeType":"Identifier","overloadedDeclarations":[5909,5999],"referencedDeclaration":5909,"src":"9964:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":5981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9964:73:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5525,"src":"9964:82:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":5983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9964:84:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5968,"id":5997,"nodeType":"Return","src":"9910:240:24"}]},"documentation":{"id":5958,"nodeType":"StructuredDocumentation","src":"9394:337:24","text":"@notice Helper that gets signed token0 delta\n @param sqrtRatioAX96 A sqrt price\n @param sqrtRatioBX96 Another sqrt price\n @param liquidity The change in liquidity for which to compute the amount0 delta\n @return amount0 Amount of token0 corresponding to the passed liquidityDelta between the two prices"},"id":5999,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount0Delta","nodeType":"FunctionDefinition","parameters":{"id":5965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5960,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":5999,"src":"9772:21:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5959,"name":"uint160","nodeType":"ElementaryTypeName","src":"9772:7:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":5962,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":5999,"src":"9804:21:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5961,"name":"uint160","nodeType":"ElementaryTypeName","src":"9804:7:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":5964,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":5999,"src":"9836:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":5963,"name":"int128","nodeType":"ElementaryTypeName","src":"9836:6:24","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"9761:98:24"},"returnParameters":{"id":5968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5967,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":5999,"src":"9883:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5966,"name":"int256","nodeType":"ElementaryTypeName","src":"9883:6:24","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9882:16:24"},"scope":6042,"src":"9737:421:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6040,"nodeType":"Block","src":"10671:259:24","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":6013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6011,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6006,"src":"10702:9:24","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":6012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10714:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10702:13:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6028,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6002,"src":"10856:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6029,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6004,"src":"10871:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":6032,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6006,"src":"10894:9:24","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"id":6031,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10886:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":6030,"name":"uint128","nodeType":"ElementaryTypeName","src":"10886:7:24","typeDescriptions":{}}},"id":6033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10886:18:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"74727565","id":6034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10906:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6027,"name":"getAmount1Delta","nodeType":"Identifier","overloadedDeclarations":[5957,6041],"referencedDeclaration":5957,"src":"10840:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":6035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10840:71:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5525,"src":"10840:80:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":6037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10840:82:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10702:220:24","trueExpression":{"id":6026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"10735:85:24","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6015,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6002,"src":"10752:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6016,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6004,"src":"10767:13:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":6020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"10790:10:24","subExpression":{"id":6019,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6006,"src":"10791:9:24","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"id":6018,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10782:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":6017,"name":"uint128","nodeType":"ElementaryTypeName","src":"10782:7:24","typeDescriptions":{}}},"id":6021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10782:19:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"66616c7365","id":6022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10803:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6014,"name":"getAmount1Delta","nodeType":"Identifier","overloadedDeclarations":[5957,6041],"referencedDeclaration":5957,"src":"10736:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":6023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10736:73:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5525,"src":"10736:82:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":6025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10736:84:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6010,"id":6039,"nodeType":"Return","src":"10682:240:24"}]},"documentation":{"id":6000,"nodeType":"StructuredDocumentation","src":"10166:337:24","text":"@notice Helper that gets signed token1 delta\n @param sqrtRatioAX96 A sqrt price\n @param sqrtRatioBX96 Another sqrt price\n @param liquidity The change in liquidity for which to compute the amount1 delta\n @return amount1 Amount of token1 corresponding to the passed liquidityDelta between the two prices"},"id":6041,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount1Delta","nodeType":"FunctionDefinition","parameters":{"id":6007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6002,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":6041,"src":"10544:21:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6001,"name":"uint160","nodeType":"ElementaryTypeName","src":"10544:7:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6004,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":6041,"src":"10576:21:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6003,"name":"uint160","nodeType":"ElementaryTypeName","src":"10576:7:24","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6006,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":6041,"src":"10608:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":6005,"name":"int128","nodeType":"ElementaryTypeName","src":"10608:6:24","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"10533:98:24"},"returnParameters":{"id":6010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6009,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":6041,"src":"10655:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6008,"name":"int256","nodeType":"ElementaryTypeName","src":"10655:6:24","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"10654:16:24"},"scope":6042,"src":"10509:421:24","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6043,"src":"381:10552:24"}],"src":"38:10897:24"},"id":24},"contracts/elixir-core/libraries/SwapMath.sol":{"ast":{"absolutePath":"contracts/elixir-core/libraries/SwapMath.sol","exportedSymbols":{"FixedPoint96":[4075],"FullMath":[4248],"LowGasSafeMath":[4430],"SafeCast":[5526],"SqrtPriceMath":[6042],"SwapMath":[6303],"UnsafeMath":[7634]},"id":6304,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":6044,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"38:24:25"},{"absolutePath":"contracts/elixir-core/libraries/FullMath.sol","file":"./FullMath.sol","id":6045,"nodeType":"ImportDirective","scope":6304,"sourceUnit":4249,"src":"66:24:25","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/SqrtPriceMath.sol","file":"./SqrtPriceMath.sol","id":6046,"nodeType":"ImportDirective","scope":6304,"sourceUnit":6043,"src":"92:29:25","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":6047,"nodeType":"StructuredDocumentation","src":"125:175:25","text":"@title Computes the result of a swap within ticks\n @notice Contains methods for computing the result of a swap within a single tick price range, i.e., a single tick."},"fullyImplemented":true,"id":6303,"linearizedBaseContracts":[6303],"name":"SwapMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":6301,"nodeType":"Block","src":"1804:2922:25","statements":[{"assignments":[6070],"declarations":[{"constant":false,"id":6070,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":6301,"src":"1815:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6069,"name":"bool","nodeType":"ElementaryTypeName","src":"1815:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":6074,"initialValue":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":6073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6071,"name":"sqrtRatioCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"1833:19:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6072,"name":"sqrtRatioTargetX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6052,"src":"1856:18:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1833:41:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"1815:59:25"},{"assignments":[6076],"declarations":[{"constant":false,"id":6076,"mutability":"mutable","name":"exactIn","nodeType":"VariableDeclaration","scope":6301,"src":"1885:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6075,"name":"bool","nodeType":"ElementaryTypeName","src":"1885:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":6080,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6077,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6056,"src":"1900:15:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":6078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1919:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1900:20:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"1885:35:25"},{"condition":{"id":6081,"name":"exactIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6076,"src":"1937:7:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6179,"nodeType":"Block","src":"2681:631:25","statements":[{"expression":{"id":6151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6134,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6065,"src":"2696:9:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":6135,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6070,"src":"2708:10:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":6145,"name":"sqrtRatioCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"2876:19:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6146,"name":"sqrtRatioTargetX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6052,"src":"2897:18:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6147,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6054,"src":"2917:9:25","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"66616c7365","id":6148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2928:5:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6143,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"2846:13:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":6144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":5909,"src":"2846:29:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":6149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2846:88:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2708:226:25","trueExpression":{"arguments":[{"id":6138,"name":"sqrtRatioTargetX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6052,"src":"2768:18:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6139,"name":"sqrtRatioCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"2788:19:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6140,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6054,"src":"2809:9:25","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"66616c7365","id":6141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2820:5:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6136,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"2738:13:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":6137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":5957,"src":"2738:29:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":6142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2738:88:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2696:238:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6152,"nodeType":"ExpressionStatement","src":"2696:238:25"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2961:16:25","subExpression":{"id":6155,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6056,"src":"2962:15:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6154,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2953:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6153,"name":"uint256","nodeType":"ElementaryTypeName","src":"2953:7:25","typeDescriptions":{}}},"id":6157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2953:25:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6158,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6065,"src":"2982:9:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2953:38:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"id":6176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6164,"name":"sqrtRatioNextX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6061,"src":"3067:16:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6167,"name":"sqrtRatioCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"3149:19:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6168,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6054,"src":"3191:9:25","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"id":6172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"3231:16:25","subExpression":{"id":6171,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6056,"src":"3232:15:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6170,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3223:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6169,"name":"uint256","nodeType":"ElementaryTypeName","src":"3223:7:25","typeDescriptions":{}}},"id":6173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3223:25:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6174,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6070,"src":"3271:10:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6165,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"3086:13:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":6166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getNextSqrtPriceFromOutput","nodeType":"MemberAccess","referencedDeclaration":5839,"src":"3086:40:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$","typeString":"function (uint160,uint128,uint256,bool) pure returns (uint160)"}},"id":6175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3086:214:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3067:233:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":6177,"nodeType":"ExpressionStatement","src":"3067:233:25"},"id":6178,"nodeType":"IfStatement","src":"2949:351:25","trueBody":{"expression":{"id":6162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6160,"name":"sqrtRatioNextX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6061,"src":"2993:16:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6161,"name":"sqrtRatioTargetX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6052,"src":"3012:18:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2993:37:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":6163,"nodeType":"ExpressionStatement","src":"2993:37:25"}}]},"id":6180,"nodeType":"IfStatement","src":"1933:1379:25","trueBody":{"id":6133,"nodeType":"Block","src":"1946:729:25","statements":[{"assignments":[6083],"declarations":[{"constant":false,"id":6083,"mutability":"mutable","name":"amountRemainingLessFee","nodeType":"VariableDeclaration","scope":6133,"src":"1961:30:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6082,"name":"uint256","nodeType":"ElementaryTypeName","src":"1961:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6095,"initialValue":{"arguments":[{"arguments":[{"id":6088,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6056,"src":"2018:15:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6087,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2010:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6086,"name":"uint256","nodeType":"ElementaryTypeName","src":"2010:7:25","typeDescriptions":{}}},"id":6089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2010:24:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint24","typeString":"uint24"},"id":6092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"316536","id":6090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2036:3:25","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1e6"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6091,"name":"feePips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6058,"src":"2042:7:25","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"2036:13:25","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"hexValue":"316536","id":6093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2051:3:25","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1e6"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"}],"expression":{"id":6084,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"1994:8:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":6085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"1994:15:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1994:61:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1961:94:25"},{"expression":{"id":6113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6096,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"2070:8:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":6097,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6070,"src":"2081:10:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":6107,"name":"sqrtRatioCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"2248:19:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6108,"name":"sqrtRatioTargetX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6052,"src":"2269:18:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6109,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6054,"src":"2289:9:25","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"74727565","id":6110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2300:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6105,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"2218:13:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":6106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":5957,"src":"2218:29:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":6111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2218:87:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2081:224:25","trueExpression":{"arguments":[{"id":6100,"name":"sqrtRatioTargetX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6052,"src":"2141:18:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6101,"name":"sqrtRatioCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"2161:19:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6102,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6054,"src":"2182:9:25","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"74727565","id":6103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2193:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6098,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"2111:13:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":6099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":5909,"src":"2111:29:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":6104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2111:87:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2070:235:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6114,"nodeType":"ExpressionStatement","src":"2070:235:25"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6115,"name":"amountRemainingLessFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6083,"src":"2324:22:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6116,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"2350:8:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2324:34:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"id":6130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6122,"name":"sqrtRatioNextX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6061,"src":"2434:16:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6125,"name":"sqrtRatioCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"2515:19:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6126,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6054,"src":"2557:9:25","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":6127,"name":"amountRemainingLessFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6083,"src":"2589:22:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6128,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6070,"src":"2634:10:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6123,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"2453:13:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":6124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getNextSqrtPriceFromInput","nodeType":"MemberAccess","referencedDeclaration":5797,"src":"2453:39:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$","typeString":"function (uint160,uint128,uint256,bool) pure returns (uint160)"}},"id":6129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2453:210:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2434:229:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":6131,"nodeType":"ExpressionStatement","src":"2434:229:25"},"id":6132,"nodeType":"IfStatement","src":"2320:343:25","trueBody":{"expression":{"id":6120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6118,"name":"sqrtRatioNextX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6061,"src":"2360:16:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6119,"name":"sqrtRatioTargetX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6052,"src":"2379:18:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2360:37:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":6121,"nodeType":"ExpressionStatement","src":"2360:37:25"}}]}},{"assignments":[6182],"declarations":[{"constant":false,"id":6182,"mutability":"mutable","name":"max","nodeType":"VariableDeclaration","scope":6301,"src":"3324:8:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6181,"name":"bool","nodeType":"ElementaryTypeName","src":"3324:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":6186,"initialValue":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":6185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6183,"name":"sqrtRatioTargetX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6052,"src":"3335:18:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6184,"name":"sqrtRatioNextX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6061,"src":"3357:16:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3335:38:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3324:49:25"},{"condition":{"id":6187,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6070,"src":"3431:10:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6251,"nodeType":"Block","src":"3811:362:25","statements":[{"expression":{"id":6233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6220,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"3826:8:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6221,"name":"max","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6182,"src":"3837:3:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":6222,"name":"exactIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6076,"src":"3844:7:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3837:14:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":6227,"name":"sqrtRatioCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"3929:19:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6228,"name":"sqrtRatioNextX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6061,"src":"3950:16:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6229,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6054,"src":"3968:9:25","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"74727565","id":6230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3979:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6225,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"3899:13:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":6226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":5957,"src":"3899:29:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":6231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3899:85:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3837:147:25","trueExpression":{"id":6224,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"3871:8:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3826:158:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6234,"nodeType":"ExpressionStatement","src":"3826:158:25"},{"expression":{"id":6249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6235,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6065,"src":"3999:9:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6236,"name":"max","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6182,"src":"4011:3:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":6238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4018:8:25","subExpression":{"id":6237,"name":"exactIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6076,"src":"4019:7:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4011:15:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":6243,"name":"sqrtRatioCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"4105:19:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6244,"name":"sqrtRatioNextX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6061,"src":"4126:16:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6245,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6054,"src":"4144:9:25","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"66616c7365","id":6246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4155:5:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6241,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"4075:13:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":6242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":5909,"src":"4075:29:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":6247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4075:86:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4011:150:25","trueExpression":{"id":6240,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6065,"src":"4046:9:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3999:162:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6250,"nodeType":"ExpressionStatement","src":"3999:162:25"}]},"id":6252,"nodeType":"IfStatement","src":"3427:746:25","trueBody":{"id":6219,"nodeType":"Block","src":"3443:362:25","statements":[{"expression":{"id":6201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6188,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"3458:8:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6189,"name":"max","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6182,"src":"3469:3:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":6190,"name":"exactIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6076,"src":"3476:7:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3469:14:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":6195,"name":"sqrtRatioNextX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6061,"src":"3561:16:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6196,"name":"sqrtRatioCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"3579:19:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6197,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6054,"src":"3600:9:25","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"74727565","id":6198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3611:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6193,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"3531:13:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":6194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":5909,"src":"3531:29:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":6199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3531:85:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3469:147:25","trueExpression":{"id":6192,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"3503:8:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3458:158:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6202,"nodeType":"ExpressionStatement","src":"3458:158:25"},{"expression":{"id":6217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6203,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6065,"src":"3631:9:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6204,"name":"max","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6182,"src":"3643:3:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":6206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3650:8:25","subExpression":{"id":6205,"name":"exactIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6076,"src":"3651:7:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3643:15:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":6211,"name":"sqrtRatioNextX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6061,"src":"3737:16:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6212,"name":"sqrtRatioCurrentX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"3755:19:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6213,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6054,"src":"3776:9:25","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"66616c7365","id":6214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3787:5:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6209,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"3707:13:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":6210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":5957,"src":"3707:29:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":6215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3707:86:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3643:150:25","trueExpression":{"id":6208,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6065,"src":"3678:9:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3631:162:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6218,"nodeType":"ExpressionStatement","src":"3631:162:25"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4265:8:25","subExpression":{"id":6253,"name":"exactIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6076,"src":"4266:7:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6255,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6065,"src":"4277:9:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"id":6259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"4297:16:25","subExpression":{"id":6258,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6056,"src":"4298:15:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6257,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4289:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6256,"name":"uint256","nodeType":"ElementaryTypeName","src":"4289:7:25","typeDescriptions":{}}},"id":6260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4289:25:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4277:37:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4265:49:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6272,"nodeType":"IfStatement","src":"4261:119:25","trueBody":{"id":6271,"nodeType":"Block","src":"4316:64:25","statements":[{"expression":{"id":6269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6263,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6065,"src":"4331:9:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"4351:16:25","subExpression":{"id":6266,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6056,"src":"4352:15:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4343:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6264,"name":"uint256","nodeType":"ElementaryTypeName","src":"4343:7:25","typeDescriptions":{}}},"id":6268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4343:25:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4331:37:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6270,"nodeType":"ExpressionStatement","src":"4331:37:25"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6273,"name":"exactIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6076,"src":"4396:7:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":6276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6274,"name":"sqrtRatioNextX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6061,"src":"4407:16:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6275,"name":"sqrtRatioTargetX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6052,"src":"4427:18:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4407:38:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4396:49:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6299,"nodeType":"Block","src":"4621:98:25","statements":[{"expression":{"id":6297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6288,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6067,"src":"4636:9:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6291,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"4674:8:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6292,"name":"feePips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6058,"src":"4684:7:25","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"commonType":{"typeIdentifier":"t_uint24","typeString":"uint24"},"id":6295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"316536","id":6293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4693:3:25","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1e6"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6294,"name":"feePips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6058,"src":"4699:7:25","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"4693:13:25","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":6289,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"4648:8:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":6290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":4247,"src":"4648:25:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4648:59:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4636:71:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6298,"nodeType":"ExpressionStatement","src":"4636:71:25"}]},"id":6300,"nodeType":"IfStatement","src":"4392:327:25","trueBody":{"id":6287,"nodeType":"Block","src":"4447:168:25","statements":[{"expression":{"id":6285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6278,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6067,"src":"4556:9:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6281,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6056,"src":"4576:15:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4568:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6279,"name":"uint256","nodeType":"ElementaryTypeName","src":"4568:7:25","typeDescriptions":{}}},"id":6282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4568:24:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6283,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"4595:8:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4568:35:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4556:47:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6286,"nodeType":"ExpressionStatement","src":"4556:47:25"}]}}]},"documentation":{"id":6048,"nodeType":"StructuredDocumentation","src":"324:1081:25","text":"@notice Computes the result of swapping some amount in, or amount out, given the parameters of the swap\n @dev The fee, plus the amount in, will never exceed the amount remaining if the swap's `amountSpecified` is positive\n @param sqrtRatioCurrentX96 The current sqrt price of the pool\n @param sqrtRatioTargetX96 The price that cannot be exceeded, from which the direction of the swap is inferred\n @param liquidity The usable liquidity\n @param amountRemaining How much input or output amount is remaining to be swapped in/out\n @param feePips The fee taken from the input amount, expressed in hundredths of a bip\n @return sqrtRatioNextX96 The price after swapping the amount in/out, not to exceed the price target\n @return amountIn The amount to be swapped in, of either token0 or token1, based on the direction of the swap\n @return amountOut The amount to be received, of either token0 or token1, based on the direction of the swap\n @return feeAmount The amount of input that will be taken as a fee"},"id":6302,"implemented":true,"kind":"function","modifiers":[],"name":"computeSwapStep","nodeType":"FunctionDefinition","parameters":{"id":6059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6050,"mutability":"mutable","name":"sqrtRatioCurrentX96","nodeType":"VariableDeclaration","scope":6302,"src":"1446:27:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6049,"name":"uint160","nodeType":"ElementaryTypeName","src":"1446:7:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6052,"mutability":"mutable","name":"sqrtRatioTargetX96","nodeType":"VariableDeclaration","scope":6302,"src":"1484:26:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6051,"name":"uint160","nodeType":"ElementaryTypeName","src":"1484:7:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6054,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":6302,"src":"1521:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6053,"name":"uint128","nodeType":"ElementaryTypeName","src":"1521:7:25","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":6056,"mutability":"mutable","name":"amountRemaining","nodeType":"VariableDeclaration","scope":6302,"src":"1549:22:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6055,"name":"int256","nodeType":"ElementaryTypeName","src":"1549:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":6058,"mutability":"mutable","name":"feePips","nodeType":"VariableDeclaration","scope":6302,"src":"1582:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":6057,"name":"uint24","nodeType":"ElementaryTypeName","src":"1582:6:25","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"1435:168:25"},"returnParameters":{"id":6068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6061,"mutability":"mutable","name":"sqrtRatioNextX96","nodeType":"VariableDeclaration","scope":6302,"src":"1668:24:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6060,"name":"uint160","nodeType":"ElementaryTypeName","src":"1668:7:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6063,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":6302,"src":"1707:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6062,"name":"uint256","nodeType":"ElementaryTypeName","src":"1707:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6065,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":6302,"src":"1738:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6064,"name":"uint256","nodeType":"ElementaryTypeName","src":"1738:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6067,"mutability":"mutable","name":"feeAmount","nodeType":"VariableDeclaration","scope":6302,"src":"1770:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6066,"name":"uint256","nodeType":"ElementaryTypeName","src":"1770:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1653:145:25"},"scope":6303,"src":"1411:3315:25","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6304,"src":"300:4429:25"}],"src":"38:4693:25"},"id":25},"contracts/elixir-core/libraries/Tick.sol":{"ast":{"absolutePath":"contracts/elixir-core/libraries/Tick.sol","exportedSymbols":{"LiquidityMath":[4300],"LowGasSafeMath":[4430],"SafeCast":[5526],"Tick":[6776],"TickMath":[7567]},"id":6777,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":6305,"literals":["solidity",">=","0.5",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"38:31:26"},{"absolutePath":"contracts/elixir-core/libraries/LowGasSafeMath.sol","file":"./LowGasSafeMath.sol","id":6306,"nodeType":"ImportDirective","scope":6777,"sourceUnit":4431,"src":"73:30:26","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/SafeCast.sol","file":"./SafeCast.sol","id":6307,"nodeType":"ImportDirective","scope":6777,"sourceUnit":5527,"src":"105:24:26","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/TickMath.sol","file":"./TickMath.sol","id":6308,"nodeType":"ImportDirective","scope":6777,"sourceUnit":7568,"src":"133:24:26","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/LiquidityMath.sol","file":"./LiquidityMath.sol","id":6309,"nodeType":"ImportDirective","scope":6777,"sourceUnit":4301,"src":"159:29:26","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":6310,"nodeType":"StructuredDocumentation","src":"192:103:26","text":"@title Tick\n @notice Contains functions for managing tick processes and relevant calculations"},"fullyImplemented":true,"id":6776,"linearizedBaseContracts":[6776],"name":"Tick","nodeType":"ContractDefinition","nodes":[{"id":6313,"libraryName":{"id":6311,"name":"LowGasSafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":4430,"src":"321:14:26","typeDescriptions":{"typeIdentifier":"t_contract$_LowGasSafeMath_$4430","typeString":"library LowGasSafeMath"}},"nodeType":"UsingForDirective","src":"315:32:26","typeName":{"id":6312,"name":"int256","nodeType":"ElementaryTypeName","src":"340:6:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}},{"id":6316,"libraryName":{"id":6314,"name":"SafeCast","nodeType":"UserDefinedTypeName","referencedDeclaration":5526,"src":"359:8:26","typeDescriptions":{"typeIdentifier":"t_contract$_SafeCast_$5526","typeString":"library SafeCast"}},"nodeType":"UsingForDirective","src":"353:26:26","typeName":{"id":6315,"name":"int256","nodeType":"ElementaryTypeName","src":"372:6:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}},{"canonicalName":"Tick.Info","id":6335,"members":[{"constant":false,"id":6318,"mutability":"mutable","name":"liquidityGross","nodeType":"VariableDeclaration","scope":6335,"src":"534:22:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6317,"name":"uint128","nodeType":"ElementaryTypeName","src":"534:7:26","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":6320,"mutability":"mutable","name":"liquidityNet","nodeType":"VariableDeclaration","scope":6335,"src":"679:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":6319,"name":"int128","nodeType":"ElementaryTypeName","src":"679:6:26","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":6322,"mutability":"mutable","name":"feeGrowthOutside0X128","nodeType":"VariableDeclaration","scope":6335,"src":"924:29:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6321,"name":"uint256","nodeType":"ElementaryTypeName","src":"924:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6324,"mutability":"mutable","name":"feeGrowthOutside1X128","nodeType":"VariableDeclaration","scope":6335,"src":"964:29:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6323,"name":"uint256","nodeType":"ElementaryTypeName","src":"964:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6326,"mutability":"mutable","name":"tickCumulativeOutside","nodeType":"VariableDeclaration","scope":6335,"src":"1072:27:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":6325,"name":"int56","nodeType":"ElementaryTypeName","src":"1072:5:26","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":6328,"mutability":"mutable","name":"secondsPerLiquidityOutsideX128","nodeType":"VariableDeclaration","scope":6335,"src":"1326:38:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6327,"name":"uint160","nodeType":"ElementaryTypeName","src":"1326:7:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6330,"mutability":"mutable","name":"secondsOutside","nodeType":"VariableDeclaration","scope":6335,"src":"1572:21:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6329,"name":"uint32","nodeType":"ElementaryTypeName","src":"1572:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":6332,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":6335,"src":"1821:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6331,"name":"bool","nodeType":"ElementaryTypeName","src":"1821:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6334,"mutability":"mutable","name":"rewardPerLiquidityOutsideX64","nodeType":"VariableDeclaration","scope":6335,"src":"2017:36:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":6333,"name":"uint192","nodeType":"ElementaryTypeName","src":"2017:7:26","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"name":"Info","nodeType":"StructDefinition","scope":6776,"src":"444:1617:26","visibility":"public"},{"body":{"id":6385,"nodeType":"Block","src":"2554:276:26","statements":[{"assignments":[6344],"declarations":[{"constant":false,"id":6344,"mutability":"mutable","name":"minTick","nodeType":"VariableDeclaration","scope":6385,"src":"2565:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6343,"name":"int24","nodeType":"ElementaryTypeName","src":"2565:5:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":6352,"initialValue":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6345,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"2582:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":6346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_TICK","nodeType":"MemberAccess","referencedDeclaration":7040,"src":"2582:17:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6347,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6338,"src":"2602:11:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2582:31:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":6349,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2581:33:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6350,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6338,"src":"2617:11:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2581:47:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"2565:63:26"},{"assignments":[6354],"declarations":[{"constant":false,"id":6354,"mutability":"mutable","name":"maxTick","nodeType":"VariableDeclaration","scope":6385,"src":"2639:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6353,"name":"int24","nodeType":"ElementaryTypeName","src":"2639:5:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":6362,"initialValue":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6355,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"2656:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":6356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_TICK","nodeType":"MemberAccess","referencedDeclaration":7045,"src":"2656:17:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6357,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6338,"src":"2676:11:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2656:31:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":6359,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2655:33:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6360,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6338,"src":"2691:11:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2655:47:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"2639:63:26"},{"assignments":[6364],"declarations":[{"constant":false,"id":6364,"mutability":"mutable","name":"numTicks","nodeType":"VariableDeclaration","scope":6385,"src":"2713:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":6363,"name":"uint24","nodeType":"ElementaryTypeName","src":"2713:6:26","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":6376,"initialValue":{"commonType":{"typeIdentifier":"t_uint24","typeString":"uint24"},"id":6375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6367,"name":"maxTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6354,"src":"2739:7:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6368,"name":"minTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6344,"src":"2749:7:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2739:17:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":6370,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2738:19:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6371,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6338,"src":"2760:11:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2738:33:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":6366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2731:6:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":6365,"name":"uint24","nodeType":"ElementaryTypeName","src":"2731:6:26","typeDescriptions":{}}},"id":6373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2731:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2775:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2731:45:26","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"VariableDeclarationStatement","src":"2713:63:26"},{"expression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":6383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":6379,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2799:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":6378,"name":"uint128","nodeType":"ElementaryTypeName","src":"2799:7:26","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":6377,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2794:4:26","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2794:13:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":6381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2794:17:26","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6382,"name":"numTicks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6364,"src":"2814:8:26","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"2794:28:26","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":6342,"id":6384,"nodeType":"Return","src":"2787:35:26"}]},"documentation":{"id":6336,"nodeType":"StructuredDocumentation","src":"2069:386:26","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":6386,"implemented":true,"kind":"function","modifiers":[],"name":"tickSpacingToMaxLiquidityPerTick","nodeType":"FunctionDefinition","parameters":{"id":6339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6338,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":6386,"src":"2503:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6337,"name":"int24","nodeType":"ElementaryTypeName","src":"2503:5:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2502:19:26"},"returnParameters":{"id":6342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6341,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6386,"src":"2545:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6340,"name":"uint128","nodeType":"ElementaryTypeName","src":"2545:7:26","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2544:9:26"},"scope":6776,"src":"2461:369:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6508,"nodeType":"Block","src":"3944:1277:26","statements":[{"assignments":[6409],"declarations":[{"constant":false,"id":6409,"mutability":"mutable","name":"lower","nodeType":"VariableDeclaration","scope":6508,"src":"3955:18:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"},"typeName":{"id":6408,"name":"Info","nodeType":"UserDefinedTypeName","referencedDeclaration":6335,"src":"3955:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"}},"visibility":"internal"}],"id":6413,"initialValue":{"baseExpression":{"id":6410,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6391,"src":"3976:4:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":6412,"indexExpression":{"id":6411,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6393,"src":"3981:9:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3976:15:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage","typeString":"struct Tick.Info storage ref"}},"nodeType":"VariableDeclarationStatement","src":"3955:36:26"},{"assignments":[6415],"declarations":[{"constant":false,"id":6415,"mutability":"mutable","name":"upper","nodeType":"VariableDeclaration","scope":6508,"src":"4002:18:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"},"typeName":{"id":6414,"name":"Info","nodeType":"UserDefinedTypeName","referencedDeclaration":6335,"src":"4002:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"}},"visibility":"internal"}],"id":6419,"initialValue":{"baseExpression":{"id":6416,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6391,"src":"4023:4:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":6418,"indexExpression":{"id":6417,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6395,"src":"4028:9:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4023:15:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage","typeString":"struct Tick.Info storage ref"}},"nodeType":"VariableDeclarationStatement","src":"4002:36:26"},{"assignments":[6421],"declarations":[{"constant":false,"id":6421,"mutability":"mutable","name":"feeGrowthBelow0X128","nodeType":"VariableDeclaration","scope":6508,"src":"4090:27:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6420,"name":"uint256","nodeType":"ElementaryTypeName","src":"4090:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6422,"nodeType":"VariableDeclarationStatement","src":"4090:27:26"},{"assignments":[6424],"declarations":[{"constant":false,"id":6424,"mutability":"mutable","name":"feeGrowthBelow1X128","nodeType":"VariableDeclaration","scope":6508,"src":"4128:27:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6423,"name":"uint256","nodeType":"ElementaryTypeName","src":"4128:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6425,"nodeType":"VariableDeclarationStatement","src":"4128:27:26"},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6426,"name":"tickCurrent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6397,"src":"4170:11:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6427,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6393,"src":"4185:9:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"4170:24:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6454,"nodeType":"Block","src":"4342:186:26","statements":[{"expression":{"id":6445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6440,"name":"feeGrowthBelow0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6421,"src":"4357:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6441,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6399,"src":"4379:20:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":6442,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6409,"src":"4402:5:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6443,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":6322,"src":"4402:27:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4379:50:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4357:72:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6446,"nodeType":"ExpressionStatement","src":"4357:72:26"},{"expression":{"id":6452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6447,"name":"feeGrowthBelow1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6424,"src":"4444:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6448,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6401,"src":"4466:20:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":6449,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6409,"src":"4489:5:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6450,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":6324,"src":"4489:27:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4466:50:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4444:72:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6453,"nodeType":"ExpressionStatement","src":"4444:72:26"}]},"id":6455,"nodeType":"IfStatement","src":"4166:362:26","trueBody":{"id":6439,"nodeType":"Block","src":"4196:140:26","statements":[{"expression":{"id":6432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6429,"name":"feeGrowthBelow0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6421,"src":"4211:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6430,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6409,"src":"4233:5:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6431,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":6322,"src":"4233:27:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4211:49:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6433,"nodeType":"ExpressionStatement","src":"4211:49:26"},{"expression":{"id":6437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6434,"name":"feeGrowthBelow1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6424,"src":"4275:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6435,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6409,"src":"4297:5:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6436,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":6324,"src":"4297:27:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4275:49:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6438,"nodeType":"ExpressionStatement","src":"4275:49:26"}]}},{"assignments":[6457],"declarations":[{"constant":false,"id":6457,"mutability":"mutable","name":"feeGrowthAbove0X128","nodeType":"VariableDeclaration","scope":6508,"src":"4579:27:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6456,"name":"uint256","nodeType":"ElementaryTypeName","src":"4579:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6458,"nodeType":"VariableDeclarationStatement","src":"4579:27:26"},{"assignments":[6460],"declarations":[{"constant":false,"id":6460,"mutability":"mutable","name":"feeGrowthAbove1X128","nodeType":"VariableDeclaration","scope":6508,"src":"4617:27:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6459,"name":"uint256","nodeType":"ElementaryTypeName","src":"4617:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6461,"nodeType":"VariableDeclarationStatement","src":"4617:27:26"},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6462,"name":"tickCurrent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6397,"src":"4659:11:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6463,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6395,"src":"4673:9:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"4659:23:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6490,"nodeType":"Block","src":"4830:186:26","statements":[{"expression":{"id":6481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6476,"name":"feeGrowthAbove0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6457,"src":"4845:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6477,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6399,"src":"4867:20:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":6478,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6415,"src":"4890:5:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6479,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":6322,"src":"4890:27:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4867:50:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4845:72:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6482,"nodeType":"ExpressionStatement","src":"4845:72:26"},{"expression":{"id":6488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6483,"name":"feeGrowthAbove1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6460,"src":"4932:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6484,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6401,"src":"4954:20:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":6485,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6415,"src":"4977:5:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6486,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":6324,"src":"4977:27:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4954:50:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4932:72:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6489,"nodeType":"ExpressionStatement","src":"4932:72:26"}]},"id":6491,"nodeType":"IfStatement","src":"4655:361:26","trueBody":{"id":6475,"nodeType":"Block","src":"4684:140:26","statements":[{"expression":{"id":6468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6465,"name":"feeGrowthAbove0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6457,"src":"4699:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6466,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6415,"src":"4721:5:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6467,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":6322,"src":"4721:27:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4699:49:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6469,"nodeType":"ExpressionStatement","src":"4699:49:26"},{"expression":{"id":6473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6470,"name":"feeGrowthAbove1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6460,"src":"4763:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6471,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6415,"src":"4785:5:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6472,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":6324,"src":"4785:27:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4763:49:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6474,"nodeType":"ExpressionStatement","src":"4763:49:26"}]}},{"expression":{"id":6498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6492,"name":"feeGrowthInside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6404,"src":"5028:20:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6493,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6399,"src":"5051:20:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6494,"name":"feeGrowthBelow0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6421,"src":"5074:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5051:42:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6496,"name":"feeGrowthAbove0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6457,"src":"5096:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5051:64:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5028:87:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6499,"nodeType":"ExpressionStatement","src":"5028:87:26"},{"expression":{"id":6506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6500,"name":"feeGrowthInside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6406,"src":"5126:20:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6501,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6401,"src":"5149:20:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6502,"name":"feeGrowthBelow1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6424,"src":"5172:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5149:42:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6504,"name":"feeGrowthAbove1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6460,"src":"5194:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5149:64:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5126:87:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6507,"nodeType":"ExpressionStatement","src":"5126:87:26"}]},"documentation":{"id":6387,"nodeType":"StructuredDocumentation","src":"2838:773:26","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":6509,"implemented":true,"kind":"function","modifiers":[],"name":"getFeeGrowthInside","nodeType":"FunctionDefinition","parameters":{"id":6402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6391,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":6509,"src":"3655:40:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"typeName":{"id":6390,"keyType":{"id":6388,"name":"int24","nodeType":"ElementaryTypeName","src":"3663:5:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Mapping","src":"3655:27:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"valueType":{"id":6389,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":6335,"src":"3672:9:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"}}},"visibility":"internal"},{"constant":false,"id":6393,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":6509,"src":"3706:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6392,"name":"int24","nodeType":"ElementaryTypeName","src":"3706:5:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6395,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":6509,"src":"3732:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6394,"name":"int24","nodeType":"ElementaryTypeName","src":"3732:5:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6397,"mutability":"mutable","name":"tickCurrent","nodeType":"VariableDeclaration","scope":6509,"src":"3758:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6396,"name":"int24","nodeType":"ElementaryTypeName","src":"3758:5:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6399,"mutability":"mutable","name":"feeGrowthGlobal0X128","nodeType":"VariableDeclaration","scope":6509,"src":"3786:28:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6398,"name":"uint256","nodeType":"ElementaryTypeName","src":"3786:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6401,"mutability":"mutable","name":"feeGrowthGlobal1X128","nodeType":"VariableDeclaration","scope":6509,"src":"3825:28:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6400,"name":"uint256","nodeType":"ElementaryTypeName","src":"3825:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3644:216:26"},"returnParameters":{"id":6407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6404,"mutability":"mutable","name":"feeGrowthInside0X128","nodeType":"VariableDeclaration","scope":6509,"src":"3884:28:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6403,"name":"uint256","nodeType":"ElementaryTypeName","src":"3884:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6406,"mutability":"mutable","name":"feeGrowthInside1X128","nodeType":"VariableDeclaration","scope":6509,"src":"3914:28:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6405,"name":"uint256","nodeType":"ElementaryTypeName","src":"3914:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3883:60:26"},"scope":6776,"src":"3617:1604:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6666,"nodeType":"Block","src":"6905:1393:26","statements":[{"assignments":[6544],"declarations":[{"constant":false,"id":6544,"mutability":"mutable","name":"info","nodeType":"VariableDeclaration","scope":6666,"src":"6916:22:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"},"typeName":{"id":6543,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":6335,"src":"6916:9:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"}},"visibility":"internal"}],"id":6548,"initialValue":{"baseExpression":{"id":6545,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6514,"src":"6941:4:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":6547,"indexExpression":{"id":6546,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6516,"src":"6946:4:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6941:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage","typeString":"struct Tick.Info storage ref"}},"nodeType":"VariableDeclarationStatement","src":"6916:35:26"},{"assignments":[6550],"declarations":[{"constant":false,"id":6550,"mutability":"mutable","name":"liquidityGrossBefore","nodeType":"VariableDeclaration","scope":6666,"src":"6964:28:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6549,"name":"uint128","nodeType":"ElementaryTypeName","src":"6964:7:26","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":6553,"initialValue":{"expression":{"id":6551,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6544,"src":"6995:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6552,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityGross","nodeType":"MemberAccess","referencedDeclaration":6318,"src":"6995:19:26","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"6964:50:26"},{"assignments":[6555],"declarations":[{"constant":false,"id":6555,"mutability":"mutable","name":"liquidityGrossAfter","nodeType":"VariableDeclaration","scope":6666,"src":"7025:27:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6554,"name":"uint128","nodeType":"ElementaryTypeName","src":"7025:7:26","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":6561,"initialValue":{"arguments":[{"id":6558,"name":"liquidityGrossBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6550,"src":"7078:20:26","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":6559,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6520,"src":"7100:14:26","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":6556,"name":"LiquidityMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4300,"src":"7055:13:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityMath_$4300_$","typeString":"type(library LiquidityMath)"}},"id":6557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"addDelta","nodeType":"MemberAccess","referencedDeclaration":4299,"src":"7055:22:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint128_$_t_int128_$returns$_t_uint128_$","typeString":"function (uint128,int128) pure returns (uint128)"}},"id":6560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7055:60:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"7025:90:26"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":6565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6563,"name":"liquidityGrossAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6555,"src":"7136:19:26","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":6564,"name":"maxLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6534,"src":"7159:12:26","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"7136:35:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c4f","id":6566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7173:4:26","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":6562,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7128:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7128:50:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6568,"nodeType":"ExpressionStatement","src":"7128:50:26"},{"expression":{"id":6579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6569,"name":"flipped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6539,"src":"7191:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":6572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6570,"name":"liquidityGrossAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6555,"src":"7202:19:26","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7225:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7202:24:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":6573,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7201:26:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":6576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6574,"name":"liquidityGrossBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6550,"src":"7232:20:26","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7256:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7232:25:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":6577,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7231:27:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7201:57:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7191:67:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6580,"nodeType":"ExpressionStatement","src":"7191:67:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":6583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6581,"name":"liquidityGrossBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6550,"src":"7275:20:26","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7299:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7275:25:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6632,"nodeType":"IfStatement","src":"7271:668:26","trueBody":{"id":6631,"nodeType":"Block","src":"7302:637:26","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6584,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6516,"src":"7434:4:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":6585,"name":"tickCurrent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6518,"src":"7442:11:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"7434:19:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6624,"nodeType":"IfStatement","src":"7430:460:26","trueBody":{"id":6623,"nodeType":"Block","src":"7455:435:26","statements":[{"expression":{"id":6591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6587,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6544,"src":"7474:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6589,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":6322,"src":"7474:26:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6590,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6522,"src":"7503:20:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7474:49:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6592,"nodeType":"ExpressionStatement","src":"7474:49:26"},{"expression":{"id":6597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6593,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6544,"src":"7542:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6595,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":6324,"src":"7542:26:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6596,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6524,"src":"7571:20:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7542:49:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6598,"nodeType":"ExpressionStatement","src":"7542:49:26"},{"expression":{"id":6603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6599,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6544,"src":"7610:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6601,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"secondsPerLiquidityOutsideX128","nodeType":"MemberAccess","referencedDeclaration":6328,"src":"7610:35:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6602,"name":"secondsPerLiquidityCumulativeX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6526,"src":"7648:33:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7610:71:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":6604,"nodeType":"ExpressionStatement","src":"7610:71:26"},{"expression":{"id":6609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6605,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6544,"src":"7700:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6607,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tickCumulativeOutside","nodeType":"MemberAccess","referencedDeclaration":6326,"src":"7700:26:26","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6608,"name":"tickCumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6528,"src":"7729:14:26","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"7700:43:26","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":6610,"nodeType":"ExpressionStatement","src":"7700:43:26"},{"expression":{"id":6615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6611,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6544,"src":"7762:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6613,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"secondsOutside","nodeType":"MemberAccess","referencedDeclaration":6330,"src":"7762:19:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6614,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6530,"src":"7784:4:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"7762:26:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":6616,"nodeType":"ExpressionStatement","src":"7762:26:26"},{"expression":{"id":6621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6617,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6544,"src":"7807:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6619,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"rewardPerLiquidityOutsideX64","nodeType":"MemberAccess","referencedDeclaration":6334,"src":"7807:33:26","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6620,"name":"rewardPerLiquidityCumulativeX64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6536,"src":"7843:31:26","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"7807:67:26","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"id":6622,"nodeType":"ExpressionStatement","src":"7807:67:26"}]}},{"expression":{"id":6629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6625,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6544,"src":"7904:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6627,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"initialized","nodeType":"MemberAccess","referencedDeclaration":6332,"src":"7904:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":6628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7923:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7904:23:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6630,"nodeType":"ExpressionStatement","src":"7904:23:26"}]}},{"expression":{"id":6637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6633,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6544,"src":"7951:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6635,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"liquidityGross","nodeType":"MemberAccess","referencedDeclaration":6318,"src":"7951:19:26","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6636,"name":"liquidityGrossAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6555,"src":"7973:19:26","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"7951:41:26","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":6638,"nodeType":"ExpressionStatement","src":"7951:41:26"},{"expression":{"id":6664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6639,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6544,"src":"8121:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6641,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"liquidityNet","nodeType":"MemberAccess","referencedDeclaration":6320,"src":"8121:17:26","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":6642,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6532,"src":"8141:5:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6659,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6520,"src":"8264:14:26","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"arguments":[{"expression":{"id":6655,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6544,"src":"8241:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6656,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityNet","nodeType":"MemberAccess","referencedDeclaration":6320,"src":"8241:17:26","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"id":6654,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8234:6:26","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":6653,"name":"int256","nodeType":"ElementaryTypeName","src":"8234:6:26","typeDescriptions":{}}},"id":6657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8234:25:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":4402,"src":"8234:29:26","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":6660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8234:45:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5501,"src":"8234:54:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int128_$bound_to$_t_int256_$","typeString":"function (int256) pure returns (int128)"}},"id":6662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8234:56:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":6663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8141:149:26","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6649,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6520,"src":"8192:14:26","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"arguments":[{"expression":{"id":6645,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6544,"src":"8169:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6646,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityNet","nodeType":"MemberAccess","referencedDeclaration":6320,"src":"8169:17:26","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"id":6644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8162:6:26","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":6643,"name":"int256","nodeType":"ElementaryTypeName","src":"8162:6:26","typeDescriptions":{}}},"id":6647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8162:25:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":4429,"src":"8162:29:26","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":6650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8162:45:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":5501,"src":"8162:54:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int128_$bound_to$_t_int256_$","typeString":"function (int256) pure returns (int128)"}},"id":6652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8162:56:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"8121:169:26","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":6665,"nodeType":"ExpressionStatement","src":"8121:169:26"}]},"documentation":{"id":6510,"nodeType":"StructuredDocumentation","src":"5229:1198:26","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":6667,"implemented":true,"kind":"function","modifiers":[],"name":"update","nodeType":"FunctionDefinition","parameters":{"id":6537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6514,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":6667,"src":"6459:40:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"typeName":{"id":6513,"keyType":{"id":6511,"name":"int24","nodeType":"ElementaryTypeName","src":"6467:5:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Mapping","src":"6459:27:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"valueType":{"id":6512,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":6335,"src":"6476:9:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"}}},"visibility":"internal"},{"constant":false,"id":6516,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":6667,"src":"6510:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6515,"name":"int24","nodeType":"ElementaryTypeName","src":"6510:5:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6518,"mutability":"mutable","name":"tickCurrent","nodeType":"VariableDeclaration","scope":6667,"src":"6531:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6517,"name":"int24","nodeType":"ElementaryTypeName","src":"6531:5:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6520,"mutability":"mutable","name":"liquidityDelta","nodeType":"VariableDeclaration","scope":6667,"src":"6559:21:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":6519,"name":"int128","nodeType":"ElementaryTypeName","src":"6559:6:26","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":6522,"mutability":"mutable","name":"feeGrowthGlobal0X128","nodeType":"VariableDeclaration","scope":6667,"src":"6591:28:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6521,"name":"uint256","nodeType":"ElementaryTypeName","src":"6591:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6524,"mutability":"mutable","name":"feeGrowthGlobal1X128","nodeType":"VariableDeclaration","scope":6667,"src":"6630:28:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6523,"name":"uint256","nodeType":"ElementaryTypeName","src":"6630:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6526,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128","nodeType":"VariableDeclaration","scope":6667,"src":"6669:41:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6525,"name":"uint160","nodeType":"ElementaryTypeName","src":"6669:7:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6528,"mutability":"mutable","name":"tickCumulative","nodeType":"VariableDeclaration","scope":6667,"src":"6721:20:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":6527,"name":"int56","nodeType":"ElementaryTypeName","src":"6721:5:26","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":6530,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":6667,"src":"6752:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6529,"name":"uint32","nodeType":"ElementaryTypeName","src":"6752:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":6532,"mutability":"mutable","name":"upper","nodeType":"VariableDeclaration","scope":6667,"src":"6774:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6531,"name":"bool","nodeType":"ElementaryTypeName","src":"6774:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6534,"mutability":"mutable","name":"maxLiquidity","nodeType":"VariableDeclaration","scope":6667,"src":"6795:20:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6533,"name":"uint128","nodeType":"ElementaryTypeName","src":"6795:7:26","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":6536,"mutability":"mutable","name":"rewardPerLiquidityCumulativeX64","nodeType":"VariableDeclaration","scope":6667,"src":"6826:39:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":6535,"name":"uint192","nodeType":"ElementaryTypeName","src":"6826:7:26","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"6448:424:26"},"returnParameters":{"id":6540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6539,"mutability":"mutable","name":"flipped","nodeType":"VariableDeclaration","scope":6667,"src":"6891:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6538,"name":"bool","nodeType":"ElementaryTypeName","src":"6891:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6890:14:26"},"scope":6776,"src":"6433:1865:26","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6682,"nodeType":"Block","src":"8568:36:26","statements":[{"expression":{"id":6680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"8579:17:26","subExpression":{"baseExpression":{"id":6677,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6672,"src":"8586:4:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":6679,"indexExpression":{"id":6678,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6674,"src":"8591:4:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8586:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage","typeString":"struct Tick.Info storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6681,"nodeType":"ExpressionStatement","src":"8579:17:26"}]},"documentation":{"id":6668,"nodeType":"StructuredDocumentation","src":"8306:178:26","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":6683,"implemented":true,"kind":"function","modifiers":[],"name":"clear","nodeType":"FunctionDefinition","parameters":{"id":6675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6672,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":6683,"src":"8505:40:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"typeName":{"id":6671,"keyType":{"id":6669,"name":"int24","nodeType":"ElementaryTypeName","src":"8513:5:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Mapping","src":"8505:27:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"valueType":{"id":6670,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":6335,"src":"8522:9:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"}}},"visibility":"internal"},{"constant":false,"id":6674,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":6683,"src":"8547:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6673,"name":"int24","nodeType":"ElementaryTypeName","src":"8547:5:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"8504:54:26"},"returnParameters":{"id":6676,"nodeType":"ParameterList","parameters":[],"src":"8568:0:26"},"scope":6776,"src":"8490:114:26","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6774,"nodeType":"Block","src":"9753:651:26","statements":[{"assignments":[6710],"declarations":[{"constant":false,"id":6710,"mutability":"mutable","name":"info","nodeType":"VariableDeclaration","scope":6774,"src":"9764:22:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"},"typeName":{"id":6709,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":6335,"src":"9764:9:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"}},"visibility":"internal"}],"id":6714,"initialValue":{"baseExpression":{"id":6711,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6688,"src":"9789:4:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":6713,"indexExpression":{"id":6712,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6690,"src":"9794:4:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9789:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage","typeString":"struct Tick.Info storage ref"}},"nodeType":"VariableDeclarationStatement","src":"9764:35:26"},{"expression":{"id":6722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6715,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6710,"src":"9810:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6717,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":6322,"src":"9810:26:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6718,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6692,"src":"9839:20:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":6719,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6710,"src":"9862:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6720,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":6322,"src":"9862:26:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9839:49:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9810:78:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6723,"nodeType":"ExpressionStatement","src":"9810:78:26"},{"expression":{"id":6731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6724,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6710,"src":"9899:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6726,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":6324,"src":"9899:26:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6727,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6694,"src":"9928:20:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":6728,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6710,"src":"9951:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6729,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":6324,"src":"9951:26:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9928:49:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9899:78:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6732,"nodeType":"ExpressionStatement","src":"9899:78:26"},{"expression":{"id":6740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6733,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6710,"src":"9988:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6735,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"secondsPerLiquidityOutsideX128","nodeType":"MemberAccess","referencedDeclaration":6328,"src":"9988:35:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":6739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6736,"name":"secondsPerLiquidityCumulativeX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6696,"src":"10026:33:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":6737,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6710,"src":"10062:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6738,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsPerLiquidityOutsideX128","nodeType":"MemberAccess","referencedDeclaration":6328,"src":"10062:35:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"10026:71:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"9988:109:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":6741,"nodeType":"ExpressionStatement","src":"9988:109:26"},{"expression":{"id":6749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6742,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6710,"src":"10108:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6744,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tickCumulativeOutside","nodeType":"MemberAccess","referencedDeclaration":6326,"src":"10108:26:26","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":6748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6745,"name":"tickCumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6698,"src":"10137:14:26","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":6746,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6710,"src":"10154:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6747,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickCumulativeOutside","nodeType":"MemberAccess","referencedDeclaration":6326,"src":"10154:26:26","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"10137:43:26","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"10108:72:26","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":6750,"nodeType":"ExpressionStatement","src":"10108:72:26"},{"expression":{"id":6758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6751,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6710,"src":"10191:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6753,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"secondsOutside","nodeType":"MemberAccess","referencedDeclaration":6330,"src":"10191:19:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":6757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6754,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6700,"src":"10213:4:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":6755,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6710,"src":"10220:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6756,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsOutside","nodeType":"MemberAccess","referencedDeclaration":6330,"src":"10220:19:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"10213:26:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"10191:48:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":6759,"nodeType":"ExpressionStatement","src":"10191:48:26"},{"expression":{"id":6767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6760,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6710,"src":"10250:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6762,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"rewardPerLiquidityOutsideX64","nodeType":"MemberAccess","referencedDeclaration":6334,"src":"10250:33:26","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":6766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6763,"name":"rewardPerLiquidityCumulativeX64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6702,"src":"10286:31:26","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":6764,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6710,"src":"10320:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6765,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityOutsideX64","nodeType":"MemberAccess","referencedDeclaration":6334,"src":"10320:33:26","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"10286:67:26","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"10250:103:26","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"id":6768,"nodeType":"ExpressionStatement","src":"10250:103:26"},{"expression":{"id":6772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6769,"name":"liquidityNet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6705,"src":"10364:12:26","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6770,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6710,"src":"10379:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":6771,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityNet","nodeType":"MemberAccess","referencedDeclaration":6320,"src":"10379:17:26","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"10364:32:26","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":6773,"nodeType":"ExpressionStatement","src":"10364:32:26"}]},"documentation":{"id":6684,"nodeType":"StructuredDocumentation","src":"8612:769:26","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":6775,"implemented":true,"kind":"function","modifiers":[],"name":"cross","nodeType":"FunctionDefinition","parameters":{"id":6703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6688,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":6775,"src":"9412:40:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"typeName":{"id":6687,"keyType":{"id":6685,"name":"int24","nodeType":"ElementaryTypeName","src":"9420:5:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Mapping","src":"9412:27:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"valueType":{"id":6686,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":6335,"src":"9429:9:26","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"}}},"visibility":"internal"},{"constant":false,"id":6690,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":6775,"src":"9463:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6689,"name":"int24","nodeType":"ElementaryTypeName","src":"9463:5:26","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6692,"mutability":"mutable","name":"feeGrowthGlobal0X128","nodeType":"VariableDeclaration","scope":6775,"src":"9484:28:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6691,"name":"uint256","nodeType":"ElementaryTypeName","src":"9484:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6694,"mutability":"mutable","name":"feeGrowthGlobal1X128","nodeType":"VariableDeclaration","scope":6775,"src":"9523:28:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6693,"name":"uint256","nodeType":"ElementaryTypeName","src":"9523:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6696,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128","nodeType":"VariableDeclaration","scope":6775,"src":"9562:41:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6695,"name":"uint160","nodeType":"ElementaryTypeName","src":"9562:7:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6698,"mutability":"mutable","name":"tickCumulative","nodeType":"VariableDeclaration","scope":6775,"src":"9614:20:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":6697,"name":"int56","nodeType":"ElementaryTypeName","src":"9614:5:26","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":6700,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":6775,"src":"9645:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6699,"name":"uint32","nodeType":"ElementaryTypeName","src":"9645:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":6702,"mutability":"mutable","name":"rewardPerLiquidityCumulativeX64","nodeType":"VariableDeclaration","scope":6775,"src":"9667:39:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":6701,"name":"uint192","nodeType":"ElementaryTypeName","src":"9667:7:26","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"9401:312:26"},"returnParameters":{"id":6706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6705,"mutability":"mutable","name":"liquidityNet","nodeType":"VariableDeclaration","scope":6775,"src":"9732:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":6704,"name":"int128","nodeType":"ElementaryTypeName","src":"9732:6:26","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"9731:21:26"},"scope":6776,"src":"9387:1017:26","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":6777,"src":"295:10112:26"}],"src":"38:10371:26"},"id":26},"contracts/elixir-core/libraries/TickBitmap.sol":{"ast":{"absolutePath":"contracts/elixir-core/libraries/TickBitmap.sol","exportedSymbols":{"BitMath":[4058],"TickBitmap":[7032]},"id":7033,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":6778,"literals":["solidity",">=","0.7",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"38:31:27"},{"absolutePath":"contracts/elixir-core/libraries/BitMath.sol","file":"./BitMath.sol","id":6779,"nodeType":"ImportDirective","scope":7033,"sourceUnit":4059,"src":"73:23:27","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":6780,"nodeType":"StructuredDocumentation","src":"100:246:27","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":7032,"linearizedBaseContracts":[7032],"name":"TickBitmap","nodeType":"ContractDefinition","nodes":[{"body":{"id":6808,"nodeType":"Block","src":"787:82:27","statements":[{"expression":{"id":6797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6790,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6786,"src":"798:7:27","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6793,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6783,"src":"814:4:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":6794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"822:1:27","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"814:9:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":6792,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"808:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":6791,"name":"int16","nodeType":"ElementaryTypeName","src":"808:5:27","typeDescriptions":{}}},"id":6796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"808:16:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"798:26:27","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":6798,"nodeType":"ExpressionStatement","src":"798:26:27"},{"expression":{"id":6806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6799,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6788,"src":"835:6:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6802,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6783,"src":"850:4:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"323536","id":6803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"857:3:27","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"850:10:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":6801,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"844:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6800,"name":"uint8","nodeType":"ElementaryTypeName","src":"844:5:27","typeDescriptions":{}}},"id":6805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"844:17:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"835:26:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":6807,"nodeType":"ExpressionStatement","src":"835:26:27"}]},"documentation":{"id":6781,"nodeType":"StructuredDocumentation","src":"372:328:27","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":6809,"implemented":true,"kind":"function","modifiers":[],"name":"position","nodeType":"FunctionDefinition","parameters":{"id":6784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6783,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":6809,"src":"724:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6782,"name":"int24","nodeType":"ElementaryTypeName","src":"724:5:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"723:12:27"},"returnParameters":{"id":6789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6786,"mutability":"mutable","name":"wordPos","nodeType":"VariableDeclaration","scope":6809,"src":"758:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":6785,"name":"int16","nodeType":"ElementaryTypeName","src":"758:5:27","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"},{"constant":false,"id":6788,"mutability":"mutable","name":"bitPos","nodeType":"VariableDeclaration","scope":6809,"src":"773:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6787,"name":"uint8","nodeType":"ElementaryTypeName","src":"773:5:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"757:29:27"},"scope":7032,"src":"706:163:27","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":6851,"nodeType":"Block","src":"1263:225:27","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6822,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6816,"src":"1282:4:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":6823,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6818,"src":"1289:11:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1282:18:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1304:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1282:23:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6821,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1274:7:27","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":6827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1274:32:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6828,"nodeType":"ExpressionStatement","src":"1274:32:27"},{"assignments":[6830,6832],"declarations":[{"constant":false,"id":6830,"mutability":"mutable","name":"wordPos","nodeType":"VariableDeclaration","scope":6851,"src":"1352:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":6829,"name":"int16","nodeType":"ElementaryTypeName","src":"1352:5:27","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"},{"constant":false,"id":6832,"mutability":"mutable","name":"bitPos","nodeType":"VariableDeclaration","scope":6851,"src":"1367:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6831,"name":"uint8","nodeType":"ElementaryTypeName","src":"1367:5:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":6838,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6834,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6816,"src":"1392:4:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6835,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6818,"src":"1399:11:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1392:18:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":6833,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6809,"src":"1383:8:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_int16_$_t_uint8_$","typeString":"function (int24) pure returns (int16,uint8)"}},"id":6837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1383:28:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int16_$_t_uint8_$","typeString":"tuple(int16,uint8)"}},"nodeType":"VariableDeclarationStatement","src":"1351:60:27"},{"assignments":[6840],"declarations":[{"constant":false,"id":6840,"mutability":"mutable","name":"mask","nodeType":"VariableDeclaration","scope":6851,"src":"1422:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6839,"name":"uint256","nodeType":"ElementaryTypeName","src":"1422:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6844,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1437:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":6842,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6832,"src":"1442:6:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1437:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1422:26:27"},{"expression":{"id":6849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6845,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"1459:4:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":6847,"indexExpression":{"id":6846,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6830,"src":"1464:7:27","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1459:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"^=","rightHandSide":{"id":6848,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6840,"src":"1476:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1459:21:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6850,"nodeType":"ExpressionStatement","src":"1459:21:27"}]},"documentation":{"id":6810,"nodeType":"StructuredDocumentation","src":"877:248:27","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":6852,"implemented":true,"kind":"function","modifiers":[],"name":"flipTick","nodeType":"FunctionDefinition","parameters":{"id":6819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6814,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":6852,"src":"1159:38:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"typeName":{"id":6813,"keyType":{"id":6811,"name":"int16","nodeType":"ElementaryTypeName","src":"1167:5:27","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Mapping","src":"1159:25:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"valueType":{"id":6812,"name":"uint256","nodeType":"ElementaryTypeName","src":"1176:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":6816,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":6852,"src":"1208:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6815,"name":"int24","nodeType":"ElementaryTypeName","src":"1208:5:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6818,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":6852,"src":"1229:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6817,"name":"int24","nodeType":"ElementaryTypeName","src":"1229:5:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1148:105:27"},"returnParameters":{"id":6820,"nodeType":"ParameterList","parameters":[],"src":"1263:0:27"},"scope":7032,"src":"1131:357:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7030,"nodeType":"Block","src":"2455:1737:27","statements":[{"assignments":[6871],"declarations":[{"constant":false,"id":6871,"mutability":"mutable","name":"compressed","nodeType":"VariableDeclaration","scope":7030,"src":"2466:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6870,"name":"int24","nodeType":"ElementaryTypeName","src":"2466:5:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":6875,"initialValue":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6872,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6859,"src":"2485:4:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6873,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6861,"src":"2492:11:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2485:18:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"2466:37:27"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6876,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6859,"src":"2518:4:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":6877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2525:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2518:8:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6879,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6859,"src":"2530:4:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":6880,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6861,"src":"2537:11:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2530:18:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2552:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2530:23:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2518:35:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6888,"nodeType":"IfStatement","src":"2514:53:27","trueBody":{"expression":{"id":6886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"2555:12:27","subExpression":{"id":6885,"name":"compressed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"2555:10:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":6887,"nodeType":"ExpressionStatement","src":"2555:12:27"}},{"condition":{"id":6889,"name":"lte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6863,"src":"2619:3:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7028,"nodeType":"Block","src":"3358:827:27","statements":[{"assignments":[6956,6958],"declarations":[{"constant":false,"id":6956,"mutability":"mutable","name":"wordPos","nodeType":"VariableDeclaration","scope":7028,"src":"3472:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":6955,"name":"int16","nodeType":"ElementaryTypeName","src":"3472:5:27","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"},{"constant":false,"id":6958,"mutability":"mutable","name":"bitPos","nodeType":"VariableDeclaration","scope":7028,"src":"3487:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6957,"name":"uint8","nodeType":"ElementaryTypeName","src":"3487:5:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":6964,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6960,"name":"compressed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"3512:10:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3525:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3512:14:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":6959,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6809,"src":"3503:8:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_int16_$_t_uint8_$","typeString":"function (int24) pure returns (int16,uint8)"}},"id":6963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3503:24:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int16_$_t_uint8_$","typeString":"tuple(int16,uint8)"}},"nodeType":"VariableDeclarationStatement","src":"3471:56:27"},{"assignments":[6966],"declarations":[{"constant":false,"id":6966,"mutability":"mutable","name":"mask","nodeType":"VariableDeclaration","scope":7028,"src":"3601:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6965,"name":"uint256","nodeType":"ElementaryTypeName","src":"3601:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6975,"initialValue":{"id":6974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3616:20:27","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3619:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":6968,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"3624:6:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3619:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6970,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3618:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3634:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3618:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6973,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3617:19:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3601:35:27"},{"assignments":[6977],"declarations":[{"constant":false,"id":6977,"mutability":"mutable","name":"masked","nodeType":"VariableDeclaration","scope":7028,"src":"3651:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6976,"name":"uint256","nodeType":"ElementaryTypeName","src":"3651:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6983,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":6978,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6857,"src":"3668:4:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":6980,"indexExpression":{"id":6979,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6956,"src":"3673:7:27","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3668:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":6981,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6966,"src":"3684:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3668:20:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3651:37:27"},{"expression":{"id":6988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6984,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6868,"src":"3816:11:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6985,"name":"masked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6977,"src":"3830:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3840:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3830:11:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3816:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6989,"nodeType":"ExpressionStatement","src":"3816:25:27"},{"expression":{"id":7026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6990,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6866,"src":"3967:4:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":6991,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6868,"src":"3974:11:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":7024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":7021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":7010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7008,"name":"compressed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"4110:10:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":7009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4123:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4110:14:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":7015,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4138:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":7014,"name":"uint8","nodeType":"ElementaryTypeName","src":"4138:5:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":7013,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4133:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4133:11:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":7017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"4133:15:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7018,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"4151:6:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4133:24:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":7012,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4127:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":7011,"name":"int24","nodeType":"ElementaryTypeName","src":"4127:5:27","typeDescriptions":{}}},"id":7020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4127:31:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"4110:48:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":7022,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4109:50:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7023,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6861,"src":"4162:11:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"4109:64:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":7025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3974:199:27","trueExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":7007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":7004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6992,"name":"compressed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"4006:10:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4019:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4006:14:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6999,"name":"masked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6977,"src":"4057:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6997,"name":"BitMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4058,"src":"4029:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BitMath_$4058_$","typeString":"type(library BitMath)"}},"id":6998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"leastSignificantBit","nodeType":"MemberAccess","referencedDeclaration":4057,"src":"4029:27:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) pure returns (uint8)"}},"id":7000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4029:35:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7001,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"4067:6:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4029:44:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":6996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4023:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":6995,"name":"int24","nodeType":"ElementaryTypeName","src":"4023:5:27","typeDescriptions":{}}},"id":7003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4023:51:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"4006:68:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":7005,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4005:70:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7006,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6861,"src":"4078:11:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"4005:84:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3967:206:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":7027,"nodeType":"ExpressionStatement","src":"3967:206:27"}]},"id":7029,"nodeType":"IfStatement","src":"2615:1570:27","trueBody":{"id":6954,"nodeType":"Block","src":"2624:728:27","statements":[{"assignments":[6891,6893],"declarations":[{"constant":false,"id":6891,"mutability":"mutable","name":"wordPos","nodeType":"VariableDeclaration","scope":6954,"src":"2640:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":6890,"name":"int16","nodeType":"ElementaryTypeName","src":"2640:5:27","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"},{"constant":false,"id":6893,"mutability":"mutable","name":"bitPos","nodeType":"VariableDeclaration","scope":6954,"src":"2655:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6892,"name":"uint8","nodeType":"ElementaryTypeName","src":"2655:5:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":6897,"initialValue":{"arguments":[{"id":6895,"name":"compressed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"2680:10:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":6894,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6809,"src":"2671:8:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_int16_$_t_uint8_$","typeString":"function (int24) pure returns (int16,uint8)"}},"id":6896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2671:20:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int16_$_t_uint8_$","typeString":"tuple(int16,uint8)"}},"nodeType":"VariableDeclarationStatement","src":"2639:52:27"},{"assignments":[6899],"declarations":[{"constant":false,"id":6899,"mutability":"mutable","name":"mask","nodeType":"VariableDeclaration","scope":6954,"src":"2774:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6898,"name":"uint256","nodeType":"ElementaryTypeName","src":"2774:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6911,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2790:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":6901,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6893,"src":"2795:6:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2790:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6903,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2789:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2805:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2789:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2810:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":6907,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6893,"src":"2815:6:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2810:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6909,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2809:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2789:33:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2774:48:27"},{"assignments":[6913],"declarations":[{"constant":false,"id":6913,"mutability":"mutable","name":"masked","nodeType":"VariableDeclaration","scope":6954,"src":"2837:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6912,"name":"uint256","nodeType":"ElementaryTypeName","src":"2837:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6919,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":6914,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6857,"src":"2854:4:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":6916,"indexExpression":{"id":6915,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6891,"src":"2859:7:27","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2854:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":6917,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6899,"src":"2870:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2854:20:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2837:37:27"},{"expression":{"id":6924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6920,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6868,"src":"3010:11:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6921,"name":"masked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6913,"src":"3024:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3034:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3024:11:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3010:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6925,"nodeType":"ExpressionStatement","src":"3010:25:27"},{"expression":{"id":6952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6926,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6866,"src":"3161:4:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":6927,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6868,"src":"3168:11:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6942,"name":"compressed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"3299:10:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":6945,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6893,"src":"3318:6:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":6944,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3312:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":6943,"name":"int24","nodeType":"ElementaryTypeName","src":"3312:5:27","typeDescriptions":{}}},"id":6946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3312:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3299:26:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":6948,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3298:28:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6949,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6861,"src":"3329:11:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3298:42:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":6951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3168:172:27","trueExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":6938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6928,"name":"compressed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"3200:10:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6931,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6893,"src":"3219:6:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":6934,"name":"masked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6913,"src":"3255:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6932,"name":"BitMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4058,"src":"3228:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BitMath_$4058_$","typeString":"type(library BitMath)"}},"id":6933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mostSignificantBit","nodeType":"MemberAccess","referencedDeclaration":3896,"src":"3228:26:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) pure returns (uint8)"}},"id":6935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3228:34:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3219:43:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":6930,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3213:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":6929,"name":"int24","nodeType":"ElementaryTypeName","src":"3213:5:27","typeDescriptions":{}}},"id":6937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3213:50:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3200:63:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":6939,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3199:65:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6940,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6861,"src":"3267:11:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3199:79:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3161:179:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":6953,"nodeType":"ExpressionStatement","src":"3161:179:27"}]}}]},"documentation":{"id":6853,"nodeType":"StructuredDocumentation","src":"1496:734:27","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":7031,"implemented":true,"kind":"function","modifiers":[],"name":"nextInitializedTickWithinOneWord","nodeType":"FunctionDefinition","parameters":{"id":6864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6857,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":7031,"src":"2288:38:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"typeName":{"id":6856,"keyType":{"id":6854,"name":"int16","nodeType":"ElementaryTypeName","src":"2296:5:27","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Mapping","src":"2288:25:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"valueType":{"id":6855,"name":"uint256","nodeType":"ElementaryTypeName","src":"2305:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":6859,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":7031,"src":"2337:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6858,"name":"int24","nodeType":"ElementaryTypeName","src":"2337:5:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6861,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":7031,"src":"2358:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6860,"name":"int24","nodeType":"ElementaryTypeName","src":"2358:5:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6863,"mutability":"mutable","name":"lte","nodeType":"VariableDeclaration","scope":7031,"src":"2386:8:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6862,"name":"bool","nodeType":"ElementaryTypeName","src":"2386:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2277:124:27"},"returnParameters":{"id":6869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6866,"mutability":"mutable","name":"next","nodeType":"VariableDeclaration","scope":7031,"src":"2425:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6865,"name":"int24","nodeType":"ElementaryTypeName","src":"2425:5:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6868,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":7031,"src":"2437:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6867,"name":"bool","nodeType":"ElementaryTypeName","src":"2437:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2424:30:27"},"scope":7032,"src":"2236:1956:27","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":7033,"src":"346:3849:27"}],"src":"38:4159:27"},"id":27},"contracts/elixir-core/libraries/TickMath.sol":{"ast":{"absolutePath":"contracts/elixir-core/libraries/TickMath.sol","exportedSymbols":{"TickMath":[7567]},"id":7568,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7034,"literals":["solidity",">=","0.5",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"46:31:28"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":7035,"nodeType":"StructuredDocumentation","src":"81:238:28","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":7567,"linearizedBaseContracts":[7567],"name":"TickMath","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":7036,"nodeType":"StructuredDocumentation","src":"343:108:28","text":"@dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128"},"id":7040,"mutability":"constant","name":"MIN_TICK","nodeType":"VariableDeclaration","scope":7567,"src":"457:42:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":7037,"name":"int24","nodeType":"ElementaryTypeName","src":"457:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"value":{"id":7039,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"492:7:28","subExpression":{"hexValue":"383837323732","id":7038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"493:6:28","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":7041,"nodeType":"StructuredDocumentation","src":"506:107:28","text":"@dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128"},"id":7045,"mutability":"constant","name":"MAX_TICK","nodeType":"VariableDeclaration","scope":7567,"src":"619:44:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":7042,"name":"int24","nodeType":"ElementaryTypeName","src":"619:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"value":{"id":7044,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"654:9:28","subExpression":{"id":7043,"name":"MIN_TICK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7040,"src":"655:8:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":true,"documentation":{"id":7046,"nodeType":"StructuredDocumentation","src":"672:116:28","text":"@dev The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK)"},"id":7049,"mutability":"constant","name":"MIN_SQRT_RATIO","nodeType":"VariableDeclaration","scope":7567,"src":"794:53:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7047,"name":"uint160","nodeType":"ElementaryTypeName","src":"794:7:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"hexValue":"34323935313238373339","id":7048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"837:10:28","typeDescriptions":{"typeIdentifier":"t_rational_4295128739_by_1","typeString":"int_const 4295128739"},"value":"4295128739"},"visibility":"internal"},{"constant":true,"documentation":{"id":7050,"nodeType":"StructuredDocumentation","src":"854:116:28","text":"@dev The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK)"},"id":7053,"mutability":"constant","name":"MAX_SQRT_RATIO","nodeType":"VariableDeclaration","scope":7567,"src":"976:92:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7051,"name":"uint160","nodeType":"ElementaryTypeName","src":"976:7:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"hexValue":"31343631343436373033343835323130313033323837323733303532323033393838383232333738373233393730333432","id":7052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1019:49:28","typeDescriptions":{"typeIdentifier":"t_rational_1461446703485210103287273052203988822378723970342_by_1","typeString":"int_const 1461...(41 digits omitted)...0342"},"value":"1461446703485210103287273052203988822378723970342"},"visibility":"internal"},{"body":{"id":7426,"nodeType":"Block","src":"1469:2526:28","statements":[{"assignments":[7062],"declarations":[{"constant":false,"id":7062,"mutability":"mutable","name":"absTick","nodeType":"VariableDeclaration","scope":7426,"src":"1480:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7061,"name":"uint256","nodeType":"ElementaryTypeName","src":"1480:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7082,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":7065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7063,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7056,"src":"1498:4:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":7064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1505:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1498:8:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"arguments":[{"id":7078,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7056,"src":"1549:4:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":7077,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1542:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":7076,"name":"int256","nodeType":"ElementaryTypeName","src":"1542:6:28","typeDescriptions":{}}},"id":7079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1542:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1534:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7074,"name":"uint256","nodeType":"ElementaryTypeName","src":"1534:7:28","typeDescriptions":{}}},"id":7080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1534:21:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1498:57:28","trueExpression":{"arguments":[{"id":7072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1517:13:28","subExpression":{"arguments":[{"id":7070,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7056,"src":"1525:4:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":7069,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1518:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":7068,"name":"int256","nodeType":"ElementaryTypeName","src":"1518:6:28","typeDescriptions":{}}},"id":7071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1518:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1509:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7066,"name":"uint256","nodeType":"ElementaryTypeName","src":"1509:7:28","typeDescriptions":{}}},"id":7073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1509:22:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1480:75:28"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7084,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"1574:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":7087,"name":"MAX_TICK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7045,"src":"1593:8:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":7086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1585:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7085,"name":"uint256","nodeType":"ElementaryTypeName","src":"1585:7:28","typeDescriptions":{}}},"id":7088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1585:17:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1574:28:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"54","id":7090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1604:3:28","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":7083,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1566:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1566:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7092,"nodeType":"ExpressionStatement","src":"1566:42:28"},{"assignments":[7094],"declarations":[{"constant":false,"id":7094,"mutability":"mutable","name":"ratio","nodeType":"VariableDeclaration","scope":7426,"src":"1621:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7093,"name":"uint256","nodeType":"ElementaryTypeName","src":"1621:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7103,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7095,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"1637:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307831","id":7096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1647:3:28","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x1"},"src":"1637:13:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1654:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1637:18:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"3078313030303030303030303030303030303030303030303030303030303030303030","id":7101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1695:35:28","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"value":"0x100000000000000000000000000000000"},"id":7102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1637:93:28","trueExpression":{"hexValue":"30786666666362393333626436666164333761613264313632643161353934303031","id":7100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1658:34:28","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":"1621:109:28"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7104,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"1745:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307832","id":7105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1755:3:28","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x2"},"src":"1745:13:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1762:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1745:18:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7118,"nodeType":"IfStatement","src":"1741:83:28","trueBody":{"expression":{"id":7116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7109,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"1765:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7110,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"1774:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666663937323732333733643431333235396134363939303538306532313361","id":7111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1782:34:28","typeDescriptions":{"typeIdentifier":"t_rational_340248342086729790484326174814286782778_by_1","typeString":"int_const 3402...(31 digits omitted)...2778"},"value":"0xfff97272373d413259a46990580e213a"},"src":"1774:42:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7113,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1773:44:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1821:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"1773:51:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1765:59:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7117,"nodeType":"ExpressionStatement","src":"1765:59:28"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7119,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"1839:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307834","id":7120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1849:3:28","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x4"},"src":"1839:13:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1856:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1839:18:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7133,"nodeType":"IfStatement","src":"1835:83:28","trueBody":{"expression":{"id":7131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7124,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"1859:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7125,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"1868:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666663265353066356636353639333265663132333537636633633766646363","id":7126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1876:34:28","typeDescriptions":{"typeIdentifier":"t_rational_340214320654664324051920982716015181260_by_1","typeString":"int_const 3402...(31 digits omitted)...1260"},"value":"0xfff2e50f5f656932ef12357cf3c7fdcc"},"src":"1868:42:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7128,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1867:44:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1915:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"1867:51:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1859:59:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7132,"nodeType":"ExpressionStatement","src":"1859:59:28"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7134,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"1933:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307838","id":7135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1943:3:28","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x8"},"src":"1933:13:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1950:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1933:18:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7148,"nodeType":"IfStatement","src":"1929:83:28","trueBody":{"expression":{"id":7146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7139,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"1953:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7140,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"1962:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666653563616361376531306534653631633336323465616130393431636430","id":7141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1970:34:28","typeDescriptions":{"typeIdentifier":"t_rational_340146287995602323631171512101879684304_by_1","typeString":"int_const 3401...(31 digits omitted)...4304"},"value":"0xffe5caca7e10e4e61c3624eaa0941cd0"},"src":"1962:42:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1961:44:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2009:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"1961:51:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1953:59:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7147,"nodeType":"ExpressionStatement","src":"1953:59:28"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7149,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"2027:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783130","id":7150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2037:4:28","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"2027:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2045:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2027:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7163,"nodeType":"IfStatement","src":"2023:84:28","trueBody":{"expression":{"id":7161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7154,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"2048:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7155,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"2057:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666636239383433643630663631353963396462353838333563393236363434","id":7156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2065:34:28","typeDescriptions":{"typeIdentifier":"t_rational_340010263488231146823593991679159461444_by_1","typeString":"int_const 3400...(31 digits omitted)...1444"},"value":"0xffcb9843d60f6159c9db58835c926644"},"src":"2057:42:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7158,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2056:44:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2104:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2056:51:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2048:59:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7162,"nodeType":"ExpressionStatement","src":"2048:59:28"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7164,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"2122:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783230","id":7165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2132:4:28","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"2122:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2140:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2122:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7178,"nodeType":"IfStatement","src":"2118:84:28","trueBody":{"expression":{"id":7176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7169,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"2143:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7170,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"2152:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666393733623431666139386330383134373265363839366466623235346330","id":7171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2160:34:28","typeDescriptions":{"typeIdentifier":"t_rational_339738377640345403697157401104375502016_by_1","typeString":"int_const 3397...(31 digits omitted)...2016"},"value":"0xff973b41fa98c081472e6896dfb254c0"},"src":"2152:42:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7173,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2151:44:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2199:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2151:51:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2143:59:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7177,"nodeType":"ExpressionStatement","src":"2143:59:28"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7179,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"2217:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783430","id":7180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2227:4:28","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"src":"2217:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2235:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2217:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7193,"nodeType":"IfStatement","src":"2213:84:28","trueBody":{"expression":{"id":7191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7184,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"2238:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7185,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"2247:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666326561313634363663393661333834336563373862333236623532383631","id":7186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2255:34:28","typeDescriptions":{"typeIdentifier":"t_rational_339195258003219555707034227454543997025_by_1","typeString":"int_const 3391...(31 digits omitted)...7025"},"value":"0xff2ea16466c96a3843ec78b326b52861"},"src":"2247:42:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7188,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2246:44:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2294:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2246:51:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2238:59:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7192,"nodeType":"ExpressionStatement","src":"2238:59:28"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7194,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"2312:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783830","id":7195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2322:4:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"src":"2312:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2330:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2312:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7208,"nodeType":"IfStatement","src":"2308:84:28","trueBody":{"expression":{"id":7206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7199,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"2333:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7200,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"2342:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786665356465653034366139396132613831316334363166313936396333303533","id":7201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2350:34:28","typeDescriptions":{"typeIdentifier":"t_rational_338111622100601834656805679988414885971_by_1","typeString":"int_const 3381...(31 digits omitted)...5971"},"value":"0xfe5dee046a99a2a811c461f1969c3053"},"src":"2342:42:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7203,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2341:44:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2389:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2341:51:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2333:59:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7207,"nodeType":"ExpressionStatement","src":"2333:59:28"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7209,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"2407:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078313030","id":7210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2417:5:28","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"0x100"},"src":"2407:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2426:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2407:20:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7223,"nodeType":"IfStatement","src":"2403:85:28","trueBody":{"expression":{"id":7221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7214,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"2429:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7215,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"2438:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786663626538366337393030613838616564636666633833623437396161336134","id":7216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2446:34:28","typeDescriptions":{"typeIdentifier":"t_rational_335954724994790223023589805789778977700_by_1","typeString":"int_const 3359...(31 digits omitted)...7700"},"value":"0xfcbe86c7900a88aedcffc83b479aa3a4"},"src":"2438:42:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7218,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2437:44:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2485:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2437:51:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2429:59:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7222,"nodeType":"ExpressionStatement","src":"2429:59:28"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7224,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"2503:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078323030","id":7225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2513:5:28","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"value":"0x200"},"src":"2503:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2522:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2503:20:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7238,"nodeType":"IfStatement","src":"2499:85:28","trueBody":{"expression":{"id":7236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7229,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"2525:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7230,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"2534:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786639383761373235336163343133313736663262303734636637383135653534","id":7231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2542:34:28","typeDescriptions":{"typeIdentifier":"t_rational_331682121138379247127172139078559817300_by_1","typeString":"int_const 3316...(31 digits omitted)...7300"},"value":"0xf987a7253ac413176f2b074cf7815e54"},"src":"2534:42:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7233,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2533:44:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2581:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2533:51:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2525:59:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7237,"nodeType":"ExpressionStatement","src":"2525:59:28"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7239,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"2599:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078343030","id":7240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2609:5:28","typeDescriptions":{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"},"value":"0x400"},"src":"2599:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2618:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2599:20:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7253,"nodeType":"IfStatement","src":"2595:85:28","trueBody":{"expression":{"id":7251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7244,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"2621:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7245,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"2630:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786633333932623038323262373030303539343063376133393865346237306633","id":7246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2638:34:28","typeDescriptions":{"typeIdentifier":"t_rational_323299236684853023288211250268160618739_by_1","typeString":"int_const 3232...(31 digits omitted)...8739"},"value":"0xf3392b0822b70005940c7a398e4b70f3"},"src":"2630:42:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7248,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2629:44:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2677:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2629:51:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2621:59:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7252,"nodeType":"ExpressionStatement","src":"2621:59:28"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7254,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"2695:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078383030","id":7255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2705:5:28","typeDescriptions":{"typeIdentifier":"t_rational_2048_by_1","typeString":"int_const 2048"},"value":"0x800"},"src":"2695:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2714:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2695:20:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7268,"nodeType":"IfStatement","src":"2691:85:28","trueBody":{"expression":{"id":7266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7259,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"2717:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7260,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"2726:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786537313539343735613263323962373434336232396337666136653838396439","id":7261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2734:34:28","typeDescriptions":{"typeIdentifier":"t_rational_307163716377032989948697243942600083929_by_1","typeString":"int_const 3071...(31 digits omitted)...3929"},"value":"0xe7159475a2c29b7443b29c7fa6e889d9"},"src":"2726:42:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7263,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2725:44:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2773:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2725:51:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2717:59:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7267,"nodeType":"ExpressionStatement","src":"2717:59:28"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7269,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"2791:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307831303030","id":7270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2801:6:28","typeDescriptions":{"typeIdentifier":"t_rational_4096_by_1","typeString":"int_const 4096"},"value":"0x1000"},"src":"2791:16:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2811:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2791:21:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7283,"nodeType":"IfStatement","src":"2787:86:28","trueBody":{"expression":{"id":7281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7274,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"2814:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7275,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"2823:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786430393766336264666432303232623838343561643866373932616135383235","id":7276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2831:34:28","typeDescriptions":{"typeIdentifier":"t_rational_277268403626896220162999269216087595045_by_1","typeString":"int_const 2772...(31 digits omitted)...5045"},"value":"0xd097f3bdfd2022b8845ad8f792aa5825"},"src":"2823:42:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2822:44:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2870:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2822:51:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2814:59:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7282,"nodeType":"ExpressionStatement","src":"2814:59:28"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7284,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"2888:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307832303030","id":7285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2898:6:28","typeDescriptions":{"typeIdentifier":"t_rational_8192_by_1","typeString":"int_const 8192"},"value":"0x2000"},"src":"2888:16:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2908:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2888:21:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7298,"nodeType":"IfStatement","src":"2884:86:28","trueBody":{"expression":{"id":7296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7289,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"2911:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7290,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"2920:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786139663734363436326438373066646638613635646331663930653036316535","id":7291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2928:34:28","typeDescriptions":{"typeIdentifier":"t_rational_225923453940442621947126027127485391333_by_1","typeString":"int_const 2259...(31 digits omitted)...1333"},"value":"0xa9f746462d870fdf8a65dc1f90e061e5"},"src":"2920:42:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7293,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2919:44:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2967:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2919:51:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2911:59:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7297,"nodeType":"ExpressionStatement","src":"2911:59:28"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7299,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"2985:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307834303030","id":7300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2995:6:28","typeDescriptions":{"typeIdentifier":"t_rational_16384_by_1","typeString":"int_const 16384"},"value":"0x4000"},"src":"2985:16:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3005:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2985:21:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7313,"nodeType":"IfStatement","src":"2981:86:28","trueBody":{"expression":{"id":7311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7304,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"3008:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7305,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"3017:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30783730643836396131353664326131623839306262336466363262616633326637","id":7306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3025:34:28","typeDescriptions":{"typeIdentifier":"t_rational_149997214084966997727330242082538205943_by_1","typeString":"int_const 1499...(31 digits omitted)...5943"},"value":"0x70d869a156d2a1b890bb3df62baf32f7"},"src":"3017:42:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7308,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3016:44:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3064:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3016:51:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3008:59:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7312,"nodeType":"ExpressionStatement","src":"3008:59:28"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7314,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"3082:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307838303030","id":7315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3092:6:28","typeDescriptions":{"typeIdentifier":"t_rational_32768_by_1","typeString":"int_const 32768"},"value":"0x8000"},"src":"3082:16:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3102:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3082:21:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7328,"nodeType":"IfStatement","src":"3078:86:28","trueBody":{"expression":{"id":7326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7319,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"3105:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7320,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"3114:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30783331626531333566393764303866643938313233313530353534326663666136","id":7321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3122:34:28","typeDescriptions":{"typeIdentifier":"t_rational_66119101136024775622716233608466517926_by_1","typeString":"int_const 6611...(30 digits omitted)...7926"},"value":"0x31be135f97d08fd981231505542fcfa6"},"src":"3114:42:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7323,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3113:44:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3161:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3113:51:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3105:59:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7327,"nodeType":"ExpressionStatement","src":"3105:59:28"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7329,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"3179:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783130303030","id":7330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3189:7:28","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"value":"0x10000"},"src":"3179:17:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3200:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3179:22:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7343,"nodeType":"IfStatement","src":"3175:86:28","trueBody":{"expression":{"id":7341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7334,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"3203:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7335,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"3212:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"307839616135303862356237613834653163363737646535346633653939626339","id":7336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3220:33:28","typeDescriptions":{"typeIdentifier":"t_rational_12847376061809297530290974190478138313_by_1","typeString":"int_const 1284...(30 digits omitted)...8313"},"value":"0x9aa508b5b7a84e1c677de54f3e99bc9"},"src":"3212:41:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7338,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3211:43:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3258:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3211:50:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3203:58:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7342,"nodeType":"ExpressionStatement","src":"3203:58:28"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7344,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"3276:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783230303030","id":7345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3286:7:28","typeDescriptions":{"typeIdentifier":"t_rational_131072_by_1","typeString":"int_const 131072"},"value":"0x20000"},"src":"3276:17:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3297:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3276:22:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7358,"nodeType":"IfStatement","src":"3272:85:28","trueBody":{"expression":{"id":7356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7349,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"3300:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7350,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"3309:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3078356436616638646564623831313936363939633332393232356565363034","id":7351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3317:32:28","typeDescriptions":{"typeIdentifier":"t_rational_485053260817066172746253684029974020_by_1","typeString":"int_const 4850...(28 digits omitted)...4020"},"value":"0x5d6af8dedb81196699c329225ee604"},"src":"3309:40:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7353,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3308:42:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3354:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3308:49:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3300:57:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7357,"nodeType":"ExpressionStatement","src":"3300:57:28"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7359,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"3372:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783430303030","id":7360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3382:7:28","typeDescriptions":{"typeIdentifier":"t_rational_262144_by_1","typeString":"int_const 262144"},"value":"0x40000"},"src":"3372:17:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3393:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3372:22:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7373,"nodeType":"IfStatement","src":"3368:83:28","trueBody":{"expression":{"id":7371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7364,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"3396:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7365,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"3405:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"307832323136653538346635666131656139323630343162656466653938","id":7366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3413:30:28","typeDescriptions":{"typeIdentifier":"t_rational_691415978906521570653435304214168_by_1","typeString":"int_const 6914...(25 digits omitted)...4168"},"value":"0x2216e584f5fa1ea926041bedfe98"},"src":"3405:38:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7368,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3404:40:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3448:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3404:47:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3396:55:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7372,"nodeType":"ExpressionStatement","src":"3396:55:28"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7374,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"3466:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783830303030","id":7375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3476:7:28","typeDescriptions":{"typeIdentifier":"t_rational_524288_by_1","typeString":"int_const 524288"},"value":"0x80000"},"src":"3466:17:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3487:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3466:22:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7388,"nodeType":"IfStatement","src":"3462:78:28","trueBody":{"expression":{"id":7386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7379,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"3490:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7380,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"3499:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30783438613137303339316637646334323434346538666132","id":7381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3507:25:28","typeDescriptions":{"typeIdentifier":"t_rational_1404880482679654955896180642_by_1","typeString":"int_const 1404880482679654955896180642"},"value":"0x48a170391f7dc42444e8fa2"},"src":"3499:33:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7383,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3498:35:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3537:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3498:42:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3490:50:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7387,"nodeType":"ExpressionStatement","src":"3490:50:28"}},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":7391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7389,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7056,"src":"3557:4:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3564:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3557:8:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7402,"nodeType":"IfStatement","src":"3553:47:28","trueBody":{"expression":{"id":7400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7392,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"3567:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":7395,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3580:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7394,"name":"uint256","nodeType":"ElementaryTypeName","src":"3580:7:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":7393,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3575:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3575:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":7397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"3575:17:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7398,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"3595:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3575:25:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3567:33:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7401,"nodeType":"ExpressionStatement","src":"3567:33:28"}},{"expression":{"id":7424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7403,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7059,"src":"3915:12:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7406,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"3939:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":7407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3948:2:28","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"3939:11:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7409,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3938:13:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7410,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"3955:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":7413,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":7411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3964:1:28","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":7412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3969:2:28","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"3964:7:28","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}}],"id":7414,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3963:9:28","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"3955:17:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3976:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3955:22:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"31","id":7419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3984:1:28","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"id":7420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3955:30:28","trueExpression":{"hexValue":"30","id":7418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3980:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":7421,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3954:32:28","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3938:48:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3930:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7404,"name":"uint160","nodeType":"ElementaryTypeName","src":"3930:7:28","typeDescriptions":{}}},"id":7423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3930:57:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3915:72:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":7425,"nodeType":"ExpressionStatement","src":"3915:72:28"}]},"documentation":{"id":7054,"nodeType":"StructuredDocumentation","src":"1077:301:28","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":7427,"implemented":true,"kind":"function","modifiers":[],"name":"getSqrtRatioAtTick","nodeType":"FunctionDefinition","parameters":{"id":7057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7056,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":7427,"src":"1412:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":7055,"name":"int24","nodeType":"ElementaryTypeName","src":"1412:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1411:12:28"},"returnParameters":{"id":7060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7059,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":7427,"src":"1447:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7058,"name":"uint160","nodeType":"ElementaryTypeName","src":"1447:7:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1446:22:28"},"scope":7567,"src":"1384:2611:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7565,"nodeType":"Block","src":"4506:4339:28","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7436,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7430,"src":"4625:12:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":7437,"name":"MIN_SQRT_RATIO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7049,"src":"4641:14:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4625:30:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7439,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7430,"src":"4659:12:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7440,"name":"MAX_SQRT_RATIO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7053,"src":"4674:14:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4659:29:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4625:63:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"52","id":7443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4690:3:28","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":7435,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4617:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4617:77:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7445,"nodeType":"ExpressionStatement","src":"4617:77:28"},{"assignments":[7447],"declarations":[{"constant":false,"id":7447,"mutability":"mutable","name":"ratio","nodeType":"VariableDeclaration","scope":7565,"src":"4705:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7446,"name":"uint256","nodeType":"ElementaryTypeName","src":"4705:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7454,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7450,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7430,"src":"4729:12:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":7449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4721:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7448,"name":"uint256","nodeType":"ElementaryTypeName","src":"4721:7:28","typeDescriptions":{}}},"id":7451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4721:21:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":7452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4746:2:28","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"4721:27:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4705:43:28"},{"assignments":[7456],"declarations":[{"constant":false,"id":7456,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":7565,"src":"4761:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7455,"name":"uint256","nodeType":"ElementaryTypeName","src":"4761:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7458,"initialValue":{"id":7457,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7447,"src":"4773:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4761:17:28"},{"assignments":[7460],"declarations":[{"constant":false,"id":7460,"mutability":"mutable","name":"msb","nodeType":"VariableDeclaration","scope":7565,"src":"4789:11:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7459,"name":"uint256","nodeType":"ElementaryTypeName","src":"4789:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7462,"initialValue":{"hexValue":"30","id":7461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4803:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4789:15:28"},{"AST":{"nodeType":"YulBlock","src":"4826:143:28","statements":[{"nodeType":"YulVariableDeclaration","src":"4841:58:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4854:1:28","type":"","value":"7"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"4860:1:28"},{"kind":"number","nodeType":"YulLiteral","src":"4863:34:28","type":"","value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4857:2:28"},"nodeType":"YulFunctionCall","src":"4857:41:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4850:3:28"},"nodeType":"YulFunctionCall","src":"4850:49:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"4845:1:28","type":""}]},{"nodeType":"YulAssignment","src":"4913:17:28","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"4923:3:28"},{"name":"f","nodeType":"YulIdentifier","src":"4928:1:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4920:2:28"},"nodeType":"YulFunctionCall","src":"4920:10:28"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"4913:3:28"}]},{"nodeType":"YulAssignment","src":"4944:14:28","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"4953:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"4956:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"4949:3:28"},"nodeType":"YulFunctionCall","src":"4949:9:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"4944:1:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7460,"isOffset":false,"isSlot":false,"src":"4913:3:28","valueSize":1},{"declaration":7460,"isOffset":false,"isSlot":false,"src":"4923:3:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"4860:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"4944:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"4956:1:28","valueSize":1}],"id":7463,"nodeType":"InlineAssembly","src":"4817:152:28"},{"AST":{"nodeType":"YulBlock","src":"4988:127:28","statements":[{"nodeType":"YulVariableDeclaration","src":"5003:42:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5016:1:28","type":"","value":"6"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5022:1:28"},{"kind":"number","nodeType":"YulLiteral","src":"5025:18:28","type":"","value":"0xFFFFFFFFFFFFFFFF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5019:2:28"},"nodeType":"YulFunctionCall","src":"5019:25:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5012:3:28"},"nodeType":"YulFunctionCall","src":"5012:33:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5007:1:28","type":""}]},{"nodeType":"YulAssignment","src":"5059:17:28","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5069:3:28"},{"name":"f","nodeType":"YulIdentifier","src":"5074:1:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5066:2:28"},"nodeType":"YulFunctionCall","src":"5066:10:28"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5059:3:28"}]},{"nodeType":"YulAssignment","src":"5090:14:28","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5099:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"5102:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5095:3:28"},"nodeType":"YulFunctionCall","src":"5095:9:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5090:1:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7460,"isOffset":false,"isSlot":false,"src":"5059:3:28","valueSize":1},{"declaration":7460,"isOffset":false,"isSlot":false,"src":"5069:3:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"5022:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"5090:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"5102:1:28","valueSize":1}],"id":7464,"nodeType":"InlineAssembly","src":"4979:136:28"},{"AST":{"nodeType":"YulBlock","src":"5134:119:28","statements":[{"nodeType":"YulVariableDeclaration","src":"5149:34:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5162:1:28","type":"","value":"5"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5168:1:28"},{"kind":"number","nodeType":"YulLiteral","src":"5171:10:28","type":"","value":"0xFFFFFFFF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5165:2:28"},"nodeType":"YulFunctionCall","src":"5165:17:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5158:3:28"},"nodeType":"YulFunctionCall","src":"5158:25:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5153:1:28","type":""}]},{"nodeType":"YulAssignment","src":"5197:17:28","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5207:3:28"},{"name":"f","nodeType":"YulIdentifier","src":"5212:1:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5204:2:28"},"nodeType":"YulFunctionCall","src":"5204:10:28"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5197:3:28"}]},{"nodeType":"YulAssignment","src":"5228:14:28","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5237:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"5240:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5233:3:28"},"nodeType":"YulFunctionCall","src":"5233:9:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5228:1:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7460,"isOffset":false,"isSlot":false,"src":"5197:3:28","valueSize":1},{"declaration":7460,"isOffset":false,"isSlot":false,"src":"5207:3:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"5168:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"5228:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"5240:1:28","valueSize":1}],"id":7465,"nodeType":"InlineAssembly","src":"5125:128:28"},{"AST":{"nodeType":"YulBlock","src":"5272:115:28","statements":[{"nodeType":"YulVariableDeclaration","src":"5287:30:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5300:1:28","type":"","value":"4"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5306:1:28"},{"kind":"number","nodeType":"YulLiteral","src":"5309:6:28","type":"","value":"0xFFFF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5303:2:28"},"nodeType":"YulFunctionCall","src":"5303:13:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5296:3:28"},"nodeType":"YulFunctionCall","src":"5296:21:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5291:1:28","type":""}]},{"nodeType":"YulAssignment","src":"5331:17:28","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5341:3:28"},{"name":"f","nodeType":"YulIdentifier","src":"5346:1:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5338:2:28"},"nodeType":"YulFunctionCall","src":"5338:10:28"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5331:3:28"}]},{"nodeType":"YulAssignment","src":"5362:14:28","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5371:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"5374:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5367:3:28"},"nodeType":"YulFunctionCall","src":"5367:9:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5362:1:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7460,"isOffset":false,"isSlot":false,"src":"5331:3:28","valueSize":1},{"declaration":7460,"isOffset":false,"isSlot":false,"src":"5341:3:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"5306:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"5362:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"5374:1:28","valueSize":1}],"id":7466,"nodeType":"InlineAssembly","src":"5263:124:28"},{"AST":{"nodeType":"YulBlock","src":"5406:113:28","statements":[{"nodeType":"YulVariableDeclaration","src":"5421:28:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5434:1:28","type":"","value":"3"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5440:1:28"},{"kind":"number","nodeType":"YulLiteral","src":"5443:4:28","type":"","value":"0xFF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5437:2:28"},"nodeType":"YulFunctionCall","src":"5437:11:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5430:3:28"},"nodeType":"YulFunctionCall","src":"5430:19:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5425:1:28","type":""}]},{"nodeType":"YulAssignment","src":"5463:17:28","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5473:3:28"},{"name":"f","nodeType":"YulIdentifier","src":"5478:1:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5470:2:28"},"nodeType":"YulFunctionCall","src":"5470:10:28"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5463:3:28"}]},{"nodeType":"YulAssignment","src":"5494:14:28","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5503:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"5506:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5499:3:28"},"nodeType":"YulFunctionCall","src":"5499:9:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5494:1:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7460,"isOffset":false,"isSlot":false,"src":"5463:3:28","valueSize":1},{"declaration":7460,"isOffset":false,"isSlot":false,"src":"5473:3:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"5440:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"5494:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"5506:1:28","valueSize":1}],"id":7467,"nodeType":"InlineAssembly","src":"5397:122:28"},{"AST":{"nodeType":"YulBlock","src":"5538:112:28","statements":[{"nodeType":"YulVariableDeclaration","src":"5553:27:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5566:1:28","type":"","value":"2"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5572:1:28"},{"kind":"number","nodeType":"YulLiteral","src":"5575:3:28","type":"","value":"0xF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5569:2:28"},"nodeType":"YulFunctionCall","src":"5569:10:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5562:3:28"},"nodeType":"YulFunctionCall","src":"5562:18:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5557:1:28","type":""}]},{"nodeType":"YulAssignment","src":"5594:17:28","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5604:3:28"},{"name":"f","nodeType":"YulIdentifier","src":"5609:1:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5601:2:28"},"nodeType":"YulFunctionCall","src":"5601:10:28"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5594:3:28"}]},{"nodeType":"YulAssignment","src":"5625:14:28","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5634:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"5637:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5630:3:28"},"nodeType":"YulFunctionCall","src":"5630:9:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5625:1:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7460,"isOffset":false,"isSlot":false,"src":"5594:3:28","valueSize":1},{"declaration":7460,"isOffset":false,"isSlot":false,"src":"5604:3:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"5572:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"5625:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"5637:1:28","valueSize":1}],"id":7468,"nodeType":"InlineAssembly","src":"5529:121:28"},{"AST":{"nodeType":"YulBlock","src":"5669:112:28","statements":[{"nodeType":"YulVariableDeclaration","src":"5684:27:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5697:1:28","type":"","value":"1"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5703:1:28"},{"kind":"number","nodeType":"YulLiteral","src":"5706:3:28","type":"","value":"0x3"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5700:2:28"},"nodeType":"YulFunctionCall","src":"5700:10:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5693:3:28"},"nodeType":"YulFunctionCall","src":"5693:18:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5688:1:28","type":""}]},{"nodeType":"YulAssignment","src":"5725:17:28","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5735:3:28"},{"name":"f","nodeType":"YulIdentifier","src":"5740:1:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5732:2:28"},"nodeType":"YulFunctionCall","src":"5732:10:28"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5725:3:28"}]},{"nodeType":"YulAssignment","src":"5756:14:28","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5765:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"5768:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5761:3:28"},"nodeType":"YulFunctionCall","src":"5761:9:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5756:1:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7460,"isOffset":false,"isSlot":false,"src":"5725:3:28","valueSize":1},{"declaration":7460,"isOffset":false,"isSlot":false,"src":"5735:3:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"5703:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"5756:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"5768:1:28","valueSize":1}],"id":7469,"nodeType":"InlineAssembly","src":"5660:121:28"},{"AST":{"nodeType":"YulBlock","src":"5800:76:28","statements":[{"nodeType":"YulVariableDeclaration","src":"5815:19:28","value":{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5827:1:28"},{"kind":"number","nodeType":"YulLiteral","src":"5830:3:28","type":"","value":"0x1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5824:2:28"},"nodeType":"YulFunctionCall","src":"5824:10:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5819:1:28","type":""}]},{"nodeType":"YulAssignment","src":"5848:17:28","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5858:3:28"},{"name":"f","nodeType":"YulIdentifier","src":"5863:1:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5855:2:28"},"nodeType":"YulFunctionCall","src":"5855:10:28"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5848:3:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7460,"isOffset":false,"isSlot":false,"src":"5848:3:28","valueSize":1},{"declaration":7460,"isOffset":false,"isSlot":false,"src":"5858:3:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"5827:1:28","valueSize":1}],"id":7470,"nodeType":"InlineAssembly","src":"5791:85:28"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7471,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7460,"src":"5892:3:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"313238","id":7472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5899:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"5892:10:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"id":7490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7483,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7456,"src":"5944:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7484,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7447,"src":"5948:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"313237","id":7485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5958:3:28","typeDescriptions":{"typeIdentifier":"t_rational_127_by_1","typeString":"int_const 127"},"value":"127"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7486,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7460,"src":"5964:3:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5958:9:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7488,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5957:11:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5948:20:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5944:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7491,"nodeType":"ExpressionStatement","src":"5944:24:28"},"id":7492,"nodeType":"IfStatement","src":"5888:80:28","trueBody":{"expression":{"id":7481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7474,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7456,"src":"5904:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7475,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7447,"src":"5908:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7476,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7460,"src":"5918:3:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"313237","id":7477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5924:3:28","typeDescriptions":{"typeIdentifier":"t_rational_127_by_1","typeString":"int_const 127"},"value":"127"},"src":"5918:9:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7479,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5917:11:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5908:20:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5904:24:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7482,"nodeType":"ExpressionStatement","src":"5904:24:28"}},{"assignments":[7494],"declarations":[{"constant":false,"id":7494,"mutability":"mutable","name":"log_2","nodeType":"VariableDeclaration","scope":7565,"src":"5981:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7493,"name":"int256","nodeType":"ElementaryTypeName","src":"5981:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":7504,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7497,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7460,"src":"6004:3:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5997:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":7495,"name":"int256","nodeType":"ElementaryTypeName","src":"5997:6:28","typeDescriptions":{}}},"id":7498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5997:11:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"313238","id":7499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6011:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"5997:17:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7501,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5996:19:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":7502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6019:2:28","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"5996:25:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"5981:40:28"},{"AST":{"nodeType":"YulBlock","src":"6043:156:28","statements":[{"nodeType":"YulAssignment","src":"6058:24:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6067:3:28","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6076:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"6079:1:28"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6072:3:28"},"nodeType":"YulFunctionCall","src":"6072:9:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6063:3:28"},"nodeType":"YulFunctionCall","src":"6063:19:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6058:1:28"}]},{"nodeType":"YulVariableDeclaration","src":"6096:20:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6109:3:28","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6114:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6105:3:28"},"nodeType":"YulFunctionCall","src":"6105:11:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6100:1:28","type":""}]},{"nodeType":"YulAssignment","src":"6130:30:28","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6142:5:28"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6153:2:28","type":"","value":"63"},{"name":"f","nodeType":"YulIdentifier","src":"6157:1:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6149:3:28"},"nodeType":"YulFunctionCall","src":"6149:10:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6139:2:28"},"nodeType":"YulFunctionCall","src":"6139:21:28"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6130:5:28"}]},{"nodeType":"YulAssignment","src":"6174:14:28","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6183:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"6186:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6179:3:28"},"nodeType":"YulFunctionCall","src":"6179:9:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6174:1:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7494,"isOffset":false,"isSlot":false,"src":"6130:5:28","valueSize":1},{"declaration":7494,"isOffset":false,"isSlot":false,"src":"6142:5:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6058:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6076:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6079:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6114:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6174:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6186:1:28","valueSize":1}],"id":7505,"nodeType":"InlineAssembly","src":"6034:165:28"},{"AST":{"nodeType":"YulBlock","src":"6218:156:28","statements":[{"nodeType":"YulAssignment","src":"6233:24:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6242:3:28","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6251:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"6254:1:28"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6247:3:28"},"nodeType":"YulFunctionCall","src":"6247:9:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6238:3:28"},"nodeType":"YulFunctionCall","src":"6238:19:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6233:1:28"}]},{"nodeType":"YulVariableDeclaration","src":"6271:20:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6284:3:28","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6289:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6280:3:28"},"nodeType":"YulFunctionCall","src":"6280:11:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6275:1:28","type":""}]},{"nodeType":"YulAssignment","src":"6305:30:28","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6317:5:28"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6328:2:28","type":"","value":"62"},{"name":"f","nodeType":"YulIdentifier","src":"6332:1:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6324:3:28"},"nodeType":"YulFunctionCall","src":"6324:10:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6314:2:28"},"nodeType":"YulFunctionCall","src":"6314:21:28"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6305:5:28"}]},{"nodeType":"YulAssignment","src":"6349:14:28","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6358:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"6361:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6354:3:28"},"nodeType":"YulFunctionCall","src":"6354:9:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6349:1:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7494,"isOffset":false,"isSlot":false,"src":"6305:5:28","valueSize":1},{"declaration":7494,"isOffset":false,"isSlot":false,"src":"6317:5:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6233:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6251:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6254:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6289:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6349:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6361:1:28","valueSize":1}],"id":7506,"nodeType":"InlineAssembly","src":"6209:165:28"},{"AST":{"nodeType":"YulBlock","src":"6393:156:28","statements":[{"nodeType":"YulAssignment","src":"6408:24:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6417:3:28","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6426:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"6429:1:28"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6422:3:28"},"nodeType":"YulFunctionCall","src":"6422:9:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6413:3:28"},"nodeType":"YulFunctionCall","src":"6413:19:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6408:1:28"}]},{"nodeType":"YulVariableDeclaration","src":"6446:20:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6459:3:28","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6464:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6455:3:28"},"nodeType":"YulFunctionCall","src":"6455:11:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6450:1:28","type":""}]},{"nodeType":"YulAssignment","src":"6480:30:28","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6492:5:28"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6503:2:28","type":"","value":"61"},{"name":"f","nodeType":"YulIdentifier","src":"6507:1:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6499:3:28"},"nodeType":"YulFunctionCall","src":"6499:10:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6489:2:28"},"nodeType":"YulFunctionCall","src":"6489:21:28"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6480:5:28"}]},{"nodeType":"YulAssignment","src":"6524:14:28","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6533:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"6536:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6529:3:28"},"nodeType":"YulFunctionCall","src":"6529:9:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6524:1:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7494,"isOffset":false,"isSlot":false,"src":"6480:5:28","valueSize":1},{"declaration":7494,"isOffset":false,"isSlot":false,"src":"6492:5:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6408:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6426:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6429:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6464:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6524:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6536:1:28","valueSize":1}],"id":7507,"nodeType":"InlineAssembly","src":"6384:165:28"},{"AST":{"nodeType":"YulBlock","src":"6568:156:28","statements":[{"nodeType":"YulAssignment","src":"6583:24:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6592:3:28","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6601:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"6604:1:28"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6597:3:28"},"nodeType":"YulFunctionCall","src":"6597:9:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6588:3:28"},"nodeType":"YulFunctionCall","src":"6588:19:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6583:1:28"}]},{"nodeType":"YulVariableDeclaration","src":"6621:20:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6634:3:28","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6639:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6630:3:28"},"nodeType":"YulFunctionCall","src":"6630:11:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6625:1:28","type":""}]},{"nodeType":"YulAssignment","src":"6655:30:28","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6667:5:28"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6678:2:28","type":"","value":"60"},{"name":"f","nodeType":"YulIdentifier","src":"6682:1:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6674:3:28"},"nodeType":"YulFunctionCall","src":"6674:10:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6664:2:28"},"nodeType":"YulFunctionCall","src":"6664:21:28"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6655:5:28"}]},{"nodeType":"YulAssignment","src":"6699:14:28","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6708:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"6711:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6704:3:28"},"nodeType":"YulFunctionCall","src":"6704:9:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6699:1:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7494,"isOffset":false,"isSlot":false,"src":"6655:5:28","valueSize":1},{"declaration":7494,"isOffset":false,"isSlot":false,"src":"6667:5:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6583:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6601:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6604:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6639:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6699:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6711:1:28","valueSize":1}],"id":7508,"nodeType":"InlineAssembly","src":"6559:165:28"},{"AST":{"nodeType":"YulBlock","src":"6743:156:28","statements":[{"nodeType":"YulAssignment","src":"6758:24:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6767:3:28","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6776:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"6779:1:28"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6772:3:28"},"nodeType":"YulFunctionCall","src":"6772:9:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6763:3:28"},"nodeType":"YulFunctionCall","src":"6763:19:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6758:1:28"}]},{"nodeType":"YulVariableDeclaration","src":"6796:20:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6809:3:28","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6814:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6805:3:28"},"nodeType":"YulFunctionCall","src":"6805:11:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6800:1:28","type":""}]},{"nodeType":"YulAssignment","src":"6830:30:28","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6842:5:28"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6853:2:28","type":"","value":"59"},{"name":"f","nodeType":"YulIdentifier","src":"6857:1:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6849:3:28"},"nodeType":"YulFunctionCall","src":"6849:10:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6839:2:28"},"nodeType":"YulFunctionCall","src":"6839:21:28"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6830:5:28"}]},{"nodeType":"YulAssignment","src":"6874:14:28","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6883:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"6886:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6879:3:28"},"nodeType":"YulFunctionCall","src":"6879:9:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6874:1:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7494,"isOffset":false,"isSlot":false,"src":"6830:5:28","valueSize":1},{"declaration":7494,"isOffset":false,"isSlot":false,"src":"6842:5:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6758:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6776:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6779:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6814:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6874:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6886:1:28","valueSize":1}],"id":7509,"nodeType":"InlineAssembly","src":"6734:165:28"},{"AST":{"nodeType":"YulBlock","src":"6918:156:28","statements":[{"nodeType":"YulAssignment","src":"6933:24:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6942:3:28","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6951:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"6954:1:28"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6947:3:28"},"nodeType":"YulFunctionCall","src":"6947:9:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6938:3:28"},"nodeType":"YulFunctionCall","src":"6938:19:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6933:1:28"}]},{"nodeType":"YulVariableDeclaration","src":"6971:20:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6984:3:28","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6989:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6980:3:28"},"nodeType":"YulFunctionCall","src":"6980:11:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6975:1:28","type":""}]},{"nodeType":"YulAssignment","src":"7005:30:28","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7017:5:28"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7028:2:28","type":"","value":"58"},{"name":"f","nodeType":"YulIdentifier","src":"7032:1:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7024:3:28"},"nodeType":"YulFunctionCall","src":"7024:10:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7014:2:28"},"nodeType":"YulFunctionCall","src":"7014:21:28"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7005:5:28"}]},{"nodeType":"YulAssignment","src":"7049:14:28","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7058:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"7061:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7054:3:28"},"nodeType":"YulFunctionCall","src":"7054:9:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7049:1:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7494,"isOffset":false,"isSlot":false,"src":"7005:5:28","valueSize":1},{"declaration":7494,"isOffset":false,"isSlot":false,"src":"7017:5:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6933:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6951:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6954:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"6989:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7049:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7061:1:28","valueSize":1}],"id":7510,"nodeType":"InlineAssembly","src":"6909:165:28"},{"AST":{"nodeType":"YulBlock","src":"7093:156:28","statements":[{"nodeType":"YulAssignment","src":"7108:24:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7117:3:28","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7126:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"7129:1:28"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7122:3:28"},"nodeType":"YulFunctionCall","src":"7122:9:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7113:3:28"},"nodeType":"YulFunctionCall","src":"7113:19:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7108:1:28"}]},{"nodeType":"YulVariableDeclaration","src":"7146:20:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7159:3:28","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7164:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7155:3:28"},"nodeType":"YulFunctionCall","src":"7155:11:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"7150:1:28","type":""}]},{"nodeType":"YulAssignment","src":"7180:30:28","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7192:5:28"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7203:2:28","type":"","value":"57"},{"name":"f","nodeType":"YulIdentifier","src":"7207:1:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7199:3:28"},"nodeType":"YulFunctionCall","src":"7199:10:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7189:2:28"},"nodeType":"YulFunctionCall","src":"7189:21:28"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7180:5:28"}]},{"nodeType":"YulAssignment","src":"7224:14:28","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7233:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"7236:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7229:3:28"},"nodeType":"YulFunctionCall","src":"7229:9:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7224:1:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7494,"isOffset":false,"isSlot":false,"src":"7180:5:28","valueSize":1},{"declaration":7494,"isOffset":false,"isSlot":false,"src":"7192:5:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7108:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7126:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7129:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7164:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7224:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7236:1:28","valueSize":1}],"id":7511,"nodeType":"InlineAssembly","src":"7084:165:28"},{"AST":{"nodeType":"YulBlock","src":"7268:156:28","statements":[{"nodeType":"YulAssignment","src":"7283:24:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7292:3:28","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7301:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"7304:1:28"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7297:3:28"},"nodeType":"YulFunctionCall","src":"7297:9:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7288:3:28"},"nodeType":"YulFunctionCall","src":"7288:19:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7283:1:28"}]},{"nodeType":"YulVariableDeclaration","src":"7321:20:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7334:3:28","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7339:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7330:3:28"},"nodeType":"YulFunctionCall","src":"7330:11:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"7325:1:28","type":""}]},{"nodeType":"YulAssignment","src":"7355:30:28","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7367:5:28"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7378:2:28","type":"","value":"56"},{"name":"f","nodeType":"YulIdentifier","src":"7382:1:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7374:3:28"},"nodeType":"YulFunctionCall","src":"7374:10:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7364:2:28"},"nodeType":"YulFunctionCall","src":"7364:21:28"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7355:5:28"}]},{"nodeType":"YulAssignment","src":"7399:14:28","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7408:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"7411:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7404:3:28"},"nodeType":"YulFunctionCall","src":"7404:9:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7399:1:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7494,"isOffset":false,"isSlot":false,"src":"7355:5:28","valueSize":1},{"declaration":7494,"isOffset":false,"isSlot":false,"src":"7367:5:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7283:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7301:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7304:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7339:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7399:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7411:1:28","valueSize":1}],"id":7512,"nodeType":"InlineAssembly","src":"7259:165:28"},{"AST":{"nodeType":"YulBlock","src":"7443:156:28","statements":[{"nodeType":"YulAssignment","src":"7458:24:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7467:3:28","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7476:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"7479:1:28"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7472:3:28"},"nodeType":"YulFunctionCall","src":"7472:9:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7463:3:28"},"nodeType":"YulFunctionCall","src":"7463:19:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7458:1:28"}]},{"nodeType":"YulVariableDeclaration","src":"7496:20:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7509:3:28","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7514:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7505:3:28"},"nodeType":"YulFunctionCall","src":"7505:11:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"7500:1:28","type":""}]},{"nodeType":"YulAssignment","src":"7530:30:28","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7542:5:28"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7553:2:28","type":"","value":"55"},{"name":"f","nodeType":"YulIdentifier","src":"7557:1:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7549:3:28"},"nodeType":"YulFunctionCall","src":"7549:10:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7539:2:28"},"nodeType":"YulFunctionCall","src":"7539:21:28"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7530:5:28"}]},{"nodeType":"YulAssignment","src":"7574:14:28","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7583:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"7586:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7579:3:28"},"nodeType":"YulFunctionCall","src":"7579:9:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7574:1:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7494,"isOffset":false,"isSlot":false,"src":"7530:5:28","valueSize":1},{"declaration":7494,"isOffset":false,"isSlot":false,"src":"7542:5:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7458:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7476:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7479:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7514:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7574:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7586:1:28","valueSize":1}],"id":7513,"nodeType":"InlineAssembly","src":"7434:165:28"},{"AST":{"nodeType":"YulBlock","src":"7618:156:28","statements":[{"nodeType":"YulAssignment","src":"7633:24:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7642:3:28","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7651:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"7654:1:28"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7647:3:28"},"nodeType":"YulFunctionCall","src":"7647:9:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7638:3:28"},"nodeType":"YulFunctionCall","src":"7638:19:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7633:1:28"}]},{"nodeType":"YulVariableDeclaration","src":"7671:20:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7684:3:28","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7689:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7680:3:28"},"nodeType":"YulFunctionCall","src":"7680:11:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"7675:1:28","type":""}]},{"nodeType":"YulAssignment","src":"7705:30:28","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7717:5:28"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7728:2:28","type":"","value":"54"},{"name":"f","nodeType":"YulIdentifier","src":"7732:1:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7724:3:28"},"nodeType":"YulFunctionCall","src":"7724:10:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7714:2:28"},"nodeType":"YulFunctionCall","src":"7714:21:28"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7705:5:28"}]},{"nodeType":"YulAssignment","src":"7749:14:28","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7758:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"7761:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7754:3:28"},"nodeType":"YulFunctionCall","src":"7754:9:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7749:1:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7494,"isOffset":false,"isSlot":false,"src":"7705:5:28","valueSize":1},{"declaration":7494,"isOffset":false,"isSlot":false,"src":"7717:5:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7633:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7651:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7654:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7689:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7749:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7761:1:28","valueSize":1}],"id":7514,"nodeType":"InlineAssembly","src":"7609:165:28"},{"AST":{"nodeType":"YulBlock","src":"7793:156:28","statements":[{"nodeType":"YulAssignment","src":"7808:24:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7817:3:28","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7826:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"7829:1:28"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7822:3:28"},"nodeType":"YulFunctionCall","src":"7822:9:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7813:3:28"},"nodeType":"YulFunctionCall","src":"7813:19:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7808:1:28"}]},{"nodeType":"YulVariableDeclaration","src":"7846:20:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7859:3:28","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7864:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7855:3:28"},"nodeType":"YulFunctionCall","src":"7855:11:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"7850:1:28","type":""}]},{"nodeType":"YulAssignment","src":"7880:30:28","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7892:5:28"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7903:2:28","type":"","value":"53"},{"name":"f","nodeType":"YulIdentifier","src":"7907:1:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7899:3:28"},"nodeType":"YulFunctionCall","src":"7899:10:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7889:2:28"},"nodeType":"YulFunctionCall","src":"7889:21:28"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7880:5:28"}]},{"nodeType":"YulAssignment","src":"7924:14:28","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7933:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"7936:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7929:3:28"},"nodeType":"YulFunctionCall","src":"7929:9:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7924:1:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7494,"isOffset":false,"isSlot":false,"src":"7880:5:28","valueSize":1},{"declaration":7494,"isOffset":false,"isSlot":false,"src":"7892:5:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7808:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7826:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7829:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7864:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7924:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7936:1:28","valueSize":1}],"id":7515,"nodeType":"InlineAssembly","src":"7784:165:28"},{"AST":{"nodeType":"YulBlock","src":"7968:156:28","statements":[{"nodeType":"YulAssignment","src":"7983:24:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7992:3:28","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"8001:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"8004:1:28"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7997:3:28"},"nodeType":"YulFunctionCall","src":"7997:9:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7988:3:28"},"nodeType":"YulFunctionCall","src":"7988:19:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7983:1:28"}]},{"nodeType":"YulVariableDeclaration","src":"8021:20:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8034:3:28","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"8039:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8030:3:28"},"nodeType":"YulFunctionCall","src":"8030:11:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"8025:1:28","type":""}]},{"nodeType":"YulAssignment","src":"8055:30:28","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"8067:5:28"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8078:2:28","type":"","value":"52"},{"name":"f","nodeType":"YulIdentifier","src":"8082:1:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8074:3:28"},"nodeType":"YulFunctionCall","src":"8074:10:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8064:2:28"},"nodeType":"YulFunctionCall","src":"8064:21:28"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"8055:5:28"}]},{"nodeType":"YulAssignment","src":"8099:14:28","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"8108:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"8111:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8104:3:28"},"nodeType":"YulFunctionCall","src":"8104:9:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"8099:1:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7494,"isOffset":false,"isSlot":false,"src":"8055:5:28","valueSize":1},{"declaration":7494,"isOffset":false,"isSlot":false,"src":"8067:5:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"7983:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"8001:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"8004:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"8039:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"8099:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"8111:1:28","valueSize":1}],"id":7516,"nodeType":"InlineAssembly","src":"7959:165:28"},{"AST":{"nodeType":"YulBlock","src":"8143:156:28","statements":[{"nodeType":"YulAssignment","src":"8158:24:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8167:3:28","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"8176:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"8179:1:28"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"8172:3:28"},"nodeType":"YulFunctionCall","src":"8172:9:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8163:3:28"},"nodeType":"YulFunctionCall","src":"8163:19:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"8158:1:28"}]},{"nodeType":"YulVariableDeclaration","src":"8196:20:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8209:3:28","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"8214:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8205:3:28"},"nodeType":"YulFunctionCall","src":"8205:11:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"8200:1:28","type":""}]},{"nodeType":"YulAssignment","src":"8230:30:28","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"8242:5:28"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8253:2:28","type":"","value":"51"},{"name":"f","nodeType":"YulIdentifier","src":"8257:1:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8249:3:28"},"nodeType":"YulFunctionCall","src":"8249:10:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8239:2:28"},"nodeType":"YulFunctionCall","src":"8239:21:28"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"8230:5:28"}]},{"nodeType":"YulAssignment","src":"8274:14:28","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"8283:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"8286:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8279:3:28"},"nodeType":"YulFunctionCall","src":"8279:9:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"8274:1:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7494,"isOffset":false,"isSlot":false,"src":"8230:5:28","valueSize":1},{"declaration":7494,"isOffset":false,"isSlot":false,"src":"8242:5:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"8158:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"8176:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"8179:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"8214:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"8274:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"8286:1:28","valueSize":1}],"id":7517,"nodeType":"InlineAssembly","src":"8134:165:28"},{"AST":{"nodeType":"YulBlock","src":"8318:128:28","statements":[{"nodeType":"YulAssignment","src":"8333:24:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8342:3:28","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"8351:1:28"},{"name":"r","nodeType":"YulIdentifier","src":"8354:1:28"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"8347:3:28"},"nodeType":"YulFunctionCall","src":"8347:9:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8338:3:28"},"nodeType":"YulFunctionCall","src":"8338:19:28"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"8333:1:28"}]},{"nodeType":"YulVariableDeclaration","src":"8371:20:28","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8384:3:28","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"8389:1:28"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8380:3:28"},"nodeType":"YulFunctionCall","src":"8380:11:28"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"8375:1:28","type":""}]},{"nodeType":"YulAssignment","src":"8405:30:28","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"8417:5:28"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8428:2:28","type":"","value":"50"},{"name":"f","nodeType":"YulIdentifier","src":"8432:1:28"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8424:3:28"},"nodeType":"YulFunctionCall","src":"8424:10:28"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8414:2:28"},"nodeType":"YulFunctionCall","src":"8414:21:28"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"8405:5:28"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7494,"isOffset":false,"isSlot":false,"src":"8405:5:28","valueSize":1},{"declaration":7494,"isOffset":false,"isSlot":false,"src":"8417:5:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"8333:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"8351:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"8354:1:28","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"8389:1:28","valueSize":1}],"id":7518,"nodeType":"InlineAssembly","src":"8309:137:28"},{"assignments":[7520],"declarations":[{"constant":false,"id":7520,"mutability":"mutable","name":"log_sqrt10001","nodeType":"VariableDeclaration","scope":7565,"src":"8458:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7519,"name":"int256","nodeType":"ElementaryTypeName","src":"8458:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":7524,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7521,"name":"log_2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7494,"src":"8481:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"323535373338393538393939363033383236333437313431","id":7522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8489:24:28","typeDescriptions":{"typeIdentifier":"t_rational_255738958999603826347141_by_1","typeString":"int_const 255738958999603826347141"},"value":"255738958999603826347141"},"src":"8481:32:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"8458:55:28"},{"assignments":[7526],"declarations":[{"constant":false,"id":7526,"mutability":"mutable","name":"tickLow","nodeType":"VariableDeclaration","scope":7565,"src":"8544:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":7525,"name":"int24","nodeType":"ElementaryTypeName","src":"8544:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":7536,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7529,"name":"log_sqrt10001","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7520,"src":"8567:13:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"33343032393932393536383039313332343138353936313430313030363630323437323130","id":7530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8583:37:28","typeDescriptions":{"typeIdentifier":"t_rational_3402992956809132418596140100660247210_by_1","typeString":"int_const 3402...(29 digits omitted)...7210"},"value":"3402992956809132418596140100660247210"},"src":"8567:53:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7532,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8566:55:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8625:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8566:62:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8560:5:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":7527,"name":"int24","nodeType":"ElementaryTypeName","src":"8560:5:28","typeDescriptions":{}}},"id":7535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8560:69:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"8544:85:28"},{"assignments":[7538],"declarations":[{"constant":false,"id":7538,"mutability":"mutable","name":"tickHi","nodeType":"VariableDeclaration","scope":7565,"src":"8640:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":7537,"name":"int24","nodeType":"ElementaryTypeName","src":"8640:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":7548,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7541,"name":"log_sqrt10001","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7520,"src":"8662:13:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"323931333339343634373731393839363232393037303237363231313533333938303838343935","id":7542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8678:39:28","typeDescriptions":{"typeIdentifier":"t_rational_291339464771989622907027621153398088495_by_1","typeString":"int_const 2913...(31 digits omitted)...8495"},"value":"291339464771989622907027621153398088495"},"src":"8662:55:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7544,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8661:57:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8722:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8661:64:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7540,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8655:5:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":7539,"name":"int24","nodeType":"ElementaryTypeName","src":"8655:5:28","typeDescriptions":{}}},"id":7547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8655:71:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"8640:86:28"},{"expression":{"id":7563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7549,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"8739:4:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":7552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7550,"name":"tickLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7526,"src":"8746:7:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7551,"name":"tickHi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7538,"src":"8757:6:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"8746:17:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7555,"name":"tickHi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7538,"src":"8795:6:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":7554,"name":"getSqrtRatioAtTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7427,"src":"8776:18:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":7556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8776:26:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":7557,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7430,"src":"8806:12:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"8776:42:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":7560,"name":"tickLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7526,"src":"8830:7:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":7561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8776:61:28","trueExpression":{"id":7559,"name":"tickHi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7538,"src":"8821:6:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":7562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8746:91:28","trueExpression":{"id":7553,"name":"tickLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7526,"src":"8766:7:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"8739:98:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":7564,"nodeType":"ExpressionStatement","src":"8739:98:28"}]},"documentation":{"id":7428,"nodeType":"StructuredDocumentation","src":"4003:412:28","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":7566,"implemented":true,"kind":"function","modifiers":[],"name":"getTickAtSqrtRatio","nodeType":"FunctionDefinition","parameters":{"id":7431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7430,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":7566,"src":"4449:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7429,"name":"uint160","nodeType":"ElementaryTypeName","src":"4449:7:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"4448:22:28"},"returnParameters":{"id":7434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7433,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":7566,"src":"4494:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":7432,"name":"int24","nodeType":"ElementaryTypeName","src":"4494:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"4493:12:28"},"scope":7567,"src":"4421:4424:28","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7568,"src":"319:8529:28"}],"src":"46:8804:28"},"id":28},"contracts/elixir-core/libraries/TransferHelper.sol":{"ast":{"absolutePath":"contracts/elixir-core/libraries/TransferHelper.sol","exportedSymbols":{"IERC20Minimal":[3162],"TransferHelper":[7618]},"id":7619,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7569,"literals":["solidity",">=","0.6",".0"],"nodeType":"PragmaDirective","src":"46:24:29"},{"absolutePath":"contracts/elixir-core/interfaces/IERC20Minimal.sol","file":"../interfaces/IERC20Minimal.sol","id":7570,"nodeType":"ImportDirective","scope":7619,"sourceUnit":3163,"src":"74:41:29","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":7571,"nodeType":"StructuredDocumentation","src":"119:141:29","text":"@title TransferHelper\n @notice Contains helper methods for interacting with ERC20 tokens that do not consistently return true/false"},"fullyImplemented":true,"id":7618,"linearizedBaseContracts":[7618],"name":"TransferHelper","nodeType":"ContractDefinition","nodes":[{"body":{"id":7616,"nodeType":"Block","src":"722:240:29","statements":[{"assignments":[7582,7584],"declarations":[{"constant":false,"id":7582,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":7616,"src":"734:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7581,"name":"bool","nodeType":"ElementaryTypeName","src":"734:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7584,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":7616,"src":"748:17:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7583,"name":"bytes","nodeType":"ElementaryTypeName","src":"748:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7596,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"id":7589,"name":"IERC20Minimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3162,"src":"817:13:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Minimal_$3162_$","typeString":"type(contract IERC20Minimal)"}},"id":7590,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":3111,"src":"817:22:29","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20Minimal.transfer(address,uint256) returns (bool)"}},"id":7591,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"817:31:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":7592,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7576,"src":"850:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7593,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"854:5:29","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":7587,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"794:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"794:22:29","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":7594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"794:66:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":7585,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7574,"src":"769:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"769:10:29","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":7595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"769:102:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"733:138:29"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7598,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7582,"src":"890:7:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7599,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7584,"src":"902:4:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"902:11:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"917:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"902:16:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":7605,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7584,"src":"933:4:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":7607,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"940:4:29","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":7606,"name":"bool","nodeType":"ElementaryTypeName","src":"940:4:29","typeDescriptions":{}}}],"id":7608,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"939:6:29","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":7603,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"922:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"922:10:29","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":7609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"922:24:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"902:44:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":7611,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"901:46:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"890:57:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5446","id":7613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"949:4:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_cebb2b2e317200ffcf39e4291b6400d95f06e73adfd258bd495d227b7d846ff0","typeString":"literal_string \"TF\""},"value":"TF"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cebb2b2e317200ffcf39e4291b6400d95f06e73adfd258bd495d227b7d846ff0","typeString":"literal_string \"TF\""}],"id":7597,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"882:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"882:72:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7615,"nodeType":"ExpressionStatement","src":"882:72:29"}]},"documentation":{"id":7572,"nodeType":"StructuredDocumentation","src":"290:319:29","text":"@notice Transfers tokens from msg.sender to a recipient\n @dev Calls transfer on token contract, errors with TF 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":7617,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nodeType":"FunctionDefinition","parameters":{"id":7579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7574,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":7617,"src":"647:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7573,"name":"address","nodeType":"ElementaryTypeName","src":"647:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7576,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":7617,"src":"671:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7575,"name":"address","nodeType":"ElementaryTypeName","src":"671:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7578,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7617,"src":"692:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7577,"name":"uint256","nodeType":"ElementaryTypeName","src":"692:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"636:76:29"},"returnParameters":{"id":7580,"nodeType":"ParameterList","parameters":[],"src":"722:0:29"},"scope":7618,"src":"615:347:29","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":7619,"src":"260:705:29"}],"src":"46:921:29"},"id":29},"contracts/elixir-core/libraries/UnsafeMath.sol":{"ast":{"absolutePath":"contracts/elixir-core/libraries/UnsafeMath.sol","exportedSymbols":{"UnsafeMath":[7634]},"id":7635,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7620,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:30"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":7621,"nodeType":"StructuredDocumentation","src":"74:175:30","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":7634,"linearizedBaseContracts":[7634],"name":"UnsafeMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":7632,"nodeType":"Block","src":"582:90:30","statements":[{"AST":{"nodeType":"YulBlock","src":"602:63:30","statements":[{"nodeType":"YulAssignment","src":"617:37:30","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"630:1:30"},{"name":"y","nodeType":"YulIdentifier","src":"633:1:30"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"626:3:30"},"nodeType":"YulFunctionCall","src":"626:9:30"},{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"644:1:30"},{"name":"y","nodeType":"YulIdentifier","src":"647:1:30"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"640:3:30"},"nodeType":"YulFunctionCall","src":"640:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"651:1:30","type":"","value":"0"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"637:2:30"},"nodeType":"YulFunctionCall","src":"637:16:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"622:3:30"},"nodeType":"YulFunctionCall","src":"622:32:30"},"variableNames":[{"name":"z","nodeType":"YulIdentifier","src":"617:1:30"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7624,"isOffset":false,"isSlot":false,"src":"630:1:30","valueSize":1},{"declaration":7624,"isOffset":false,"isSlot":false,"src":"644:1:30","valueSize":1},{"declaration":7626,"isOffset":false,"isSlot":false,"src":"633:1:30","valueSize":1},{"declaration":7626,"isOffset":false,"isSlot":false,"src":"647:1:30","valueSize":1},{"declaration":7629,"isOffset":false,"isSlot":false,"src":"617:1:30","valueSize":1}],"id":7631,"nodeType":"InlineAssembly","src":"593:72:30"}]},"documentation":{"id":7622,"nodeType":"StructuredDocumentation","src":"275:222:30","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":7633,"implemented":true,"kind":"function","modifiers":[],"name":"divRoundingUp","nodeType":"FunctionDefinition","parameters":{"id":7627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7624,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":7633,"src":"526:9:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7623,"name":"uint256","nodeType":"ElementaryTypeName","src":"526:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7626,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":7633,"src":"537:9:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7625,"name":"uint256","nodeType":"ElementaryTypeName","src":"537:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"525:22:30"},"returnParameters":{"id":7630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7629,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":7633,"src":"571:9:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7628,"name":"uint256","nodeType":"ElementaryTypeName","src":"571:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"570:11:30"},"scope":7634,"src":"503:169:30","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7635,"src":"249:426:30"}],"src":"46:631:30"},"id":30},"contracts/elixir-core/test/BitMathEchidnaTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/BitMathEchidnaTest.sol","exportedSymbols":{"BitMath":[4058],"BitMathEchidnaTest":[7724]},"id":7725,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":7636,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:31"},{"absolutePath":"contracts/elixir-core/libraries/BitMath.sol","file":"../libraries/BitMath.sol","id":7637,"nodeType":"ImportDirective","scope":7725,"sourceUnit":4059,"src":"67:34:31","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":7724,"linearizedBaseContracts":[7724],"name":"BitMathEchidnaTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":7679,"nodeType":"Block","src":"206:171:31","statements":[{"assignments":[7643],"declarations":[{"constant":false,"id":7643,"mutability":"mutable","name":"msb","nodeType":"VariableDeclaration","scope":7679,"src":"217:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7642,"name":"uint8","nodeType":"ElementaryTypeName","src":"217:5:31","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":7648,"initialValue":{"arguments":[{"id":7646,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7639,"src":"256:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7644,"name":"BitMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4058,"src":"229:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BitMath_$4058_$","typeString":"type(library BitMath)"}},"id":7645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mostSignificantBit","nodeType":"MemberAccess","referencedDeclaration":3896,"src":"229:26:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) pure returns (uint8)"}},"id":7647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"229:33:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"217:45:31"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7650,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7639,"src":"280:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"32","id":7653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"298:1:31","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":7652,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"290:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7651,"name":"uint256","nodeType":"ElementaryTypeName","src":"290:7:31","typeDescriptions":{}}},"id":7654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"290:10:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":7655,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7643,"src":"302:3:31","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"290:15:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7657,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"289:17:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"280:26:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7649,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"273:6:31","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":7659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"273:34:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7660,"nodeType":"ExpressionStatement","src":"273:34:31"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7662,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7643,"src":"325:3:31","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"323535","id":7663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"332:3:31","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"325:10:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7665,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7639,"src":"339:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"32","id":7668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"355:1:31","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":7667,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"347:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7666,"name":"uint256","nodeType":"ElementaryTypeName","src":"347:7:31","typeDescriptions":{}}},"id":7669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"347:10:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7670,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7643,"src":"360:3:31","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":7671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"366:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"360:7:31","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":7673,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"359:9:31","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"347:21:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"339:29:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"325:43:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7661,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"318:6:31","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":7677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"318:51:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7678,"nodeType":"ExpressionStatement","src":"318:51:31"}]},"functionSelector":"f94ac90e","id":7680,"implemented":true,"kind":"function","modifiers":[],"name":"mostSignificantBitInvariant","nodeType":"FunctionDefinition","parameters":{"id":7640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7639,"mutability":"mutable","name":"input","nodeType":"VariableDeclaration","scope":7680,"src":"177:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7638,"name":"uint256","nodeType":"ElementaryTypeName","src":"177:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"176:15:31"},"returnParameters":{"id":7641,"nodeType":"ParameterList","parameters":[],"src":"206:0:31"},"scope":7724,"src":"140:237:31","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":7722,"nodeType":"Block","src":"452:167:31","statements":[{"assignments":[7686],"declarations":[{"constant":false,"id":7686,"mutability":"mutable","name":"lsb","nodeType":"VariableDeclaration","scope":7722,"src":"463:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7685,"name":"uint8","nodeType":"ElementaryTypeName","src":"463:5:31","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":7691,"initialValue":{"arguments":[{"id":7689,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7682,"src":"503:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7687,"name":"BitMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4058,"src":"475:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BitMath_$4058_$","typeString":"type(library BitMath)"}},"id":7688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"leastSignificantBit","nodeType":"MemberAccess","referencedDeclaration":4057,"src":"475:27:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) pure returns (uint8)"}},"id":7690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"475:34:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"463:46:31"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7693,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7682,"src":"527:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"32","id":7696,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"544:1:31","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":7695,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"536:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7694,"name":"uint256","nodeType":"ElementaryTypeName","src":"536:7:31","typeDescriptions":{}}},"id":7697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"536:10:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":7698,"name":"lsb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7686,"src":"548:3:31","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"536:15:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7700,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"535:17:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"527:25:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"556:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"527:30:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7692,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"520:6:31","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":7704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"520:38:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7705,"nodeType":"ExpressionStatement","src":"520:38:31"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7707,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7682,"src":"576:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"32","id":7710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"593:1:31","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":7709,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"585:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7708,"name":"uint256","nodeType":"ElementaryTypeName","src":"585:7:31","typeDescriptions":{}}},"id":7711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"585:10:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":7712,"name":"lsb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7686,"src":"597:3:31","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"585:15:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"603:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"585:19:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7716,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"584:21:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"576:29:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"609:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"576:34:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7706,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"569:6:31","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":7720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"569:42:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7721,"nodeType":"ExpressionStatement","src":"569:42:31"}]},"functionSelector":"2d711e0c","id":7723,"implemented":true,"kind":"function","modifiers":[],"name":"leastSignificantBitInvariant","nodeType":"FunctionDefinition","parameters":{"id":7683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7682,"mutability":"mutable","name":"input","nodeType":"VariableDeclaration","scope":7723,"src":"423:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7681,"name":"uint256","nodeType":"ElementaryTypeName","src":"423:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"422:15:31"},"returnParameters":{"id":7684,"nodeType":"ParameterList","parameters":[],"src":"452:0:31"},"scope":7724,"src":"385:234:31","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":7725,"src":"105:517:31"}],"src":"40:584:31"},"id":31},"contracts/elixir-core/test/BitMathTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/BitMathTest.sol","exportedSymbols":{"BitMath":[4058],"BitMathTest":[7802]},"id":7803,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":7726,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:32"},{"absolutePath":"contracts/elixir-core/libraries/BitMath.sol","file":"../libraries/BitMath.sol","id":7727,"nodeType":"ImportDirective","scope":7803,"sourceUnit":4059,"src":"67:34:32","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":7802,"linearizedBaseContracts":[7802],"name":"BitMathTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":7739,"nodeType":"Block","src":"204:55:32","statements":[{"expression":{"arguments":[{"id":7736,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7729,"src":"249:1:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7734,"name":"BitMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4058,"src":"222:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BitMath_$4058_$","typeString":"type(library BitMath)"}},"id":7735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mostSignificantBit","nodeType":"MemberAccess","referencedDeclaration":3896,"src":"222:26:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) pure returns (uint8)"}},"id":7737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"222:29:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":7733,"id":7738,"nodeType":"Return","src":"215:36:32"}]},"functionSelector":"e6bcbc65","id":7740,"implemented":true,"kind":"function","modifiers":[],"name":"mostSignificantBit","nodeType":"FunctionDefinition","parameters":{"id":7730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7729,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":7740,"src":"161:9:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7728,"name":"uint256","nodeType":"ElementaryTypeName","src":"161:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"160:11:32"},"returnParameters":{"id":7733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7732,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":7740,"src":"195:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7731,"name":"uint8","nodeType":"ElementaryTypeName","src":"195:5:32","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"194:9:32"},"scope":7802,"src":"133:126:32","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":7763,"nodeType":"Block","src":"350:127:32","statements":[{"assignments":[7748],"declarations":[{"constant":false,"id":7748,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":7763,"src":"361:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7747,"name":"uint256","nodeType":"ElementaryTypeName","src":"361:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7751,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":7749,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"381:7:32","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":7750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"381:9:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"361:29:32"},{"expression":{"arguments":[{"id":7755,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7742,"src":"428:1:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7752,"name":"BitMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4058,"src":"401:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BitMath_$4058_$","typeString":"type(library BitMath)"}},"id":7754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mostSignificantBit","nodeType":"MemberAccess","referencedDeclaration":3896,"src":"401:26:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) pure returns (uint8)"}},"id":7756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"401:29:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7757,"nodeType":"ExpressionStatement","src":"401:29:32"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7758,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7748,"src":"448:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":7759,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"460:7:32","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":7760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"460:9:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"448:21:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7746,"id":7762,"nodeType":"Return","src":"441:28:32"}]},"functionSelector":"0046b777","id":7764,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfMostSignificantBit","nodeType":"FunctionDefinition","parameters":{"id":7743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7742,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":7764,"src":"307:9:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7741,"name":"uint256","nodeType":"ElementaryTypeName","src":"307:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"306:11:32"},"returnParameters":{"id":7746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7745,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7764,"src":"341:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7744,"name":"uint256","nodeType":"ElementaryTypeName","src":"341:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"340:9:32"},"scope":7802,"src":"267:210:32","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":7776,"nodeType":"Block","src":"557:56:32","statements":[{"expression":{"arguments":[{"id":7773,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7766,"src":"603:1:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7771,"name":"BitMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4058,"src":"575:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BitMath_$4058_$","typeString":"type(library BitMath)"}},"id":7772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"leastSignificantBit","nodeType":"MemberAccess","referencedDeclaration":4057,"src":"575:27:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) pure returns (uint8)"}},"id":7774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"575:30:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":7770,"id":7775,"nodeType":"Return","src":"568:37:32"}]},"functionSelector":"d230d23f","id":7777,"implemented":true,"kind":"function","modifiers":[],"name":"leastSignificantBit","nodeType":"FunctionDefinition","parameters":{"id":7767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7766,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":7777,"src":"514:9:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7765,"name":"uint256","nodeType":"ElementaryTypeName","src":"514:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"513:11:32"},"returnParameters":{"id":7770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7769,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":7777,"src":"548:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7768,"name":"uint8","nodeType":"ElementaryTypeName","src":"548:5:32","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"547:9:32"},"scope":7802,"src":"485:128:32","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":7800,"nodeType":"Block","src":"705:128:32","statements":[{"assignments":[7785],"declarations":[{"constant":false,"id":7785,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":7800,"src":"716:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7784,"name":"uint256","nodeType":"ElementaryTypeName","src":"716:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7788,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":7786,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"736:7:32","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":7787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"736:9:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"716:29:32"},{"expression":{"arguments":[{"id":7792,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7779,"src":"784:1:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7789,"name":"BitMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4058,"src":"756:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BitMath_$4058_$","typeString":"type(library BitMath)"}},"id":7791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"leastSignificantBit","nodeType":"MemberAccess","referencedDeclaration":4057,"src":"756:27:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) pure returns (uint8)"}},"id":7793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"756:30:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7794,"nodeType":"ExpressionStatement","src":"756:30:32"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7795,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7785,"src":"804:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":7796,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"816:7:32","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":7797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"816:9:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"804:21:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7783,"id":7799,"nodeType":"Return","src":"797:28:32"}]},"functionSelector":"6b83cf26","id":7801,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfLeastSignificantBit","nodeType":"FunctionDefinition","parameters":{"id":7780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7779,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":7801,"src":"662:9:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7778,"name":"uint256","nodeType":"ElementaryTypeName","src":"662:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"661:11:32"},"returnParameters":{"id":7783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7782,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7801,"src":"696:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7781,"name":"uint256","nodeType":"ElementaryTypeName","src":"696:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"695:9:32"},"scope":7802,"src":"621:212:32","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":7803,"src":"105:731:32"}],"src":"40:798:32"},"id":32},"contracts/elixir-core/test/ElixirPoolSwapTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/ElixirPoolSwapTest.sol","exportedSymbols":{"ElixirPoolSwapTest":[7930],"IERC20Minimal":[3162],"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"IElixirSwapCallback":[3315]},"id":7931,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":7804,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:33"},{"absolutePath":"contracts/elixir-core/interfaces/IERC20Minimal.sol","file":"../interfaces/IERC20Minimal.sol","id":7805,"nodeType":"ImportDirective","scope":7931,"sourceUnit":3163,"src":"67:41:33","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol","file":"../interfaces/callback/IElixirSwapCallback.sol","id":7806,"nodeType":"ImportDirective","scope":7931,"sourceUnit":3316,"src":"112:56:33","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"../interfaces/IElixirPool.sol","id":7807,"nodeType":"ImportDirective","scope":7931,"sourceUnit":3274,"src":"170:39:33","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7808,"name":"IElixirSwapCallback","nodeType":"UserDefinedTypeName","referencedDeclaration":3315,"src":"244:19:33","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirSwapCallback_$3315","typeString":"contract IElixirSwapCallback"}},"id":7809,"nodeType":"InheritanceSpecifier","src":"244:19:33"}],"contractDependencies":[3315],"contractKind":"contract","fullyImplemented":true,"id":7930,"linearizedBaseContracts":[7930,3315],"name":"ElixirPoolSwapTest","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":7811,"mutability":"mutable","name":"_amount0Delta","nodeType":"VariableDeclaration","scope":7930,"src":"271:28:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7810,"name":"int256","nodeType":"ElementaryTypeName","src":"271:6:33","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"private"},{"constant":false,"id":7813,"mutability":"mutable","name":"_amount1Delta","nodeType":"VariableDeclaration","scope":7930,"src":"306:28:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7812,"name":"int256","nodeType":"ElementaryTypeName","src":"306:6:33","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"private"},{"body":{"id":7861,"nodeType":"Block","src":"647:300:33","statements":[{"expression":{"id":7850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":7830,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7824,"src":"659:12:33","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":7831,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7826,"src":"673:12:33","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7832,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"658:28:33","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"30","id":7839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"734:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"726:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7837,"name":"address","nodeType":"ElementaryTypeName","src":"726:7:33","typeDescriptions":{}}},"id":7840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"726:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7841,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7817,"src":"751:10:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":7842,"name":"amountSpecified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7819,"src":"776:15:33","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":7843,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7821,"src":"806:17:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"expression":{"id":7846,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"849:3:33","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"849:10:33","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":7844,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"838:3:33","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7845,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"838:10:33","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"838:22:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"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":7834,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7815,"src":"701:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7833,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"689:11:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":7835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"689:17:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":7836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":3392,"src":"689:22:33","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":7849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"689:182:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"src":"658:213:33","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7851,"nodeType":"ExpressionStatement","src":"658:213:33"},{"expression":{"id":7859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":7852,"name":"nextSqrtRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7828,"src":"885:13:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},null,null,null,null,null,null],"id":7853,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"884:27:33","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$__$__$__$__$__$__$","typeString":"tuple(uint160,,,,,,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":7855,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7815,"src":"926:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7854,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"914:11:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":7856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"914:17:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":7857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":3680,"src":"914:23:33","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":7858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"914:25:33","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":"884:55:33","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7860,"nodeType":"ExpressionStatement","src":"884:55:33"}]},"functionSelector":"7f2ba7bc","id":7862,"implemented":true,"kind":"function","modifiers":[],"name":"getSwapResult","nodeType":"FunctionDefinition","parameters":{"id":7822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7815,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":7862,"src":"376:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7814,"name":"address","nodeType":"ElementaryTypeName","src":"376:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7817,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":7862,"src":"399:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7816,"name":"bool","nodeType":"ElementaryTypeName","src":"399:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7819,"mutability":"mutable","name":"amountSpecified","nodeType":"VariableDeclaration","scope":7862,"src":"425:22:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7818,"name":"int256","nodeType":"ElementaryTypeName","src":"425:6:33","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7821,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":7862,"src":"458:25:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7820,"name":"uint160","nodeType":"ElementaryTypeName","src":"458:7:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"365:125:33"},"returnParameters":{"id":7829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7824,"mutability":"mutable","name":"amount0Delta","nodeType":"VariableDeclaration","scope":7862,"src":"541:19:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7823,"name":"int256","nodeType":"ElementaryTypeName","src":"541:6:33","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7826,"mutability":"mutable","name":"amount1Delta","nodeType":"VariableDeclaration","scope":7862,"src":"575:19:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7825,"name":"int256","nodeType":"ElementaryTypeName","src":"575:6:33","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7828,"mutability":"mutable","name":"nextSqrtRatio","nodeType":"VariableDeclaration","scope":7862,"src":"609:21:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7827,"name":"uint160","nodeType":"ElementaryTypeName","src":"609:7:33","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"526:115:33"},"scope":7930,"src":"343:604:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3314],"body":{"id":7928,"nodeType":"Block","src":"1098:517:33","statements":[{"assignments":[7873],"declarations":[{"constant":false,"id":7873,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":7928,"src":"1109:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7872,"name":"address","nodeType":"ElementaryTypeName","src":"1109:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7881,"initialValue":{"arguments":[{"id":7876,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7868,"src":"1137:4:33","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":7878,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1144:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7877,"name":"address","nodeType":"ElementaryTypeName","src":"1144:7:33","typeDescriptions":{}}}],"id":7879,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1143:9:33","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":7874,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1126:3:33","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7875,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1126:10:33","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":7880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1126:27:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"1109:44:33"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7882,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7864,"src":"1170:12:33","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1185:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1170:16:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7904,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7866,"src":"1394:12:33","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1409:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1394:16:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7926,"nodeType":"IfStatement","src":"1390:218:33","trueBody":{"id":7925,"nodeType":"Block","src":"1412:196:33","statements":[{"expression":{"arguments":[{"id":7916,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7873,"src":"1506:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7917,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1531:3:33","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1531:10:33","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":7921,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7866,"src":"1568:12:33","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7920,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1560:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7919,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:33","typeDescriptions":{}}},"id":7922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1560:21:33","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":7909,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1453:3:33","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1453:10:33","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":7908,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1441:11:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":7911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1441:23:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":7912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":3594,"src":"1441:30:33","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":7913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1441:32:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7907,"name":"IERC20Minimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3162,"src":"1427:13:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Minimal_$3162_$","typeString":"type(contract IERC20Minimal)"}},"id":7914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1427:47:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Minimal_$3162","typeString":"contract IERC20Minimal"}},"id":7915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":3143,"src":"1427:60:33","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":7923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1427:169:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7924,"nodeType":"ExpressionStatement","src":"1427:169:33"}]}},"id":7927,"nodeType":"IfStatement","src":"1166:442:33","trueBody":{"id":7903,"nodeType":"Block","src":"1188:196:33","statements":[{"expression":{"arguments":[{"id":7894,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7873,"src":"1282:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7895,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1307:3:33","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1307:10:33","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":7899,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7864,"src":"1344:12:33","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7898,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1336:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7897,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:33","typeDescriptions":{}}},"id":7900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1336:21:33","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":7887,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1229:3:33","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1229:10:33","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":7886,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1217:11:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":7889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1217:23:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":7890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":3588,"src":"1217:30:33","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":7891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1217:32:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7885,"name":"IERC20Minimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3162,"src":"1203:13:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Minimal_$3162_$","typeString":"type(contract IERC20Minimal)"}},"id":7892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1203:47:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Minimal_$3162","typeString":"contract IERC20Minimal"}},"id":7893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":3143,"src":"1203:60:33","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":7901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1203:169:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7902,"nodeType":"ExpressionStatement","src":"1203:169:33"}]}}]},"functionSelector":"d804d7a7","id":7929,"implemented":true,"kind":"function","modifiers":[],"name":"elixirSwapCallback","nodeType":"FunctionDefinition","overrides":{"id":7870,"nodeType":"OverrideSpecifier","overrides":[],"src":"1089:8:33"},"parameters":{"id":7869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7864,"mutability":"mutable","name":"amount0Delta","nodeType":"VariableDeclaration","scope":7929,"src":"993:19:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7863,"name":"int256","nodeType":"ElementaryTypeName","src":"993:6:33","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7866,"mutability":"mutable","name":"amount1Delta","nodeType":"VariableDeclaration","scope":7929,"src":"1023:19:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7865,"name":"int256","nodeType":"ElementaryTypeName","src":"1023:6:33","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7868,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":7929,"src":"1053:19:33","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7867,"name":"bytes","nodeType":"ElementaryTypeName","src":"1053:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"982:97:33"},"returnParameters":{"id":7871,"nodeType":"ParameterList","parameters":[],"src":"1098:0:33"},"scope":7930,"src":"955:660:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7931,"src":"213:1405:33"}],"src":"40:1580:33"},"id":33},"contracts/elixir-core/test/FullMathEchidnaTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/FullMathEchidnaTest.sol","exportedSymbols":{"FullMath":[4248],"FullMathEchidnaTest":[8166]},"id":8167,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":7932,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:34"},{"absolutePath":"contracts/elixir-core/libraries/FullMath.sol","file":"../libraries/FullMath.sol","id":7933,"nodeType":"ImportDirective","scope":8167,"sourceUnit":4249,"src":"67:35:34","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":8166,"linearizedBaseContracts":[8166],"name":"FullMathEchidnaTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":7990,"nodeType":"Block","src":"252:301:34","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7943,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7939,"src":"271:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"275:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"271:5:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7942,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"263:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":7946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"263:14:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7947,"nodeType":"ExpressionStatement","src":"263:14:34"},{"assignments":[7949],"declarations":[{"constant":false,"id":7949,"mutability":"mutable","name":"ceiled","nodeType":"VariableDeclaration","scope":7990,"src":"290:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7948,"name":"uint256","nodeType":"ElementaryTypeName","src":"290:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7956,"initialValue":{"arguments":[{"id":7952,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"333:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7953,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7937,"src":"336:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7954,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7939,"src":"339:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7950,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"307:8:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":7951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":4247,"src":"307:25:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"307:34:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"290:51:34"},{"assignments":[7958],"declarations":[{"constant":false,"id":7958,"mutability":"mutable","name":"floored","nodeType":"VariableDeclaration","scope":7990,"src":"352:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7957,"name":"uint256","nodeType":"ElementaryTypeName","src":"352:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7965,"initialValue":{"arguments":[{"id":7961,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"386:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7962,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7937,"src":"389:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7963,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7939,"src":"392:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7959,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"370:8:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":7960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"370:15:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"370:24:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"352:42:34"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7967,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"418:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7968,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7937,"src":"421:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7969,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7939,"src":"424:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7966,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"411:6:34","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"411:15:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"429:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"411:19:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7988,"nodeType":"Block","src":"494:52:34","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7983,"name":"ceiled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7949,"src":"516:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7984,"name":"floored","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7958,"src":"526:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"516:17:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7982,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"509:6:34","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":7986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"509:25:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7987,"nodeType":"ExpressionStatement","src":"509:25:34"}]},"id":7989,"nodeType":"IfStatement","src":"407:139:34","trueBody":{"id":7981,"nodeType":"Block","src":"432:56:34","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7974,"name":"ceiled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7949,"src":"454:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7975,"name":"floored","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7958,"src":"463:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"454:16:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":7977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"474:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"454:21:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7973,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"447:6:34","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":7979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"447:29:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7980,"nodeType":"ExpressionStatement","src":"447:29:34"}]}}]},"functionSelector":"695363a3","id":7991,"implemented":true,"kind":"function","modifiers":[],"name":"checkMulDivRounding","nodeType":"FunctionDefinition","parameters":{"id":7940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7935,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":7991,"src":"181:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7934,"name":"uint256","nodeType":"ElementaryTypeName","src":"181:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7937,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":7991,"src":"201:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7936,"name":"uint256","nodeType":"ElementaryTypeName","src":"201:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7939,"mutability":"mutable","name":"d","nodeType":"VariableDeclaration","scope":7991,"src":"221:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7938,"name":"uint256","nodeType":"ElementaryTypeName","src":"221:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"170:67:34"},"returnParameters":{"id":7941,"nodeType":"ParameterList","parameters":[],"src":"252:0:34"},"scope":8166,"src":"142:411:34","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":8077,"nodeType":"Block","src":"663:506:34","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8001,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7997,"src":"682:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"686:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"682:5:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8000,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"674:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"674:14:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8005,"nodeType":"ExpressionStatement","src":"674:14:34"},{"assignments":[8007],"declarations":[{"constant":false,"id":8007,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":8077,"src":"699:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8006,"name":"uint256","nodeType":"ElementaryTypeName","src":"699:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8014,"initialValue":{"arguments":[{"id":8010,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7993,"src":"727:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8011,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7995,"src":"730:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8012,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7997,"src":"733:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8008,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"711:8:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":8009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"711:15:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"711:24:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"699:36:34"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8015,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7993,"src":"750:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"755:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"750:6:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8018,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7995,"src":"760:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"765:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"760:6:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"750:16:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8030,"nodeType":"IfStatement","src":"746:84:34","trueBody":{"id":8029,"nodeType":"Block","src":"768:62:34","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8023,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8007,"src":"790:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"795:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"790:6:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8022,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"783:6:34","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"783:14:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8027,"nodeType":"ExpressionStatement","src":"783:14:34"},{"functionReturnParameters":7999,"id":8028,"nodeType":"Return","src":"812:7:34"}]}},{"assignments":[8032],"declarations":[{"constant":false,"id":8032,"mutability":"mutable","name":"x2","nodeType":"VariableDeclaration","scope":8077,"src":"964:10:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8031,"name":"uint256","nodeType":"ElementaryTypeName","src":"964:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8039,"initialValue":{"arguments":[{"id":8035,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8007,"src":"993:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8036,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7997,"src":"996:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8037,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7995,"src":"999:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8033,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"977:8:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":8034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"977:15:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"977:24:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"964:37:34"},{"assignments":[8041],"declarations":[{"constant":false,"id":8041,"mutability":"mutable","name":"y2","nodeType":"VariableDeclaration","scope":8077,"src":"1012:10:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8040,"name":"uint256","nodeType":"ElementaryTypeName","src":"1012:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8048,"initialValue":{"arguments":[{"id":8044,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8007,"src":"1041:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8045,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7997,"src":"1044:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8046,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7993,"src":"1047:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8042,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"1025:8:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":8043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"1025:15:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1025:24:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1012:37:34"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8050,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8032,"src":"1067:2:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":8051,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7993,"src":"1073:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1067:7:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8049,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1060:6:34","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1060:15:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8054,"nodeType":"ExpressionStatement","src":"1060:15:34"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8056,"name":"y2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8041,"src":"1093:2:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":8057,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7995,"src":"1099:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1093:7:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8055,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1086:6:34","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1086:15:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8060,"nodeType":"ExpressionStatement","src":"1086:15:34"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8062,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7993,"src":"1121:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8063,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8032,"src":"1125:2:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1121:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8065,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7997,"src":"1130:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1121:10:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8061,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1114:6:34","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1114:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8068,"nodeType":"ExpressionStatement","src":"1114:18:34"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8070,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7995,"src":"1150:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8071,"name":"y2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8041,"src":"1154:2:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1150:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8073,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7997,"src":"1159:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1150:10:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8069,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1143:6:34","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1143:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8076,"nodeType":"ExpressionStatement","src":"1143:18:34"}]},"functionSelector":"bf08c391","id":8078,"implemented":true,"kind":"function","modifiers":[],"name":"checkMulDiv","nodeType":"FunctionDefinition","parameters":{"id":7998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7993,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":8078,"src":"592:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7992,"name":"uint256","nodeType":"ElementaryTypeName","src":"592:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7995,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":8078,"src":"612:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7994,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7997,"mutability":"mutable","name":"d","nodeType":"VariableDeclaration","scope":8078,"src":"632:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7996,"name":"uint256","nodeType":"ElementaryTypeName","src":"632:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"581:67:34"},"returnParameters":{"id":7999,"nodeType":"ParameterList","parameters":[],"src":"663:0:34"},"scope":8166,"src":"561:608:34","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":8164,"nodeType":"Block","src":"1289:516:34","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8088,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8084,"src":"1308:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1312:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1308:5:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8087,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1300:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1300:14:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8092,"nodeType":"ExpressionStatement","src":"1300:14:34"},{"assignments":[8094],"declarations":[{"constant":false,"id":8094,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":8164,"src":"1325:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8093,"name":"uint256","nodeType":"ElementaryTypeName","src":"1325:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8101,"initialValue":{"arguments":[{"id":8097,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8080,"src":"1363:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8098,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8082,"src":"1366:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8099,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8084,"src":"1369:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8095,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"1337:8:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":8096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":4247,"src":"1337:25:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1337:34:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1325:46:34"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8102,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8080,"src":"1386:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1391:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1386:6:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8105,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8082,"src":"1396:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1401:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1396:6:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1386:16:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8117,"nodeType":"IfStatement","src":"1382:84:34","trueBody":{"id":8116,"nodeType":"Block","src":"1404:62:34","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8110,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8094,"src":"1426:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1431:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1426:6:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8109,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1419:6:34","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1419:14:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8114,"nodeType":"ExpressionStatement","src":"1419:14:34"},{"functionReturnParameters":8086,"id":8115,"nodeType":"Return","src":"1448:7:34"}]}},{"assignments":[8119],"declarations":[{"constant":false,"id":8119,"mutability":"mutable","name":"x2","nodeType":"VariableDeclaration","scope":8164,"src":"1600:10:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8118,"name":"uint256","nodeType":"ElementaryTypeName","src":"1600:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8126,"initialValue":{"arguments":[{"id":8122,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8094,"src":"1629:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8123,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8084,"src":"1632:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8124,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8082,"src":"1635:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8120,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"1613:8:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":8121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"1613:15:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1613:24:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1600:37:34"},{"assignments":[8128],"declarations":[{"constant":false,"id":8128,"mutability":"mutable","name":"y2","nodeType":"VariableDeclaration","scope":8164,"src":"1648:10:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8127,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8135,"initialValue":{"arguments":[{"id":8131,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8094,"src":"1677:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8132,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8084,"src":"1680:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8133,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8080,"src":"1683:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8129,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"1661:8:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":8130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"1661:15:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1661:24:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1648:37:34"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8137,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8119,"src":"1703:2:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8138,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8080,"src":"1709:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1703:7:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8136,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1696:6:34","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1696:15:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8141,"nodeType":"ExpressionStatement","src":"1696:15:34"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8143,"name":"y2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8128,"src":"1729:2:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8144,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8082,"src":"1735:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1729:7:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8142,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1722:6:34","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1722:15:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8147,"nodeType":"ExpressionStatement","src":"1722:15:34"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8149,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8119,"src":"1757:2:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8150,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8080,"src":"1762:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1757:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8152,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8084,"src":"1766:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1757:10:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8148,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1750:6:34","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1750:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8155,"nodeType":"ExpressionStatement","src":"1750:18:34"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8157,"name":"y2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8128,"src":"1786:2:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8158,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8082,"src":"1791:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1786:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8160,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8084,"src":"1795:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1786:10:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8156,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1779:6:34","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1779:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8163,"nodeType":"ExpressionStatement","src":"1779:18:34"}]},"functionSelector":"79eee487","id":8165,"implemented":true,"kind":"function","modifiers":[],"name":"checkMulDivRoundingUp","nodeType":"FunctionDefinition","parameters":{"id":8085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8080,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":8165,"src":"1218:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8079,"name":"uint256","nodeType":"ElementaryTypeName","src":"1218:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8082,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":8165,"src":"1238:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8081,"name":"uint256","nodeType":"ElementaryTypeName","src":"1238:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8084,"mutability":"mutable","name":"d","nodeType":"VariableDeclaration","scope":8165,"src":"1258:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8083,"name":"uint256","nodeType":"ElementaryTypeName","src":"1258:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1207:67:34"},"returnParameters":{"id":8086,"nodeType":"ParameterList","parameters":[],"src":"1289:0:34"},"scope":8166,"src":"1177:628:34","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":8167,"src":"106:1702:34"}],"src":"40:1770:34"},"id":34},"contracts/elixir-core/test/FullMathTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/FullMathTest.sol","exportedSymbols":{"FullMath":[4248],"FullMathTest":[8208]},"id":8209,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":8168,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:35"},{"absolutePath":"contracts/elixir-core/libraries/FullMath.sol","file":"../libraries/FullMath.sol","id":8169,"nodeType":"ImportDirective","scope":8209,"sourceUnit":4249,"src":"67:35:35","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":8208,"linearizedBaseContracts":[8208],"name":"FullMathTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":8187,"nodeType":"Block","src":"250:50:35","statements":[{"expression":{"arguments":[{"id":8182,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8171,"src":"284:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8183,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8173,"src":"287:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8184,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"290:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8180,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"268:8:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":8181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"268:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"268:24:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8179,"id":8186,"nodeType":"Return","src":"261:31:35"}]},"functionSelector":"aa9a0912","id":8188,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nodeType":"FunctionDefinition","parameters":{"id":8176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8171,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":8188,"src":"161:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8170,"name":"uint256","nodeType":"ElementaryTypeName","src":"161:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8173,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":8188,"src":"181:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8172,"name":"uint256","nodeType":"ElementaryTypeName","src":"181:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8175,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":8188,"src":"201:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8174,"name":"uint256","nodeType":"ElementaryTypeName","src":"201:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"150:67:35"},"returnParameters":{"id":8179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8178,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8188,"src":"241:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8177,"name":"uint256","nodeType":"ElementaryTypeName","src":"241:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"240:9:35"},"scope":8208,"src":"135:165:35","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":8206,"nodeType":"Block","src":"433:60:35","statements":[{"expression":{"arguments":[{"id":8201,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8190,"src":"477:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8202,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8192,"src":"480:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8203,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8194,"src":"483:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8199,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"451:8:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":8200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":4247,"src":"451:25:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"451:34:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8198,"id":8205,"nodeType":"Return","src":"444:41:35"}]},"functionSelector":"0af8b27f","id":8207,"implemented":true,"kind":"function","modifiers":[],"name":"mulDivRoundingUp","nodeType":"FunctionDefinition","parameters":{"id":8195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8190,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":8207,"src":"344:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8189,"name":"uint256","nodeType":"ElementaryTypeName","src":"344:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8192,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":8207,"src":"364:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8191,"name":"uint256","nodeType":"ElementaryTypeName","src":"364:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8194,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":8207,"src":"384:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8193,"name":"uint256","nodeType":"ElementaryTypeName","src":"384:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"333:67:35"},"returnParameters":{"id":8198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8197,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8207,"src":"424:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8196,"name":"uint256","nodeType":"ElementaryTypeName","src":"424:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"423:9:35"},"scope":8208,"src":"308:185:35","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":8209,"src":"106:390:35"}],"src":"40:458:35"},"id":35},"contracts/elixir-core/test/LiquidityMathTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/LiquidityMathTest.sol","exportedSymbols":{"LiquidityMath":[4300],"LiquidityMathTest":[8255]},"id":8256,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":8210,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:36"},{"absolutePath":"contracts/elixir-core/libraries/LiquidityMath.sol","file":"../libraries/LiquidityMath.sol","id":8211,"nodeType":"ImportDirective","scope":8256,"sourceUnit":4301,"src":"67:40:36","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":8255,"linearizedBaseContracts":[8255],"name":"LiquidityMathTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":8226,"nodeType":"Block","src":"218:54:36","statements":[{"expression":{"arguments":[{"id":8222,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8213,"src":"259:1:36","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":8223,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8215,"src":"262:1:36","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":8220,"name":"LiquidityMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4300,"src":"236:13:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityMath_$4300_$","typeString":"type(library LiquidityMath)"}},"id":8221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"addDelta","nodeType":"MemberAccess","referencedDeclaration":4299,"src":"236:22:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint128_$_t_int128_$returns$_t_uint128_$","typeString":"function (uint128,int128) pure returns (uint128)"}},"id":8224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"236:28:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":8219,"id":8225,"nodeType":"Return","src":"229:35:36"}]},"functionSelector":"402d44fb","id":8227,"implemented":true,"kind":"function","modifiers":[],"name":"addDelta","nodeType":"FunctionDefinition","parameters":{"id":8216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8213,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":8227,"src":"163:9:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":8212,"name":"uint128","nodeType":"ElementaryTypeName","src":"163:7:36","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":8215,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":8227,"src":"174:8:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":8214,"name":"int128","nodeType":"ElementaryTypeName","src":"174:6:36","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"162:21:36"},"returnParameters":{"id":8219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8218,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":8227,"src":"207:9:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":8217,"name":"uint128","nodeType":"ElementaryTypeName","src":"207:7:36","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"206:11:36"},"scope":8255,"src":"145:127:36","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":8253,"nodeType":"Block","src":"363:126:36","statements":[{"assignments":[8237],"declarations":[{"constant":false,"id":8237,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":8253,"src":"374:17:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8236,"name":"uint256","nodeType":"ElementaryTypeName","src":"374:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8240,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8238,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"394:7:36","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":8239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"394:9:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"374:29:36"},{"expression":{"arguments":[{"id":8244,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8229,"src":"437:1:36","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":8245,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8231,"src":"440:1:36","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":8241,"name":"LiquidityMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4300,"src":"414:13:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityMath_$4300_$","typeString":"type(library LiquidityMath)"}},"id":8243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"addDelta","nodeType":"MemberAccess","referencedDeclaration":4299,"src":"414:22:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint128_$_t_int128_$returns$_t_uint128_$","typeString":"function (uint128,int128) pure returns (uint128)"}},"id":8246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"414:28:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":8247,"nodeType":"ExpressionStatement","src":"414:28:36"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8248,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8237,"src":"460:9:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":8249,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"472:7:36","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":8250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"472:9:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"460:21:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8235,"id":8252,"nodeType":"Return","src":"453:28:36"}]},"functionSelector":"cf41632f","id":8254,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfAddDelta","nodeType":"FunctionDefinition","parameters":{"id":8232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8229,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":8254,"src":"310:9:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":8228,"name":"uint128","nodeType":"ElementaryTypeName","src":"310:7:36","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":8231,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":8254,"src":"321:8:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":8230,"name":"int128","nodeType":"ElementaryTypeName","src":"321:6:36","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"309:21:36"},"returnParameters":{"id":8235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8234,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8254,"src":"354:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8233,"name":"uint256","nodeType":"ElementaryTypeName","src":"354:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"353:9:36"},"scope":8255,"src":"280:209:36","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8256,"src":"111:381:36"}],"src":"40:454:36"},"id":36},"contracts/elixir-core/test/LowGasSafeMathEchidnaTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/LowGasSafeMathEchidnaTest.sol","exportedSymbols":{"LowGasSafeMath":[4430],"LowGasSafeMathEchidnaTest":[8440]},"id":8441,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":8257,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:37"},{"absolutePath":"contracts/elixir-core/libraries/LowGasSafeMath.sol","file":"../libraries/LowGasSafeMath.sol","id":8258,"nodeType":"ImportDirective","scope":8441,"sourceUnit":4431,"src":"67:41:37","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":8440,"linearizedBaseContracts":[8440],"name":"LowGasSafeMathEchidnaTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":8291,"nodeType":"Block","src":"208:119:37","statements":[{"assignments":[8266],"declarations":[{"constant":false,"id":8266,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":8291,"src":"219:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8265,"name":"uint256","nodeType":"ElementaryTypeName","src":"219:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8272,"initialValue":{"arguments":[{"id":8269,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8260,"src":"250:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8270,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8262,"src":"253:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8267,"name":"LowGasSafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4430,"src":"231:14:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowGasSafeMath_$4430_$","typeString":"type(library LowGasSafeMath)"}},"id":8268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":4325,"src":"231:18:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"231:24:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"219:36:37"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8274,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8266,"src":"273:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8275,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8260,"src":"278:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":8276,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8262,"src":"282:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"278:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"273:10:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8273,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"266:6:37","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"266:18:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8280,"nodeType":"ExpressionStatement","src":"266:18:37"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8282,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8266,"src":"302:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8283,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8260,"src":"307:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"302:6:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8285,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8266,"src":"312:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8286,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8262,"src":"317:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"312:6:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"302:16:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8281,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"295:6:37","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"295:24:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8290,"nodeType":"ExpressionStatement","src":"295:24:37"}]},"functionSelector":"0f935000","id":8292,"implemented":true,"kind":"function","modifiers":[],"name":"checkAdd","nodeType":"FunctionDefinition","parameters":{"id":8263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8260,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":8292,"src":"172:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8259,"name":"uint256","nodeType":"ElementaryTypeName","src":"172:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8262,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":8292,"src":"183:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8261,"name":"uint256","nodeType":"ElementaryTypeName","src":"183:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"171:22:37"},"returnParameters":{"id":8264,"nodeType":"ParameterList","parameters":[],"src":"208:0:37"},"scope":8440,"src":"154:173:37","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":8321,"nodeType":"Block","src":"389:109:37","statements":[{"assignments":[8300],"declarations":[{"constant":false,"id":8300,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":8321,"src":"400:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8299,"name":"uint256","nodeType":"ElementaryTypeName","src":"400:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8306,"initialValue":{"arguments":[{"id":8303,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8294,"src":"431:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8304,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8296,"src":"434:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8301,"name":"LowGasSafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4430,"src":"412:14:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowGasSafeMath_$4430_$","typeString":"type(library LowGasSafeMath)"}},"id":8302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":4347,"src":"412:18:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"412:24:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"400:36:37"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8308,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8300,"src":"454:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8309,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8294,"src":"459:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8310,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8296,"src":"463:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"459:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"454:10:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8307,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"447:6:37","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"447:18:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8314,"nodeType":"ExpressionStatement","src":"447:18:37"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8316,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8300,"src":"483:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":8317,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8294,"src":"488:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"483:6:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8315,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"476:6:37","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"476:14:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8320,"nodeType":"ExpressionStatement","src":"476:14:37"}]},"functionSelector":"6d886fae","id":8322,"implemented":true,"kind":"function","modifiers":[],"name":"checkSub","nodeType":"FunctionDefinition","parameters":{"id":8297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8294,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":8322,"src":"353:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8293,"name":"uint256","nodeType":"ElementaryTypeName","src":"353:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8296,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":8322,"src":"364:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8295,"name":"uint256","nodeType":"ElementaryTypeName","src":"364:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"352:22:37"},"returnParameters":{"id":8298,"nodeType":"ParameterList","parameters":[],"src":"389:0:37"},"scope":8440,"src":"335:163:37","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":8364,"nodeType":"Block","src":"560:141:37","statements":[{"assignments":[8330],"declarations":[{"constant":false,"id":8330,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":8364,"src":"571:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8329,"name":"uint256","nodeType":"ElementaryTypeName","src":"571:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8336,"initialValue":{"arguments":[{"id":8333,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8324,"src":"602:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8334,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8326,"src":"605:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8331,"name":"LowGasSafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4430,"src":"583:14:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowGasSafeMath_$4430_$","typeString":"type(library LowGasSafeMath)"}},"id":8332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":4375,"src":"583:18:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"583:24:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"571:36:37"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8338,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8330,"src":"625:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8339,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8324,"src":"630:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8340,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8326,"src":"634:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"630:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"625:10:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8337,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"618:6:37","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"618:18:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8344,"nodeType":"ExpressionStatement","src":"618:18:37"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8346,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8324,"src":"654:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"659:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"654:6:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8349,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8326,"src":"664:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"669:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"664:6:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"654:16:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8353,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8330,"src":"675:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8354,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8324,"src":"680:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"675:6:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8356,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8330,"src":"685:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8357,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8326,"src":"690:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"685:6:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"675:16:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":8360,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"674:18:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"654:38:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8345,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"647:6:37","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"647:46:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8363,"nodeType":"ExpressionStatement","src":"647:46:37"}]},"functionSelector":"0fe48c5c","id":8365,"implemented":true,"kind":"function","modifiers":[],"name":"checkMul","nodeType":"FunctionDefinition","parameters":{"id":8327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8324,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":8365,"src":"524:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8323,"name":"uint256","nodeType":"ElementaryTypeName","src":"524:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8326,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":8365,"src":"535:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8325,"name":"uint256","nodeType":"ElementaryTypeName","src":"535:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"523:22:37"},"returnParameters":{"id":8328,"nodeType":"ParameterList","parameters":[],"src":"560:0:37"},"scope":8440,"src":"506:195:37","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":8401,"nodeType":"Block","src":"762:124:37","statements":[{"assignments":[8373],"declarations":[{"constant":false,"id":8373,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":8401,"src":"773:8:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8372,"name":"int256","nodeType":"ElementaryTypeName","src":"773:6:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":8379,"initialValue":{"arguments":[{"id":8376,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8367,"src":"803:1:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":8377,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8369,"src":"806:1:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":8374,"name":"LowGasSafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4430,"src":"784:14:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowGasSafeMath_$4430_$","typeString":"type(library LowGasSafeMath)"}},"id":8375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":4402,"src":"784:18:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$","typeString":"function (int256,int256) pure returns (int256)"}},"id":8378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"784:24:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"773:35:37"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8381,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8373,"src":"826:1:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8382,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8367,"src":"831:1:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":8383,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8369,"src":"835:1:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"831:5:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"826:10:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8380,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"819:6:37","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"819:18:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8387,"nodeType":"ExpressionStatement","src":"819:18:37"},{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8389,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8369,"src":"855:1:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":8390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"859:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"855:5:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8395,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8373,"src":"871:1:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8396,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8367,"src":"876:1:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"871:6:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"855:22:37","trueExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8392,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8373,"src":"863:1:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8393,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8367,"src":"867:1:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"863:5:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8388,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"848:6:37","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"848:30:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8400,"nodeType":"ExpressionStatement","src":"848:30:37"}]},"functionSelector":"9239e777","id":8402,"implemented":true,"kind":"function","modifiers":[],"name":"checkAddi","nodeType":"FunctionDefinition","parameters":{"id":8370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8367,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":8402,"src":"728:8:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8366,"name":"int256","nodeType":"ElementaryTypeName","src":"728:6:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":8369,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":8402,"src":"738:8:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8368,"name":"int256","nodeType":"ElementaryTypeName","src":"738:6:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"727:20:37"},"returnParameters":{"id":8371,"nodeType":"ParameterList","parameters":[],"src":"762:0:37"},"scope":8440,"src":"709:177:37","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":8438,"nodeType":"Block","src":"947:124:37","statements":[{"assignments":[8410],"declarations":[{"constant":false,"id":8410,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":8438,"src":"958:8:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8409,"name":"int256","nodeType":"ElementaryTypeName","src":"958:6:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":8416,"initialValue":{"arguments":[{"id":8413,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8404,"src":"988:1:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":8414,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8406,"src":"991:1:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":8411,"name":"LowGasSafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4430,"src":"969:14:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowGasSafeMath_$4430_$","typeString":"type(library LowGasSafeMath)"}},"id":8412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":4429,"src":"969:18:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$","typeString":"function (int256,int256) pure returns (int256)"}},"id":8415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"969:24:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"958:35:37"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8418,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8410,"src":"1011:1:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8419,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8404,"src":"1016:1:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8420,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8406,"src":"1020:1:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1016:5:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1011:10:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8417,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1004:6:37","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1004:18:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8424,"nodeType":"ExpressionStatement","src":"1004:18:37"},{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8426,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8406,"src":"1040:1:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":8427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1044:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1040:5:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8432,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8410,"src":"1056:1:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":8433,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8404,"src":"1061:1:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1056:6:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1040:22:37","trueExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8429,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8410,"src":"1048:1:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":8430,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8404,"src":"1052:1:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1048:5:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8425,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1033:6:37","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1033:30:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8437,"nodeType":"ExpressionStatement","src":"1033:30:37"}]},"functionSelector":"bd78b20d","id":8439,"implemented":true,"kind":"function","modifiers":[],"name":"checkSubi","nodeType":"FunctionDefinition","parameters":{"id":8407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8404,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":8439,"src":"913:8:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8403,"name":"int256","nodeType":"ElementaryTypeName","src":"913:6:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":8406,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":8439,"src":"923:8:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8405,"name":"int256","nodeType":"ElementaryTypeName","src":"923:6:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"912:20:37"},"returnParameters":{"id":8408,"nodeType":"ParameterList","parameters":[],"src":"947:0:37"},"scope":8440,"src":"894:177:37","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":8441,"src":"112:962:37"}],"src":"40:1036:37"},"id":37},"contracts/elixir-core/test/MockTimeElixirPool.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/MockTimeElixirPool.sol","exportedSymbols":{"BitMath":[4058],"ElixirPool":[3090],"FixedPoint128":[4065],"FixedPoint96":[4075],"FullMath":[4248],"IERC20Minimal":[3162],"IElixirFactory":[3251],"IElixirFlashCallback":[3287],"IElixirMintCallback":[3301],"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"IElixirSwapCallback":[3315],"LiquidityMath":[4300],"LowGasSafeMath":[4430],"MockTimeElixirPool":[8520],"Oracle":[5283],"Position":[5456],"SafeCast":[5526],"SqrtPriceMath":[6042],"SwapMath":[6303],"Tick":[6776],"TickBitmap":[7032],"TickMath":[7567],"TransferHelper":[7618],"UnsafeMath":[7634]},"id":8521,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":8442,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:38"},{"absolutePath":"contracts/elixir-core/ElixirPool.sol","file":"../ElixirPool.sol","id":8443,"nodeType":"ImportDirective","scope":8521,"sourceUnit":3091,"src":"67:27:38","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8444,"name":"ElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":3090,"src":"174:10:38","typeDescriptions":{"typeIdentifier":"t_contract$_ElixirPool_$3090","typeString":"contract ElixirPool"}},"id":8445,"nodeType":"InheritanceSpecifier","src":"174:10:38"}],"contractDependencies":[3090,3273,3411,3447,3573,3613,3659,3779],"contractKind":"contract","fullyImplemented":true,"id":8520,"linearizedBaseContracts":[8520,3090,3273,3573,3659,3411,3447,3779,3613],"name":"MockTimeElixirPool","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"16ada547","id":8448,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":8520,"src":"245:32:38","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8446,"name":"uint256","nodeType":"ElementaryTypeName","src":"245:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31363031393036343030","id":8447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"267:10:38","typeDescriptions":{"typeIdentifier":"t_rational_1601906400_by_1","typeString":"int_const 1601906400"},"value":"1601906400"},"visibility":"public"},{"body":{"id":8457,"nodeType":"Block","src":"359:63:38","statements":[{"expression":{"id":8455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8453,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"370:20:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8454,"name":"_feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8450,"src":"393:21:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"370:44:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8456,"nodeType":"ExpressionStatement","src":"370:44:38"}]},"functionSelector":"d380c679","id":8458,"implemented":true,"kind":"function","modifiers":[],"name":"setFeeGrowthGlobal0X128","nodeType":"FunctionDefinition","parameters":{"id":8451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8450,"mutability":"mutable","name":"_feeGrowthGlobal0X128","nodeType":"VariableDeclaration","scope":8458,"src":"319:29:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8449,"name":"uint256","nodeType":"ElementaryTypeName","src":"319:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"318:31:38"},"returnParameters":{"id":8452,"nodeType":"ParameterList","parameters":[],"src":"359:0:38"},"scope":8520,"src":"286:136:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8467,"nodeType":"Block","src":"503:63:38","statements":[{"expression":{"id":8465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8463,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"514:20:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8464,"name":"_feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8460,"src":"537:21:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"514:44:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8466,"nodeType":"ExpressionStatement","src":"514:44:38"}]},"functionSelector":"f6eb760f","id":8468,"implemented":true,"kind":"function","modifiers":[],"name":"setFeeGrowthGlobal1X128","nodeType":"FunctionDefinition","parameters":{"id":8461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8460,"mutability":"mutable","name":"_feeGrowthGlobal1X128","nodeType":"VariableDeclaration","scope":8468,"src":"463:29:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8459,"name":"uint256","nodeType":"ElementaryTypeName","src":"463:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"462:31:38"},"returnParameters":{"id":8462,"nodeType":"ParameterList","parameters":[],"src":"503:0:38"},"scope":8520,"src":"430:136:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8477,"nodeType":"Block","src":"616:29:38","statements":[{"expression":{"id":8475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8473,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8448,"src":"627:4:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8474,"name":"by","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8470,"src":"635:2:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"627:10:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8476,"nodeType":"ExpressionStatement","src":"627:10:38"}]},"functionSelector":"07e32f0a","id":8478,"implemented":true,"kind":"function","modifiers":[],"name":"advanceTime","nodeType":"FunctionDefinition","parameters":{"id":8471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8470,"mutability":"mutable","name":"by","nodeType":"VariableDeclaration","scope":8478,"src":"595:10:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8469,"name":"uint256","nodeType":"ElementaryTypeName","src":"595:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"594:12:38"},"returnParameters":{"id":8472,"nodeType":"ParameterList","parameters":[],"src":"616:0:38"},"scope":8520,"src":"574:71:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8487,"nodeType":"Block","src":"700:37:38","statements":[{"expression":{"id":8485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8483,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":466,"src":"711:7:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8484,"name":"factory_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8480,"src":"721:8:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"711:18:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8486,"nodeType":"ExpressionStatement","src":"711:18:38"}]},"functionSelector":"5bb47808","id":8488,"implemented":true,"kind":"function","modifiers":[],"name":"setFactory","nodeType":"FunctionDefinition","parameters":{"id":8481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8480,"mutability":"mutable","name":"factory_","nodeType":"VariableDeclaration","scope":8488,"src":"673:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8479,"name":"address","nodeType":"ElementaryTypeName","src":"673:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"672:18:38"},"returnParameters":{"id":8482,"nodeType":"ParameterList","parameters":[],"src":"700:0:38"},"scope":8520,"src":"653:84:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8497,"nodeType":"Block","src":"786:31:38","statements":[{"expression":{"id":8495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8493,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8448,"src":"797:4:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8494,"name":"time_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8490,"src":"804:5:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"797:12:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8496,"nodeType":"ExpressionStatement","src":"797:12:38"}]},"functionSelector":"3beb26c4","id":8498,"implemented":true,"kind":"function","modifiers":[],"name":"setTime","nodeType":"FunctionDefinition","parameters":{"id":8491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8490,"mutability":"mutable","name":"time_","nodeType":"VariableDeclaration","scope":8498,"src":"762:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8489,"name":"uint256","nodeType":"ElementaryTypeName","src":"762:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"761:15:38"},"returnParameters":{"id":8492,"nodeType":"ParameterList","parameters":[],"src":"786:0:38"},"scope":8520,"src":"745:72:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8506,"nodeType":"Block","src":"882:43:38","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8503,"name":"_blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[8519],"referencedDeclaration":8519,"src":"900:15:38","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":8504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"900:17:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":8502,"id":8505,"nodeType":"Return","src":"893:24:38"}]},"functionSelector":"adb61832","id":8507,"implemented":true,"kind":"function","modifiers":[],"name":"blockTimestamp","nodeType":"FunctionDefinition","parameters":{"id":8499,"nodeType":"ParameterList","parameters":[],"src":"848:2:38"},"returnParameters":{"id":8502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8501,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8507,"src":"874:6:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":8500,"name":"uint32","nodeType":"ElementaryTypeName","src":"874:6:38","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"873:8:38"},"scope":8520,"src":"825:100:38","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[694],"body":{"id":8518,"nodeType":"Block","src":"1000:38:38","statements":[{"expression":{"arguments":[{"id":8515,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8448,"src":"1025:4:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8514,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1018:6:38","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":8513,"name":"uint32","nodeType":"ElementaryTypeName","src":"1018:6:38","typeDescriptions":{}}},"id":8516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1018:12:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":8512,"id":8517,"nodeType":"Return","src":"1011:19:38"}]},"id":8519,"implemented":true,"kind":"function","modifiers":[],"name":"_blockTimestamp","nodeType":"FunctionDefinition","overrides":{"id":8509,"nodeType":"OverrideSpecifier","overrides":[],"src":"974:8:38"},"parameters":{"id":8508,"nodeType":"ParameterList","parameters":[],"src":"957:2:38"},"returnParameters":{"id":8512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8511,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8519,"src":"992:6:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":8510,"name":"uint32","nodeType":"ElementaryTypeName","src":"992:6:38","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"991:8:38"},"scope":8520,"src":"933:105:38","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":8521,"src":"143:898:38"}],"src":"40:1003:38"},"id":38},"contracts/elixir-core/test/MockTimeElixirPoolDeployer.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/MockTimeElixirPoolDeployer.sol","exportedSymbols":{"BitMath":[4058],"Clones":[30992],"ElixirPool":[3090],"FixedPoint128":[4065],"FixedPoint96":[4075],"FullMath":[4248],"IERC20Minimal":[3162],"IElixirFactory":[3251],"IElixirFlashCallback":[3287],"IElixirMintCallback":[3301],"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"IElixirSwapCallback":[3315],"LiquidityMath":[4300],"LowGasSafeMath":[4430],"MockTimeElixirPool":[8520],"MockTimeElixirPoolDeployer":[8594],"Oracle":[5283],"Position":[5456],"SafeCast":[5526],"SqrtPriceMath":[6042],"SwapMath":[6303],"Tick":[6776],"TickBitmap":[7032],"TickMath":[7567],"TransferHelper":[7618],"UnsafeMath":[7634]},"id":8595,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":8522,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:39"},{"absolutePath":"openzeppelin-contracts-solc-0.7/proxy/Clones.sol","file":"openzeppelin-contracts-solc-0.7/proxy/Clones.sol","id":8523,"nodeType":"ImportDirective","scope":8595,"sourceUnit":30993,"src":"67:58:39","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"../interfaces/IElixirPool.sol","id":8524,"nodeType":"ImportDirective","scope":8595,"sourceUnit":3274,"src":"129:39:39","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/test/MockTimeElixirPool.sol","file":"./MockTimeElixirPool.sol","id":8525,"nodeType":"ImportDirective","scope":8595,"sourceUnit":8521,"src":"172:34:39","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":8594,"linearizedBaseContracts":[8594],"name":"MockTimeElixirPoolDeployer","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"5c60da1b","id":8527,"mutability":"immutable","name":"implementation","nodeType":"VariableDeclaration","scope":8594,"src":"253:39:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8526,"name":"address","nodeType":"ElementaryTypeName","src":"253:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"anonymous":false,"id":8531,"name":"PoolDeployed","nodeType":"EventDefinition","parameters":{"id":8530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8529,"indexed":false,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":8531,"src":"540:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8528,"name":"address","nodeType":"ElementaryTypeName","src":"540:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"539:14:39"},"src":"521:33:39"},{"body":{"id":8540,"nodeType":"Block","src":"599:51:39","statements":[{"expression":{"id":8538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8536,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8527,"src":"610:14:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8537,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8533,"src":"627:15:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"610:32:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8539,"nodeType":"ExpressionStatement","src":"610:32:39"}]},"id":8541,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":8534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8533,"mutability":"mutable","name":"_implementation","nodeType":"VariableDeclaration","scope":8541,"src":"574:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8532,"name":"address","nodeType":"ElementaryTypeName","src":"574:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"573:25:39"},"returnParameters":{"id":8535,"nodeType":"ParameterList","parameters":[],"src":"599:0:39"},"scope":8594,"src":"562:88:39","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8592,"nodeType":"Block","src":"838:560:39","statements":[{"expression":{"id":8569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8556,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8554,"src":"1068:4:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8559,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8527,"src":"1115:14:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":8563,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8545,"src":"1165:6:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8564,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8547,"src":"1173:6:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8565,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8549,"src":"1181:3:39","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":8561,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1154:3:39","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8562,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1154:10:39","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1154:31:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8560,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1144:9:39","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1144:42:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8557,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30992,"src":"1075:6:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$30992_$","typeString":"type(library Clones)"}},"id":8558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":30957,"src":"1075:25:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":8568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1075:122:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1068:129:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8570,"nodeType":"ExpressionStatement","src":"1068:129:39"},{"expression":{"arguments":[{"id":8575,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8545,"src":"1237:6:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8576,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8547,"src":"1245:6:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8577,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8549,"src":"1253:3:39","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"id":8578,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8551,"src":"1258:11:39","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"arguments":[{"id":8572,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8554,"src":"1220:4:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8571,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1208:11:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":8573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1208:17:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":8574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":3628,"src":"1208:28:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint24_$_t_int24_$returns$__$","typeString":"function (address,address,uint24,int24) external"}},"id":8579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1208:62:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8580,"nodeType":"ExpressionStatement","src":"1208:62:39"},{"expression":{"arguments":[{"id":8585,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8543,"src":"1317:7:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":8582,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8554,"src":"1300:4:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8581,"name":"MockTimeElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8520,"src":"1281:18:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MockTimeElixirPool_$8520_$","typeString":"type(contract MockTimeElixirPool)"}},"id":8583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1281:24:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_MockTimeElixirPool_$8520","typeString":"contract MockTimeElixirPool"}},"id":8584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setFactory","nodeType":"MemberAccess","referencedDeclaration":8488,"src":"1281:35:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":8586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1281:44:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8587,"nodeType":"ExpressionStatement","src":"1281:44:39"},{"eventCall":{"arguments":[{"id":8589,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8554,"src":"1354:4:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8588,"name":"PoolDeployed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"1341:12:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1341:18:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8591,"nodeType":"EmitStatement","src":"1336:23:39"}]},"functionSelector":"fad5359f","id":8593,"implemented":true,"kind":"function","modifiers":[],"name":"deploy","nodeType":"FunctionDefinition","parameters":{"id":8552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8543,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":8593,"src":"684:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8542,"name":"address","nodeType":"ElementaryTypeName","src":"684:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8545,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":8593,"src":"710:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8544,"name":"address","nodeType":"ElementaryTypeName","src":"710:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8547,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":8593,"src":"735:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8546,"name":"address","nodeType":"ElementaryTypeName","src":"735:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8549,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":8593,"src":"760:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":8548,"name":"uint24","nodeType":"ElementaryTypeName","src":"760:6:39","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":8551,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":8593,"src":"781:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":8550,"name":"int24","nodeType":"ElementaryTypeName","src":"781:5:39","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"673:132:39"},"returnParameters":{"id":8555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8554,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":8593,"src":"824:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8553,"name":"address","nodeType":"ElementaryTypeName","src":"824:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"823:14:39"},"scope":8594,"src":"658:740:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":8595,"src":"210:1191:39"}],"src":"40:1363:39"},"id":39},"contracts/elixir-core/test/OracleEchidnaTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/OracleEchidnaTest.sol","exportedSymbols":{"Oracle":[5283],"OracleEchidnaTest":[9194],"OracleTest":[9520]},"id":9195,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":8596,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:40"},{"id":8597,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"65:19:40"},{"absolutePath":"contracts/elixir-core/test/OracleTest.sol","file":"./OracleTest.sol","id":8598,"nodeType":"ImportDirective","scope":9195,"sourceUnit":9521,"src":"88:26:40","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[9520],"contractKind":"contract","fullyImplemented":true,"id":9194,"linearizedBaseContracts":[9194],"name":"OracleEchidnaTest","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":8600,"mutability":"mutable","name":"oracle","nodeType":"VariableDeclaration","scope":9194,"src":"152:25:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"},"typeName":{"id":8599,"name":"OracleTest","nodeType":"UserDefinedTypeName","referencedDeclaration":9520,"src":"152:10:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}},"visibility":"private"},{"constant":false,"id":8602,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":9194,"src":"186:24:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8601,"name":"bool","nodeType":"ElementaryTypeName","src":"186:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"constant":false,"id":8604,"mutability":"mutable","name":"timePassed","nodeType":"VariableDeclaration","scope":9194,"src":"217:25:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":8603,"name":"uint32","nodeType":"ElementaryTypeName","src":"217:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"private"},{"body":{"id":8613,"nodeType":"Block","src":"265:44:40","statements":[{"expression":{"id":8611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8607,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"276:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":8609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"285:14:40","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_OracleTest_$9520_$","typeString":"function () returns (contract OracleTest)"},"typeName":{"id":8608,"name":"OracleTest","nodeType":"UserDefinedTypeName","referencedDeclaration":9520,"src":"289:10:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}}},"id":8610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"285:16:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}},"src":"276:25:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}},"id":8612,"nodeType":"ExpressionStatement","src":"276:25:40"}]},"id":8614,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":8605,"nodeType":"ParameterList","parameters":[],"src":"262:2:40"},"returnParameters":{"id":8606,"nodeType":"ParameterList","parameters":[],"src":"265:0:40"},"scope":9194,"src":"251:58:40","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8638,"nodeType":"Block","src":"390:232:40","statements":[{"expression":{"arguments":[{"arguments":[{"id":8628,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8616,"src":"486:4:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":8629,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8618,"src":"515:4:40","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":8630,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8620,"src":"549:9:40","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":8626,"name":"OracleTest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9520,"src":"433:10:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleTest_$9520_$","typeString":"type(contract OracleTest)"}},"id":8627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"InitializeParams","nodeType":"MemberAccess","referencedDeclaration":9230,"src":"433:27:40","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_InitializeParams_$9230_storage_ptr_$","typeString":"type(struct OracleTest.InitializeParams storage pointer)"}},"id":8631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["time","tick","liquidity"],"nodeType":"FunctionCall","src":"433:141:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializeParams_$9230_memory_ptr","typeString":"struct OracleTest.InitializeParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_InitializeParams_$9230_memory_ptr","typeString":"struct OracleTest.InitializeParams memory"}],"expression":{"id":8623,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"401:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}},"id":8625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":9268,"src":"401:17:40","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_InitializeParams_$9230_memory_ptr_$returns$__$","typeString":"function (struct OracleTest.InitializeParams memory) external"}},"id":8632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"401:184:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8633,"nodeType":"ExpressionStatement","src":"401:184:40"},{"expression":{"id":8636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8634,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8602,"src":"596:11:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":8635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"610:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"596:18:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8637,"nodeType":"ExpressionStatement","src":"596:18:40"}]},"functionSelector":"4d50e016","id":8639,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":8621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8616,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":8639,"src":"337:11:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":8615,"name":"uint32","nodeType":"ElementaryTypeName","src":"337:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":8618,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":8639,"src":"350:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":8617,"name":"int24","nodeType":"ElementaryTypeName","src":"350:5:40","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":8620,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":8639,"src":"362:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":8619,"name":"uint128","nodeType":"ElementaryTypeName","src":"362:7:40","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"336:44:40"},"returnParameters":{"id":8622,"nodeType":"ParameterList","parameters":[],"src":"390:0:40"},"scope":9194,"src":"317:305:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8656,"nodeType":"Block","src":"674:84:40","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":8649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":8647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8645,"name":"timePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8604,"src":"693:10:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":8646,"name":"by","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8641,"src":"706:2:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"693:15:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8648,"name":"timePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8604,"src":"712:10:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"693:29:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8644,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"685:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"685:38:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8651,"nodeType":"ExpressionStatement","src":"685:38:40"},{"expression":{"id":8654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8652,"name":"timePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8604,"src":"734:10:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8653,"name":"by","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8641,"src":"748:2:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"734:16:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":8655,"nodeType":"ExpressionStatement","src":"734:16:40"}]},"id":8657,"implemented":true,"kind":"function","modifiers":[],"name":"limitTimePassed","nodeType":"FunctionDefinition","parameters":{"id":8642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8641,"mutability":"mutable","name":"by","nodeType":"VariableDeclaration","scope":8657,"src":"655:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":8640,"name":"uint32","nodeType":"ElementaryTypeName","src":"655:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"654:11:40"},"returnParameters":{"id":8643,"nodeType":"ParameterList","parameters":[],"src":"674:0:40"},"scope":9194,"src":"630:128:40","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":8672,"nodeType":"Block","src":"805:71:40","statements":[{"expression":{"arguments":[{"id":8663,"name":"by","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8659,"src":"832:2:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":8662,"name":"limitTimePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8657,"src":"816:15:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint32_$returns$__$","typeString":"function (uint32)"}},"id":8664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"816:19:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8665,"nodeType":"ExpressionStatement","src":"816:19:40"},{"expression":{"arguments":[{"id":8669,"name":"by","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8659,"src":"865:2:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":8666,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"846:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}},"id":8668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"advanceTime","nodeType":"MemberAccess","referencedDeclaration":9278,"src":"846:18:40","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint32_$returns$__$","typeString":"function (uint32) external"}},"id":8670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"846:22:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8671,"nodeType":"ExpressionStatement","src":"846:22:40"}]},"functionSelector":"f7fd2cfa","id":8673,"implemented":true,"kind":"function","modifiers":[],"name":"advanceTime","nodeType":"FunctionDefinition","parameters":{"id":8660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8659,"mutability":"mutable","name":"by","nodeType":"VariableDeclaration","scope":8673,"src":"787:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":8658,"name":"uint32","nodeType":"ElementaryTypeName","src":"787:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"786:11:40"},"returnParameters":{"id":8661,"nodeType":"ParameterList","parameters":[],"src":"805:0:40"},"scope":9194,"src":"766:110:40","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8697,"nodeType":"Block","src":"1057:254:40","statements":[{"expression":{"arguments":[{"id":8683,"name":"advanceTimeBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8675,"src":"1084:13:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":8682,"name":"limitTimePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8657,"src":"1068:15:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint32_$returns$__$","typeString":"function (uint32)"}},"id":8684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1068:30:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8685,"nodeType":"ExpressionStatement","src":"1068:30:40"},{"expression":{"arguments":[{"arguments":[{"id":8691,"name":"advanceTimeBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8675,"src":"1195:13:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":8692,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8677,"src":"1233:4:40","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":8693,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"1267:9:40","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":8689,"name":"OracleTest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9520,"src":"1137:10:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleTest_$9520_$","typeString":"type(contract OracleTest)"}},"id":8690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UpdateParams","nodeType":"MemberAccess","referencedDeclaration":9285,"src":"1137:23:40","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UpdateParams_$9285_storage_ptr_$","typeString":"type(struct OracleTest.UpdateParams storage pointer)"}},"id":8694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["advanceTimeBy","tick","liquidity"],"nodeType":"FunctionCall","src":"1137:155:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_UpdateParams_$9285_memory_ptr","typeString":"struct OracleTest.UpdateParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_UpdateParams_$9285_memory_ptr","typeString":"struct OracleTest.UpdateParams memory"}],"expression":{"id":8686,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"1109:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}},"id":8688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"update","nodeType":"MemberAccess","referencedDeclaration":9322,"src":"1109:13:40","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_UpdateParams_$9285_memory_ptr_$returns$__$","typeString":"function (struct OracleTest.UpdateParams memory) external"}},"id":8695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1109:194:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8696,"nodeType":"ExpressionStatement","src":"1109:194:40"}]},"functionSelector":"f7fe5510","id":8698,"implemented":true,"kind":"function","modifiers":[],"name":"update","nodeType":"FunctionDefinition","parameters":{"id":8680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8675,"mutability":"mutable","name":"advanceTimeBy","nodeType":"VariableDeclaration","scope":8698,"src":"971:20:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":8674,"name":"uint32","nodeType":"ElementaryTypeName","src":"971:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":8677,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":8698,"src":"1002:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":8676,"name":"int24","nodeType":"ElementaryTypeName","src":"1002:5:40","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":8679,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":8698,"src":"1023:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":8678,"name":"uint128","nodeType":"ElementaryTypeName","src":"1023:7:40","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"960:87:40"},"returnParameters":{"id":8681,"nodeType":"ParameterList","parameters":[],"src":"1057:0:40"},"scope":9194,"src":"945:366:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8709,"nodeType":"Block","src":"1362:43:40","statements":[{"expression":{"arguments":[{"id":8706,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8700,"src":"1385:11:40","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":8703,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"1373:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}},"id":8705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"grow","nodeType":"MemberAccess","referencedDeclaration":9445,"src":"1373:11:40","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint16_$returns$__$","typeString":"function (uint16) external"}},"id":8707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1373:24:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8708,"nodeType":"ExpressionStatement","src":"1373:24:40"}]},"functionSelector":"761eb23e","id":8710,"implemented":true,"kind":"function","modifiers":[],"name":"grow","nodeType":"FunctionDefinition","parameters":{"id":8701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8700,"mutability":"mutable","name":"cardinality","nodeType":"VariableDeclaration","scope":8710,"src":"1333:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":8699,"name":"uint16","nodeType":"ElementaryTypeName","src":"1333:6:40","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1332:20:40"},"returnParameters":{"id":8702,"nodeType":"ParameterList","parameters":[],"src":"1362:0:40"},"scope":9194,"src":"1319:86:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8855,"nodeType":"Block","src":"1534:1226:40","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":8720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8718,"name":"secondsAgo0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8712,"src":"1553:11:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8719,"name":"secondsAgo1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8714,"src":"1568:11:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1553:26:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8717,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1545:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1545:35:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8722,"nodeType":"ExpressionStatement","src":"1545:35:40"},{"expression":{"arguments":[{"id":8724,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8602,"src":"1599:11:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8723,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1591:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1591:20:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8726,"nodeType":"ExpressionStatement","src":"1591:20:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":8729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8727,"name":"secondsAgo0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8712,"src":"1675:11:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8728,"name":"secondsAgo1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8714,"src":"1689:11:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1675:25:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8738,"nodeType":"IfStatement","src":"1671:99:40","trueBody":{"expression":{"id":8736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":8730,"name":"secondsAgo0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8712,"src":"1716:11:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":8731,"name":"secondsAgo1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8714,"src":"1729:11:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":8732,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1715:26:40","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint32_$","typeString":"tuple(uint32,uint32)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":8733,"name":"secondsAgo1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8714,"src":"1745:11:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":8734,"name":"secondsAgo0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8712,"src":"1758:11:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":8735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1744:26:40","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint32_$","typeString":"tuple(uint32,uint32)"}},"src":"1715:55:40","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8737,"nodeType":"ExpressionStatement","src":"1715:55:40"}},{"assignments":[8740],"declarations":[{"constant":false,"id":8740,"mutability":"mutable","name":"timeElapsed","nodeType":"VariableDeclaration","scope":8855,"src":"1783:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":8739,"name":"uint32","nodeType":"ElementaryTypeName","src":"1783:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":8744,"initialValue":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":8743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8741,"name":"secondsAgo0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8712,"src":"1804:11:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8742,"name":"secondsAgo1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8714,"src":"1818:11:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1804:25:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"1783:46:40"},{"assignments":[8749],"declarations":[{"constant":false,"id":8749,"mutability":"mutable","name":"secondsAgos","nodeType":"VariableDeclaration","scope":8855,"src":"1842:27:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":8747,"name":"uint32","nodeType":"ElementaryTypeName","src":"1842:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":8748,"nodeType":"ArrayTypeName","src":"1842:8:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"}],"id":8755,"initialValue":{"arguments":[{"hexValue":"32","id":8753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1885:1:40","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":8752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1872:12:40","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":8750,"name":"uint32","nodeType":"ElementaryTypeName","src":"1876:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":8751,"nodeType":"ArrayTypeName","src":"1876:8:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}}},"id":8754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1872:15:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"1842:45:40"},{"expression":{"id":8760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8756,"name":"secondsAgos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8749,"src":"1898:11:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":8758,"indexExpression":{"hexValue":"30","id":8757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1910:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1898:14:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8759,"name":"secondsAgo0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8712,"src":"1915:11:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1898:28:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":8761,"nodeType":"ExpressionStatement","src":"1898:28:40"},{"expression":{"id":8766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8762,"name":"secondsAgos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8749,"src":"1937:11:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":8764,"indexExpression":{"hexValue":"31","id":8763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1949:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1937:14:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8765,"name":"secondsAgo1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8714,"src":"1954:11:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1937:28:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":8767,"nodeType":"ExpressionStatement","src":"1937:28:40"},{"assignments":[8772,8775,8778],"declarations":[{"constant":false,"id":8772,"mutability":"mutable","name":"tickCumulatives","nodeType":"VariableDeclaration","scope":8855,"src":"1993:30:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[]"},"typeName":{"baseType":{"id":8770,"name":"int56","nodeType":"ElementaryTypeName","src":"1993:5:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":8771,"nodeType":"ArrayTypeName","src":"1993:7:40","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_storage_ptr","typeString":"int56[]"}},"visibility":"internal"},{"constant":false,"id":8775,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128s","nodeType":"VariableDeclaration","scope":8855,"src":"2038:51:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[]"},"typeName":{"baseType":{"id":8773,"name":"uint160","nodeType":"ElementaryTypeName","src":"2038:7:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":8774,"nodeType":"ArrayTypeName","src":"2038:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"},{"constant":false,"id":8778,"mutability":"mutable","name":"rewardPerLiquidityCumulativeX64s","nodeType":"VariableDeclaration","scope":8855,"src":"2104:49:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$dyn_memory_ptr","typeString":"uint192[]"},"typeName":{"baseType":{"id":8776,"name":"uint192","nodeType":"ElementaryTypeName","src":"2104:7:40","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"id":8777,"nodeType":"ArrayTypeName","src":"2104:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$dyn_storage_ptr","typeString":"uint192[]"}},"visibility":"internal"}],"id":8783,"initialValue":{"arguments":[{"id":8781,"name":"secondsAgos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8749,"src":"2182:11:40","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":{"id":8779,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"2167:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}},"id":8780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observe","nodeType":"MemberAccess","referencedDeclaration":9473,"src":"2167:14:40","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_$_t_array$_t_uint192_$dyn_memory_ptr_$","typeString":"function (uint32[] memory) view external returns (int56[] memory,uint160[] memory,uint192[] memory)"}},"id":8782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2167:27:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_int56_$dyn_memory_ptr_$_t_array$_t_uint160_$dyn_memory_ptr_$_t_array$_t_uint192_$dyn_memory_ptr_$","typeString":"tuple(int56[] memory,uint160[] memory,uint192[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"1978:216:40"},{"assignments":[8785],"declarations":[{"constant":false,"id":8785,"mutability":"mutable","name":"timeWeightedTick","nodeType":"VariableDeclaration","scope":8855,"src":"2205:22:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":8784,"name":"int56","nodeType":"ElementaryTypeName","src":"2205:5:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"id":8796,"initialValue":{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":8795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":8792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":8786,"name":"tickCumulatives","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8772,"src":"2231:15:40","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[] memory"}},"id":8788,"indexExpression":{"hexValue":"31","id":8787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2247:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2231:18:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"id":8789,"name":"tickCumulatives","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8772,"src":"2252:15:40","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[] memory"}},"id":8791,"indexExpression":{"hexValue":"30","id":8790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2268:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2252:18:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"2231:39:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}}],"id":8793,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2230:41:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8794,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8740,"src":"2287:11:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2230:68:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"VariableDeclarationStatement","src":"2205:93:40"},{"assignments":[8798],"declarations":[{"constant":false,"id":8798,"mutability":"mutable","name":"timeWeightedHarmonicMeanLiquidity","nodeType":"VariableDeclaration","scope":8855,"src":"2309:41:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8797,"name":"uint256","nodeType":"ElementaryTypeName","src":"2309:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8824,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8801,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8740,"src":"2362:11:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":8800,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2354:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8799,"name":"uint256","nodeType":"ElementaryTypeName","src":"2354:7:40","typeDescriptions":{}}},"id":8802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2354:20:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"arguments":[{"id":8805,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2395:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":8804,"name":"uint160","nodeType":"ElementaryTypeName","src":"2395:7:40","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":8803,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2390:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2390:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":8807,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2390:17:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2354:53:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8809,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2353:55:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":8818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":8812,"name":"secondsPerLiquidityCumulativeX128s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8775,"src":"2451:34:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"id":8814,"indexExpression":{"hexValue":"31","id":8813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2486:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2451:37:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"id":8815,"name":"secondsPerLiquidityCumulativeX128s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8775,"src":"2512:34:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"id":8817,"indexExpression":{"hexValue":"30","id":8816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2547:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2512:37:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2451:98:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":8811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2425:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8810,"name":"uint256","nodeType":"ElementaryTypeName","src":"2425:7:40","typeDescriptions":{}}},"id":8819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2425:139:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":8820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2568:2:40","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"2425:145:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8822,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2424:147:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2353:218:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2309:262:40"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8826,"name":"timeWeightedHarmonicMeanLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8798,"src":"2589:33:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2631:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":8828,"name":"uint128","nodeType":"ElementaryTypeName","src":"2631:7:40","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":8827,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2626:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2626:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":8831,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2626:17:40","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2589:54:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8825,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2582:6:40","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2582:62:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8834,"nodeType":"ExpressionStatement","src":"2582:62:40"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":8842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8836,"name":"timeWeightedTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8785,"src":"2662:16:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8839,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2687:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":8838,"name":"int24","nodeType":"ElementaryTypeName","src":"2687:5:40","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"}],"id":8837,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2682:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2682:11:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int24","typeString":"type(int24)"}},"id":8841,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2682:15:40","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2662:35:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8835,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2655:6:40","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2655:43:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8844,"nodeType":"ExpressionStatement","src":"2655:43:40"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":8852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8846,"name":"timeWeightedTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8785,"src":"2716:16:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"arguments":[{"id":8849,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2741:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":8848,"name":"int24","nodeType":"ElementaryTypeName","src":"2741:5:40","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"}],"id":8847,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2736:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2736:11:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int24","typeString":"type(int24)"}},"id":8851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"min","nodeType":"MemberAccess","src":"2736:15:40","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2716:35:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8845,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2709:6:40","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2709:43:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8854,"nodeType":"ExpressionStatement","src":"2709:43:40"}]},"id":8856,"implemented":true,"kind":"function","modifiers":[],"name":"checkTimeWeightedResultAssertions","nodeType":"FunctionDefinition","parameters":{"id":8715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8712,"mutability":"mutable","name":"secondsAgo0","nodeType":"VariableDeclaration","scope":8856,"src":"1466:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":8711,"name":"uint32","nodeType":"ElementaryTypeName","src":"1466:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":8714,"mutability":"mutable","name":"secondsAgo1","nodeType":"VariableDeclaration","scope":8856,"src":"1495:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":8713,"name":"uint32","nodeType":"ElementaryTypeName","src":"1495:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1455:65:40"},"returnParameters":{"id":8716,"nodeType":"ParameterList","parameters":[],"src":"1534:0:40"},"scope":9194,"src":"1413:1347:40","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":8872,"nodeType":"Block","src":"2841:79:40","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":8867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8861,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"2859:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}},"id":8862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":9215,"src":"2859:12:40","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint16_$","typeString":"function () view external returns (uint16)"}},"id":8863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2859:14:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8864,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"2876:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}},"id":8865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"cardinality","nodeType":"MemberAccess","referencedDeclaration":9217,"src":"2876:18:40","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint16_$","typeString":"function () view external returns (uint16)"}},"id":8866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2876:20:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"2859:37:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":8869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2900:12:40","subExpression":{"id":8868,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8602,"src":"2901:11:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2859:53:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8860,"id":8871,"nodeType":"Return","src":"2852:60:40"}]},"functionSelector":"ae13714b","id":8873,"implemented":true,"kind":"function","modifiers":[],"name":"echidna_indexAlwaysLtCardinality","nodeType":"FunctionDefinition","parameters":{"id":8857,"nodeType":"ParameterList","parameters":[],"src":"2809:2:40"},"returnParameters":{"id":8860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8859,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8873,"src":"2835:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8858,"name":"bool","nodeType":"ElementaryTypeName","src":"2835:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2834:6:40"},"scope":9194,"src":"2768:152:40","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8893,"nodeType":"Block","src":"2994:132:40","statements":[{"assignments":[null,null,null,8879,null],"declarations":[null,null,null,{"constant":false,"id":8879,"mutability":"mutable","name":"isInitialized","nodeType":"VariableDeclaration","scope":8893,"src":"3012:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8878,"name":"bool","nodeType":"ElementaryTypeName","src":"3012:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":8884,"initialValue":{"arguments":[{"hexValue":"30","id":8882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3056:1:40","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":8880,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"3036:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}},"id":8881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observations","nodeType":"MemberAccess","referencedDeclaration":9207,"src":"3036:19:40","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$_t_uint192_$","typeString":"function (uint256) view external returns (uint32,int56,uint160,bool,uint192)"}},"id":8883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3036:22:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$_t_uint192_$","typeString":"tuple(uint32,int56,uint160,bool,uint192)"}},"nodeType":"VariableDeclarationStatement","src":"3005:53:40"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":8889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8885,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"3076:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}},"id":8886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"cardinality","nodeType":"MemberAccess","referencedDeclaration":9217,"src":"3076:18:40","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint16_$","typeString":"function () view external returns (uint16)"}},"id":8887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3076:20:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3100:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3076:25:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":8890,"name":"isInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8879,"src":"3105:13:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3076:42:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8877,"id":8892,"nodeType":"Return","src":"3069:49:40"}]},"functionSelector":"91e2b63c","id":8894,"implemented":true,"kind":"function","modifiers":[],"name":"echidna_AlwaysInitialized","nodeType":"FunctionDefinition","parameters":{"id":8874,"nodeType":"ParameterList","parameters":[],"src":"2962:2:40"},"returnParameters":{"id":8877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8876,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8894,"src":"2988:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8875,"name":"bool","nodeType":"ElementaryTypeName","src":"2988:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2987:6:40"},"scope":9194,"src":"2928:198:40","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8907,"nodeType":"Block","src":"3207:74:40","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":8905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8899,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"3225:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}},"id":8900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"cardinality","nodeType":"MemberAccess","referencedDeclaration":9217,"src":"3225:18:40","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint16_$","typeString":"function () view external returns (uint16)"}},"id":8901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3225:20:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8902,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"3249:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}},"id":8903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"cardinalityNext","nodeType":"MemberAccess","referencedDeclaration":9219,"src":"3249:22:40","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint16_$","typeString":"function () view external returns (uint16)"}},"id":8904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3249:24:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"3225:48:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8898,"id":8906,"nodeType":"Return","src":"3218:55:40"}]},"functionSelector":"de327739","id":8908,"implemented":true,"kind":"function","modifiers":[],"name":"echidna_cardinalityAlwaysLteNext","nodeType":"FunctionDefinition","parameters":{"id":8895,"nodeType":"ParameterList","parameters":[],"src":"3175:2:40"},"returnParameters":{"id":8898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8897,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8908,"src":"3201:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8896,"name":"bool","nodeType":"ElementaryTypeName","src":"3201:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3200:6:40"},"scope":9194,"src":"3134:147:40","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8954,"nodeType":"Block","src":"3400:306:40","statements":[{"condition":{"id":8914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3415:12:40","subExpression":{"id":8913,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8602,"src":"3416:11:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8918,"nodeType":"IfStatement","src":"3411:56:40","trueBody":{"id":8917,"nodeType":"Block","src":"3429:38:40","statements":[{"expression":{"hexValue":"74727565","id":8915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3451:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8912,"id":8916,"nodeType":"Return","src":"3444:11:40"}]}},{"assignments":[8923],"declarations":[{"constant":false,"id":8923,"mutability":"mutable","name":"arr","nodeType":"VariableDeclaration","scope":8954,"src":"3477:19:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":8921,"name":"uint32","nodeType":"ElementaryTypeName","src":"3477:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":8922,"nodeType":"ArrayTypeName","src":"3477:8:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"}],"id":8929,"initialValue":{"arguments":[{"hexValue":"31","id":8927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3512:1:40","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"}],"id":8926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3499:12:40","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":8924,"name":"uint32","nodeType":"ElementaryTypeName","src":"3503:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":8925,"nodeType":"ArrayTypeName","src":"3503:8:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}}},"id":8928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3499:15:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3477:37:40"},{"expression":{"id":8934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8930,"name":"arr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8923,"src":"3525:3:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":8932,"indexExpression":{"hexValue":"30","id":8931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3529:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3525:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":8933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3534:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3525:10:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":8935,"nodeType":"ExpressionStatement","src":"3525:10:40"},{"assignments":[8937,null],"declarations":[{"constant":false,"id":8937,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":8954,"src":"3547:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8936,"name":"bool","nodeType":"ElementaryTypeName","src":"3547:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":8951,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"id":8945,"name":"OracleTest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9520,"src":"3629:10:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleTest_$9520_$","typeString":"type(contract OracleTest)"}},"id":8946,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"observe","nodeType":"MemberAccess","referencedDeclaration":9473,"src":"3629:18:40","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_array$_t_uint32_$dyn_calldata_ptr_$returns$_t_array$_t_int56_$dyn_memory_ptr_$_t_array$_t_uint160_$dyn_memory_ptr_$_t_array$_t_uint192_$dyn_memory_ptr_$","typeString":"function OracleTest.observe(uint32[] calldata) view returns (int56[] memory,uint160[] memory,uint192[] memory)"}},"id":8947,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"3629:27:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":8948,"name":"arr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8923,"src":"3658:3:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}],"expression":{"id":8943,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3606:3:40","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8944,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3606:22:40","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":8949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3606:56:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":8940,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"3573:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}],"id":8939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3565:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8938,"name":"address","nodeType":"ElementaryTypeName","src":"3565:7:40","typeDescriptions":{}}},"id":8941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3565:15:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"staticcall","nodeType":"MemberAccess","src":"3565:26:40","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":8950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3565:108:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3546:127:40"},{"expression":{"id":8952,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8937,"src":"3691:7:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8912,"id":8953,"nodeType":"Return","src":"3684:14:40"}]},"functionSelector":"ae505b52","id":8955,"implemented":true,"kind":"function","modifiers":[],"name":"echidna_canAlwaysObserve0IfInitialized","nodeType":"FunctionDefinition","parameters":{"id":8909,"nodeType":"ParameterList","parameters":[],"src":"3336:2:40"},"returnParameters":{"id":8912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8911,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8955,"src":"3389:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8910,"name":"bool","nodeType":"ElementaryTypeName","src":"3389:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3388:6:40"},"scope":9194,"src":"3289:417:40","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":9045,"nodeType":"Block","src":"3831:901:40","statements":[{"assignments":[8961],"declarations":[{"constant":false,"id":8961,"mutability":"mutable","name":"cardinality","nodeType":"VariableDeclaration","scope":9045,"src":"3842:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":8960,"name":"uint16","nodeType":"ElementaryTypeName","src":"3842:6:40","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":8965,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8962,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"3863:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}},"id":8963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"cardinality","nodeType":"MemberAccess","referencedDeclaration":9217,"src":"3863:18:40","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint16_$","typeString":"function () view external returns (uint16)"}},"id":8964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3863:20:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"VariableDeclarationStatement","src":"3842:41:40"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":8969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8967,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8957,"src":"4022:5:40","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8968,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8961,"src":"4030:11:40","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"4022:19:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":8979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8970,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8957,"src":"4045:5:40","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":8978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":8975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8971,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"4055:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}},"id":8972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":9215,"src":"4055:12:40","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint16_$","typeString":"function () view external returns (uint16)"}},"id":8973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4055:14:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":8974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4072:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4055:18:40","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":8976,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4054:20:40","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":8977,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8961,"src":"4077:11:40","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"4054:34:40","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"4045:43:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4022:66:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8966,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4000:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4000:99:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8982,"nodeType":"ExpressionStatement","src":"4000:99:40"},{"assignments":[8984,8986,null,8988,null],"declarations":[{"constant":false,"id":8984,"mutability":"mutable","name":"blockTimestamp0","nodeType":"VariableDeclaration","scope":9045,"src":"4127:22:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":8983,"name":"uint32","nodeType":"ElementaryTypeName","src":"4127:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":8986,"mutability":"mutable","name":"tickCumulative0","nodeType":"VariableDeclaration","scope":9045,"src":"4164:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":8985,"name":"int56","nodeType":"ElementaryTypeName","src":"4164:5:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},null,{"constant":false,"id":8988,"mutability":"mutable","name":"initialized0","nodeType":"VariableDeclaration","scope":9045,"src":"4215:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8987,"name":"bool","nodeType":"ElementaryTypeName","src":"4215:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":9002,"initialValue":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":8993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8991,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8957,"src":"4269:5:40","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4278:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4269:10:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":8999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8997,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8957,"src":"4300:5:40","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4308:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4300:9:40","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":9000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4269:40:40","trueExpression":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":8996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8994,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8961,"src":"4282:11:40","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4296:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4282:15:40","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":8989,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"4249:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}},"id":8990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observations","nodeType":"MemberAccess","referencedDeclaration":9207,"src":"4249:19:40","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$_t_uint192_$","typeString":"function (uint256) view external returns (uint32,int56,uint160,bool,uint192)"}},"id":9001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4249:61:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$_t_uint192_$","typeString":"tuple(uint32,int56,uint160,bool,uint192)"}},"nodeType":"VariableDeclarationStatement","src":"4112:198:40"},{"assignments":[9004,9006,null,9008,null],"declarations":[{"constant":false,"id":9004,"mutability":"mutable","name":"blockTimestamp1","nodeType":"VariableDeclaration","scope":9045,"src":"4336:22:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":9003,"name":"uint32","nodeType":"ElementaryTypeName","src":"4336:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":9006,"mutability":"mutable","name":"tickCumulative1","nodeType":"VariableDeclaration","scope":9045,"src":"4373:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":9005,"name":"int56","nodeType":"ElementaryTypeName","src":"4373:5:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},null,{"constant":false,"id":9008,"mutability":"mutable","name":"initialized1","nodeType":"VariableDeclaration","scope":9045,"src":"4424:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9007,"name":"bool","nodeType":"ElementaryTypeName","src":"4424:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":9013,"initialValue":{"arguments":[{"id":9011,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8957,"src":"4478:5:40","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":9009,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"4458:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}},"id":9010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observations","nodeType":"MemberAccess","referencedDeclaration":9207,"src":"4458:19:40","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$_t_uint192_$","typeString":"function (uint256) view external returns (uint32,int56,uint160,bool,uint192)"}},"id":9012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4458:26:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$_t_uint192_$","typeString":"tuple(uint32,int56,uint160,bool,uint192)"}},"nodeType":"VariableDeclarationStatement","src":"4321:163:40"},{"expression":{"arguments":[{"id":9015,"name":"initialized0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"4505:12:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9014,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4497:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4497:21:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9017,"nodeType":"ExpressionStatement","src":"4497:21:40"},{"expression":{"arguments":[{"id":9019,"name":"initialized1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9008,"src":"4537:12:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9018,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4529:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4529:21:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9021,"nodeType":"ExpressionStatement","src":"4529:21:40"},{"assignments":[9023],"declarations":[{"constant":false,"id":9023,"mutability":"mutable","name":"timeElapsed","nodeType":"VariableDeclaration","scope":9045,"src":"4563:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":9022,"name":"uint32","nodeType":"ElementaryTypeName","src":"4563:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":9027,"initialValue":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":9026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9024,"name":"blockTimestamp1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9004,"src":"4584:15:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9025,"name":"blockTimestamp0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8984,"src":"4602:15:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4584:33:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"4563:54:40"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":9031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9029,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9023,"src":"4635:11:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4649:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4635:15:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9028,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"4628:6:40","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4628:23:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9033,"nodeType":"ExpressionStatement","src":"4628:23:40"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":9042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":9040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":9037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9035,"name":"tickCumulative1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9006,"src":"4670:15:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9036,"name":"tickCumulative0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8986,"src":"4688:15:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"4670:33:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}}],"id":9038,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4669:35:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":9039,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9023,"src":"4707:11:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4669:49:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4722:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4669:54:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9034,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"4662:6:40","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4662:62:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9044,"nodeType":"ExpressionStatement","src":"4662:62:40"}]},"functionSelector":"e9f71da9","id":9046,"implemented":true,"kind":"function","modifiers":[],"name":"checkTwoAdjacentObservationsTickCumulativeModTimeElapsedAlways0","nodeType":"FunctionDefinition","parameters":{"id":8958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8957,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":9046,"src":"3797:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":8956,"name":"uint16","nodeType":"ElementaryTypeName","src":"3797:6:40","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"3786:30:40"},"returnParameters":{"id":8959,"nodeType":"ParameterList","parameters":[],"src":"3831:0:40"},"scope":9194,"src":"3714:1018:40","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":9192,"nodeType":"Block","src":"4838:1312:40","statements":[{"expression":{"arguments":[{"id":9052,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8602,"src":"4857:11:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9051,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4849:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4849:20:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9054,"nodeType":"ExpressionStatement","src":"4849:20:40"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":9058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9056,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9048,"src":"4888:10:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4901:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4888:14:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9055,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4880:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4880:23:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9060,"nodeType":"ExpressionStatement","src":"4880:23:40"},{"assignments":[9065],"declarations":[{"constant":false,"id":9065,"mutability":"mutable","name":"secondsAgos","nodeType":"VariableDeclaration","scope":9192,"src":"4914:27:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":9063,"name":"uint32","nodeType":"ElementaryTypeName","src":"4914:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":9064,"nodeType":"ArrayTypeName","src":"4914:8:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"}],"id":9071,"initialValue":{"arguments":[{"hexValue":"32","id":9069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4957:1:40","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":9068,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4944:12:40","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":9066,"name":"uint32","nodeType":"ElementaryTypeName","src":"4948:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":9067,"nodeType":"ArrayTypeName","src":"4948:8:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}}},"id":9070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4944:15:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4914:45:40"},{"expression":{"id":9076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9072,"name":"secondsAgos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9065,"src":"4970:11:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":9074,"indexExpression":{"hexValue":"30","id":9073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4982:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4970:14:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9075,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9048,"src":"4987:10:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4970:27:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":9077,"nodeType":"ExpressionStatement","src":"4970:27:40"},{"expression":{"id":9082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9078,"name":"secondsAgos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9065,"src":"5008:11:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":9080,"indexExpression":{"hexValue":"31","id":9079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5020:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5008:14:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":9081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5025:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5008:18:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":9083,"nodeType":"ExpressionStatement","src":"5008:18:40"},{"assignments":[9088,9091,9094],"declarations":[{"constant":false,"id":9088,"mutability":"mutable","name":"tickCumulatives","nodeType":"VariableDeclaration","scope":9192,"src":"5052:30:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[]"},"typeName":{"baseType":{"id":9086,"name":"int56","nodeType":"ElementaryTypeName","src":"5052:5:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":9087,"nodeType":"ArrayTypeName","src":"5052:7:40","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_storage_ptr","typeString":"int56[]"}},"visibility":"internal"},{"constant":false,"id":9091,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128s","nodeType":"VariableDeclaration","scope":9192,"src":"5097:51:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[]"},"typeName":{"baseType":{"id":9089,"name":"uint160","nodeType":"ElementaryTypeName","src":"5097:7:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":9090,"nodeType":"ArrayTypeName","src":"5097:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"},{"constant":false,"id":9094,"mutability":"mutable","name":"rewardPerLiquidityCumulativeX64s","nodeType":"VariableDeclaration","scope":9192,"src":"5163:49:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$dyn_memory_ptr","typeString":"uint192[]"},"typeName":{"baseType":{"id":9092,"name":"uint192","nodeType":"ElementaryTypeName","src":"5163:7:40","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"id":9093,"nodeType":"ArrayTypeName","src":"5163:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$dyn_storage_ptr","typeString":"uint192[]"}},"visibility":"internal"}],"id":9099,"initialValue":{"arguments":[{"id":9097,"name":"secondsAgos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9065,"src":"5241:11:40","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":{"id":9095,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"5226:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_OracleTest_$9520","typeString":"contract OracleTest"}},"id":9096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observe","nodeType":"MemberAccess","referencedDeclaration":9473,"src":"5226:14:40","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_$_t_array$_t_uint192_$dyn_memory_ptr_$","typeString":"function (uint32[] memory) view external returns (int56[] memory,uint160[] memory,uint192[] memory)"}},"id":9098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5226:27:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_int56_$dyn_memory_ptr_$_t_array$_t_uint160_$dyn_memory_ptr_$_t_array$_t_uint192_$dyn_memory_ptr_$","typeString":"tuple(int56[] memory,uint160[] memory,uint192[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"5037:216:40"},{"assignments":[9101],"declarations":[{"constant":false,"id":9101,"mutability":"mutable","name":"numerator","nodeType":"VariableDeclaration","scope":9192,"src":"5344:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":9100,"name":"int56","nodeType":"ElementaryTypeName","src":"5344:5:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"id":9109,"initialValue":{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":9108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":9102,"name":"tickCumulatives","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9088,"src":"5362:15:40","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[] memory"}},"id":9104,"indexExpression":{"hexValue":"31","id":9103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5378:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5362:18:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"id":9105,"name":"tickCumulatives","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9088,"src":"5383:15:40","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[] memory"}},"id":9107,"indexExpression":{"hexValue":"30","id":9106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5399:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5383:18:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"5362:39:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"VariableDeclarationStatement","src":"5344:57:40"},{"assignments":[9111],"declarations":[{"constant":false,"id":9111,"mutability":"mutable","name":"timeWeightedTick","nodeType":"VariableDeclaration","scope":9192,"src":"5412:22:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":9110,"name":"int56","nodeType":"ElementaryTypeName","src":"5412:5:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"id":9118,"initialValue":{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":9117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9112,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9101,"src":"5437:9:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":9115,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9048,"src":"5455:10:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":9114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5449:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_int56_$","typeString":"type(int56)"},"typeName":{"id":9113,"name":"int56","nodeType":"ElementaryTypeName","src":"5449:5:40","typeDescriptions":{}}},"id":9116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5449:17:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"5437:29:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"VariableDeclarationStatement","src":"5412:54:40"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":9121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9119,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9101,"src":"5481:9:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":9120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5493:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5481:13:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":9129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":9127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9122,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9101,"src":"5498:9:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"arguments":[{"id":9125,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9048,"src":"5516:10:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":9124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5510:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_int56_$","typeString":"type(int56)"},"typeName":{"id":9123,"name":"int56","nodeType":"ElementaryTypeName","src":"5510:5:40","typeDescriptions":{}}},"id":9126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5510:17:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"5498:29:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":9128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5531:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5498:34:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5481:51:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9135,"nodeType":"IfStatement","src":"5477:102:40","trueBody":{"id":9134,"nodeType":"Block","src":"5534:45:40","statements":[{"expression":{"id":9132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"5549:18:40","subExpression":{"id":9131,"name":"timeWeightedTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9111,"src":"5549:16:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":9133,"nodeType":"ExpressionStatement","src":"5549:18:40"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":9143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9137,"name":"timeWeightedTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9111,"src":"5693:16:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":9140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5718:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":9139,"name":"int24","nodeType":"ElementaryTypeName","src":"5718:5:40","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"}],"id":9138,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5713:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":9141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5713:11:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int24","typeString":"type(int24)"}},"id":9142,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"5713:15:40","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"5693:35:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":9150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9144,"name":"timeWeightedTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9111,"src":"5749:16:40","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"arguments":[{"id":9147,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5774:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":9146,"name":"int24","nodeType":"ElementaryTypeName","src":"5774:5:40","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"}],"id":9145,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5769:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":9148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5769:11:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int24","typeString":"type(int24)"}},"id":9149,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"min","nodeType":"MemberAccess","src":"5769:15:40","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"5749:35:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5693:91:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9136,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"5672:6:40","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5672:123:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9153,"nodeType":"ExpressionStatement","src":"5672:123:40"},{"assignments":[9155],"declarations":[{"constant":false,"id":9155,"mutability":"mutable","name":"timeWeightedHarmonicMeanLiquidity","nodeType":"VariableDeclaration","scope":9192,"src":"5808:41:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9154,"name":"uint256","nodeType":"ElementaryTypeName","src":"5808:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9181,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9158,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9048,"src":"5861:10:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":9157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5853:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9156,"name":"uint256","nodeType":"ElementaryTypeName","src":"5853:7:40","typeDescriptions":{}}},"id":9159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5853:19:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"arguments":[{"id":9162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5893:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":9161,"name":"uint160","nodeType":"ElementaryTypeName","src":"5893:7:40","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":9160,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5888:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":9163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5888:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":9164,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"5888:17:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"5853:52:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9166,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5852:54:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":9169,"name":"secondsPerLiquidityCumulativeX128s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9091,"src":"5949:34:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"id":9171,"indexExpression":{"hexValue":"31","id":9170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5984:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5949:37:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"id":9172,"name":"secondsPerLiquidityCumulativeX128s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9091,"src":"6010:34:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"id":9174,"indexExpression":{"hexValue":"30","id":9173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6045:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6010:37:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"5949:98:40","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":9168,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5923:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9167,"name":"uint256","nodeType":"ElementaryTypeName","src":"5923:7:40","typeDescriptions":{}}},"id":9176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5923:139:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":9177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6066:2:40","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"5923:145:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9179,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5922:147:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5852:217:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5808:261:40"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9183,"name":"timeWeightedHarmonicMeanLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9155,"src":"6087:33:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":9186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6129:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":9185,"name":"uint128","nodeType":"ElementaryTypeName","src":"6129:7:40","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":9184,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6124:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":9187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6124:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":9188,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"6124:17:40","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"6087:54:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9182,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"6080:6:40","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6080:62:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9191,"nodeType":"ExpressionStatement","src":"6080:62:40"}]},"functionSelector":"a9583576","id":9193,"implemented":true,"kind":"function","modifiers":[],"name":"checkTimeWeightedAveragesAlwaysFitsType","nodeType":"FunctionDefinition","parameters":{"id":9049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9048,"mutability":"mutable","name":"secondsAgo","nodeType":"VariableDeclaration","scope":9193,"src":"4799:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":9047,"name":"uint32","nodeType":"ElementaryTypeName","src":"4799:6:40","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"4788:35:40"},"returnParameters":{"id":9050,"nodeType":"ParameterList","parameters":[],"src":"4838:0:40"},"scope":9194,"src":"4740:1410:40","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":9195,"src":"118:6035:40"}],"src":"40:6115:40"},"id":40},"contracts/elixir-core/test/OracleTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/OracleTest.sol","exportedSymbols":{"Oracle":[5283],"OracleTest":[9520]},"id":9521,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":9196,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:41"},{"id":9197,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"65:19:41"},{"absolutePath":"contracts/elixir-core/libraries/Oracle.sol","file":"../libraries/Oracle.sol","id":9198,"nodeType":"ImportDirective","scope":9521,"sourceUnit":5284,"src":"88:33:41","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":9520,"linearizedBaseContracts":[9520],"name":"OracleTest","nodeType":"ContractDefinition","nodes":[{"id":9203,"libraryName":{"id":9199,"name":"Oracle","nodeType":"UserDefinedTypeName","referencedDeclaration":5283,"src":"158:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_Oracle_$5283","typeString":"library Oracle"}},"nodeType":"UsingForDirective","src":"152:43:41","typeName":{"baseType":{"id":9200,"name":"Oracle.Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"169:18:41","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"id":9202,"length":{"hexValue":"3635353335","id":9201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"188:5:41","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"nodeType":"ArrayTypeName","src":"169:25:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation[65535]"}}},{"constant":false,"functionSelector":"252c09d7","id":9207,"mutability":"mutable","name":"observations","nodeType":"VariableDeclaration","scope":9520,"src":"203:45:41","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage","typeString":"struct Oracle.Observation[65535]"},"typeName":{"baseType":{"id":9204,"name":"Oracle.Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"203:18:41","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"id":9206,"length":{"hexValue":"3635353335","id":9205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"222:5:41","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"nodeType":"ArrayTypeName","src":"203:25:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr","typeString":"struct Oracle.Observation[65535]"}},"visibility":"public"},{"constant":false,"functionSelector":"16ada547","id":9209,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":9520,"src":"257:18:41","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":9208,"name":"uint32","nodeType":"ElementaryTypeName","src":"257:6:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"public"},{"constant":false,"functionSelector":"3eaf5d9f","id":9211,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":9520,"src":"282:17:41","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":9210,"name":"int24","nodeType":"ElementaryTypeName","src":"282:5:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"public"},{"constant":false,"functionSelector":"1a686502","id":9213,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":9520,"src":"306:24:41","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9212,"name":"uint128","nodeType":"ElementaryTypeName","src":"306:7:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"public"},{"constant":false,"functionSelector":"2986c0e5","id":9215,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":9520,"src":"337:19:41","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":9214,"name":"uint16","nodeType":"ElementaryTypeName","src":"337:6:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"public"},{"constant":false,"functionSelector":"dbffe9ad","id":9217,"mutability":"mutable","name":"cardinality","nodeType":"VariableDeclaration","scope":9520,"src":"363:25:41","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":9216,"name":"uint16","nodeType":"ElementaryTypeName","src":"363:6:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"public"},{"constant":false,"functionSelector":"dd158c18","id":9219,"mutability":"mutable","name":"cardinalityNext","nodeType":"VariableDeclaration","scope":9520,"src":"395:29:41","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":9218,"name":"uint16","nodeType":"ElementaryTypeName","src":"395:6:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"public"},{"constant":false,"functionSelector":"58319b4d","id":9221,"mutability":"mutable","name":"rewardPerSecondX48","nodeType":"VariableDeclaration","scope":9520,"src":"431:33:41","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":9220,"name":"uint144","nodeType":"ElementaryTypeName","src":"431:7:41","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"public"},{"constant":false,"functionSelector":"6142258a","id":9223,"mutability":"mutable","name":"rewardRateEffectiveUntil","nodeType":"VariableDeclaration","scope":9520,"src":"471:38:41","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":9222,"name":"uint32","nodeType":"ElementaryTypeName","src":"471:6:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"public"},{"canonicalName":"OracleTest.InitializeParams","id":9230,"members":[{"constant":false,"id":9225,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":9230,"src":"553:11:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":9224,"name":"uint32","nodeType":"ElementaryTypeName","src":"553:6:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":9227,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":9230,"src":"575:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":9226,"name":"int24","nodeType":"ElementaryTypeName","src":"575:5:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":9229,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":9230,"src":"596:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9228,"name":"uint128","nodeType":"ElementaryTypeName","src":"596:7:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"InitializeParams","nodeType":"StructDefinition","scope":9520,"src":"518:103:41","visibility":"public"},{"body":{"id":9267,"nodeType":"Block","src":"692:244:41","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":9238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9236,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9217,"src":"711:11:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"726:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"711:16:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"616c726561647920696e697469616c697a6564","id":9239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"729:21:41","typeDescriptions":{"typeIdentifier":"t_stringliteral_6fad3ee6d344e662108f49bced409fae87c3af64246556bdd23a34dddc7e1adc","typeString":"literal_string \"already initialized\""},"value":"already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6fad3ee6d344e662108f49bced409fae87c3af64246556bdd23a34dddc7e1adc","typeString":"literal_string \"already initialized\""}],"id":9235,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"703:7:41","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"703:48:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9241,"nodeType":"ExpressionStatement","src":"703:48:41"},{"expression":{"id":9245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9242,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9209,"src":"762:4:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9243,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9232,"src":"769:6:41","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeParams_$9230_calldata_ptr","typeString":"struct OracleTest.InitializeParams calldata"}},"id":9244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"time","nodeType":"MemberAccess","referencedDeclaration":9225,"src":"769:11:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"762:18:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":9246,"nodeType":"ExpressionStatement","src":"762:18:41"},{"expression":{"id":9250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9247,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9211,"src":"791:4:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9248,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9232,"src":"798:6:41","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeParams_$9230_calldata_ptr","typeString":"struct OracleTest.InitializeParams calldata"}},"id":9249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":9227,"src":"798:11:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"791:18:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":9251,"nodeType":"ExpressionStatement","src":"791:18:41"},{"expression":{"id":9255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9252,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9213,"src":"820:9:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9253,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9232,"src":"832:6:41","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeParams_$9230_calldata_ptr","typeString":"struct OracleTest.InitializeParams calldata"}},"id":9254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":9229,"src":"832:16:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"820:28:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":9256,"nodeType":"ExpressionStatement","src":"820:28:41"},{"expression":{"id":9265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":9257,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9217,"src":"860:11:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":9258,"name":"cardinalityNext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9219,"src":"873:15:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":9259,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"859:30:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint16_$","typeString":"tuple(uint16,uint16)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":9262,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9232,"src":"916:6:41","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeParams_$9230_calldata_ptr","typeString":"struct OracleTest.InitializeParams calldata"}},"id":9263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"time","nodeType":"MemberAccess","referencedDeclaration":9225,"src":"916:11:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":9260,"name":"observations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9207,"src":"892:12:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage","typeString":"struct Oracle.Observation storage ref[65535] storage ref"}},"id":9261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":4582,"src":"892:23:41","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$_t_uint32_$returns$_t_uint16_$_t_uint16_$bound_to$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$","typeString":"function (struct Oracle.Observation storage ref[65535] storage pointer,uint32) returns (uint16,uint16)"}},"id":9264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"892:36:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint16_$","typeString":"tuple(uint16,uint16)"}},"src":"859:69:41","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9266,"nodeType":"ExpressionStatement","src":"859:69:41"}]},"functionSelector":"daf50f6b","id":9268,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":9233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9232,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":9268,"src":"649:32:41","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeParams_$9230_calldata_ptr","typeString":"struct OracleTest.InitializeParams"},"typeName":{"id":9231,"name":"InitializeParams","nodeType":"UserDefinedTypeName","referencedDeclaration":9230,"src":"649:16:41","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeParams_$9230_storage_ptr","typeString":"struct OracleTest.InitializeParams"}},"visibility":"internal"}],"src":"648:34:41"},"returnParameters":{"id":9234,"nodeType":"ParameterList","parameters":[],"src":"692:0:41"},"scope":9520,"src":"629:307:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9277,"nodeType":"Block","src":"983:29:41","statements":[{"expression":{"id":9275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9273,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9209,"src":"994:4:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":9274,"name":"by","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9270,"src":"1002:2:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"994:10:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":9276,"nodeType":"ExpressionStatement","src":"994:10:41"}]},"functionSelector":"f7fd2cfa","id":9278,"implemented":true,"kind":"function","modifiers":[],"name":"advanceTime","nodeType":"FunctionDefinition","parameters":{"id":9271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9270,"mutability":"mutable","name":"by","nodeType":"VariableDeclaration","scope":9278,"src":"965:9:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":9269,"name":"uint32","nodeType":"ElementaryTypeName","src":"965:6:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"964:11:41"},"returnParameters":{"id":9272,"nodeType":"ParameterList","parameters":[],"src":"983:0:41"},"scope":9520,"src":"944:68:41","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"canonicalName":"OracleTest.UpdateParams","id":9285,"members":[{"constant":false,"id":9280,"mutability":"mutable","name":"advanceTimeBy","nodeType":"VariableDeclaration","scope":9285,"src":"1051:20:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":9279,"name":"uint32","nodeType":"ElementaryTypeName","src":"1051:6:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":9282,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":9285,"src":"1082:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":9281,"name":"int24","nodeType":"ElementaryTypeName","src":"1082:5:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":9284,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":9285,"src":"1103:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9283,"name":"uint128","nodeType":"ElementaryTypeName","src":"1103:7:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"UpdateParams","nodeType":"StructDefinition","scope":9520,"src":"1020:108:41","visibility":"public"},{"body":{"id":9321,"nodeType":"Block","src":"1252:393:41","statements":[{"expression":{"arguments":[{"expression":{"id":9291,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9287,"src":"1275:6:41","typeDescriptions":{"typeIdentifier":"t_struct$_UpdateParams_$9285_calldata_ptr","typeString":"struct OracleTest.UpdateParams calldata"}},"id":9292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"advanceTimeBy","nodeType":"MemberAccess","referencedDeclaration":9280,"src":"1275:20:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":9290,"name":"advanceTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9278,"src":"1263:11:41","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint32_$returns$__$","typeString":"function (uint32)"}},"id":9293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1263:33:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9294,"nodeType":"ExpressionStatement","src":"1263:33:41"},{"expression":{"id":9309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":9295,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9215,"src":"1308:5:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":9296,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9217,"src":"1315:11:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":9297,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1307:20:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint16_$","typeString":"tuple(uint16,uint16)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9300,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9215,"src":"1363:5:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":9301,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9209,"src":"1383:4:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":9302,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9211,"src":"1402:4:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":9303,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9213,"src":"1421:9:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":9304,"name":"rewardPerSecondX48","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9221,"src":"1445:18:41","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},{"id":9305,"name":"rewardRateEffectiveUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9223,"src":"1478:24:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":9306,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9217,"src":"1517:11:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":9307,"name":"cardinalityNext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9219,"src":"1543:15:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint144","typeString":"uint144"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":9298,"name":"observations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9207,"src":"1330:12:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage","typeString":"struct Oracle.Observation storage ref[65535] storage ref"}},"id":9299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"write","nodeType":"MemberAccess","referencedDeclaration":4669,"src":"1330:18:41","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$_t_uint16_$_t_uint32_$_t_int24_$_t_uint128_$_t_uint144_$_t_uint32_$_t_uint16_$_t_uint16_$returns$_t_uint16_$_t_uint16_$bound_to$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$","typeString":"function (struct Oracle.Observation storage ref[65535] storage pointer,uint16,uint32,int24,uint128,uint144,uint32,uint16,uint16) returns (uint16,uint16)"}},"id":9308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1330:239:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint16_$","typeString":"tuple(uint16,uint16)"}},"src":"1307:262:41","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9310,"nodeType":"ExpressionStatement","src":"1307:262:41"},{"expression":{"id":9314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9311,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9211,"src":"1580:4:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9312,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9287,"src":"1587:6:41","typeDescriptions":{"typeIdentifier":"t_struct$_UpdateParams_$9285_calldata_ptr","typeString":"struct OracleTest.UpdateParams calldata"}},"id":9313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":9282,"src":"1587:11:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1580:18:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":9315,"nodeType":"ExpressionStatement","src":"1580:18:41"},{"expression":{"id":9319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9316,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9213,"src":"1609:9:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9317,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9287,"src":"1621:6:41","typeDescriptions":{"typeIdentifier":"t_struct$_UpdateParams_$9285_calldata_ptr","typeString":"struct OracleTest.UpdateParams calldata"}},"id":9318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":9284,"src":"1621:16:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"1609:28:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":9320,"nodeType":"ExpressionStatement","src":"1609:28:41"}]},"functionSelector":"65829dc5","id":9322,"implemented":true,"kind":"function","modifiers":[],"name":"update","nodeType":"FunctionDefinition","parameters":{"id":9288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9287,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":9322,"src":"1213:28:41","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_UpdateParams_$9285_calldata_ptr","typeString":"struct OracleTest.UpdateParams"},"typeName":{"id":9286,"name":"UpdateParams","nodeType":"UserDefinedTypeName","referencedDeclaration":9285,"src":"1213:12:41","typeDescriptions":{"typeIdentifier":"t_struct$_UpdateParams_$9285_storage_ptr","typeString":"struct OracleTest.UpdateParams"}},"visibility":"internal"}],"src":"1212:30:41"},"returnParameters":{"id":9289,"nodeType":"ParameterList","parameters":[],"src":"1252:0:41"},"scope":9520,"src":"1197:448:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9430,"nodeType":"Block","src":"1715:1089:41","statements":[{"assignments":[9329],"declarations":[{"constant":false,"id":9329,"mutability":"mutable","name":"_tick","nodeType":"VariableDeclaration","scope":9430,"src":"1755:11:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":9328,"name":"int24","nodeType":"ElementaryTypeName","src":"1755:5:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":9331,"initialValue":{"id":9330,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9211,"src":"1769:4:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"1755:18:41"},{"assignments":[9333],"declarations":[{"constant":false,"id":9333,"mutability":"mutable","name":"_liquidity","nodeType":"VariableDeclaration","scope":9430,"src":"1784:18:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9332,"name":"uint128","nodeType":"ElementaryTypeName","src":"1784:7:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":9335,"initialValue":{"id":9334,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9213,"src":"1805:9:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"1784:30:41"},{"assignments":[9337],"declarations":[{"constant":false,"id":9337,"mutability":"mutable","name":"_index","nodeType":"VariableDeclaration","scope":9430,"src":"1825:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":9336,"name":"uint16","nodeType":"ElementaryTypeName","src":"1825:6:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":9339,"initialValue":{"id":9338,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9215,"src":"1841:5:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"VariableDeclarationStatement","src":"1825:21:41"},{"assignments":[9341],"declarations":[{"constant":false,"id":9341,"mutability":"mutable","name":"_cardinality","nodeType":"VariableDeclaration","scope":9430,"src":"1857:19:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":9340,"name":"uint16","nodeType":"ElementaryTypeName","src":"1857:6:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":9343,"initialValue":{"id":9342,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9217,"src":"1879:11:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"VariableDeclarationStatement","src":"1857:33:41"},{"assignments":[9345],"declarations":[{"constant":false,"id":9345,"mutability":"mutable","name":"_cardinalityNext","nodeType":"VariableDeclaration","scope":9430,"src":"1901:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":9344,"name":"uint16","nodeType":"ElementaryTypeName","src":"1901:6:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":9347,"initialValue":{"id":9346,"name":"cardinalityNext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9219,"src":"1927:15:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"VariableDeclarationStatement","src":"1901:41:41"},{"assignments":[9349],"declarations":[{"constant":false,"id":9349,"mutability":"mutable","name":"_time","nodeType":"VariableDeclaration","scope":9430,"src":"1953:12:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":9348,"name":"uint32","nodeType":"ElementaryTypeName","src":"1953:6:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":9351,"initialValue":{"id":9350,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9209,"src":"1968:4:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"1953:19:41"},{"assignments":[9353],"declarations":[{"constant":false,"id":9353,"mutability":"mutable","name":"_rewardPerSecondX48","nodeType":"VariableDeclaration","scope":9430,"src":"1983:27:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":9352,"name":"uint144","nodeType":"ElementaryTypeName","src":"1983:7:41","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"id":9355,"initialValue":{"id":9354,"name":"rewardPerSecondX48","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9221,"src":"2013:18:41","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"nodeType":"VariableDeclarationStatement","src":"1983:48:41"},{"assignments":[9357],"declarations":[{"constant":false,"id":9357,"mutability":"mutable","name":"_rewardRateEffectiveUntil","nodeType":"VariableDeclaration","scope":9430,"src":"2042:32:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":9356,"name":"uint32","nodeType":"ElementaryTypeName","src":"2042:6:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":9359,"initialValue":{"id":9358,"name":"rewardRateEffectiveUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9223,"src":"2077:24:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"2042:59:41"},{"body":{"id":9408,"nodeType":"Block","src":"2158:466:41","statements":[{"expression":{"id":9376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9371,"name":"_time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9349,"src":"2173:5:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"id":9372,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9325,"src":"2182:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UpdateParams_$9285_calldata_ptr_$dyn_calldata_ptr","typeString":"struct OracleTest.UpdateParams calldata[] calldata"}},"id":9374,"indexExpression":{"id":9373,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9361,"src":"2189:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2182:9:41","typeDescriptions":{"typeIdentifier":"t_struct$_UpdateParams_$9285_calldata_ptr","typeString":"struct OracleTest.UpdateParams calldata"}},"id":9375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"advanceTimeBy","nodeType":"MemberAccess","referencedDeclaration":9280,"src":"2182:23:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2173:32:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":9377,"nodeType":"ExpressionStatement","src":"2173:32:41"},{"expression":{"id":9392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":9378,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9337,"src":"2221:6:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":9379,"name":"_cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9341,"src":"2229:12:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":9380,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2220:22:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint16_$","typeString":"tuple(uint16,uint16)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9383,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9337,"src":"2282:6:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":9384,"name":"_time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9349,"src":"2307:5:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":9385,"name":"_tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"2331:5:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":9386,"name":"_liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"2355:10:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":9387,"name":"_rewardPerSecondX48","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9353,"src":"2384:19:41","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},{"id":9388,"name":"_rewardRateEffectiveUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9357,"src":"2422:25:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":9389,"name":"_cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9341,"src":"2466:12:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":9390,"name":"_cardinalityNext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9345,"src":"2497:16:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint144","typeString":"uint144"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":9381,"name":"observations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9207,"src":"2245:12:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage","typeString":"struct Oracle.Observation storage ref[65535] storage ref"}},"id":9382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"write","nodeType":"MemberAccess","referencedDeclaration":4669,"src":"2245:18:41","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$_t_uint16_$_t_uint32_$_t_int24_$_t_uint128_$_t_uint144_$_t_uint32_$_t_uint16_$_t_uint16_$returns$_t_uint16_$_t_uint16_$bound_to$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$","typeString":"function (struct Oracle.Observation storage ref[65535] storage pointer,uint16,uint32,int24,uint128,uint144,uint32,uint16,uint16) returns (uint16,uint16)"}},"id":9391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2245:283:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint16_$","typeString":"tuple(uint16,uint16)"}},"src":"2220:308:41","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9393,"nodeType":"ExpressionStatement","src":"2220:308:41"},{"expression":{"id":9399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9394,"name":"_tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"2543:5:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":9395,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9325,"src":"2551:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UpdateParams_$9285_calldata_ptr_$dyn_calldata_ptr","typeString":"struct OracleTest.UpdateParams calldata[] calldata"}},"id":9397,"indexExpression":{"id":9396,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9361,"src":"2558:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2551:9:41","typeDescriptions":{"typeIdentifier":"t_struct$_UpdateParams_$9285_calldata_ptr","typeString":"struct OracleTest.UpdateParams calldata"}},"id":9398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":9282,"src":"2551:14:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2543:22:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":9400,"nodeType":"ExpressionStatement","src":"2543:22:41"},{"expression":{"id":9406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9401,"name":"_liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"2580:10:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":9402,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9325,"src":"2593:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UpdateParams_$9285_calldata_ptr_$dyn_calldata_ptr","typeString":"struct OracleTest.UpdateParams calldata[] calldata"}},"id":9404,"indexExpression":{"id":9403,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9361,"src":"2600:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2593:9:41","typeDescriptions":{"typeIdentifier":"t_struct$_UpdateParams_$9285_calldata_ptr","typeString":"struct OracleTest.UpdateParams calldata"}},"id":9405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":9284,"src":"2593:19:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2580:32:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":9407,"nodeType":"ExpressionStatement","src":"2580:32:41"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9364,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9361,"src":"2134:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9365,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9325,"src":"2138:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UpdateParams_$9285_calldata_ptr_$dyn_calldata_ptr","typeString":"struct OracleTest.UpdateParams calldata[] calldata"}},"id":9366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2138:13:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2134:17:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9409,"initializationExpression":{"assignments":[9361],"declarations":[{"constant":false,"id":9361,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":9409,"src":"2119:9:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9360,"name":"uint256","nodeType":"ElementaryTypeName","src":"2119:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9363,"initialValue":{"hexValue":"30","id":9362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2131:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2119:13:41"},"loopExpression":{"expression":{"id":9369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2153:3:41","subExpression":{"id":9368,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9361,"src":"2153:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9370,"nodeType":"ExpressionStatement","src":"2153:3:41"},"nodeType":"ForStatement","src":"2114:510:41"},{"expression":{"id":9412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9410,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9211,"src":"2666:4:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9411,"name":"_tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"2673:5:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2666:12:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":9413,"nodeType":"ExpressionStatement","src":"2666:12:41"},{"expression":{"id":9416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9414,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9213,"src":"2689:9:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9415,"name":"_liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"2701:10:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2689:22:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":9417,"nodeType":"ExpressionStatement","src":"2689:22:41"},{"expression":{"id":9420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9418,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9215,"src":"2722:5:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9419,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9337,"src":"2730:6:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"2722:14:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":9421,"nodeType":"ExpressionStatement","src":"2722:14:41"},{"expression":{"id":9424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9422,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9217,"src":"2747:11:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9423,"name":"_cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9341,"src":"2761:12:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"2747:26:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":9425,"nodeType":"ExpressionStatement","src":"2747:26:41"},{"expression":{"id":9428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9426,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9209,"src":"2784:4:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9427,"name":"_time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9349,"src":"2791:5:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2784:12:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":9429,"nodeType":"ExpressionStatement","src":"2784:12:41"}]},"functionSelector":"d81740db","id":9431,"implemented":true,"kind":"function","modifiers":[],"name":"batchUpdate","nodeType":"FunctionDefinition","parameters":{"id":9326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9325,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":9431,"src":"1674:30:41","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UpdateParams_$9285_calldata_ptr_$dyn_calldata_ptr","typeString":"struct OracleTest.UpdateParams[]"},"typeName":{"baseType":{"id":9323,"name":"UpdateParams","nodeType":"UserDefinedTypeName","referencedDeclaration":9285,"src":"1674:12:41","typeDescriptions":{"typeIdentifier":"t_struct$_UpdateParams_$9285_storage_ptr","typeString":"struct OracleTest.UpdateParams"}},"id":9324,"nodeType":"ArrayTypeName","src":"1674:14:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UpdateParams_$9285_storage_$dyn_storage_ptr","typeString":"struct OracleTest.UpdateParams[]"}},"visibility":"internal"}],"src":"1673:32:41"},"returnParameters":{"id":9327,"nodeType":"ParameterList","parameters":[],"src":"1715:0:41"},"scope":9520,"src":"1653:1151:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9444,"nodeType":"Block","src":"2860:89:41","statements":[{"expression":{"id":9442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9436,"name":"cardinalityNext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9219,"src":"2871:15:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9439,"name":"cardinalityNext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9219,"src":"2907:15:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":9440,"name":"_cardinalityNext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9433,"src":"2924:16:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":9437,"name":"observations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9207,"src":"2889:12:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage","typeString":"struct Oracle.Observation storage ref[65535] storage ref"}},"id":9438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"grow","nodeType":"MemberAccess","referencedDeclaration":4717,"src":"2889:17:41","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$_t_uint16_$_t_uint16_$returns$_t_uint16_$bound_to$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$","typeString":"function (struct Oracle.Observation storage ref[65535] storage pointer,uint16,uint16) returns (uint16)"}},"id":9441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2889:52:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"2871:70:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":9443,"nodeType":"ExpressionStatement","src":"2871:70:41"}]},"functionSelector":"761eb23e","id":9445,"implemented":true,"kind":"function","modifiers":[],"name":"grow","nodeType":"FunctionDefinition","parameters":{"id":9434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9433,"mutability":"mutable","name":"_cardinalityNext","nodeType":"VariableDeclaration","scope":9445,"src":"2826:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":9432,"name":"uint16","nodeType":"ElementaryTypeName","src":"2826:6:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"2825:25:41"},"returnParameters":{"id":9435,"nodeType":"ParameterList","parameters":[],"src":"2860:0:41"},"scope":9520,"src":"2812:137:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9472,"nodeType":"Block","src":"3262:312:41","statements":[{"expression":{"arguments":[{"id":9462,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9209,"src":"3332:4:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":9463,"name":"secondsAgos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9448,"src":"3355:11:41","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_calldata_ptr","typeString":"uint32[] calldata"}},{"id":9464,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9211,"src":"3385:4:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":9465,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9215,"src":"3408:5:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":9466,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9213,"src":"3432:9:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":9467,"name":"rewardPerSecondX48","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9221,"src":"3460:18:41","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},{"id":9468,"name":"rewardRateEffectiveUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9223,"src":"3497:24:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":9469,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9217,"src":"3540:11:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_array$_t_uint32_$dyn_calldata_ptr","typeString":"uint32[] calldata"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint144","typeString":"uint144"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":9460,"name":"observations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9207,"src":"3293:12:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage","typeString":"struct Oracle.Observation storage ref[65535] storage ref"}},"id":9461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observe","nodeType":"MemberAccess","referencedDeclaration":5282,"src":"3293:20:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$_t_uint32_$_t_array$_t_uint32_$dyn_memory_ptr_$_t_int24_$_t_uint16_$_t_uint128_$_t_uint144_$_t_uint32_$_t_uint16_$returns$_t_array$_t_int56_$dyn_memory_ptr_$_t_array$_t_uint160_$dyn_memory_ptr_$_t_array$_t_uint192_$dyn_memory_ptr_$bound_to$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$","typeString":"function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32[] memory,int24,uint16,uint128,uint144,uint32,uint16) view returns (int56[] memory,uint160[] memory,uint192[] memory)"}},"id":9470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3293:273:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_int56_$dyn_memory_ptr_$_t_array$_t_uint160_$dyn_memory_ptr_$_t_array$_t_uint192_$dyn_memory_ptr_$","typeString":"tuple(int56[] memory,uint160[] memory,uint192[] memory)"}},"functionReturnParameters":9459,"id":9471,"nodeType":"Return","src":"3273:293:41"}]},"functionSelector":"883bdbfd","id":9473,"implemented":true,"kind":"function","modifiers":[],"name":"observe","nodeType":"FunctionDefinition","parameters":{"id":9449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9448,"mutability":"mutable","name":"secondsAgos","nodeType":"VariableDeclaration","scope":9473,"src":"2984:29:41","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_calldata_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":9446,"name":"uint32","nodeType":"ElementaryTypeName","src":"2984:6:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":9447,"nodeType":"ArrayTypeName","src":"2984:8:41","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"}],"src":"2973:47:41"},"returnParameters":{"id":9459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9452,"mutability":"mutable","name":"tickCumulatives","nodeType":"VariableDeclaration","scope":9473,"src":"3085:30:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[]"},"typeName":{"baseType":{"id":9450,"name":"int56","nodeType":"ElementaryTypeName","src":"3085:5:41","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":9451,"nodeType":"ArrayTypeName","src":"3085:7:41","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_storage_ptr","typeString":"int56[]"}},"visibility":"internal"},{"constant":false,"id":9455,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128s","nodeType":"VariableDeclaration","scope":9473,"src":"3130:51:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[]"},"typeName":{"baseType":{"id":9453,"name":"uint160","nodeType":"ElementaryTypeName","src":"3130:7:41","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":9454,"nodeType":"ArrayTypeName","src":"3130:9:41","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"},{"constant":false,"id":9458,"mutability":"mutable","name":"rewardPerLiquidityCumulativeX64s","nodeType":"VariableDeclaration","scope":9473,"src":"3196:49:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$dyn_memory_ptr","typeString":"uint192[]"},"typeName":{"baseType":{"id":9456,"name":"uint192","nodeType":"ElementaryTypeName","src":"3196:7:41","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"id":9457,"nodeType":"ArrayTypeName","src":"3196:9:41","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$dyn_storage_ptr","typeString":"uint192[]"}},"visibility":"internal"}],"src":"3070:186:41"},"scope":9520,"src":"2957:617:41","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":9518,"nodeType":"Block","src":"3690:508:41","statements":[{"assignments":[9482,9484,9486,9488],"declarations":[{"constant":false,"id":9482,"mutability":"mutable","name":"_time","nodeType":"VariableDeclaration","scope":9518,"src":"3702:12:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":9481,"name":"uint32","nodeType":"ElementaryTypeName","src":"3702:6:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":9484,"mutability":"mutable","name":"_tick","nodeType":"VariableDeclaration","scope":9518,"src":"3716:11:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":9483,"name":"int24","nodeType":"ElementaryTypeName","src":"3716:5:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":9486,"mutability":"mutable","name":"_liquidity","nodeType":"VariableDeclaration","scope":9518,"src":"3729:18:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9485,"name":"uint128","nodeType":"ElementaryTypeName","src":"3729:7:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":9488,"mutability":"mutable","name":"_index","nodeType":"VariableDeclaration","scope":9518,"src":"3749:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":9487,"name":"uint16","nodeType":"ElementaryTypeName","src":"3749:6:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":9494,"initialValue":{"components":[{"id":9489,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9209,"src":"3781:4:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":9490,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9211,"src":"3800:4:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":9491,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9213,"src":"3819:9:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":9492,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9215,"src":"3843:5:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":9493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3766:93:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_int24_$_t_uint128_$_t_uint16_$","typeString":"tuple(uint32,int24,uint128,uint16)"}},"nodeType":"VariableDeclarationStatement","src":"3701:158:41"},{"assignments":[9496],"declarations":[{"constant":false,"id":9496,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":9518,"src":"3870:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9495,"name":"uint256","nodeType":"ElementaryTypeName","src":"3870:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9499,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":9497,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"3890:7:41","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":9498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3890:9:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3870:29:41"},{"expression":{"arguments":[{"id":9503,"name":"_time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9482,"src":"3945:5:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":9504,"name":"secondsAgos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9476,"src":"3965:11:41","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_calldata_ptr","typeString":"uint32[] calldata"}},{"id":9505,"name":"_tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9484,"src":"3991:5:41","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":9506,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9488,"src":"4011:6:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":9507,"name":"_liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9486,"src":"4032:10:41","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":9508,"name":"rewardPerSecondX48","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9221,"src":"4057:18:41","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},{"id":9509,"name":"rewardRateEffectiveUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9223,"src":"4090:24:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":9510,"name":"cardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9217,"src":"4129:11:41","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_array$_t_uint32_$dyn_calldata_ptr","typeString":"uint32[] calldata"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint144","typeString":"uint144"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":9500,"name":"observations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9207,"src":"3910:12:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$65535_storage","typeString":"struct Oracle.Observation storage ref[65535] storage ref"}},"id":9502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observe","nodeType":"MemberAccess","referencedDeclaration":5282,"src":"3910:20:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$_t_uint32_$_t_array$_t_uint32_$dyn_memory_ptr_$_t_int24_$_t_uint16_$_t_uint128_$_t_uint144_$_t_uint32_$_t_uint16_$returns$_t_array$_t_int56_$dyn_memory_ptr_$_t_array$_t_uint160_$dyn_memory_ptr_$_t_array$_t_uint192_$dyn_memory_ptr_$bound_to$_t_array$_t_struct$_Observation_$4444_storage_$65535_storage_ptr_$","typeString":"function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32[] memory,int24,uint16,uint128,uint144,uint32,uint16) view returns (int56[] memory,uint160[] memory,uint192[] memory)"}},"id":9511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3910:241:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_int56_$dyn_memory_ptr_$_t_array$_t_uint160_$dyn_memory_ptr_$_t_array$_t_uint192_$dyn_memory_ptr_$","typeString":"tuple(int56[] memory,uint160[] memory,uint192[] memory)"}},"id":9512,"nodeType":"ExpressionStatement","src":"3910:241:41"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9513,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9496,"src":"4169:9:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":9514,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"4181:7:41","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":9515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4181:9:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4169:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9480,"id":9517,"nodeType":"Return","src":"4162:28:41"}]},"functionSelector":"74e69cef","id":9519,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfObserve","nodeType":"FunctionDefinition","parameters":{"id":9477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9476,"mutability":"mutable","name":"secondsAgos","nodeType":"VariableDeclaration","scope":9519,"src":"3621:29:41","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_calldata_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":9474,"name":"uint32","nodeType":"ElementaryTypeName","src":"3621:6:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":9475,"nodeType":"ArrayTypeName","src":"3621:8:41","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"}],"src":"3610:47:41"},"returnParameters":{"id":9480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9479,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9519,"src":"3681:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9478,"name":"uint256","nodeType":"ElementaryTypeName","src":"3681:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3680:9:41"},"scope":9520,"src":"3582:616:41","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":9521,"src":"125:4076:41"}],"src":"40:4163:41"},"id":41},"contracts/elixir-core/test/SqrtPriceMathEchidnaTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/SqrtPriceMathEchidnaTest.sol","exportedSymbols":{"FixedPoint96":[4075],"FullMath":[4248],"LowGasSafeMath":[4430],"SafeCast":[5526],"SqrtPriceMath":[6042],"SqrtPriceMathEchidnaTest":[10389],"UnsafeMath":[7634]},"id":10390,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":9522,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:42"},{"absolutePath":"contracts/elixir-core/libraries/FullMath.sol","file":"../libraries/FullMath.sol","id":9523,"nodeType":"ImportDirective","scope":10390,"sourceUnit":4249,"src":"67:35:42","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/SqrtPriceMath.sol","file":"../libraries/SqrtPriceMath.sol","id":9524,"nodeType":"ImportDirective","scope":10390,"sourceUnit":6043,"src":"104:40:42","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/FixedPoint96.sol","file":"../libraries/FixedPoint96.sol","id":9525,"nodeType":"ImportDirective","scope":10390,"sourceUnit":4076,"src":"146:39:42","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":10389,"linearizedBaseContracts":[10389],"name":"SqrtPriceMathEchidnaTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":9600,"nodeType":"Block","src":"347:407:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9535,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9531,"src":"366:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"370:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"366:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9534,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"358:7:42","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"358:14:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9539,"nodeType":"ExpressionStatement","src":"358:14:42"},{"assignments":[9541],"declarations":[{"constant":false,"id":9541,"mutability":"mutable","name":"notRoundedUp","nodeType":"VariableDeclaration","scope":9600,"src":"383:20:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9540,"name":"uint256","nodeType":"ElementaryTypeName","src":"383:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9548,"initialValue":{"arguments":[{"id":9544,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9527,"src":"422:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9545,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9529,"src":"425:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9546,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9531,"src":"428:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9542,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"406:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":9543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"406:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":9547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"406:24:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"383:47:42"},{"assignments":[9550],"declarations":[{"constant":false,"id":9550,"mutability":"mutable","name":"roundedUp","nodeType":"VariableDeclaration","scope":9600,"src":"441:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9549,"name":"uint256","nodeType":"ElementaryTypeName","src":"441:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9557,"initialValue":{"arguments":[{"id":9553,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9527,"src":"487:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9554,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9529,"src":"490:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9555,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9531,"src":"493:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9551,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"461:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":9552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":4247,"src":"461:25:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":9556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"461:34:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"441:54:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9559,"name":"roundedUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9550,"src":"513:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":9560,"name":"notRoundedUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9541,"src":"526:12:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"513:25:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9558,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"506:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"506:33:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9563,"nodeType":"ExpressionStatement","src":"506:33:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9565,"name":"roundedUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9550,"src":"557:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9566,"name":"notRoundedUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9541,"src":"569:12:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"557:24:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":9568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"584:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"557:28:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9564,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"550:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"550:36:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9571,"nodeType":"ExpressionStatement","src":"550:36:42"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9572,"name":"roundedUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9550,"src":"601:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9573,"name":"notRoundedUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9541,"src":"613:12:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"601:24:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":9575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"629:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"601:29:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9598,"nodeType":"Block","src":"692:55:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9590,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9527,"src":"721:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9591,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9529,"src":"724:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9592,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9531,"src":"727:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9589,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"714:6:42","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":9593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"714:15:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"733:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"714:20:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9588,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"707:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"707:28:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9597,"nodeType":"ExpressionStatement","src":"707:28:42"}]},"id":9599,"nodeType":"IfStatement","src":"597:150:42","trueBody":{"id":9587,"nodeType":"Block","src":"632:54:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9579,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9527,"src":"661:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9580,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9529,"src":"664:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9581,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9531,"src":"667:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9578,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"654:6:42","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":9582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"654:15:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"672:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"654:19:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9577,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"647:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"647:27:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9586,"nodeType":"ExpressionStatement","src":"647:27:42"}]}}]},"functionSelector":"3d729147","id":9601,"implemented":true,"kind":"function","modifiers":[],"name":"mulDivRoundingUpInvariants","nodeType":"FunctionDefinition","parameters":{"id":9532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9527,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":9601,"src":"276:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9526,"name":"uint256","nodeType":"ElementaryTypeName","src":"276:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9529,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":9601,"src":"296:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9528,"name":"uint256","nodeType":"ElementaryTypeName","src":"296:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9531,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":9601,"src":"316:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9530,"name":"uint256","nodeType":"ElementaryTypeName","src":"316:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"265:67:42"},"returnParameters":{"id":9533,"nodeType":"ParameterList","parameters":[],"src":"347:0:42"},"scope":10389,"src":"230:524:42","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":9662,"nodeType":"Block","src":"933:436:42","statements":[{"assignments":[9613],"declarations":[{"constant":false,"id":9613,"mutability":"mutable","name":"sqrtQ","nodeType":"VariableDeclaration","scope":9662,"src":"944:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":9612,"name":"uint160","nodeType":"ElementaryTypeName","src":"944:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":9621,"initialValue":{"arguments":[{"id":9616,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9603,"src":"1000:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":9617,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9605,"src":"1007:9:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":9618,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9607,"src":"1018:8:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9619,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9609,"src":"1028:10:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9614,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"960:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":9615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getNextSqrtPriceFromInput","nodeType":"MemberAccess","referencedDeclaration":5797,"src":"960:39:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$","typeString":"function (uint160,uint128,uint256,bool) pure returns (uint160)"}},"id":9620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"960:79:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"944:95:42"},{"condition":{"id":9622,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9609,"src":"1056:10:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9660,"nodeType":"Block","src":"1218:144:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9643,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9613,"src":"1240:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":9644,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9603,"src":"1249:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1240:14:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9642,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1233:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1233:22:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9647,"nodeType":"ExpressionStatement","src":"1233:22:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9649,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9607,"src":"1277:8:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"id":9652,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9603,"src":"1319:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":9653,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9613,"src":"1326:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":9654,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9605,"src":"1333:9:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"74727565","id":9655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1344:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9650,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"1289:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":9651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":5957,"src":"1289:29:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":9656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1289:60:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1277:72:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9648,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1270:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1270:80:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9659,"nodeType":"ExpressionStatement","src":"1270:80:42"}]},"id":9661,"nodeType":"IfStatement","src":"1052:310:42","trueBody":{"id":9641,"nodeType":"Block","src":"1068:144:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9624,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9613,"src":"1090:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":9625,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9603,"src":"1099:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1090:14:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9623,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1083:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1083:22:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9628,"nodeType":"ExpressionStatement","src":"1083:22:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9630,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9607,"src":"1127:8:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"id":9633,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9613,"src":"1169:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":9634,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9603,"src":"1176:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":9635,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9605,"src":"1183:9:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"74727565","id":9636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1194:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9631,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"1139:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":9632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":5909,"src":"1139:29:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":9637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1139:60:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1127:72:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9629,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1120:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1120:80:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9640,"nodeType":"ExpressionStatement","src":"1120:80:42"}]}}]},"functionSelector":"1faf4a39","id":9663,"implemented":true,"kind":"function","modifiers":[],"name":"getNextSqrtPriceFromInputInvariants","nodeType":"FunctionDefinition","parameters":{"id":9610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9603,"mutability":"mutable","name":"sqrtP","nodeType":"VariableDeclaration","scope":9663,"src":"817:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":9602,"name":"uint160","nodeType":"ElementaryTypeName","src":"817:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":9605,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":9663,"src":"841:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9604,"name":"uint128","nodeType":"ElementaryTypeName","src":"841:7:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":9607,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":9663,"src":"869:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9606,"name":"uint256","nodeType":"ElementaryTypeName","src":"869:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9609,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":9663,"src":"896:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9608,"name":"bool","nodeType":"ElementaryTypeName","src":"896:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"806:112:42"},"returnParameters":{"id":9611,"nodeType":"ParameterList","parameters":[],"src":"933:0:42"},"scope":10389,"src":"762:607:42","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":9730,"nodeType":"Block","src":"1550:532:42","statements":[{"assignments":[9675],"declarations":[{"constant":false,"id":9675,"mutability":"mutable","name":"sqrtQ","nodeType":"VariableDeclaration","scope":9730,"src":"1561:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":9674,"name":"uint160","nodeType":"ElementaryTypeName","src":"1561:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":9683,"initialValue":{"arguments":[{"id":9678,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9665,"src":"1618:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":9679,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"1625:9:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":9680,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9669,"src":"1636:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9681,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9671,"src":"1647:10:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9676,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"1577:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":9677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getNextSqrtPriceFromOutput","nodeType":"MemberAccess","referencedDeclaration":5839,"src":"1577:40:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$","typeString":"function (uint160,uint128,uint256,bool) pure returns (uint160)"}},"id":9682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1577:81:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"1561:97:42"},{"condition":{"id":9684,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9671,"src":"1675:10:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9728,"nodeType":"Block","src":"1839:236:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9705,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9675,"src":"1861:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1869:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1861:9:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9704,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1854:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1854:17:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9709,"nodeType":"ExpressionStatement","src":"1854:17:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9711,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9675,"src":"1951:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":9712,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9665,"src":"1960:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1951:14:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9710,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1944:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1944:22:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9715,"nodeType":"ExpressionStatement","src":"1944:22:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9717,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9669,"src":"1988:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":9720,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9665,"src":"2031:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":9721,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9675,"src":"2038:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":9722,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"2045:9:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"66616c7365","id":9723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2056:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9718,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"2001:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":9719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":5909,"src":"2001:29:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":9724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2001:61:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1988:74:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9716,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1981:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1981:82:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9727,"nodeType":"ExpressionStatement","src":"1981:82:42"}]},"id":9729,"nodeType":"IfStatement","src":"1671:404:42","trueBody":{"id":9703,"nodeType":"Block","src":"1687:146:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9686,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9675,"src":"1709:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":9687,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9665,"src":"1718:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1709:14:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9685,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1702:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1702:22:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9690,"nodeType":"ExpressionStatement","src":"1702:22:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9692,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9669,"src":"1746:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":9695,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9675,"src":"1789:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":9696,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9665,"src":"1796:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":9697,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"1803:9:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"66616c7365","id":9698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1814:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9693,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"1759:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":9694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":5957,"src":"1759:29:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":9699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1759:61:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1746:74:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9691,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1739:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1739:82:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9702,"nodeType":"ExpressionStatement","src":"1739:82:42"}]}}]},"functionSelector":"f157fb50","id":9731,"implemented":true,"kind":"function","modifiers":[],"name":"getNextSqrtPriceFromOutputInvariants","nodeType":"FunctionDefinition","parameters":{"id":9672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9665,"mutability":"mutable","name":"sqrtP","nodeType":"VariableDeclaration","scope":9731,"src":"1433:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":9664,"name":"uint160","nodeType":"ElementaryTypeName","src":"1433:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":9667,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":9731,"src":"1457:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9666,"name":"uint128","nodeType":"ElementaryTypeName","src":"1457:7:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":9669,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":9731,"src":"1485:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9668,"name":"uint256","nodeType":"ElementaryTypeName","src":"1485:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9671,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":9731,"src":"1513:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9670,"name":"bool","nodeType":"ElementaryTypeName","src":"1513:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1422:113:42"},"returnParameters":{"id":9673,"nodeType":"ParameterList","parameters":[],"src":"1550:0:42"},"scope":10389,"src":"1377:705:42","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":9791,"nodeType":"Block","src":"2267:409:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9743,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9733,"src":"2286:8:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2297:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2286:12:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9742,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2278:7:42","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2278:21:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9747,"nodeType":"ExpressionStatement","src":"2278:21:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":9751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9749,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9735,"src":"2318:9:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2330:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2318:13:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9748,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2310:7:42","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2310:22:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9753,"nodeType":"ExpressionStatement","src":"2310:22:42"},{"assignments":[9755],"declarations":[{"constant":false,"id":9755,"mutability":"mutable","name":"sqrtQX96","nodeType":"VariableDeclaration","scope":9791,"src":"2343:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":9754,"name":"uint160","nodeType":"ElementaryTypeName","src":"2343:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":9763,"initialValue":{"arguments":[{"id":9758,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9733,"src":"2414:8:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":9759,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9735,"src":"2424:9:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":9760,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9737,"src":"2435:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9761,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9739,"src":"2443:3:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9756,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"2362:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":9757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getNextSqrtPriceFromAmount0RoundingUp","nodeType":"MemberAccess","referencedDeclaration":5660,"src":"2362:51:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$","typeString":"function (uint160,uint128,uint256,bool) pure returns (uint160)"}},"id":9762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2362:85:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"2343:104:42"},{"condition":{"id":9764,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9739,"src":"2464:3:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9778,"nodeType":"Block","src":"2530:55:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9773,"name":"sqrtQX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9755,"src":"2552:8:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":9774,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9733,"src":"2564:8:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2552:20:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9772,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2545:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2545:28:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9777,"nodeType":"ExpressionStatement","src":"2545:28:42"}]},"id":9779,"nodeType":"IfStatement","src":"2460:125:42","trueBody":{"id":9771,"nodeType":"Block","src":"2469:55:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9766,"name":"sqrtQX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9755,"src":"2491:8:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":9767,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9733,"src":"2503:8:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2491:20:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9765,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2484:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2484:28:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9770,"nodeType":"ExpressionStatement","src":"2484:28:42"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9780,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9737,"src":"2601:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2611:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2601:11:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9790,"nodeType":"IfStatement","src":"2597:72:42","trueBody":{"id":9789,"nodeType":"Block","src":"2614:55:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9784,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9733,"src":"2636:8:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9785,"name":"sqrtQX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9755,"src":"2648:8:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2636:20:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9783,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2629:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2629:28:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9788,"nodeType":"ExpressionStatement","src":"2629:28:42"}]}}]},"functionSelector":"b46e6714","id":9792,"implemented":true,"kind":"function","modifiers":[],"name":"getNextSqrtPriceFromAmount0RoundingUpInvariants","nodeType":"FunctionDefinition","parameters":{"id":9740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9733,"mutability":"mutable","name":"sqrtPX96","nodeType":"VariableDeclaration","scope":9792,"src":"2157:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":9732,"name":"uint160","nodeType":"ElementaryTypeName","src":"2157:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":9735,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":9792,"src":"2184:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9734,"name":"uint128","nodeType":"ElementaryTypeName","src":"2184:7:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":9737,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":9792,"src":"2212:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9736,"name":"uint256","nodeType":"ElementaryTypeName","src":"2212:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9739,"mutability":"mutable","name":"add","nodeType":"VariableDeclaration","scope":9792,"src":"2237:8:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9738,"name":"bool","nodeType":"ElementaryTypeName","src":"2237:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2146:106:42"},"returnParameters":{"id":9741,"nodeType":"ParameterList","parameters":[],"src":"2267:0:42"},"scope":10389,"src":"2090:586:42","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":9852,"nodeType":"Block","src":"2863:411:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9804,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9794,"src":"2882:8:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2893:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2882:12:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9803,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2874:7:42","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2874:21:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9808,"nodeType":"ExpressionStatement","src":"2874:21:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":9812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9810,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"2914:9:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2926:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2914:13:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9809,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2906:7:42","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2906:22:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9814,"nodeType":"ExpressionStatement","src":"2906:22:42"},{"assignments":[9816],"declarations":[{"constant":false,"id":9816,"mutability":"mutable","name":"sqrtQX96","nodeType":"VariableDeclaration","scope":9852,"src":"2939:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":9815,"name":"uint160","nodeType":"ElementaryTypeName","src":"2939:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":9824,"initialValue":{"arguments":[{"id":9819,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9794,"src":"3012:8:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":9820,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"3022:9:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":9821,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9798,"src":"3033:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9822,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9800,"src":"3041:3:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9817,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"2958:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":9818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getNextSqrtPriceFromAmount1RoundingDown","nodeType":"MemberAccess","referencedDeclaration":5755,"src":"2958:53:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$","typeString":"function (uint160,uint128,uint256,bool) pure returns (uint160)"}},"id":9823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2958:87:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"2939:106:42"},{"condition":{"id":9825,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9800,"src":"3062:3:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9839,"nodeType":"Block","src":"3128:55:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9834,"name":"sqrtQX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"3150:8:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":9835,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9794,"src":"3162:8:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3150:20:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9833,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"3143:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3143:28:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9838,"nodeType":"ExpressionStatement","src":"3143:28:42"}]},"id":9840,"nodeType":"IfStatement","src":"3058:125:42","trueBody":{"id":9832,"nodeType":"Block","src":"3067:55:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9827,"name":"sqrtQX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"3089:8:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":9828,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9794,"src":"3101:8:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3089:20:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9826,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"3082:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3082:28:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9831,"nodeType":"ExpressionStatement","src":"3082:28:42"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9841,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9798,"src":"3199:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3209:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3199:11:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9851,"nodeType":"IfStatement","src":"3195:72:42","trueBody":{"id":9850,"nodeType":"Block","src":"3212:55:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9845,"name":"sqrtPX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9794,"src":"3234:8:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9846,"name":"sqrtQX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"3246:8:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3234:20:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9844,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"3227:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3227:28:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9849,"nodeType":"ExpressionStatement","src":"3227:28:42"}]}}]},"functionSelector":"21e14f8b","id":9853,"implemented":true,"kind":"function","modifiers":[],"name":"getNextSqrtPriceFromAmount1RoundingDownInvariants","nodeType":"FunctionDefinition","parameters":{"id":9801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9794,"mutability":"mutable","name":"sqrtPX96","nodeType":"VariableDeclaration","scope":9853,"src":"2753:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":9793,"name":"uint160","nodeType":"ElementaryTypeName","src":"2753:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":9796,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":9853,"src":"2780:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9795,"name":"uint128","nodeType":"ElementaryTypeName","src":"2780:7:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":9798,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":9853,"src":"2808:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9797,"name":"uint256","nodeType":"ElementaryTypeName","src":"2808:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9800,"mutability":"mutable","name":"add","nodeType":"VariableDeclaration","scope":9853,"src":"2833:8:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9799,"name":"bool","nodeType":"ElementaryTypeName","src":"2833:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2742:106:42"},"returnParameters":{"id":9802,"nodeType":"ParameterList","parameters":[],"src":"2863:0:42"},"scope":10389,"src":"2684:590:42","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":9930,"nodeType":"Block","src":"3414:544:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9863,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9855,"src":"3433:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3441:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3433:9:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9866,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9857,"src":"3446:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3454:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3446:9:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3433:22:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9862,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3425:7:42","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3425:31:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9871,"nodeType":"ExpressionStatement","src":"3425:31:42"},{"assignments":[9873],"declarations":[{"constant":false,"id":9873,"mutability":"mutable","name":"amount0Down","nodeType":"VariableDeclaration","scope":9930,"src":"3469:19:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9872,"name":"uint256","nodeType":"ElementaryTypeName","src":"3469:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9881,"initialValue":{"arguments":[{"id":9876,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9857,"src":"3521:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":9877,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9855,"src":"3528:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":9878,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9859,"src":"3535:9:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"66616c7365","id":9879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3546:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9874,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"3491:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":9875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":5909,"src":"3491:29:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":9880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3491:61:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3469:83:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9883,"name":"amount0Down","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9873,"src":"3570:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":9886,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9855,"src":"3615:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":9887,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9857,"src":"3622:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":9888,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9859,"src":"3629:9:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"66616c7365","id":9889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3640:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9884,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"3585:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":9885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":5909,"src":"3585:29:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":9890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3585:61:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3570:76:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9882,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"3563:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3563:84:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9893,"nodeType":"ExpressionStatement","src":"3563:84:42"},{"assignments":[9895],"declarations":[{"constant":false,"id":9895,"mutability":"mutable","name":"amount0Up","nodeType":"VariableDeclaration","scope":9930,"src":"3660:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9894,"name":"uint256","nodeType":"ElementaryTypeName","src":"3660:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9903,"initialValue":{"arguments":[{"id":9898,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9857,"src":"3710:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":9899,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9855,"src":"3717:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":9900,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9859,"src":"3724:9:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"74727565","id":9901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3735:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9896,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"3680:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":9897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":5909,"src":"3680:29:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":9902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3680:60:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3660:80:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9905,"name":"amount0Up","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9895,"src":"3758:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":9908,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9855,"src":"3801:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":9909,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9857,"src":"3808:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":9910,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9859,"src":"3815:9:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"74727565","id":9911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3826:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9906,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"3771:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":9907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":5909,"src":"3771:29:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":9912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3771:60:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3758:73:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9904,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"3751:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3751:81:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9915,"nodeType":"ExpressionStatement","src":"3751:81:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9917,"name":"amount0Down","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9873,"src":"3852:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":9918,"name":"amount0Up","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9895,"src":"3867:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3852:24:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9916,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"3845:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3845:32:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9921,"nodeType":"ExpressionStatement","src":"3845:32:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9923,"name":"amount0Up","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9895,"src":"3922:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9924,"name":"amount0Down","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9873,"src":"3934:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3922:23:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":9926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3948:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"3922:27:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9922,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"3915:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3915:35:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9929,"nodeType":"ExpressionStatement","src":"3915:35:42"}]},"functionSelector":"3001e65e","id":9931,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount0DeltaInvariants","nodeType":"FunctionDefinition","parameters":{"id":9860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9855,"mutability":"mutable","name":"sqrtP","nodeType":"VariableDeclaration","scope":9931,"src":"3327:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":9854,"name":"uint160","nodeType":"ElementaryTypeName","src":"3327:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":9857,"mutability":"mutable","name":"sqrtQ","nodeType":"VariableDeclaration","scope":9931,"src":"3351:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":9856,"name":"uint160","nodeType":"ElementaryTypeName","src":"3351:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":9859,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":9931,"src":"3375:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9858,"name":"uint128","nodeType":"ElementaryTypeName","src":"3375:7:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3316:83:42"},"returnParameters":{"id":9861,"nodeType":"ParameterList","parameters":[],"src":"3414:0:42"},"scope":10389,"src":"3282:676:42","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":10027,"nodeType":"Block","src":"4268:663:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9943,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9933,"src":"4287:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":9944,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9935,"src":"4296:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4287:14:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9942,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4279:7:42","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4279:23:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9947,"nodeType":"ExpressionStatement","src":"4279:23:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9949,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9933,"src":"4321:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4329:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4321:9:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9952,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9935,"src":"4334:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4342:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4334:9:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4321:22:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9948,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4313:7:42","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4313:31:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9957,"nodeType":"ExpressionStatement","src":"4313:31:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9959,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9933,"src":"4364:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9960,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9935,"src":"4372:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4364:13:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":9962,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4363:15:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9963,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9933,"src":"4381:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4363:23:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9965,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9935,"src":"4390:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4363:32:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9958,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4355:7:42","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4355:41:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9968,"nodeType":"ExpressionStatement","src":"4355:41:42"},{"assignments":[9970],"declarations":[{"constant":false,"id":9970,"mutability":"mutable","name":"numerator1","nodeType":"VariableDeclaration","scope":10027,"src":"4409:18:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9969,"name":"uint256","nodeType":"ElementaryTypeName","src":"4409:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9978,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9973,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9937,"src":"4438:9:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":9972,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4430:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9971,"name":"uint256","nodeType":"ElementaryTypeName","src":"4430:7:42","typeDescriptions":{}}},"id":9974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4430:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"expression":{"id":9975,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4075,"src":"4452:12:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$4075_$","typeString":"type(library FixedPoint96)"}},"id":9976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"RESOLUTION","nodeType":"MemberAccess","referencedDeclaration":4071,"src":"4452:23:42","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4430:45:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4409:66:42"},{"assignments":[9980],"declarations":[{"constant":false,"id":9980,"mutability":"mutable","name":"numerator2","nodeType":"VariableDeclaration","scope":10027,"src":"4486:18:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9979,"name":"uint256","nodeType":"ElementaryTypeName","src":"4486:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9984,"initialValue":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":9983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9981,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9933,"src":"4507:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9982,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9935,"src":"4515:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4507:13:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"4486:34:42"},{"assignments":[9986],"declarations":[{"constant":false,"id":9986,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","scope":10027,"src":"4531:19:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9985,"name":"uint256","nodeType":"ElementaryTypeName","src":"4531:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9993,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9989,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9933,"src":"4561:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":9988,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4553:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9987,"name":"uint256","nodeType":"ElementaryTypeName","src":"4553:7:42","typeDescriptions":{}}},"id":9990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4553:14:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9991,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9935,"src":"4570:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4553:22:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4531:44:42"},{"assignments":[9995],"declarations":[{"constant":false,"id":9995,"mutability":"mutable","name":"safeResult","nodeType":"VariableDeclaration","scope":10027,"src":"4588:18:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9994,"name":"uint256","nodeType":"ElementaryTypeName","src":"4588:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10010,"initialValue":{"condition":{"id":9996,"name":"roundUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9939,"src":"4622:7:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":10005,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9970,"src":"4747:10:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10006,"name":"numerator2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9980,"src":"4759:10:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10007,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9986,"src":"4771:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10003,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"4731:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":10004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"4731:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":10008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4731:52:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4622:161:42","trueExpression":{"arguments":[{"id":9999,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9970,"src":"4675:10:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10000,"name":"numerator2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9980,"src":"4687:10:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10001,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9986,"src":"4699:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9997,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"4649:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":9998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":4247,"src":"4649:25:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":10002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4649:62:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4588:195:42"},{"assignments":[10012],"declarations":[{"constant":false,"id":10012,"mutability":"mutable","name":"fullResult","nodeType":"VariableDeclaration","scope":10027,"src":"4794:18:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10011,"name":"uint256","nodeType":"ElementaryTypeName","src":"4794:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10020,"initialValue":{"arguments":[{"id":10015,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9935,"src":"4845:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10016,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9933,"src":"4852:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10017,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9937,"src":"4859:9:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":10018,"name":"roundUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9939,"src":"4870:7:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10013,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"4815:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":10014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":5909,"src":"4815:29:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":10019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4815:63:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4794:84:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10022,"name":"safeResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9995,"src":"4898:10:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":10023,"name":"fullResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10012,"src":"4912:10:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4898:24:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10021,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"4891:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4891:32:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10026,"nodeType":"ExpressionStatement","src":"4891:32:42"}]},"functionSelector":"8e13a4b9","id":10028,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount0DeltaEquivalency","nodeType":"FunctionDefinition","parameters":{"id":9940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9933,"mutability":"mutable","name":"sqrtP","nodeType":"VariableDeclaration","scope":10028,"src":"4158:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":9932,"name":"uint160","nodeType":"ElementaryTypeName","src":"4158:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":9935,"mutability":"mutable","name":"sqrtQ","nodeType":"VariableDeclaration","scope":10028,"src":"4182:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":9934,"name":"uint160","nodeType":"ElementaryTypeName","src":"4182:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":9937,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":10028,"src":"4206:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9936,"name":"uint128","nodeType":"ElementaryTypeName","src":"4206:7:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":9939,"mutability":"mutable","name":"roundUp","nodeType":"VariableDeclaration","scope":10028,"src":"4234:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9938,"name":"bool","nodeType":"ElementaryTypeName","src":"4234:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4147:106:42"},"returnParameters":{"id":9941,"nodeType":"ParameterList","parameters":[],"src":"4268:0:42"},"scope":10389,"src":"4112:819:42","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":10105,"nodeType":"Block","src":"5071:544:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10038,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10030,"src":"5090:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5098:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5090:9:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10041,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10032,"src":"5103:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5111:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5103:9:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5090:22:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10037,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5082:7:42","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5082:31:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10046,"nodeType":"ExpressionStatement","src":"5082:31:42"},{"assignments":[10048],"declarations":[{"constant":false,"id":10048,"mutability":"mutable","name":"amount1Down","nodeType":"VariableDeclaration","scope":10105,"src":"5126:19:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10047,"name":"uint256","nodeType":"ElementaryTypeName","src":"5126:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10056,"initialValue":{"arguments":[{"id":10051,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10030,"src":"5178:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10052,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10032,"src":"5185:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10053,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10034,"src":"5192:9:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"66616c7365","id":10054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5203:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10049,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"5148:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":10050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":5957,"src":"5148:29:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":10055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5148:61:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5126:83:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10058,"name":"amount1Down","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10048,"src":"5227:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":10061,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10032,"src":"5272:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10062,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10030,"src":"5279:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10063,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10034,"src":"5286:9:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"66616c7365","id":10064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5297:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10059,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"5242:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":10060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":5957,"src":"5242:29:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":10065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5242:61:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5227:76:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10057,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"5220:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5220:84:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10068,"nodeType":"ExpressionStatement","src":"5220:84:42"},{"assignments":[10070],"declarations":[{"constant":false,"id":10070,"mutability":"mutable","name":"amount1Up","nodeType":"VariableDeclaration","scope":10105,"src":"5317:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10069,"name":"uint256","nodeType":"ElementaryTypeName","src":"5317:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10078,"initialValue":{"arguments":[{"id":10073,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10030,"src":"5367:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10074,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10032,"src":"5374:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10075,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10034,"src":"5381:9:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"74727565","id":10076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5392:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10071,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"5337:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":10072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":5957,"src":"5337:29:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":10077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5337:60:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5317:80:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10080,"name":"amount1Up","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10070,"src":"5415:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":10083,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10032,"src":"5458:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10084,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10030,"src":"5465:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10085,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10034,"src":"5472:9:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"hexValue":"74727565","id":10086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5483:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10081,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"5428:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":10082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":5957,"src":"5428:29:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":10087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5428:60:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5415:73:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10079,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"5408:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5408:81:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10090,"nodeType":"ExpressionStatement","src":"5408:81:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10092,"name":"amount1Down","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10048,"src":"5509:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":10093,"name":"amount1Up","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10070,"src":"5524:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5509:24:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10091,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"5502:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5502:32:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10096,"nodeType":"ExpressionStatement","src":"5502:32:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10098,"name":"amount1Up","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10070,"src":"5579:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":10099,"name":"amount1Down","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10048,"src":"5591:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5579:23:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":10101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5605:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5579:27:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10097,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"5572:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5572:35:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10104,"nodeType":"ExpressionStatement","src":"5572:35:42"}]},"functionSelector":"c8569d88","id":10106,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount1DeltaInvariants","nodeType":"FunctionDefinition","parameters":{"id":10035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10030,"mutability":"mutable","name":"sqrtP","nodeType":"VariableDeclaration","scope":10106,"src":"4984:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10029,"name":"uint160","nodeType":"ElementaryTypeName","src":"4984:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10032,"mutability":"mutable","name":"sqrtQ","nodeType":"VariableDeclaration","scope":10106,"src":"5008:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10031,"name":"uint160","nodeType":"ElementaryTypeName","src":"5008:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10034,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":10106,"src":"5032:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":10033,"name":"uint128","nodeType":"ElementaryTypeName","src":"5032:7:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"4973:83:42"},"returnParameters":{"id":10036,"nodeType":"ParameterList","parameters":[],"src":"5071:0:42"},"scope":10389,"src":"4939:676:42","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":10175,"nodeType":"Block","src":"5760:370:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10116,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10108,"src":"5779:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5787:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5779:9:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10119,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10110,"src":"5792:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5800:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5792:9:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5779:22:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10115,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5771:7:42","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5771:31:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10124,"nodeType":"ExpressionStatement","src":"5771:31:42"},{"assignments":[10126],"declarations":[{"constant":false,"id":10126,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":10175,"src":"5815:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10125,"name":"int256","nodeType":"ElementaryTypeName","src":"5815:6:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":10133,"initialValue":{"arguments":[{"id":10129,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10110,"src":"5862:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10130,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10108,"src":"5869:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10131,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10112,"src":"5876:9:42","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":10127,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"5832:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":10128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":5999,"src":"5832:29:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$","typeString":"function (uint160,uint160,int128) pure returns (int256)"}},"id":10132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5832:54:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"5815:71:42"},{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":10136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10134,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10112,"src":"5901:9:42","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":10135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5913:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5901:13:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10143,"nodeType":"IfStatement","src":"5897:39:42","trueBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10138,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10126,"src":"5923:7:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":10139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5934:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5923:12:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10137,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"5916:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5916:20:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10142,"nodeType":"ExpressionStatement","src":"5916:20:42"}},{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":10146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10144,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10112,"src":"5951:9:42","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5963:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5951:13:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10164,"nodeType":"IfStatement","src":"5947:125:42","trueBody":{"id":10163,"nodeType":"Block","src":"5966:106:42","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10147,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10108,"src":"5985:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":10148,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10110,"src":"5994:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"5985:14:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10157,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10126,"src":"6048:7:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6058:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6048:11:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10156,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"6041:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6041:19:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10161,"nodeType":"ExpressionStatement","src":"6041:19:42"},"id":10162,"nodeType":"IfStatement","src":"5981:79:42","trueBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10151,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10126,"src":"6008:7:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6019:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6008:12:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10150,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"6001:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6001:20:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10155,"nodeType":"ExpressionStatement","src":"6001:20:42"}}]}},{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":10167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10165,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10112,"src":"6086:9:42","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6099:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6086:14:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10174,"nodeType":"IfStatement","src":"6082:40:42","trueBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10169,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10126,"src":"6109:7:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6120:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6109:12:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10168,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"6102:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6102:20:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10173,"nodeType":"ExpressionStatement","src":"6102:20:42"}}]},"functionSelector":"b29f199e","id":10176,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount0DeltaSignedInvariants","nodeType":"FunctionDefinition","parameters":{"id":10113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10108,"mutability":"mutable","name":"sqrtP","nodeType":"VariableDeclaration","scope":10176,"src":"5674:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10107,"name":"uint160","nodeType":"ElementaryTypeName","src":"5674:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10110,"mutability":"mutable","name":"sqrtQ","nodeType":"VariableDeclaration","scope":10176,"src":"5698:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10109,"name":"uint160","nodeType":"ElementaryTypeName","src":"5698:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10112,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":10176,"src":"5722:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":10111,"name":"int128","nodeType":"ElementaryTypeName","src":"5722:6:42","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"5663:82:42"},"returnParameters":{"id":10114,"nodeType":"ParameterList","parameters":[],"src":"5760:0:42"},"scope":10389,"src":"5623:507:42","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":10245,"nodeType":"Block","src":"6275:370:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10186,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10178,"src":"6294:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6302:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6294:9:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10189,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10180,"src":"6307:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6315:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6307:9:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6294:22:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10185,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6286:7:42","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6286:31:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10194,"nodeType":"ExpressionStatement","src":"6286:31:42"},{"assignments":[10196],"declarations":[{"constant":false,"id":10196,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":10245,"src":"6330:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10195,"name":"int256","nodeType":"ElementaryTypeName","src":"6330:6:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":10203,"initialValue":{"arguments":[{"id":10199,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10178,"src":"6377:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10200,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10180,"src":"6384:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10201,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10182,"src":"6391:9:42","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":10197,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"6347:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":10198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":6041,"src":"6347:29:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$","typeString":"function (uint160,uint160,int128) pure returns (int256)"}},"id":10202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6347:54:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"6330:71:42"},{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":10206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10204,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10182,"src":"6416:9:42","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":10205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6428:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6416:13:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10213,"nodeType":"IfStatement","src":"6412:39:42","trueBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10208,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10196,"src":"6438:7:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":10209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6449:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6438:12:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10207,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"6431:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6431:20:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10212,"nodeType":"ExpressionStatement","src":"6431:20:42"}},{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":10216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10214,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10182,"src":"6466:9:42","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6478:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6466:13:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10234,"nodeType":"IfStatement","src":"6462:125:42","trueBody":{"id":10233,"nodeType":"Block","src":"6481:106:42","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10217,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10178,"src":"6500:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":10218,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10180,"src":"6509:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6500:14:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10227,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10196,"src":"6563:7:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6573:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6563:11:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10226,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"6556:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6556:19:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10231,"nodeType":"ExpressionStatement","src":"6556:19:42"},"id":10232,"nodeType":"IfStatement","src":"6496:79:42","trueBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10221,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10196,"src":"6523:7:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6534:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6523:12:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10220,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"6516:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6516:20:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10225,"nodeType":"ExpressionStatement","src":"6516:20:42"}}]}},{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":10237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10235,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10182,"src":"6601:9:42","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6614:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6601:14:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10244,"nodeType":"IfStatement","src":"6597:40:42","trueBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10239,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10196,"src":"6624:7:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6635:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6624:12:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10238,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"6617:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6617:20:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10243,"nodeType":"ExpressionStatement","src":"6617:20:42"}}]},"functionSelector":"6e6238d7","id":10246,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount1DeltaSignedInvariants","nodeType":"FunctionDefinition","parameters":{"id":10183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10178,"mutability":"mutable","name":"sqrtP","nodeType":"VariableDeclaration","scope":10246,"src":"6189:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10177,"name":"uint160","nodeType":"ElementaryTypeName","src":"6189:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10180,"mutability":"mutable","name":"sqrtQ","nodeType":"VariableDeclaration","scope":10246,"src":"6213:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10179,"name":"uint160","nodeType":"ElementaryTypeName","src":"6213:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10182,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":10246,"src":"6237:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":10181,"name":"int128","nodeType":"ElementaryTypeName","src":"6237:6:42","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"6178:82:42"},"returnParameters":{"id":10184,"nodeType":"ParameterList","parameters":[],"src":"6275:0:42"},"scope":10389,"src":"6138:507:42","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":10319,"nodeType":"Block","src":"6786:449:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10256,"name":"sqrtA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10248,"src":"6805:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6813:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6805:9:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10259,"name":"sqrtB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10250,"src":"6818:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6826:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6818:9:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6805:22:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10255,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6797:7:42","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6797:31:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10264,"nodeType":"ExpressionStatement","src":"6797:31:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":10268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10266,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10252,"src":"6847:9:42","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6859:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6847:13:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10265,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6839:7:42","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6839:22:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10270,"nodeType":"ExpressionStatement","src":"6839:22:42"},{"assignments":[10272],"declarations":[{"constant":false,"id":10272,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":10319,"src":"6874:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10271,"name":"int256","nodeType":"ElementaryTypeName","src":"6874:6:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":10279,"initialValue":{"arguments":[{"id":10275,"name":"sqrtA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10248,"src":"6921:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10276,"name":"sqrtB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10250,"src":"6928:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10277,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10252,"src":"6935:9:42","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":10273,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"6891:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":10274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":5999,"src":"6891:29:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$","typeString":"function (uint160,uint160,int128) pure returns (int256)"}},"id":10278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6891:54:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"6874:71:42"},{"assignments":[10281],"declarations":[{"constant":false,"id":10281,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":10319,"src":"6956:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10280,"name":"int256","nodeType":"ElementaryTypeName","src":"6956:6:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":10288,"initialValue":{"arguments":[{"id":10284,"name":"sqrtA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10248,"src":"7003:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10285,"name":"sqrtB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10250,"src":"7010:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10286,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10252,"src":"7017:9:42","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":10282,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"6973:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":10283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":6041,"src":"6973:29:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$","typeString":"function (uint160,uint160,int128) pure returns (int256)"}},"id":10287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6973:54:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"6956:71:42"},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10289,"name":"sqrtA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10248,"src":"7044:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":10290,"name":"sqrtB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10250,"src":"7053:5:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7044:14:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10317,"nodeType":"Block","src":"7148:80:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10306,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10272,"src":"7170:7:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7180:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7170:11:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10305,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"7163:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7163:19:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10310,"nodeType":"ExpressionStatement","src":"7163:19:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10312,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10281,"src":"7204:7:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7214:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7204:11:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10311,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"7197:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7197:19:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10316,"nodeType":"ExpressionStatement","src":"7197:19:42"}]},"id":10318,"nodeType":"IfStatement","src":"7040:188:42","trueBody":{"id":10304,"nodeType":"Block","src":"7060:82:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10293,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10272,"src":"7082:7:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7093:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7082:12:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10292,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"7075:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7075:20:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10297,"nodeType":"ExpressionStatement","src":"7075:20:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10299,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10281,"src":"7117:7:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7128:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7117:12:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10298,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"7110:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7110:20:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10303,"nodeType":"ExpressionStatement","src":"7110:20:42"}]}}]},"functionSelector":"b712c47c","id":10320,"implemented":true,"kind":"function","modifiers":[],"name":"getOutOfRangeMintInvariants","nodeType":"FunctionDefinition","parameters":{"id":10253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10248,"mutability":"mutable","name":"sqrtA","nodeType":"VariableDeclaration","scope":10320,"src":"6700:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10247,"name":"uint160","nodeType":"ElementaryTypeName","src":"6700:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10250,"mutability":"mutable","name":"sqrtB","nodeType":"VariableDeclaration","scope":10320,"src":"6724:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10249,"name":"uint160","nodeType":"ElementaryTypeName","src":"6724:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10252,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":10320,"src":"6748:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":10251,"name":"int128","nodeType":"ElementaryTypeName","src":"6748:6:42","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"6689:82:42"},"returnParameters":{"id":10254,"nodeType":"ParameterList","parameters":[],"src":"6786:0:42"},"scope":10389,"src":"6653:582:42","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":10387,"nodeType":"Block","src":"7411:420:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10332,"name":"sqrtLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10322,"src":"7430:9:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7442:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7430:13:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10331,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7422:7:42","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7422:22:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10336,"nodeType":"ExpressionStatement","src":"7422:22:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10338,"name":"sqrtLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10322,"src":"7463:9:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10339,"name":"sqrtUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10326,"src":"7475:9:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7463:21:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10337,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7455:7:42","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7455:30:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10342,"nodeType":"ExpressionStatement","src":"7455:30:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10344,"name":"sqrtLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10322,"src":"7504:9:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":10345,"name":"sqrtCurrent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10324,"src":"7517:11:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7504:24:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10347,"name":"sqrtCurrent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10324,"src":"7532:11:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":10348,"name":"sqrtUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10326,"src":"7547:9:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7532:24:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7504:52:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10343,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7496:7:42","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7496:61:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10352,"nodeType":"ExpressionStatement","src":"7496:61:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":10356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10354,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10328,"src":"7576:9:42","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7588:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7576:13:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10353,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7568:7:42","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7568:22:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10358,"nodeType":"ExpressionStatement","src":"7568:22:42"},{"assignments":[10360],"declarations":[{"constant":false,"id":10360,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":10387,"src":"7603:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10359,"name":"int256","nodeType":"ElementaryTypeName","src":"7603:6:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":10367,"initialValue":{"arguments":[{"id":10363,"name":"sqrtCurrent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10324,"src":"7650:11:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10364,"name":"sqrtUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10326,"src":"7663:9:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10365,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10328,"src":"7674:9:42","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":10361,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"7620:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":10362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":5999,"src":"7620:29:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$","typeString":"function (uint160,uint160,int128) pure returns (int256)"}},"id":10366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7620:64:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7603:81:42"},{"assignments":[10369],"declarations":[{"constant":false,"id":10369,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":10387,"src":"7695:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10368,"name":"int256","nodeType":"ElementaryTypeName","src":"7695:6:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":10376,"initialValue":{"arguments":[{"id":10372,"name":"sqrtLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10322,"src":"7742:9:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10373,"name":"sqrtCurrent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10324,"src":"7753:11:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10374,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10328,"src":"7766:9:42","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":10370,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"7712:13:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":10371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":6041,"src":"7712:29:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$","typeString":"function (uint160,uint160,int128) pure returns (int256)"}},"id":10375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7712:64:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7695:81:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10378,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10360,"src":"7796:7:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7806:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7796:11:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10381,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10369,"src":"7811:7:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7821:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7811:11:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7796:26:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10377,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"7789:6:42","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7789:34:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10386,"nodeType":"ExpressionStatement","src":"7789:34:42"}]},"functionSelector":"39933d51","id":10388,"implemented":true,"kind":"function","modifiers":[],"name":"getInRangeMintInvariants","nodeType":"FunctionDefinition","parameters":{"id":10329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10322,"mutability":"mutable","name":"sqrtLower","nodeType":"VariableDeclaration","scope":10388,"src":"7287:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10321,"name":"uint160","nodeType":"ElementaryTypeName","src":"7287:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10324,"mutability":"mutable","name":"sqrtCurrent","nodeType":"VariableDeclaration","scope":10388,"src":"7315:19:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10323,"name":"uint160","nodeType":"ElementaryTypeName","src":"7315:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10326,"mutability":"mutable","name":"sqrtUpper","nodeType":"VariableDeclaration","scope":10388,"src":"7345:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10325,"name":"uint160","nodeType":"ElementaryTypeName","src":"7345:7:42","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10328,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":10388,"src":"7373:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":10327,"name":"int128","nodeType":"ElementaryTypeName","src":"7373:6:42","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"7276:120:42"},"returnParameters":{"id":10330,"nodeType":"ParameterList","parameters":[],"src":"7411:0:42"},"scope":10389,"src":"7243:588:42","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":10390,"src":"189:7645:42"}],"src":"40:7796:42"},"id":42},"contracts/elixir-core/test/SqrtPriceMathTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/SqrtPriceMathTest.sol","exportedSymbols":{"FixedPoint96":[4075],"FullMath":[4248],"LowGasSafeMath":[4430],"SafeCast":[5526],"SqrtPriceMath":[6042],"SqrtPriceMathTest":[10613],"UnsafeMath":[7634]},"id":10614,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":10391,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:43"},{"absolutePath":"contracts/elixir-core/libraries/SqrtPriceMath.sol","file":"../libraries/SqrtPriceMath.sol","id":10392,"nodeType":"ImportDirective","scope":10614,"sourceUnit":6043,"src":"67:40:43","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":10613,"linearizedBaseContracts":[10613],"name":"SqrtPriceMathTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":10413,"nodeType":"Block","src":"330:105:43","statements":[{"expression":{"arguments":[{"id":10407,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10394,"src":"388:5:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10408,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"395:9:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":10409,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"406:8:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10410,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"416:10:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10405,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"348:13:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":10406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getNextSqrtPriceFromInput","nodeType":"MemberAccess","referencedDeclaration":5797,"src":"348:39:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$","typeString":"function (uint160,uint128,uint256,bool) pure returns (uint160)"}},"id":10411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"348:79:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":10404,"id":10412,"nodeType":"Return","src":"341:86:43"}]},"functionSelector":"aa58276a","id":10414,"implemented":true,"kind":"function","modifiers":[],"name":"getNextSqrtPriceFromInput","nodeType":"FunctionDefinition","parameters":{"id":10401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10394,"mutability":"mutable","name":"sqrtP","nodeType":"VariableDeclaration","scope":10414,"src":"190:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10393,"name":"uint160","nodeType":"ElementaryTypeName","src":"190:7:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10396,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":10414,"src":"214:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":10395,"name":"uint128","nodeType":"ElementaryTypeName","src":"214:7:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":10398,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":10414,"src":"242:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10397,"name":"uint256","nodeType":"ElementaryTypeName","src":"242:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10400,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":10414,"src":"269:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10399,"name":"bool","nodeType":"ElementaryTypeName","src":"269:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"179:112:43"},"returnParameters":{"id":10404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10403,"mutability":"mutable","name":"sqrtQ","nodeType":"VariableDeclaration","scope":10414,"src":"315:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10402,"name":"uint160","nodeType":"ElementaryTypeName","src":"315:7:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"314:15:43"},"scope":10613,"src":"145:290:43","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":10446,"nodeType":"Block","src":"634:177:43","statements":[{"assignments":[10428],"declarations":[{"constant":false,"id":10428,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":10446,"src":"645:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10427,"name":"uint256","nodeType":"ElementaryTypeName","src":"645:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10431,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10429,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"665:7:43","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":10430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"665:9:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"645:29:43"},{"expression":{"arguments":[{"id":10435,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10416,"src":"725:5:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10436,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10418,"src":"732:9:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":10437,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10420,"src":"743:8:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10438,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10422,"src":"753:10:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10432,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"685:13:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":10434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getNextSqrtPriceFromInput","nodeType":"MemberAccess","referencedDeclaration":5797,"src":"685:39:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$","typeString":"function (uint160,uint128,uint256,bool) pure returns (uint160)"}},"id":10439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"685:79:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":10440,"nodeType":"ExpressionStatement","src":"685:79:43"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10441,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10428,"src":"782:9:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":10442,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"794:7:43","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":10443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"794:9:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"782:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10426,"id":10445,"nodeType":"Return","src":"775:28:43"}]},"functionSelector":"034d21e4","id":10447,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetNextSqrtPriceFromInput","nodeType":"FunctionDefinition","parameters":{"id":10423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10416,"mutability":"mutable","name":"sqrtP","nodeType":"VariableDeclaration","scope":10447,"src":"500:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10415,"name":"uint160","nodeType":"ElementaryTypeName","src":"500:7:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10418,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":10447,"src":"524:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":10417,"name":"uint128","nodeType":"ElementaryTypeName","src":"524:7:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":10420,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":10447,"src":"552:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10419,"name":"uint256","nodeType":"ElementaryTypeName","src":"552:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10422,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":10447,"src":"579:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10421,"name":"bool","nodeType":"ElementaryTypeName","src":"579:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"489:112:43"},"returnParameters":{"id":10426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10425,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10447,"src":"625:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10424,"name":"uint256","nodeType":"ElementaryTypeName","src":"625:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"624:9:43"},"scope":10613,"src":"443:368:43","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10468,"nodeType":"Block","src":"1006:107:43","statements":[{"expression":{"arguments":[{"id":10462,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10449,"src":"1065:5:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10463,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10451,"src":"1072:9:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":10464,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10453,"src":"1083:9:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10465,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10455,"src":"1094:10:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10460,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"1024:13:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":10461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getNextSqrtPriceFromOutput","nodeType":"MemberAccess","referencedDeclaration":5839,"src":"1024:40:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$","typeString":"function (uint160,uint128,uint256,bool) pure returns (uint160)"}},"id":10466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1024:81:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":10459,"id":10467,"nodeType":"Return","src":"1017:88:43"}]},"functionSelector":"fedf2b5f","id":10469,"implemented":true,"kind":"function","modifiers":[],"name":"getNextSqrtPriceFromOutput","nodeType":"FunctionDefinition","parameters":{"id":10456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10449,"mutability":"mutable","name":"sqrtP","nodeType":"VariableDeclaration","scope":10469,"src":"865:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10448,"name":"uint160","nodeType":"ElementaryTypeName","src":"865:7:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10451,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":10469,"src":"889:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":10450,"name":"uint128","nodeType":"ElementaryTypeName","src":"889:7:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":10453,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":10469,"src":"917:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10452,"name":"uint256","nodeType":"ElementaryTypeName","src":"917:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10455,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":10469,"src":"945:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10454,"name":"bool","nodeType":"ElementaryTypeName","src":"945:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"854:113:43"},"returnParameters":{"id":10459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10458,"mutability":"mutable","name":"sqrtQ","nodeType":"VariableDeclaration","scope":10469,"src":"991:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10457,"name":"uint160","nodeType":"ElementaryTypeName","src":"991:7:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"990:15:43"},"scope":10613,"src":"819:294:43","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":10501,"nodeType":"Block","src":"1314:179:43","statements":[{"assignments":[10483],"declarations":[{"constant":false,"id":10483,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":10501,"src":"1325:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10482,"name":"uint256","nodeType":"ElementaryTypeName","src":"1325:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10486,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10484,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1345:7:43","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":10485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1345:9:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1325:29:43"},{"expression":{"arguments":[{"id":10490,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10471,"src":"1406:5:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10491,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10473,"src":"1413:9:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":10492,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10475,"src":"1424:9:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10493,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10477,"src":"1435:10:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10487,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"1365:13:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":10489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getNextSqrtPriceFromOutput","nodeType":"MemberAccess","referencedDeclaration":5839,"src":"1365:40:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$","typeString":"function (uint160,uint128,uint256,bool) pure returns (uint160)"}},"id":10494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1365:81:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":10495,"nodeType":"ExpressionStatement","src":"1365:81:43"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10496,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10483,"src":"1464:9:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":10497,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1476:7:43","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":10498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1476:9:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1464:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10481,"id":10500,"nodeType":"Return","src":"1457:28:43"}]},"functionSelector":"e20f7ac0","id":10502,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetNextSqrtPriceFromOutput","nodeType":"FunctionDefinition","parameters":{"id":10478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10471,"mutability":"mutable","name":"sqrtP","nodeType":"VariableDeclaration","scope":10502,"src":"1179:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10470,"name":"uint160","nodeType":"ElementaryTypeName","src":"1179:7:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10473,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":10502,"src":"1203:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":10472,"name":"uint128","nodeType":"ElementaryTypeName","src":"1203:7:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":10475,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":10502,"src":"1231:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10474,"name":"uint256","nodeType":"ElementaryTypeName","src":"1231:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10477,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":10502,"src":"1259:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10476,"name":"bool","nodeType":"ElementaryTypeName","src":"1259:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1168:113:43"},"returnParameters":{"id":10481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10480,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10502,"src":"1305:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10479,"name":"uint256","nodeType":"ElementaryTypeName","src":"1305:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1304:9:43"},"scope":10613,"src":"1121:372:43","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10523,"nodeType":"Block","src":"1680:97:43","statements":[{"expression":{"arguments":[{"id":10517,"name":"sqrtLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10504,"src":"1728:9:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10518,"name":"sqrtUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10506,"src":"1739:9:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10519,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10508,"src":"1750:9:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":10520,"name":"roundUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10510,"src":"1761:7:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10515,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"1698:13:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":10516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":5909,"src":"1698:29:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":10521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1698:71:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10514,"id":10522,"nodeType":"Return","src":"1691:78:43"}]},"functionSelector":"2c32d4b6","id":10524,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount0Delta","nodeType":"FunctionDefinition","parameters":{"id":10511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10504,"mutability":"mutable","name":"sqrtLower","nodeType":"VariableDeclaration","scope":10524,"src":"1536:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10503,"name":"uint160","nodeType":"ElementaryTypeName","src":"1536:7:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10506,"mutability":"mutable","name":"sqrtUpper","nodeType":"VariableDeclaration","scope":10524,"src":"1564:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10505,"name":"uint160","nodeType":"ElementaryTypeName","src":"1564:7:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10508,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":10524,"src":"1592:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":10507,"name":"uint128","nodeType":"ElementaryTypeName","src":"1592:7:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":10510,"mutability":"mutable","name":"roundUp","nodeType":"VariableDeclaration","scope":10524,"src":"1620:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10509,"name":"bool","nodeType":"ElementaryTypeName","src":"1620:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1525:114:43"},"returnParameters":{"id":10514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10513,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":10524,"src":"1663:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10512,"name":"uint256","nodeType":"ElementaryTypeName","src":"1663:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1662:17:43"},"scope":10613,"src":"1501:276:43","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":10545,"nodeType":"Block","src":"1964:97:43","statements":[{"expression":{"arguments":[{"id":10539,"name":"sqrtLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10526,"src":"2012:9:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10540,"name":"sqrtUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10528,"src":"2023:9:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10541,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10530,"src":"2034:9:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":10542,"name":"roundUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10532,"src":"2045:7:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10537,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"1982:13:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":10538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":5957,"src":"1982:29:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":10543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1982:71:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10536,"id":10544,"nodeType":"Return","src":"1975:78:43"}]},"functionSelector":"48a0c5bd","id":10546,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount1Delta","nodeType":"FunctionDefinition","parameters":{"id":10533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10526,"mutability":"mutable","name":"sqrtLower","nodeType":"VariableDeclaration","scope":10546,"src":"1820:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10525,"name":"uint160","nodeType":"ElementaryTypeName","src":"1820:7:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10528,"mutability":"mutable","name":"sqrtUpper","nodeType":"VariableDeclaration","scope":10546,"src":"1848:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10527,"name":"uint160","nodeType":"ElementaryTypeName","src":"1848:7:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10530,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":10546,"src":"1876:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":10529,"name":"uint128","nodeType":"ElementaryTypeName","src":"1876:7:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":10532,"mutability":"mutable","name":"roundUp","nodeType":"VariableDeclaration","scope":10546,"src":"1904:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10531,"name":"bool","nodeType":"ElementaryTypeName","src":"1904:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1809:114:43"},"returnParameters":{"id":10536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10535,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":10546,"src":"1947:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10534,"name":"uint256","nodeType":"ElementaryTypeName","src":"1947:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1946:17:43"},"scope":10613,"src":"1785:276:43","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":10578,"nodeType":"Block","src":"2252:169:43","statements":[{"assignments":[10560],"declarations":[{"constant":false,"id":10560,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":10578,"src":"2263:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10559,"name":"uint256","nodeType":"ElementaryTypeName","src":"2263:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10563,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10561,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"2283:7:43","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":10562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2283:9:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2263:29:43"},{"expression":{"arguments":[{"id":10567,"name":"sqrtLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10548,"src":"2333:9:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10568,"name":"sqrtUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10550,"src":"2344:9:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10569,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10552,"src":"2355:9:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":10570,"name":"roundUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10554,"src":"2366:7:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10564,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"2303:13:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":10566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0Delta","nodeType":"MemberAccess","referencedDeclaration":5909,"src":"2303:29:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":10571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2303:71:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10572,"nodeType":"ExpressionStatement","src":"2303:71:43"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10573,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10560,"src":"2392:9:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":10574,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"2404:7:43","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":10575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2404:9:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2392:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10558,"id":10577,"nodeType":"Return","src":"2385:28:43"}]},"functionSelector":"d7cdaf71","id":10579,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetAmount0Delta","nodeType":"FunctionDefinition","parameters":{"id":10555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10548,"mutability":"mutable","name":"sqrtLower","nodeType":"VariableDeclaration","scope":10579,"src":"2116:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10547,"name":"uint160","nodeType":"ElementaryTypeName","src":"2116:7:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10550,"mutability":"mutable","name":"sqrtUpper","nodeType":"VariableDeclaration","scope":10579,"src":"2144:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10549,"name":"uint160","nodeType":"ElementaryTypeName","src":"2144:7:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10552,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":10579,"src":"2172:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":10551,"name":"uint128","nodeType":"ElementaryTypeName","src":"2172:7:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":10554,"mutability":"mutable","name":"roundUp","nodeType":"VariableDeclaration","scope":10579,"src":"2200:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10553,"name":"bool","nodeType":"ElementaryTypeName","src":"2200:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2105:114:43"},"returnParameters":{"id":10558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10557,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10579,"src":"2243:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10556,"name":"uint256","nodeType":"ElementaryTypeName","src":"2243:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2242:9:43"},"scope":10613,"src":"2069:352:43","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10611,"nodeType":"Block","src":"2612:169:43","statements":[{"assignments":[10593],"declarations":[{"constant":false,"id":10593,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":10611,"src":"2623:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10592,"name":"uint256","nodeType":"ElementaryTypeName","src":"2623:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10596,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10594,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"2643:7:43","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":10595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2643:9:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2623:29:43"},{"expression":{"arguments":[{"id":10600,"name":"sqrtLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10581,"src":"2693:9:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10601,"name":"sqrtUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10583,"src":"2704:9:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10602,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10585,"src":"2715:9:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":10603,"name":"roundUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10587,"src":"2726:7:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10597,"name":"SqrtPriceMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"2663:13:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SqrtPriceMath_$6042_$","typeString":"type(library SqrtPriceMath)"}},"id":10599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount1Delta","nodeType":"MemberAccess","referencedDeclaration":5957,"src":"2663:29:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128,bool) pure returns (uint256)"}},"id":10604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2663:71:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10605,"nodeType":"ExpressionStatement","src":"2663:71:43"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10606,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10593,"src":"2752:9:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":10607,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"2764:7:43","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":10608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2764:9:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2752:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10591,"id":10610,"nodeType":"Return","src":"2745:28:43"}]},"functionSelector":"af955e3b","id":10612,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetAmount1Delta","nodeType":"FunctionDefinition","parameters":{"id":10588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10581,"mutability":"mutable","name":"sqrtLower","nodeType":"VariableDeclaration","scope":10612,"src":"2476:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10580,"name":"uint160","nodeType":"ElementaryTypeName","src":"2476:7:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10583,"mutability":"mutable","name":"sqrtUpper","nodeType":"VariableDeclaration","scope":10612,"src":"2504:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10582,"name":"uint160","nodeType":"ElementaryTypeName","src":"2504:7:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10585,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":10612,"src":"2532:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":10584,"name":"uint128","nodeType":"ElementaryTypeName","src":"2532:7:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":10587,"mutability":"mutable","name":"roundUp","nodeType":"VariableDeclaration","scope":10612,"src":"2560:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10586,"name":"bool","nodeType":"ElementaryTypeName","src":"2560:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2465:114:43"},"returnParameters":{"id":10591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10590,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10612,"src":"2603:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10589,"name":"uint256","nodeType":"ElementaryTypeName","src":"2603:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2602:9:43"},"scope":10613,"src":"2429:352:43","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10614,"src":"111:2673:43"}],"src":"40:2746:43"},"id":43},"contracts/elixir-core/test/SwapMathEchidnaTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/SwapMathEchidnaTest.sol","exportedSymbols":{"FixedPoint96":[4075],"FullMath":[4248],"LowGasSafeMath":[4430],"SafeCast":[5526],"SqrtPriceMath":[6042],"SwapMath":[6303],"SwapMathEchidnaTest":[10800],"UnsafeMath":[7634]},"id":10801,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":10615,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:44"},{"absolutePath":"contracts/elixir-core/libraries/SwapMath.sol","file":"../libraries/SwapMath.sol","id":10616,"nodeType":"ImportDirective","scope":10801,"sourceUnit":6304,"src":"67:35:44","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":10800,"linearizedBaseContracts":[10800],"name":"SwapMathEchidnaTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":10798,"nodeType":"Block","src":"357:1446:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10630,"name":"sqrtPriceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10618,"src":"376:12:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"391:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"376:16:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10629,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"368:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"368:25:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10634,"nodeType":"ExpressionStatement","src":"368:25:44"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10636,"name":"sqrtPriceTargetRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10620,"src":"412:18:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"433:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"412:22:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10635,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"404:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"404:31:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10640,"nodeType":"ExpressionStatement","src":"404:31:44"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint24","typeString":"uint24"},"id":10644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10642,"name":"feePips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10626,"src":"454:7:44","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"464:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"454:11:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10641,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"446:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"446:20:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10646,"nodeType":"ExpressionStatement","src":"446:20:44"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint24","typeString":"uint24"},"id":10650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10648,"name":"feePips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10626,"src":"485:7:44","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"316536","id":10649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"495:3:44","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1e6"},"src":"485:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10647,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"477:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"477:22:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10652,"nodeType":"ExpressionStatement","src":"477:22:44"},{"assignments":[10654,10656,10658,10660],"declarations":[{"constant":false,"id":10654,"mutability":"mutable","name":"sqrtQ","nodeType":"VariableDeclaration","scope":10798,"src":"513:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10653,"name":"uint160","nodeType":"ElementaryTypeName","src":"513:7:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10656,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":10798,"src":"528:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10655,"name":"uint256","nodeType":"ElementaryTypeName","src":"528:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10658,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":10798,"src":"546:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10657,"name":"uint256","nodeType":"ElementaryTypeName","src":"546:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10660,"mutability":"mutable","name":"feeAmount","nodeType":"VariableDeclaration","scope":10798,"src":"565:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10659,"name":"uint256","nodeType":"ElementaryTypeName","src":"565:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10669,"initialValue":{"arguments":[{"id":10663,"name":"sqrtPriceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10618,"src":"624:12:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10664,"name":"sqrtPriceTargetRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10620,"src":"638:18:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10665,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10622,"src":"658:9:44","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":10666,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10624,"src":"669:15:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":10667,"name":"feePips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10626,"src":"686:7:44","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":10661,"name":"SwapMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6303,"src":"599:8:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapMath_$6303_$","typeString":"type(library SwapMath)"}},"id":10662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeSwapStep","nodeType":"MemberAccess","referencedDeclaration":6302,"src":"599:24:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_int256_$_t_uint24_$returns$_t_uint160_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (uint160,uint160,uint128,int256,uint24) pure returns (uint160,uint256,uint256,uint256)"}},"id":10668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"599:95:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint160,uint256,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"512:182:44"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10671,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10656,"src":"714:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":10674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"731:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10673,"name":"uint256","nodeType":"ElementaryTypeName","src":"731:7:44","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":10672,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"726:4:44","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"726:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":10676,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"726:17:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":10677,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10660,"src":"746:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"726:29:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"714:41:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10670,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"707:6:44","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"707:49:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10681,"nodeType":"ExpressionStatement","src":"707:49:44"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10682,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10624,"src":"773:15:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":10683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"791:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"773:19:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10707,"nodeType":"Block","src":"873:83:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10697,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10656,"src":"895:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":10698,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10660,"src":"906:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"895:20:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":10702,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10624,"src":"927:15:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":10701,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"919:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10700,"name":"uint256","nodeType":"ElementaryTypeName","src":"919:7:44","typeDescriptions":{}}},"id":10703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"919:24:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"895:48:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10696,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"888:6:44","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"888:56:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10706,"nodeType":"ExpressionStatement","src":"888:56:44"}]},"id":10708,"nodeType":"IfStatement","src":"769:187:44","trueBody":{"id":10695,"nodeType":"Block","src":"794:73:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10686,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10658,"src":"816:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":10690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"837:16:44","subExpression":{"id":10689,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10624,"src":"838:15:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":10688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"829:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10687,"name":"uint256","nodeType":"ElementaryTypeName","src":"829:7:44","typeDescriptions":{}}},"id":10691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"829:25:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"816:38:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10685,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"809:6:44","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"809:46:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10694,"nodeType":"ExpressionStatement","src":"809:46:44"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10709,"name":"sqrtPriceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10618,"src":"972:12:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":10710,"name":"sqrtPriceTargetRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10620,"src":"988:18:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"972:34:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10737,"nodeType":"IfStatement","src":"968:212:44","trueBody":{"id":10736,"nodeType":"Block","src":"1008:172:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10713,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10656,"src":"1030:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1042:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1030:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10712,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1023:6:44","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1023:21:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10717,"nodeType":"ExpressionStatement","src":"1023:21:44"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10719,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10658,"src":"1066:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1079:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1066:14:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10718,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1059:6:44","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1059:22:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10723,"nodeType":"ExpressionStatement","src":"1059:22:44"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10725,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10660,"src":"1103:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1116:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1103:14:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10724,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1096:6:44","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1096:22:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10729,"nodeType":"ExpressionStatement","src":"1096:22:44"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10731,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10654,"src":"1140:5:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":10732,"name":"sqrtPriceTargetRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10620,"src":"1149:18:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1140:27:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10730,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1133:6:44","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1133:35:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10735,"nodeType":"ExpressionStatement","src":"1133:35:44"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10738,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10654,"src":"1266:5:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":10739,"name":"sqrtPriceTargetRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10620,"src":"1275:18:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1266:27:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10767,"nodeType":"IfStatement","src":"1262:207:44","trueBody":{"id":10766,"nodeType":"Block","src":"1295:174:44","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10741,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10624,"src":"1314:15:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":10742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1332:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1314:19:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10755,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10656,"src":"1408:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":10756,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10660,"src":"1419:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1408:20:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":10760,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10624,"src":"1440:15:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":10759,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1432:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10758,"name":"uint256","nodeType":"ElementaryTypeName","src":"1432:7:44","typeDescriptions":{}}},"id":10761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1432:24:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1408:48:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10754,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1401:6:44","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1401:56:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10764,"nodeType":"ExpressionStatement","src":"1401:56:44"},"id":10765,"nodeType":"IfStatement","src":"1310:147:44","trueBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10745,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10658,"src":"1342:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":10749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1363:16:44","subExpression":{"id":10748,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10624,"src":"1364:15:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":10747,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1355:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10746,"name":"uint256","nodeType":"ElementaryTypeName","src":"1355:7:44","typeDescriptions":{}}},"id":10750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1355:25:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1342:38:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10744,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1335:6:44","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1335:46:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10753,"nodeType":"ExpressionStatement","src":"1335:46:44"}}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10768,"name":"sqrtPriceTargetRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10620,"src":"1542:18:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":10769,"name":"sqrtPriceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10618,"src":"1564:12:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1542:34:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10796,"nodeType":"Block","src":"1690:106:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10785,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10654,"src":"1712:5:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":10786,"name":"sqrtPriceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10618,"src":"1721:12:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1712:21:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10784,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1705:6:44","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1705:29:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10789,"nodeType":"ExpressionStatement","src":"1705:29:44"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10791,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10654,"src":"1756:5:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":10792,"name":"sqrtPriceTargetRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10620,"src":"1765:18:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1756:27:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10790,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1749:6:44","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1749:35:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10795,"nodeType":"ExpressionStatement","src":"1749:35:44"}]},"id":10797,"nodeType":"IfStatement","src":"1538:258:44","trueBody":{"id":10783,"nodeType":"Block","src":"1578:106:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10772,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10654,"src":"1600:5:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":10773,"name":"sqrtPriceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10618,"src":"1609:12:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1600:21:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10771,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1593:6:44","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1593:29:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10776,"nodeType":"ExpressionStatement","src":"1593:29:44"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10778,"name":"sqrtQ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10654,"src":"1644:5:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":10779,"name":"sqrtPriceTargetRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10620,"src":"1653:18:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1644:27:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10777,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1637:6:44","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1637:35:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10782,"nodeType":"ExpressionStatement","src":"1637:35:44"}]}}]},"functionSelector":"d7e3056f","id":10799,"implemented":true,"kind":"function","modifiers":[],"name":"checkComputeSwapStepInvariants","nodeType":"FunctionDefinition","parameters":{"id":10627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10618,"mutability":"mutable","name":"sqrtPriceRaw","nodeType":"VariableDeclaration","scope":10799,"src":"192:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10617,"name":"uint160","nodeType":"ElementaryTypeName","src":"192:7:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10620,"mutability":"mutable","name":"sqrtPriceTargetRaw","nodeType":"VariableDeclaration","scope":10799,"src":"223:26:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10619,"name":"uint160","nodeType":"ElementaryTypeName","src":"223:7:44","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10622,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":10799,"src":"260:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":10621,"name":"uint128","nodeType":"ElementaryTypeName","src":"260:7:44","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":10624,"mutability":"mutable","name":"amountRemaining","nodeType":"VariableDeclaration","scope":10799,"src":"288:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10623,"name":"int256","nodeType":"ElementaryTypeName","src":"288:6:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":10626,"mutability":"mutable","name":"feePips","nodeType":"VariableDeclaration","scope":10799,"src":"321:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":10625,"name":"uint24","nodeType":"ElementaryTypeName","src":"321:6:44","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"181:161:44"},"returnParameters":{"id":10628,"nodeType":"ParameterList","parameters":[],"src":"357:0:44"},"scope":10800,"src":"142:1661:44","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":10801,"src":"106:1700:44"}],"src":"40:1768:44"},"id":44},"contracts/elixir-core/test/SwapMathTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/SwapMathTest.sol","exportedSymbols":{"FixedPoint96":[4075],"FullMath":[4248],"LowGasSafeMath":[4430],"SafeCast":[5526],"SqrtPriceMath":[6042],"SwapMath":[6303],"SwapMathTest":[10871],"UnsafeMath":[7634]},"id":10872,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":10802,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:45"},{"absolutePath":"contracts/elixir-core/libraries/SwapMath.sol","file":"../libraries/SwapMath.sol","id":10803,"nodeType":"ImportDirective","scope":10872,"sourceUnit":6304,"src":"67:35:45","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":10871,"linearizedBaseContracts":[10871],"name":"SwapMathTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":10833,"nodeType":"Block","src":"496:107:45","statements":[{"expression":{"arguments":[{"id":10826,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10805,"src":"539:5:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10827,"name":"sqrtPTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10807,"src":"546:11:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10828,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10809,"src":"559:9:45","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":10829,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10811,"src":"570:15:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":10830,"name":"feePips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10813,"src":"587:7:45","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":10824,"name":"SwapMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6303,"src":"514:8:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapMath_$6303_$","typeString":"type(library SwapMath)"}},"id":10825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeSwapStep","nodeType":"MemberAccess","referencedDeclaration":6302,"src":"514:24:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_int256_$_t_uint24_$returns$_t_uint160_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (uint160,uint160,uint128,int256,uint24) pure returns (uint160,uint256,uint256,uint256)"}},"id":10831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"514:81:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint160,uint256,uint256,uint256)"}},"functionReturnParameters":10823,"id":10832,"nodeType":"Return","src":"507:88:45"}]},"functionSelector":"100d3f74","id":10834,"implemented":true,"kind":"function","modifiers":[],"name":"computeSwapStep","nodeType":"FunctionDefinition","parameters":{"id":10814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10805,"mutability":"mutable","name":"sqrtP","nodeType":"VariableDeclaration","scope":10834,"src":"170:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10804,"name":"uint160","nodeType":"ElementaryTypeName","src":"170:7:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10807,"mutability":"mutable","name":"sqrtPTarget","nodeType":"VariableDeclaration","scope":10834,"src":"194:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10806,"name":"uint160","nodeType":"ElementaryTypeName","src":"194:7:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10809,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":10834,"src":"224:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":10808,"name":"uint128","nodeType":"ElementaryTypeName","src":"224:7:45","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":10811,"mutability":"mutable","name":"amountRemaining","nodeType":"VariableDeclaration","scope":10834,"src":"252:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10810,"name":"int256","nodeType":"ElementaryTypeName","src":"252:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":10813,"mutability":"mutable","name":"feePips","nodeType":"VariableDeclaration","scope":10834,"src":"285:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":10812,"name":"uint24","nodeType":"ElementaryTypeName","src":"285:6:45","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"159:147:45"},"returnParameters":{"id":10823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10816,"mutability":"mutable","name":"sqrtQ","nodeType":"VariableDeclaration","scope":10834,"src":"371:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10815,"name":"uint160","nodeType":"ElementaryTypeName","src":"371:7:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10818,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":10834,"src":"399:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10817,"name":"uint256","nodeType":"ElementaryTypeName","src":"399:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10820,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":10834,"src":"430:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10819,"name":"uint256","nodeType":"ElementaryTypeName","src":"430:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10822,"mutability":"mutable","name":"feeAmount","nodeType":"VariableDeclaration","scope":10834,"src":"462:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10821,"name":"uint256","nodeType":"ElementaryTypeName","src":"462:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"356:134:45"},"scope":10871,"src":"135:468:45","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":10869,"nodeType":"Block","src":"827:179:45","statements":[{"assignments":[10850],"declarations":[{"constant":false,"id":10850,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":10869,"src":"838:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10849,"name":"uint256","nodeType":"ElementaryTypeName","src":"838:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10853,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10851,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"858:7:45","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":10852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"858:9:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"838:29:45"},{"expression":{"arguments":[{"id":10857,"name":"sqrtP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10836,"src":"903:5:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10858,"name":"sqrtPTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10838,"src":"910:11:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":10859,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10840,"src":"923:9:45","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":10860,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10842,"src":"934:15:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":10861,"name":"feePips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10844,"src":"951:7:45","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":10854,"name":"SwapMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6303,"src":"878:8:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapMath_$6303_$","typeString":"type(library SwapMath)"}},"id":10856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeSwapStep","nodeType":"MemberAccess","referencedDeclaration":6302,"src":"878:24:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_int256_$_t_uint24_$returns$_t_uint160_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (uint160,uint160,uint128,int256,uint24) pure returns (uint160,uint256,uint256,uint256)"}},"id":10862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"878:81:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint160,uint256,uint256,uint256)"}},"id":10863,"nodeType":"ExpressionStatement","src":"878:81:45"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10864,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10850,"src":"977:9:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":10865,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"989:7:45","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":10866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"989:9:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"977:21:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10848,"id":10868,"nodeType":"Return","src":"970:28:45"}]},"functionSelector":"d28c51b7","id":10870,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfComputeSwapStep","nodeType":"FunctionDefinition","parameters":{"id":10845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10836,"mutability":"mutable","name":"sqrtP","nodeType":"VariableDeclaration","scope":10870,"src":"658:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10835,"name":"uint160","nodeType":"ElementaryTypeName","src":"658:7:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10838,"mutability":"mutable","name":"sqrtPTarget","nodeType":"VariableDeclaration","scope":10870,"src":"682:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10837,"name":"uint160","nodeType":"ElementaryTypeName","src":"682:7:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":10840,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":10870,"src":"712:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":10839,"name":"uint128","nodeType":"ElementaryTypeName","src":"712:7:45","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":10842,"mutability":"mutable","name":"amountRemaining","nodeType":"VariableDeclaration","scope":10870,"src":"740:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10841,"name":"int256","nodeType":"ElementaryTypeName","src":"740:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":10844,"mutability":"mutable","name":"feePips","nodeType":"VariableDeclaration","scope":10870,"src":"773:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":10843,"name":"uint24","nodeType":"ElementaryTypeName","src":"773:6:45","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"647:147:45"},"returnParameters":{"id":10848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10847,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10870,"src":"818:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10846,"name":"uint256","nodeType":"ElementaryTypeName","src":"818:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"817:9:45"},"scope":10871,"src":"611:395:45","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10872,"src":"106:903:45"}],"src":"40:971:45"},"id":45},"contracts/elixir-core/test/TestERC20.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/TestERC20.sol","exportedSymbols":{"IERC20Minimal":[3162],"TestERC20":[11117]},"id":11118,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":10873,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:46"},{"absolutePath":"contracts/elixir-core/interfaces/IERC20Minimal.sol","file":"../interfaces/IERC20Minimal.sol","id":10874,"nodeType":"ImportDirective","scope":11118,"sourceUnit":3163,"src":"67:41:46","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10875,"name":"IERC20Minimal","nodeType":"UserDefinedTypeName","referencedDeclaration":3162,"src":"134:13:46","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Minimal_$3162","typeString":"contract IERC20Minimal"}},"id":10876,"nodeType":"InheritanceSpecifier","src":"134:13:46"}],"contractDependencies":[3162],"contractKind":"contract","fullyImplemented":true,"id":11117,"linearizedBaseContracts":[11117,3162],"name":"TestERC20","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[3101],"constant":false,"functionSelector":"70a08231","id":10881,"mutability":"mutable","name":"balanceOf","nodeType":"VariableDeclaration","overrides":{"id":10880,"nodeType":"OverrideSpecifier","overrides":[],"src":"190:8:46"},"scope":11117,"src":"155:53:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":10879,"keyType":{"id":10877,"name":"address","nodeType":"ElementaryTypeName","src":"163:7:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"155:27:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":10878,"name":"uint256","nodeType":"ElementaryTypeName","src":"174:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"baseFunctions":[3121],"constant":false,"functionSelector":"dd62ed3e","id":10888,"mutability":"mutable","name":"allowance","nodeType":"VariableDeclaration","overrides":{"id":10887,"nodeType":"OverrideSpecifier","overrides":[],"src":"270:8:46"},"scope":11117,"src":"215:73:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":10886,"keyType":{"id":10882,"name":"address","nodeType":"ElementaryTypeName","src":"223:7:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"215:47:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":10885,"keyType":{"id":10883,"name":"address","nodeType":"ElementaryTypeName","src":"242:7:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"234:27:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":10884,"name":"uint256","nodeType":"ElementaryTypeName","src":"253:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"body":{"id":10899,"nodeType":"Block","src":"331:49:46","statements":[{"expression":{"arguments":[{"expression":{"id":10894,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"347:3:46","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"347:10:46","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":10896,"name":"amountToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10890,"src":"359:12:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10893,"name":"mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10929,"src":"342:4:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":10897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"342:30:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10898,"nodeType":"ExpressionStatement","src":"342:30:46"}]},"id":10900,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":10891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10890,"mutability":"mutable","name":"amountToMint","nodeType":"VariableDeclaration","scope":10900,"src":"309:20:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10889,"name":"uint256","nodeType":"ElementaryTypeName","src":"309:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"308:22:46"},"returnParameters":{"id":10892,"nodeType":"ParameterList","parameters":[],"src":"331:0:46"},"scope":11117,"src":"297:83:46","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":10928,"nodeType":"Block","src":"437:162:46","statements":[{"assignments":[10908],"declarations":[{"constant":false,"id":10908,"mutability":"mutable","name":"balanceNext","nodeType":"VariableDeclaration","scope":10928,"src":"448:19:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10907,"name":"uint256","nodeType":"ElementaryTypeName","src":"448:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10914,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":10909,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10881,"src":"470:9:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10911,"indexExpression":{"id":10910,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10902,"src":"480:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"470:13:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":10912,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10904,"src":"486:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"470:22:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"448:44:46"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10916,"name":"balanceNext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"511:11:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":10917,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10904,"src":"526:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"511:21:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6f766572666c6f772062616c616e6365","id":10919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"534:18:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_97564ae4d1714f0bc474190a1dcad42c537fb64fed59de7d2adfef4f875a6a26","typeString":"literal_string \"overflow balance\""},"value":"overflow balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_97564ae4d1714f0bc474190a1dcad42c537fb64fed59de7d2adfef4f875a6a26","typeString":"literal_string \"overflow balance\""}],"id":10915,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"503:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"503:50:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10921,"nodeType":"ExpressionStatement","src":"503:50:46"},{"expression":{"id":10926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10922,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10881,"src":"564:9:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10924,"indexExpression":{"id":10923,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10902,"src":"574:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"564:13:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10925,"name":"balanceNext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10908,"src":"580:11:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"564:27:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10927,"nodeType":"ExpressionStatement","src":"564:27:46"}]},"functionSelector":"40c10f19","id":10929,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":10905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10902,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":10929,"src":"402:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10901,"name":"address","nodeType":"ElementaryTypeName","src":"402:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10904,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":10929,"src":"414:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10903,"name":"uint256","nodeType":"ElementaryTypeName","src":"414:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"401:28:46"},"returnParameters":{"id":10906,"nodeType":"ParameterList","parameters":[],"src":"437:0:46"},"scope":11117,"src":"388:211:46","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3111],"body":{"id":10994,"nodeType":"Block","src":"693:481:46","statements":[{"assignments":[10940],"declarations":[{"constant":false,"id":10940,"mutability":"mutable","name":"balanceBefore","nodeType":"VariableDeclaration","scope":10994,"src":"704:21:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10939,"name":"uint256","nodeType":"ElementaryTypeName","src":"704:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10945,"initialValue":{"baseExpression":{"id":10941,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10881,"src":"728:9:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10944,"indexExpression":{"expression":{"id":10942,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"738:3:46","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"738:10:46","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"728:21:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"704:45:46"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10947,"name":"balanceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10940,"src":"768:13:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":10948,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10933,"src":"785:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"768:23:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e73756666696369656e742062616c616e6365","id":10950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"793:22:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_a6d1ff1db3d0b9b8c60e12ccab5ce7431be9a2cd0518ac362f1c5c1e0b1cefee","typeString":"literal_string \"insufficient balance\""},"value":"insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a6d1ff1db3d0b9b8c60e12ccab5ce7431be9a2cd0518ac362f1c5c1e0b1cefee","typeString":"literal_string \"insufficient balance\""}],"id":10946,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"760:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"760:56:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10952,"nodeType":"ExpressionStatement","src":"760:56:46"},{"expression":{"id":10960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10953,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10881,"src":"827:9:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10956,"indexExpression":{"expression":{"id":10954,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"837:3:46","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"837:10:46","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"827:21:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10957,"name":"balanceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10940,"src":"851:13:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":10958,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10933,"src":"867:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"851:22:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"827:46:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10961,"nodeType":"ExpressionStatement","src":"827:46:46"},{"assignments":[10963],"declarations":[{"constant":false,"id":10963,"mutability":"mutable","name":"balanceRecipient","nodeType":"VariableDeclaration","scope":10994,"src":"886:24:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10962,"name":"uint256","nodeType":"ElementaryTypeName","src":"886:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10967,"initialValue":{"baseExpression":{"id":10964,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10881,"src":"913:9:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10966,"indexExpression":{"id":10965,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10931,"src":"923:9:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"913:20:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"886:47:46"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10969,"name":"balanceRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10963,"src":"952:16:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":10970,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10933,"src":"971:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"952:25:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":10972,"name":"balanceRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10963,"src":"981:16:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"952:45:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726563697069656e742062616c616e6365206f766572666c6f77","id":10974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"999:28:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_bf713087cf21829ae9e7fa7c50c04d11ebcb989ba016ac20caf1a24d208fb619","typeString":"literal_string \"recipient balance overflow\""},"value":"recipient balance overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bf713087cf21829ae9e7fa7c50c04d11ebcb989ba016ac20caf1a24d208fb619","typeString":"literal_string \"recipient balance overflow\""}],"id":10968,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"944:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"944:84:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10976,"nodeType":"ExpressionStatement","src":"944:84:46"},{"expression":{"id":10983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10977,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10881,"src":"1039:9:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10979,"indexExpression":{"id":10978,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10931,"src":"1049:9:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1039:20:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10980,"name":"balanceRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10963,"src":"1062:16:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":10981,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10933,"src":"1081:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1062:25:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1039:48:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10984,"nodeType":"ExpressionStatement","src":"1039:48:46"},{"eventCall":{"arguments":[{"expression":{"id":10986,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1114:3:46","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1114:10:46","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":10988,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10931,"src":"1126:9:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10989,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10933,"src":"1137:6:46","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":10985,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3152,"src":"1105:8:46","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":10990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1105:39:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10991,"nodeType":"EmitStatement","src":"1100:44:46"},{"expression":{"hexValue":"74727565","id":10992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1162:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":10938,"id":10993,"nodeType":"Return","src":"1155:11:46"}]},"functionSelector":"a9059cbb","id":10995,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","overrides":{"id":10935,"nodeType":"OverrideSpecifier","overrides":[],"src":"669:8:46"},"parameters":{"id":10934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10931,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":10995,"src":"625:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10930,"name":"address","nodeType":"ElementaryTypeName","src":"625:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10933,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":10995,"src":"644:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10932,"name":"uint256","nodeType":"ElementaryTypeName","src":"644:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"624:35:46"},"returnParameters":{"id":10938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10937,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10995,"src":"687:4:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10936,"name":"bool","nodeType":"ElementaryTypeName","src":"687:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"686:6:46"},"scope":11117,"src":"607:567:46","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3131],"body":{"id":11023,"nodeType":"Block","src":"1265:133:46","statements":[{"expression":{"id":11012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":11005,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10888,"src":"1276:9:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":11009,"indexExpression":{"expression":{"id":11006,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1286:3:46","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1286:10:46","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1276:21:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11010,"indexExpression":{"id":11008,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10997,"src":"1298:7:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1276:30:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11011,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10999,"src":"1309:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1276:39:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11013,"nodeType":"ExpressionStatement","src":"1276:39:46"},{"eventCall":{"arguments":[{"expression":{"id":11015,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1340:3:46","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1340:10:46","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":11017,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10997,"src":"1352:7:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11018,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10999,"src":"1361:6:46","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":11014,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3161,"src":"1331:8:46","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1331:37:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11020,"nodeType":"EmitStatement","src":"1326:42:46"},{"expression":{"hexValue":"74727565","id":11021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1386:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":11004,"id":11022,"nodeType":"Return","src":"1379:11:46"}]},"functionSelector":"095ea7b3","id":11024,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":{"id":11001,"nodeType":"OverrideSpecifier","overrides":[],"src":"1241:8:46"},"parameters":{"id":11000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10997,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":11024,"src":"1199:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10996,"name":"address","nodeType":"ElementaryTypeName","src":"1199:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10999,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11024,"src":"1216:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10998,"name":"uint256","nodeType":"ElementaryTypeName","src":"1216:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1198:33:46"},"returnParameters":{"id":11004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11003,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11024,"src":"1259:4:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11002,"name":"bool","nodeType":"ElementaryTypeName","src":"1259:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1258:6:46"},"scope":11117,"src":"1182:216:46","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3143],"body":{"id":11115,"nodeType":"Block","src":"1546:679:46","statements":[{"assignments":[11037],"declarations":[{"constant":false,"id":11037,"mutability":"mutable","name":"allowanceBefore","nodeType":"VariableDeclaration","scope":11115,"src":"1557:23:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11036,"name":"uint256","nodeType":"ElementaryTypeName","src":"1557:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11044,"initialValue":{"baseExpression":{"baseExpression":{"id":11038,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10888,"src":"1583:9:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":11040,"indexExpression":{"id":11039,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11026,"src":"1593:6:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1583:17:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11043,"indexExpression":{"expression":{"id":11041,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1601:3:46","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1601:10:46","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1583:29:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1557:55:46"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11046,"name":"allowanceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11037,"src":"1631:15:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":11047,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11030,"src":"1650:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1631:25:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"616c6c6f77616e636520696e73756666696369656e74","id":11049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1658:24:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_48c7521efa89c1111e54a3bf4ffe4235347647ac1a2a279a72b8228b6457c3d8","typeString":"literal_string \"allowance insufficient\""},"value":"allowance insufficient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_48c7521efa89c1111e54a3bf4ffe4235347647ac1a2a279a72b8228b6457c3d8","typeString":"literal_string \"allowance insufficient\""}],"id":11045,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1623:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1623:60:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11051,"nodeType":"ExpressionStatement","src":"1623:60:46"},{"expression":{"id":11061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":11052,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10888,"src":"1696:9:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":11056,"indexExpression":{"id":11053,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11026,"src":"1706:6:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1696:17:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11057,"indexExpression":{"expression":{"id":11054,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1714:3:46","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1714:10:46","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1696:29:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11058,"name":"allowanceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11037,"src":"1728:15:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11059,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11030,"src":"1746:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1728:24:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1696:56:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11062,"nodeType":"ExpressionStatement","src":"1696:56:46"},{"assignments":[11064],"declarations":[{"constant":false,"id":11064,"mutability":"mutable","name":"balanceRecipient","nodeType":"VariableDeclaration","scope":11115,"src":"1765:24:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11063,"name":"uint256","nodeType":"ElementaryTypeName","src":"1765:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11068,"initialValue":{"baseExpression":{"id":11065,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10881,"src":"1792:9:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11067,"indexExpression":{"id":11066,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11028,"src":"1802:9:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1792:20:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1765:47:46"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11070,"name":"balanceRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11064,"src":"1831:16:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":11071,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11030,"src":"1850:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1831:25:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":11073,"name":"balanceRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11064,"src":"1860:16:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1831:45:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6f766572666c6f772062616c616e636520726563697069656e74","id":11075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1878:28:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_33fbf641ae77c06deddfb3a57d17dbbe6d85120e3104f1f9f1a8cde7162d5c8f","typeString":"literal_string \"overflow balance recipient\""},"value":"overflow balance recipient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_33fbf641ae77c06deddfb3a57d17dbbe6d85120e3104f1f9f1a8cde7162d5c8f","typeString":"literal_string \"overflow balance recipient\""}],"id":11069,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1823:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1823:84:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11077,"nodeType":"ExpressionStatement","src":"1823:84:46"},{"expression":{"id":11084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11078,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10881,"src":"1918:9:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11080,"indexExpression":{"id":11079,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11028,"src":"1928:9:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1918:20:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11081,"name":"balanceRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11064,"src":"1941:16:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":11082,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11030,"src":"1960:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1941:25:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1918:48:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11085,"nodeType":"ExpressionStatement","src":"1918:48:46"},{"assignments":[11087],"declarations":[{"constant":false,"id":11087,"mutability":"mutable","name":"balanceSender","nodeType":"VariableDeclaration","scope":11115,"src":"1977:21:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11086,"name":"uint256","nodeType":"ElementaryTypeName","src":"1977:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11091,"initialValue":{"baseExpression":{"id":11088,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10881,"src":"2001:9:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11090,"indexExpression":{"id":11089,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11026,"src":"2011:6:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2001:17:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1977:41:46"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11093,"name":"balanceSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11087,"src":"2037:13:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":11094,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11030,"src":"2054:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2037:23:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"756e646572666c6f772062616c616e63652073656e646572","id":11096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2062:26:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_cba23faf5574764a7c4bcd4fd79e71cda2b64d22d2246246a1b332a5e2ddb70a","typeString":"literal_string \"underflow balance sender\""},"value":"underflow balance sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cba23faf5574764a7c4bcd4fd79e71cda2b64d22d2246246a1b332a5e2ddb70a","typeString":"literal_string \"underflow balance sender\""}],"id":11092,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2029:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2029:60:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11098,"nodeType":"ExpressionStatement","src":"2029:60:46"},{"expression":{"id":11105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11099,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10881,"src":"2100:9:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11101,"indexExpression":{"id":11100,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11026,"src":"2110:6:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2100:17:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11102,"name":"balanceSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11087,"src":"2120:13:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11103,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11030,"src":"2136:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2120:22:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2100:42:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11106,"nodeType":"ExpressionStatement","src":"2100:42:46"},{"eventCall":{"arguments":[{"id":11108,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11026,"src":"2169:6:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11109,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11028,"src":"2177:9:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11110,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11030,"src":"2188:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11107,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3152,"src":"2160:8:46","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2160:35:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11112,"nodeType":"EmitStatement","src":"2155:40:46"},{"expression":{"hexValue":"74727565","id":11113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2213:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":11035,"id":11114,"nodeType":"Return","src":"2206:11:46"}]},"functionSelector":"23b872dd","id":11116,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":{"id":11032,"nodeType":"OverrideSpecifier","overrides":[],"src":"1522:8:46"},"parameters":{"id":11031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11026,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":11116,"src":"1438:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11025,"name":"address","nodeType":"ElementaryTypeName","src":"1438:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11028,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11116,"src":"1463:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11027,"name":"address","nodeType":"ElementaryTypeName","src":"1463:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11030,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11116,"src":"1491:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11029,"name":"uint256","nodeType":"ElementaryTypeName","src":"1491:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1427:85:46"},"returnParameters":{"id":11035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11034,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11116,"src":"1540:4:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11033,"name":"bool","nodeType":"ElementaryTypeName","src":"1540:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1539:6:46"},"scope":11117,"src":"1406:819:46","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11118,"src":"112:2116:46"}],"src":"40:2190:46"},"id":46},"contracts/elixir-core/test/TestElixirCallee.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/TestElixirCallee.sol","exportedSymbols":{"IERC20Minimal":[3162],"IElixirFlashCallback":[3287],"IElixirMintCallback":[3301],"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"IElixirSwapCallback":[3315],"SafeCast":[5526],"TestElixirCallee":[11610],"TickMath":[7567]},"id":11611,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":11119,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:47"},{"absolutePath":"contracts/elixir-core/interfaces/IERC20Minimal.sol","file":"../interfaces/IERC20Minimal.sol","id":11120,"nodeType":"ImportDirective","scope":11611,"sourceUnit":3163,"src":"67:41:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/SafeCast.sol","file":"../libraries/SafeCast.sol","id":11121,"nodeType":"ImportDirective","scope":11611,"sourceUnit":5527,"src":"112:35:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/TickMath.sol","file":"../libraries/TickMath.sol","id":11122,"nodeType":"ImportDirective","scope":11611,"sourceUnit":7568,"src":"149:35:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol","file":"../interfaces/callback/IElixirMintCallback.sol","id":11123,"nodeType":"ImportDirective","scope":11611,"sourceUnit":3302,"src":"188:56:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol","file":"../interfaces/callback/IElixirSwapCallback.sol","id":11124,"nodeType":"ImportDirective","scope":11611,"sourceUnit":3316,"src":"246:56:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/callback/IElixirFlashCallback.sol","file":"../interfaces/callback/IElixirFlashCallback.sol","id":11125,"nodeType":"ImportDirective","scope":11611,"sourceUnit":3288,"src":"304:57:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"../interfaces/IElixirPool.sol","id":11126,"nodeType":"ImportDirective","scope":11611,"sourceUnit":3274,"src":"365:39:47","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11127,"name":"IElixirMintCallback","nodeType":"UserDefinedTypeName","referencedDeclaration":3301,"src":"442:19:47","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirMintCallback_$3301","typeString":"contract IElixirMintCallback"}},"id":11128,"nodeType":"InheritanceSpecifier","src":"442:19:47"},{"baseName":{"id":11129,"name":"IElixirSwapCallback","nodeType":"UserDefinedTypeName","referencedDeclaration":3315,"src":"468:19:47","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirSwapCallback_$3315","typeString":"contract IElixirSwapCallback"}},"id":11130,"nodeType":"InheritanceSpecifier","src":"468:19:47"},{"baseName":{"id":11131,"name":"IElixirFlashCallback","nodeType":"UserDefinedTypeName","referencedDeclaration":3287,"src":"494:20:47","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirFlashCallback_$3287","typeString":"contract IElixirFlashCallback"}},"id":11132,"nodeType":"InheritanceSpecifier","src":"494:20:47"}],"contractDependencies":[3287,3301,3315],"contractKind":"contract","fullyImplemented":true,"id":11610,"linearizedBaseContracts":[11610,3287,3315,3301],"name":"TestElixirCallee","nodeType":"ContractDefinition","nodes":[{"id":11135,"libraryName":{"id":11133,"name":"SafeCast","nodeType":"UserDefinedTypeName","referencedDeclaration":5526,"src":"529:8:47","typeDescriptions":{"typeIdentifier":"t_contract$_SafeCast_$5526","typeString":"library SafeCast"}},"nodeType":"UsingForDirective","src":"523:27:47","typeName":{"id":11134,"name":"uint256","nodeType":"ElementaryTypeName","src":"542:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"body":{"id":11163,"nodeType":"Block","src":"713:199:47","statements":[{"expression":{"arguments":[{"id":11150,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11141,"src":"761:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":11151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"785:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11152,"name":"amount0In","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11139,"src":"804:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5525,"src":"804:18:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":11154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"804:20:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":11155,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11143,"src":"839:17:47","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"expression":{"id":11158,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"882:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"882:10:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":11156,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"871:3:47","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"871:10:47","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"871:22:47","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":11147,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11137,"src":"736:4:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11146,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"724:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"724:17:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":3392,"src":"724:22:47","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":11161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"724:180:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":11162,"nodeType":"ExpressionStatement","src":"724:180:47"}]},"functionSelector":"6dfc0ddb","id":11164,"implemented":true,"kind":"function","modifiers":[],"name":"swapExact0For1","nodeType":"FunctionDefinition","parameters":{"id":11144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11137,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":11164,"src":"592:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11136,"name":"address","nodeType":"ElementaryTypeName","src":"592:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11139,"mutability":"mutable","name":"amount0In","nodeType":"VariableDeclaration","scope":11164,"src":"615:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11138,"name":"uint256","nodeType":"ElementaryTypeName","src":"615:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11141,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11164,"src":"643:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11140,"name":"address","nodeType":"ElementaryTypeName","src":"643:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11143,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":11164,"src":"671:25:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11142,"name":"uint160","nodeType":"ElementaryTypeName","src":"671:7:47","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"581:122:47"},"returnParameters":{"id":11145,"nodeType":"ParameterList","parameters":[],"src":"713:0:47"},"scope":11610,"src":"558:354:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11193,"nodeType":"Block","src":"1076:201:47","statements":[{"expression":{"arguments":[{"id":11179,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11170,"src":"1124:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":11180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1148:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":11184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1167:22:47","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11181,"name":"amount1Out","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11168,"src":"1168:10:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5525,"src":"1168:19:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":11183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1168:21:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":11185,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11172,"src":"1204:17:47","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"expression":{"id":11188,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1247:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1247:10:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":11186,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1236:3:47","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11187,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1236:10:47","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1236:22:47","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":11176,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11166,"src":"1099:4:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11175,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1087:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1087:17:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":3392,"src":"1087:22:47","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":11191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1087:182:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":11192,"nodeType":"ExpressionStatement","src":"1087:182:47"}]},"functionSelector":"bac7bf78","id":11194,"implemented":true,"kind":"function","modifiers":[],"name":"swap0ForExact1","nodeType":"FunctionDefinition","parameters":{"id":11173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11166,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":11194,"src":"954:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11165,"name":"address","nodeType":"ElementaryTypeName","src":"954:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11168,"mutability":"mutable","name":"amount1Out","nodeType":"VariableDeclaration","scope":11194,"src":"977:18:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11167,"name":"uint256","nodeType":"ElementaryTypeName","src":"977:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11170,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11194,"src":"1006:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11169,"name":"address","nodeType":"ElementaryTypeName","src":"1006:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11172,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":11194,"src":"1034:25:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11171,"name":"uint160","nodeType":"ElementaryTypeName","src":"1034:7:47","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"943:123:47"},"returnParameters":{"id":11174,"nodeType":"ParameterList","parameters":[],"src":"1076:0:47"},"scope":11610,"src":"920:357:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11222,"nodeType":"Block","src":"1440:200:47","statements":[{"expression":{"arguments":[{"id":11209,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11200,"src":"1488:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":11210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1512:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11211,"name":"amount1In","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11198,"src":"1532:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5525,"src":"1532:18:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":11213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1532:20:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":11214,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11202,"src":"1567:17:47","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"expression":{"id":11217,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1610:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1610:10:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":11215,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1599:3:47","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1599:10:47","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1599:22:47","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":11206,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11196,"src":"1463:4:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11205,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1451:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1451:17:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":3392,"src":"1451:22:47","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":11220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1451:181:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":11221,"nodeType":"ExpressionStatement","src":"1451:181:47"}]},"functionSelector":"e2be9109","id":11223,"implemented":true,"kind":"function","modifiers":[],"name":"swapExact1For0","nodeType":"FunctionDefinition","parameters":{"id":11203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11196,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":11223,"src":"1319:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11195,"name":"address","nodeType":"ElementaryTypeName","src":"1319:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11198,"mutability":"mutable","name":"amount1In","nodeType":"VariableDeclaration","scope":11223,"src":"1342:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11197,"name":"uint256","nodeType":"ElementaryTypeName","src":"1342:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11200,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11223,"src":"1370:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11199,"name":"address","nodeType":"ElementaryTypeName","src":"1370:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11202,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":11223,"src":"1398:25:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11201,"name":"uint160","nodeType":"ElementaryTypeName","src":"1398:7:47","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1308:122:47"},"returnParameters":{"id":11204,"nodeType":"ParameterList","parameters":[],"src":"1440:0:47"},"scope":11610,"src":"1285:355:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11252,"nodeType":"Block","src":"1804:202:47","statements":[{"expression":{"arguments":[{"id":11238,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11229,"src":"1852:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":11239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1876:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":11243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1896:22:47","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11240,"name":"amount0Out","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11227,"src":"1897:10:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5525,"src":"1897:19:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":11242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1897:21:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":11244,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11231,"src":"1933:17:47","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"expression":{"id":11247,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1976:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1976:10:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":11245,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1965:3:47","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1965:10:47","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1965:22:47","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":11235,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11225,"src":"1827:4:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11234,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1815:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1815:17:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":3392,"src":"1815:22:47","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":11250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1815:183:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":11251,"nodeType":"ExpressionStatement","src":"1815:183:47"}]},"functionSelector":"f603482c","id":11253,"implemented":true,"kind":"function","modifiers":[],"name":"swap1ForExact0","nodeType":"FunctionDefinition","parameters":{"id":11232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11225,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":11253,"src":"1682:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11224,"name":"address","nodeType":"ElementaryTypeName","src":"1682:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11227,"mutability":"mutable","name":"amount0Out","nodeType":"VariableDeclaration","scope":11253,"src":"1705:18:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11226,"name":"uint256","nodeType":"ElementaryTypeName","src":"1705:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11229,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11253,"src":"1734:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11228,"name":"address","nodeType":"ElementaryTypeName","src":"1734:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11231,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":11253,"src":"1762:25:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11230,"name":"uint160","nodeType":"ElementaryTypeName","src":"1762:7:47","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1671:123:47"},"returnParameters":{"id":11233,"nodeType":"ParameterList","parameters":[],"src":"1804:0:47"},"scope":11610,"src":"1648:358:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11281,"nodeType":"Block","src":"2142:190:47","statements":[{"expression":{"arguments":[{"id":11266,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11259,"src":"2190:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":11267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2214:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"arguments":[{"id":11270,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2238:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":11269,"name":"int256","nodeType":"ElementaryTypeName","src":"2238:6:47","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":11268,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2233:4:47","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2233:12:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":11272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2233:16:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":11273,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11257,"src":"2264:12:47","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"expression":{"id":11276,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2302:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2302:10:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":11274,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2291:3:47","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2291:10:47","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2291:22:47","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":11263,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11255,"src":"2165:4:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11262,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"2153:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2153:17:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":3392,"src":"2153:22:47","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":11279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2153:171:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":11280,"nodeType":"ExpressionStatement","src":"2153:171:47"}]},"functionSelector":"2ec20bf9","id":11282,"implemented":true,"kind":"function","modifiers":[],"name":"swapToLowerSqrtPrice","nodeType":"FunctionDefinition","parameters":{"id":11260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11255,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":11282,"src":"2054:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11254,"name":"address","nodeType":"ElementaryTypeName","src":"2054:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11257,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":11282,"src":"2077:20:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11256,"name":"uint160","nodeType":"ElementaryTypeName","src":"2077:7:47","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":11259,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11282,"src":"2108:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11258,"name":"address","nodeType":"ElementaryTypeName","src":"2108:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2043:89:47"},"returnParameters":{"id":11261,"nodeType":"ParameterList","parameters":[],"src":"2142:0:47"},"scope":11610,"src":"2014:318:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11310,"nodeType":"Block","src":"2469:191:47","statements":[{"expression":{"arguments":[{"id":11295,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11288,"src":"2517:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":11296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2541:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"expression":{"arguments":[{"id":11299,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2566:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":11298,"name":"int256","nodeType":"ElementaryTypeName","src":"2566:6:47","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":11297,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2561:4:47","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2561:12:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":11301,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2561:16:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":11302,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11286,"src":"2592:12:47","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"expression":{"id":11305,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2630:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2630:10:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":11303,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2619:3:47","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11304,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2619:10:47","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2619:22:47","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":11292,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11284,"src":"2492:4:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11291,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"2480:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2480:17:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":3392,"src":"2480:22:47","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":11308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2480:172:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":11309,"nodeType":"ExpressionStatement","src":"2480:172:47"}]},"functionSelector":"9e77b805","id":11311,"implemented":true,"kind":"function","modifiers":[],"name":"swapToHigherSqrtPrice","nodeType":"FunctionDefinition","parameters":{"id":11289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11284,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":11311,"src":"2381:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11283,"name":"address","nodeType":"ElementaryTypeName","src":"2381:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11286,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":11311,"src":"2404:20:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11285,"name":"uint160","nodeType":"ElementaryTypeName","src":"2404:7:47","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":11288,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11311,"src":"2435:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11287,"name":"address","nodeType":"ElementaryTypeName","src":"2435:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2370:89:47"},"returnParameters":{"id":11290,"nodeType":"ParameterList","parameters":[],"src":"2469:0:47"},"scope":11610,"src":"2340:320:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"id":11317,"name":"SwapCallback","nodeType":"EventDefinition","parameters":{"id":11316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11313,"indexed":false,"mutability":"mutable","name":"amount0Delta","nodeType":"VariableDeclaration","scope":11317,"src":"2687:19:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11312,"name":"int256","nodeType":"ElementaryTypeName","src":"2687:6:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":11315,"indexed":false,"mutability":"mutable","name":"amount1Delta","nodeType":"VariableDeclaration","scope":11317,"src":"2708:19:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11314,"name":"int256","nodeType":"ElementaryTypeName","src":"2708:6:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2686:42:47"},"src":"2668:61:47"},{"baseFunctions":[3314],"body":{"id":11399,"nodeType":"Block","src":"2880:708:47","statements":[{"assignments":[11328],"declarations":[{"constant":false,"id":11328,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":11399,"src":"2891:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11327,"name":"address","nodeType":"ElementaryTypeName","src":"2891:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11336,"initialValue":{"arguments":[{"id":11331,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11323,"src":"2919:4:47","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":11333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2926:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11332,"name":"address","nodeType":"ElementaryTypeName","src":"2926:7:47","typeDescriptions":{}}}],"id":11334,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2925:9:47","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":11329,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2908:3:47","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2908:10:47","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":11335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2908:27:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"2891:44:47"},{"eventCall":{"arguments":[{"id":11338,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"2966:12:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":11339,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11321,"src":"2980:12:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11337,"name":"SwapCallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11317,"src":"2953:12:47","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_int256_$_t_int256_$returns$__$","typeString":"function (int256,int256)"}},"id":11340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2953:40:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11341,"nodeType":"EmitStatement","src":"2948:45:47"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11342,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"3010:12:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3025:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3010:16:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11364,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11321,"src":"3234:12:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3249:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3234:16:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11396,"nodeType":"Block","src":"3454:127:47","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11387,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"3530:12:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3546:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3530:17:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11390,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11321,"src":"3551:12:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3567:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3551:17:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3530:38:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11386,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"3523:6:47","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":11394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3523:46:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11395,"nodeType":"ExpressionStatement","src":"3523:46:47"}]},"id":11397,"nodeType":"IfStatement","src":"3230:351:47","trueBody":{"id":11385,"nodeType":"Block","src":"3252:196:47","statements":[{"expression":{"arguments":[{"id":11376,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11328,"src":"3346:6:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":11377,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3371:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3371:10:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":11381,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11321,"src":"3408:12:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3400:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11379,"name":"uint256","nodeType":"ElementaryTypeName","src":"3400:7:47","typeDescriptions":{}}},"id":11382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3400:21:47","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":11369,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3293:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3293:10:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":11368,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"3281:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3281:23:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":3594,"src":"3281:30:47","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":11373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3281:32:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11367,"name":"IERC20Minimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3162,"src":"3267:13:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Minimal_$3162_$","typeString":"type(contract IERC20Minimal)"}},"id":11374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3267:47:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Minimal_$3162","typeString":"contract IERC20Minimal"}},"id":11375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":3143,"src":"3267:60:47","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":11383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3267:169:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11384,"nodeType":"ExpressionStatement","src":"3267:169:47"}]}},"id":11398,"nodeType":"IfStatement","src":"3006:575:47","trueBody":{"id":11363,"nodeType":"Block","src":"3028:196:47","statements":[{"expression":{"arguments":[{"id":11354,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11328,"src":"3122:6:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":11355,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3147:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3147:10:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":11359,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"3184:12:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3176:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11357,"name":"uint256","nodeType":"ElementaryTypeName","src":"3176:7:47","typeDescriptions":{}}},"id":11360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3176:21:47","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":11347,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3069:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3069:10:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":11346,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"3057:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3057:23:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":3588,"src":"3057:30:47","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":11351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3057:32:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11345,"name":"IERC20Minimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3162,"src":"3043:13:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Minimal_$3162_$","typeString":"type(contract IERC20Minimal)"}},"id":11352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3043:47:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Minimal_$3162","typeString":"contract IERC20Minimal"}},"id":11353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":3143,"src":"3043:60:47","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":11361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3043:169:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11362,"nodeType":"ExpressionStatement","src":"3043:169:47"}]}}]},"functionSelector":"d804d7a7","id":11400,"implemented":true,"kind":"function","modifiers":[],"name":"elixirSwapCallback","nodeType":"FunctionDefinition","overrides":{"id":11325,"nodeType":"OverrideSpecifier","overrides":[],"src":"2871:8:47"},"parameters":{"id":11324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11319,"mutability":"mutable","name":"amount0Delta","nodeType":"VariableDeclaration","scope":11400,"src":"2775:19:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11318,"name":"int256","nodeType":"ElementaryTypeName","src":"2775:6:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":11321,"mutability":"mutable","name":"amount1Delta","nodeType":"VariableDeclaration","scope":11400,"src":"2805:19:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11320,"name":"int256","nodeType":"ElementaryTypeName","src":"2805:6:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":11323,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":11400,"src":"2835:19:47","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":11322,"name":"bytes","nodeType":"ElementaryTypeName","src":"2835:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2764:97:47"},"returnParameters":{"id":11326,"nodeType":"ParameterList","parameters":[],"src":"2880:0:47"},"scope":11610,"src":"2737:851:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11428,"nodeType":"Block","src":"3754:182:47","statements":[{"expression":{"arguments":[{"id":11417,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11404,"src":"3802:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11418,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11406,"src":"3826:9:47","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":11419,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11408,"src":"3850:9:47","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":11420,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11410,"src":"3874:6:47","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"expression":{"id":11423,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3906:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3906:10:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":11421,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3895:3:47","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"3895:10:47","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3895:22:47","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":{"arguments":[{"id":11414,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11402,"src":"3777:4:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11413,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"3765:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3765:17:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":3342,"src":"3765:22:47","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":11426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3765:163:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":11427,"nodeType":"ExpressionStatement","src":"3765:163:47"}]},"functionSelector":"7b4f5327","id":11429,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":11411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11402,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":11429,"src":"3620:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11401,"name":"address","nodeType":"ElementaryTypeName","src":"3620:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11404,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11429,"src":"3643:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11403,"name":"address","nodeType":"ElementaryTypeName","src":"3643:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11406,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":11429,"src":"3671:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":11405,"name":"int24","nodeType":"ElementaryTypeName","src":"3671:5:47","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":11408,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":11429,"src":"3697:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":11407,"name":"int24","nodeType":"ElementaryTypeName","src":"3697:5:47","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":11410,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11429,"src":"3723:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":11409,"name":"uint128","nodeType":"ElementaryTypeName","src":"3723:7:47","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3609:135:47"},"returnParameters":{"id":11412,"nodeType":"ParameterList","parameters":[],"src":"3754:0:47"},"scope":11610,"src":"3596:340:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"id":11435,"name":"MintCallback","nodeType":"EventDefinition","parameters":{"id":11434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11431,"indexed":false,"mutability":"mutable","name":"amount0Owed","nodeType":"VariableDeclaration","scope":11435,"src":"3963:19:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11430,"name":"uint256","nodeType":"ElementaryTypeName","src":"3963:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11433,"indexed":false,"mutability":"mutable","name":"amount1Owed","nodeType":"VariableDeclaration","scope":11435,"src":"3984:19:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11432,"name":"uint256","nodeType":"ElementaryTypeName","src":"3984:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3962:42:47"},"src":"3944:61:47"},{"baseFunctions":[3300],"body":{"id":11498,"nodeType":"Block","src":"4156:527:47","statements":[{"assignments":[11446],"declarations":[{"constant":false,"id":11446,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":11498,"src":"4167:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11445,"name":"address","nodeType":"ElementaryTypeName","src":"4167:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11454,"initialValue":{"arguments":[{"id":11449,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11441,"src":"4195:4:47","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":11451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4202:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11450,"name":"address","nodeType":"ElementaryTypeName","src":"4202:7:47","typeDescriptions":{}}}],"id":11452,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4201:9:47","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":11447,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4184:3:47","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"4184:10:47","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":11453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4184:27:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"4167:44:47"},{"eventCall":{"arguments":[{"id":11456,"name":"amount0Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11437,"src":"4242:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11457,"name":"amount1Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11439,"src":"4255:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11455,"name":"MintCallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11435,"src":"4229:12:47","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":11458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4229:38:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11459,"nodeType":"EmitStatement","src":"4224:43:47"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11460,"name":"amount0Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11437,"src":"4282:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4296:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4282:15:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11478,"nodeType":"IfStatement","src":"4278:193:47","trueBody":{"expression":{"arguments":[{"id":11472,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11446,"src":"4391:6:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":11473,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4416:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4416:10:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":11475,"name":"amount0Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11437,"src":"4445:11:47","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":11465,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4338:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4338:10:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":11464,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"4326:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4326:23:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":3588,"src":"4326:30:47","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":11469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4326:32:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11463,"name":"IERC20Minimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3162,"src":"4312:13:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Minimal_$3162_$","typeString":"type(contract IERC20Minimal)"}},"id":11470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4312:47:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Minimal_$3162","typeString":"contract IERC20Minimal"}},"id":11471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":3143,"src":"4312:60:47","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":11476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4312:159:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11477,"nodeType":"ExpressionStatement","src":"4312:159:47"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11479,"name":"amount1Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11439,"src":"4486:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4500:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4486:15:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11497,"nodeType":"IfStatement","src":"4482:193:47","trueBody":{"expression":{"arguments":[{"id":11491,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11446,"src":"4595:6:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":11492,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4620:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4620:10:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":11494,"name":"amount1Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11439,"src":"4649:11:47","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":11484,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4542:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4542:10:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":11483,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"4530:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4530:23:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":3594,"src":"4530:30:47","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":11488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4530:32:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11482,"name":"IERC20Minimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3162,"src":"4516:13:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Minimal_$3162_$","typeString":"type(contract IERC20Minimal)"}},"id":11489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4516:47:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Minimal_$3162","typeString":"contract IERC20Minimal"}},"id":11490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":3143,"src":"4516:60:47","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":11495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4516:159:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11496,"nodeType":"ExpressionStatement","src":"4516:159:47"}}]},"functionSelector":"1507a8f4","id":11499,"implemented":true,"kind":"function","modifiers":[],"name":"elixirMintCallback","nodeType":"FunctionDefinition","overrides":{"id":11443,"nodeType":"OverrideSpecifier","overrides":[],"src":"4147:8:47"},"parameters":{"id":11442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11437,"mutability":"mutable","name":"amount0Owed","nodeType":"VariableDeclaration","scope":11499,"src":"4051:19:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11436,"name":"uint256","nodeType":"ElementaryTypeName","src":"4051:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11439,"mutability":"mutable","name":"amount1Owed","nodeType":"VariableDeclaration","scope":11499,"src":"4081:19:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11438,"name":"uint256","nodeType":"ElementaryTypeName","src":"4081:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11441,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":11499,"src":"4111:19:47","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":11440,"name":"bytes","nodeType":"ElementaryTypeName","src":"4111:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4040:97:47"},"returnParameters":{"id":11444,"nodeType":"ParameterList","parameters":[],"src":"4156:0:47"},"scope":11610,"src":"4013:670:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"id":11505,"name":"FlashCallback","nodeType":"EventDefinition","parameters":{"id":11504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11501,"indexed":false,"mutability":"mutable","name":"fee0","nodeType":"VariableDeclaration","scope":11505,"src":"4711:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11500,"name":"uint256","nodeType":"ElementaryTypeName","src":"4711:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11503,"indexed":false,"mutability":"mutable","name":"fee1","nodeType":"VariableDeclaration","scope":11505,"src":"4725:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11502,"name":"uint256","nodeType":"ElementaryTypeName","src":"4725:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4710:28:47"},"src":"4691:48:47"},{"body":{"id":11536,"nodeType":"Block","src":"4927:170:47","statements":[{"expression":{"arguments":[{"id":11524,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11509,"src":"4976:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11525,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11511,"src":"5000:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11526,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11513,"src":"5022:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":11529,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5055:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5055:10:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":11531,"name":"pay0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11515,"src":"5067:4:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11532,"name":"pay1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11517,"src":"5073:4:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11527,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5044:3:47","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"5044:10:47","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5044:34:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":11521,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11507,"src":"4950:4:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11520,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"4938:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4938:17:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"flash","nodeType":"MemberAccess","referencedDeclaration":3404,"src":"4938:23:47","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":11534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4938:151:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11535,"nodeType":"ExpressionStatement","src":"4938:151:47"}]},"functionSelector":"034b0f8f","id":11537,"implemented":true,"kind":"function","modifiers":[],"name":"flash","nodeType":"FunctionDefinition","parameters":{"id":11518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11507,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":11537,"src":"4772:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11506,"name":"address","nodeType":"ElementaryTypeName","src":"4772:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11509,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11537,"src":"4795:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11508,"name":"address","nodeType":"ElementaryTypeName","src":"4795:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11511,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":11537,"src":"4823:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11510,"name":"uint256","nodeType":"ElementaryTypeName","src":"4823:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11513,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":11537,"src":"4849:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11512,"name":"uint256","nodeType":"ElementaryTypeName","src":"4849:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11515,"mutability":"mutable","name":"pay0","nodeType":"VariableDeclaration","scope":11537,"src":"4875:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11514,"name":"uint256","nodeType":"ElementaryTypeName","src":"4875:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11517,"mutability":"mutable","name":"pay1","nodeType":"VariableDeclaration","scope":11537,"src":"4898:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11516,"name":"uint256","nodeType":"ElementaryTypeName","src":"4898:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4761:156:47"},"returnParameters":{"id":11519,"nodeType":"ParameterList","parameters":[],"src":"4927:0:47"},"scope":11610,"src":"4747:350:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3286],"body":{"id":11608,"nodeType":"Block","src":"5235:573:47","statements":[{"eventCall":{"arguments":[{"id":11548,"name":"fee0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11539,"src":"5265:4:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11549,"name":"fee1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11541,"src":"5271:4:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11547,"name":"FlashCallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11505,"src":"5251:13:47","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":11550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5251:25:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11551,"nodeType":"EmitStatement","src":"5246:30:47"},{"assignments":[11553,11555,11557],"declarations":[{"constant":false,"id":11553,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":11608,"src":"5290:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11552,"name":"address","nodeType":"ElementaryTypeName","src":"5290:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11555,"mutability":"mutable","name":"pay0","nodeType":"VariableDeclaration","scope":11608,"src":"5306:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11554,"name":"uint256","nodeType":"ElementaryTypeName","src":"5306:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11557,"mutability":"mutable","name":"pay1","nodeType":"VariableDeclaration","scope":11608,"src":"5320:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11556,"name":"uint256","nodeType":"ElementaryTypeName","src":"5320:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11569,"initialValue":{"arguments":[{"id":11560,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11543,"src":"5361:4:47","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":11562,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5381:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11561,"name":"address","nodeType":"ElementaryTypeName","src":"5381:7:47","typeDescriptions":{}}},{"id":11564,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5390:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11563,"name":"uint256","nodeType":"ElementaryTypeName","src":"5390:7:47","typeDescriptions":{}}},{"id":11566,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5399:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11565,"name":"uint256","nodeType":"ElementaryTypeName","src":"5399:7:47","typeDescriptions":{}}}],"id":11567,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5380:27:47","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(address),type(uint256),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(address),type(uint256),type(uint256))"}],"expression":{"id":11558,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5336:3:47","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"5336:10:47","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":11568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5336:82:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_uint256_$_t_uint256_$","typeString":"tuple(address payable,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5289:129:47"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11570,"name":"pay0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11555,"src":"5435:4:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5442:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5435:8:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11588,"nodeType":"IfStatement","src":"5431:179:47","trueBody":{"expression":{"arguments":[{"id":11582,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11553,"src":"5537:6:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":11583,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5562:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5562:10:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":11585,"name":"pay0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11555,"src":"5591:4:47","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":11575,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5484:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5484:10:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":11574,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"5472:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5472:23:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":3588,"src":"5472:30:47","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":11579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5472:32:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11573,"name":"IERC20Minimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3162,"src":"5458:13:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Minimal_$3162_$","typeString":"type(contract IERC20Minimal)"}},"id":11580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5458:47:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Minimal_$3162","typeString":"contract IERC20Minimal"}},"id":11581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":3143,"src":"5458:60:47","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":11586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5458:152:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11587,"nodeType":"ExpressionStatement","src":"5458:152:47"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11589,"name":"pay1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11557,"src":"5625:4:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5632:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5625:8:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11607,"nodeType":"IfStatement","src":"5621:179:47","trueBody":{"expression":{"arguments":[{"id":11601,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11553,"src":"5727:6:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":11602,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5752:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5752:10:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":11604,"name":"pay1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11557,"src":"5781:4:47","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":11594,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5674:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5674:10:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":11593,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"5662:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5662:23:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":3594,"src":"5662:30:47","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":11598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5662:32:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11592,"name":"IERC20Minimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3162,"src":"5648:13:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Minimal_$3162_$","typeString":"type(contract IERC20Minimal)"}},"id":11599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5648:47:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Minimal_$3162","typeString":"contract IERC20Minimal"}},"id":11600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":3143,"src":"5648:60:47","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":11605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5648:152:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11606,"nodeType":"ExpressionStatement","src":"5648:152:47"}}]},"functionSelector":"0659efa6","id":11609,"implemented":true,"kind":"function","modifiers":[],"name":"elixirFlashCallback","nodeType":"FunctionDefinition","overrides":{"id":11545,"nodeType":"OverrideSpecifier","overrides":[],"src":"5226:8:47"},"parameters":{"id":11544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11539,"mutability":"mutable","name":"fee0","nodeType":"VariableDeclaration","scope":11609,"src":"5144:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11538,"name":"uint256","nodeType":"ElementaryTypeName","src":"5144:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11541,"mutability":"mutable","name":"fee1","nodeType":"VariableDeclaration","scope":11609,"src":"5167:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11540,"name":"uint256","nodeType":"ElementaryTypeName","src":"5167:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11543,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":11609,"src":"5190:19:47","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":11542,"name":"bytes","nodeType":"ElementaryTypeName","src":"5190:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5133:83:47"},"returnParameters":{"id":11546,"nodeType":"ParameterList","parameters":[],"src":"5235:0:47"},"scope":11610,"src":"5105:703:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11611,"src":"408:5403:47"}],"src":"40:5773:47"},"id":47},"contracts/elixir-core/test/TestElixirReentrantCallee.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/TestElixirReentrantCallee.sol","exportedSymbols":{"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"IElixirSwapCallback":[3315],"TestElixirReentrantCallee":[11892],"TickMath":[7567]},"id":11893,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":11612,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:48"},{"absolutePath":"contracts/elixir-core/libraries/TickMath.sol","file":"../libraries/TickMath.sol","id":11613,"nodeType":"ImportDirective","scope":11893,"sourceUnit":7568,"src":"67:35:48","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol","file":"../interfaces/callback/IElixirSwapCallback.sol","id":11614,"nodeType":"ImportDirective","scope":11893,"sourceUnit":3316,"src":"106:56:48","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"../interfaces/IElixirPool.sol","id":11615,"nodeType":"ImportDirective","scope":11893,"sourceUnit":3274,"src":"166:39:48","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11616,"name":"IElixirSwapCallback","nodeType":"UserDefinedTypeName","referencedDeclaration":3315,"src":"247:19:48","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirSwapCallback_$3315","typeString":"contract IElixirSwapCallback"}},"id":11617,"nodeType":"InheritanceSpecifier","src":"247:19:48"}],"contractDependencies":[3315],"contractKind":"contract","fullyImplemented":true,"id":11892,"linearizedBaseContracts":[11892,3315],"name":"TestElixirReentrantCallee","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":11620,"mutability":"constant","name":"expectedReason","nodeType":"VariableDeclaration","scope":11892,"src":"274:46:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11618,"name":"string","nodeType":"ElementaryTypeName","src":"274:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4c4f4b","id":11619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"315:5:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_e01ebc6b01bbf458b3d355b6e649efe64599751670c5d19175619893ecf97529","typeString":"literal_string \"LOK\""},"value":"LOK"},"visibility":"private"},{"body":{"id":11645,"nodeType":"Block","src":"375:182:48","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":11631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"431:1:48","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":11630,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"423:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11629,"name":"address","nodeType":"ElementaryTypeName","src":"423:7:48","typeDescriptions":{}}},"id":11632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"423:10:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"hexValue":"66616c7365","id":11633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"448:5:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"31","id":11634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"468:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11635,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"484:8:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":11636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":7053,"src":"484:23:48","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":11637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"510:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"484:27:48","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"hexValue":"30","id":11641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"536:1:48","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":11640,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"526:9:48","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":11639,"name":"bytes","nodeType":"ElementaryTypeName","src":"530:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":11642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"526:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":11626,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11622,"src":"398:4:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11625,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"386:11:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"386:17:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":3392,"src":"386:22:48","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":11643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"386:163:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":11644,"nodeType":"ExpressionStatement","src":"386:163:48"}]},"functionSelector":"c22a2bfe","id":11646,"implemented":true,"kind":"function","modifiers":[],"name":"swapToReenter","nodeType":"FunctionDefinition","parameters":{"id":11623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11622,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":11646,"src":"352:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11621,"name":"address","nodeType":"ElementaryTypeName","src":"352:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"351:14:48"},"returnParameters":{"id":11624,"nodeType":"ParameterList","parameters":[],"src":"375:0:48"},"scope":11892,"src":"329:228:48","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3314],"body":{"id":11890,"nodeType":"Block","src":"677:2013:48","statements":[{"clauses":[{"block":{"id":11673,"nodeType":"Block","src":"814:2:48","statements":[]},"errorName":"","id":11674,"nodeType":"TryCatchClause","src":"814:2:48"},{"block":{"id":11694,"nodeType":"Block","src":"851:159:48","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":11691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":11682,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11676,"src":"913:6:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":11680,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"902:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11681,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"902:10:48","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"902:18:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11679,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"892:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"892:29:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":11688,"name":"expectedReason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11620,"src":"967:14:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":11686,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"956:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"956:10:48","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"956:26:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11685,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"946:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"946:37:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"892:91:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11678,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"866:7:48","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":11692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"866:132:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11693,"nodeType":"ExpressionStatement","src":"866:132:48"}]},"errorName":"Error","id":11695,"nodeType":"TryCatchClause","parameters":{"id":11677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11676,"mutability":"mutable","name":"reason","nodeType":"VariableDeclaration","scope":11695,"src":"829:20:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11675,"name":"string","nodeType":"ElementaryTypeName","src":"829:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"828:22:48"},"src":"817:193:48"}],"externalCall":{"arguments":[{"arguments":[{"hexValue":"30","id":11663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"774:1:48","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":11662,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"766:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11661,"name":"address","nodeType":"ElementaryTypeName","src":"766:7:48","typeDescriptions":{}}},"id":11664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"766:10:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"hexValue":"66616c7365","id":11665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"778:5:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"31","id":11666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"785:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"30","id":11667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"788:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"hexValue":"30","id":11670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"801:1:48","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":11669,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"791:9:48","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":11668,"name":"bytes","nodeType":"ElementaryTypeName","src":"795:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":11671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"791:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"expression":{"id":11657,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"749:3:48","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"749:10:48","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":11656,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"737:11:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"737:23:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":3392,"src":"737:28:48","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":11672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"737:67:48","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":11696,"nodeType":"TryStatement","src":"720:290:48"},{"clauses":[{"block":{"id":11714,"nodeType":"Block","src":"1144:2:48","statements":[]},"errorName":"","id":11715,"nodeType":"TryCatchClause","src":"1144:2:48"},{"block":{"id":11735,"nodeType":"Block","src":"1181:159:48","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":11732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":11723,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11717,"src":"1243:6:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":11721,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1232:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11722,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1232:10:48","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1232:18:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11720,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1222:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1222:29:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":11729,"name":"expectedReason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11620,"src":"1297:14:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":11727,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1286:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11728,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1286:10:48","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1286:26:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11726,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1276:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1276:37:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1222:91:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11719,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1196:7:48","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":11733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1196:132:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11734,"nodeType":"ExpressionStatement","src":"1196:132:48"}]},"errorName":"Error","id":11736,"nodeType":"TryCatchClause","parameters":{"id":11718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11717,"mutability":"mutable","name":"reason","nodeType":"VariableDeclaration","scope":11736,"src":"1159:20:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11716,"name":"string","nodeType":"ElementaryTypeName","src":"1159:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1158:22:48"},"src":"1147:193:48"}],"externalCall":{"arguments":[{"arguments":[{"hexValue":"30","id":11704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1108:1:48","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":11703,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1100:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11702,"name":"address","nodeType":"ElementaryTypeName","src":"1100:7:48","typeDescriptions":{}}},"id":11705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1100:10:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"hexValue":"30","id":11706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1112:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":11707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1115:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":11708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1118:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"hexValue":"30","id":11711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1131:1:48","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":11710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1121:9:48","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":11709,"name":"bytes","nodeType":"ElementaryTypeName","src":"1125:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":11712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1121:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"expression":{"id":11698,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1083:3:48","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1083:10:48","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":11697,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1071:11:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1071:23:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":3342,"src":"1071:28: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":11713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1071:63:48","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":11737,"nodeType":"TryStatement","src":"1054:286:48"},{"clauses":[{"block":{"id":11752,"nodeType":"Block","src":"1469:2:48","statements":[]},"errorName":"","id":11753,"nodeType":"TryCatchClause","src":"1469:2:48"},{"block":{"id":11773,"nodeType":"Block","src":"1506:159:48","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":11770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":11761,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11755,"src":"1568:6:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":11759,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1557:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11760,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1557:10:48","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1557:18:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11758,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1547:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1547:29:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":11767,"name":"expectedReason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11620,"src":"1622:14:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":11765,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1611:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11766,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1611:10:48","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1611:26:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11764,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1601:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1601:37:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1547:91:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11757,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1521:7:48","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":11771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1521:132:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11772,"nodeType":"ExpressionStatement","src":"1521:132:48"}]},"errorName":"Error","id":11774,"nodeType":"TryCatchClause","parameters":{"id":11756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11755,"mutability":"mutable","name":"reason","nodeType":"VariableDeclaration","scope":11774,"src":"1484:20:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11754,"name":"string","nodeType":"ElementaryTypeName","src":"1484:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1483:22:48"},"src":"1472:193:48"}],"externalCall":{"arguments":[{"arguments":[{"hexValue":"30","id":11745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1444:1:48","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":11744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1436:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11743,"name":"address","nodeType":"ElementaryTypeName","src":"1436:7:48","typeDescriptions":{}}},"id":11746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1436:10:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"hexValue":"30","id":11747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1448:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":11748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1451:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":11749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1454:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":11750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1457:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"expression":{"id":11739,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1416:3:48","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1416:10:48","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":11738,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1404:11:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1404:23:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"collect","nodeType":"MemberAccess","referencedDeclaration":3360,"src":"1404:31:48","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_int24_$_t_int24_$_t_uint128_$_t_uint128_$returns$_t_uint128_$_t_uint128_$","typeString":"function (address,int24,int24,uint128,uint128) external returns (uint128,uint128)"}},"id":11751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1404:55:48","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint128)"}},"id":11775,"nodeType":"TryStatement","src":"1387:278:48"},{"clauses":[{"block":{"id":11785,"nodeType":"Block","src":"1751:2:48","statements":[]},"errorName":"","id":11786,"nodeType":"TryCatchClause","src":"1751:2:48"},{"block":{"id":11806,"nodeType":"Block","src":"1812:159:48","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":11803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":11794,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11788,"src":"1874:6:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":11792,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1863:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11793,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1863:10:48","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1863:18:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11791,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1853:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1853:29:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":11800,"name":"expectedReason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11620,"src":"1928:14:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":11798,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1917:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1917:10:48","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1917:26:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11797,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1907:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1907:37:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1853:91:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11790,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1827:7:48","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":11804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1827:132:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11805,"nodeType":"ExpressionStatement","src":"1827:132:48"}]},"errorName":"Error","id":11807,"nodeType":"TryCatchClause","parameters":{"id":11789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11788,"mutability":"mutable","name":"reason","nodeType":"VariableDeclaration","scope":11807,"src":"1780:20:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11787,"name":"string","nodeType":"ElementaryTypeName","src":"1780:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1765:46:48"},"src":"1754:217:48"}],"externalCall":{"arguments":[{"hexValue":"30","id":11781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1742:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":11782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1745:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":11783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1748:1:48","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"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"expression":{"id":11777,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1725:3:48","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1725:10:48","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":11776,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1713:11:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1713:23:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":3374,"src":"1713:28:48","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_int24_$_t_int24_$_t_uint128_$returns$_t_uint256_$_t_uint256_$","typeString":"function (int24,int24,uint128) external returns (uint256,uint256)"}},"id":11784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1713:37:48","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":11808,"nodeType":"TryStatement","src":"1709:262:48"},{"clauses":[{"block":{"id":11825,"nodeType":"Block","src":"2104:2:48","statements":[]},"errorName":"","id":11826,"nodeType":"TryCatchClause","src":"2104:2:48"},{"block":{"id":11846,"nodeType":"Block","src":"2141:159:48","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":11843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":11834,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11828,"src":"2203:6:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":11832,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2192:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11833,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2192:10:48","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2192:18:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11831,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2182:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2182:29:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":11840,"name":"expectedReason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11620,"src":"2257:14:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":11838,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2246:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11839,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2246:10:48","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2246:26:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11837,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2236:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2236:37:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2182:91:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11830,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2156:7:48","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":11844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2156:132:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11845,"nodeType":"ExpressionStatement","src":"2156:132:48"}]},"errorName":"Error","id":11847,"nodeType":"TryCatchClause","parameters":{"id":11829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11828,"mutability":"mutable","name":"reason","nodeType":"VariableDeclaration","scope":11847,"src":"2119:20:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11827,"name":"string","nodeType":"ElementaryTypeName","src":"2119:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2118:22:48"},"src":"2107:193:48"}],"externalCall":{"arguments":[{"arguments":[{"hexValue":"30","id":11816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2071:1:48","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":11815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2063:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11814,"name":"address","nodeType":"ElementaryTypeName","src":"2063:7:48","typeDescriptions":{}}},"id":11817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2063:10:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"hexValue":"30","id":11818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2075:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":11819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2078:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"hexValue":"30","id":11822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2091:1:48","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":11821,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2081:9:48","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":11820,"name":"bytes","nodeType":"ElementaryTypeName","src":"2085:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":11823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2081:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"expression":{"id":11810,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2045:3:48","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2045:10:48","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":11809,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"2033:11:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2033:23:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"flash","nodeType":"MemberAccess","referencedDeclaration":3404,"src":"2033:29:48","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":11824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2033:61:48","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11848,"nodeType":"TryStatement","src":"2016:284:48"},{"clauses":[{"block":{"id":11861,"nodeType":"Block","src":"2439:2:48","statements":[]},"errorName":"","id":11862,"nodeType":"TryCatchClause","src":"2439:2:48"},{"block":{"id":11882,"nodeType":"Block","src":"2476:159:48","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":11879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":11870,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11864,"src":"2538:6:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":11868,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2527:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11869,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2527:10:48","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2527:18:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11867,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2517:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2517:29:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":11876,"name":"expectedReason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11620,"src":"2592:14:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":11874,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2581:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11875,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2581:10:48","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2581:26:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11873,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2571:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2571:37:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2517:91:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11866,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2491:7:48","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":11880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2491:132:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11881,"nodeType":"ExpressionStatement","src":"2491:132:48"}]},"errorName":"Error","id":11883,"nodeType":"TryCatchClause","parameters":{"id":11865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11864,"mutability":"mutable","name":"reason","nodeType":"VariableDeclaration","scope":11883,"src":"2454:20:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11863,"name":"string","nodeType":"ElementaryTypeName","src":"2454:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2453:22:48"},"src":"2442:193:48"}],"externalCall":{"arguments":[{"arguments":[{"hexValue":"30","id":11856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2420:1:48","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":11855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2412:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11854,"name":"address","nodeType":"ElementaryTypeName","src":"2412:7:48","typeDescriptions":{}}},"id":11857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2412:10:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"hexValue":"30","id":11858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2424:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":11859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2427:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"expression":{"id":11850,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2384:3:48","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2384:10:48","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":11849,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"2372:11:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2372:23:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"collectProtocol","nodeType":"MemberAccess","referencedDeclaration":3650,"src":"2372:39:48","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint128_$_t_uint128_$returns$_t_uint128_$_t_uint128_$","typeString":"function (address,uint128,uint128) external returns (uint128,uint128)"}},"id":11860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2372:57:48","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint128)"}},"id":11884,"nodeType":"TryStatement","src":"2355:280:48"},{"expression":{"arguments":[{"hexValue":"66616c7365","id":11886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2655:5:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"556e61626c6520746f207265656e746572","id":11887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2662:19:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_d9d66c4fd23cff18e2d3104b7c63255cd40d1bb9753e494c09cce475f2e3b1df","typeString":"literal_string \"Unable to reenter\""},"value":"Unable to reenter"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d9d66c4fd23cff18e2d3104b7c63255cd40d1bb9753e494c09cce475f2e3b1df","typeString":"literal_string \"Unable to reenter\""}],"id":11885,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2647:7:48","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2647:35:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11889,"nodeType":"ExpressionStatement","src":"2647:35:48"}]},"functionSelector":"d804d7a7","id":11891,"implemented":true,"kind":"function","modifiers":[],"name":"elixirSwapCallback","nodeType":"FunctionDefinition","overrides":{"id":11654,"nodeType":"OverrideSpecifier","overrides":[],"src":"668:8:48"},"parameters":{"id":11653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11648,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11891,"src":"603:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11647,"name":"int256","nodeType":"ElementaryTypeName","src":"603:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":11650,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11891,"src":"620:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11649,"name":"int256","nodeType":"ElementaryTypeName","src":"620:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":11652,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11891,"src":"637:14:48","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":11651,"name":"bytes","nodeType":"ElementaryTypeName","src":"637:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"592:66:48"},"returnParameters":{"id":11655,"nodeType":"ParameterList","parameters":[],"src":"677:0:48"},"scope":11892,"src":"565:2125:48","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11893,"src":"209:2484:48"}],"src":"40:2655:48"},"id":48},"contracts/elixir-core/test/TestElixirRouter.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/TestElixirRouter.sol","exportedSymbols":{"IERC20Minimal":[3162],"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"IElixirSwapCallback":[3315],"SafeCast":[5526],"TestElixirRouter":[12168],"TickMath":[7567]},"id":12169,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":11894,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:49"},{"absolutePath":"contracts/elixir-core/libraries/SafeCast.sol","file":"../libraries/SafeCast.sol","id":11895,"nodeType":"ImportDirective","scope":12169,"sourceUnit":5527,"src":"67:35:49","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/TickMath.sol","file":"../libraries/TickMath.sol","id":11896,"nodeType":"ImportDirective","scope":12169,"sourceUnit":7568,"src":"104:35:49","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/IERC20Minimal.sol","file":"../interfaces/IERC20Minimal.sol","id":11897,"nodeType":"ImportDirective","scope":12169,"sourceUnit":3163,"src":"143:41:49","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol","file":"../interfaces/callback/IElixirSwapCallback.sol","id":11898,"nodeType":"ImportDirective","scope":12169,"sourceUnit":3316,"src":"186:56:49","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"../interfaces/IElixirPool.sol","id":11899,"nodeType":"ImportDirective","scope":12169,"sourceUnit":3274,"src":"244:39:49","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11900,"name":"IElixirSwapCallback","nodeType":"UserDefinedTypeName","referencedDeclaration":3315,"src":"316:19:49","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirSwapCallback_$3315","typeString":"contract IElixirSwapCallback"}},"id":11901,"nodeType":"InheritanceSpecifier","src":"316:19:49"}],"contractDependencies":[3315],"contractKind":"contract","fullyImplemented":true,"id":12168,"linearizedBaseContracts":[12168,3315],"name":"TestElixirRouter","nodeType":"ContractDefinition","nodes":[{"id":11904,"libraryName":{"id":11902,"name":"SafeCast","nodeType":"UserDefinedTypeName","referencedDeclaration":5526,"src":"349:8:49","typeDescriptions":{"typeIdentifier":"t_contract$_SafeCast_$5526","typeString":"library SafeCast"}},"nodeType":"UsingForDirective","src":"343:27:49","typeName":{"id":11903,"name":"uint256","nodeType":"ElementaryTypeName","src":"362:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"body":{"id":11954,"nodeType":"Block","src":"605:308:49","statements":[{"assignments":[11919],"declarations":[{"constant":false,"id":11919,"mutability":"mutable","name":"pools","nodeType":"VariableDeclaration","scope":11954,"src":"616:22:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":11917,"name":"address","nodeType":"ElementaryTypeName","src":"616:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11918,"nodeType":"ArrayTypeName","src":"616:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":11925,"initialValue":{"arguments":[{"hexValue":"31","id":11923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"655:1:49","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"}],"id":11922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"641:13:49","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":11920,"name":"address","nodeType":"ElementaryTypeName","src":"645:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11921,"nodeType":"ArrayTypeName","src":"645:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":11924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"641:16:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"616:41:49"},{"expression":{"id":11930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11926,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11919,"src":"668:5:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":11928,"indexExpression":{"hexValue":"30","id":11927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"674:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"668:8:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11929,"name":"poolInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11908,"src":"679:9:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"668:20:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11931,"nodeType":"ExpressionStatement","src":"668:20:49"},{"expression":{"arguments":[{"id":11936,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11906,"src":"742:9:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":11937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"766:5:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":11941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"786:22:49","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11938,"name":"amount0Out","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11912,"src":"787:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5525,"src":"787:19:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":11940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"787:21:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11942,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"823:8:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":11943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":7053,"src":"823:23:49","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":11944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"849:1:49","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"823:27:49","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":11948,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11919,"src":"876:5:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"expression":{"id":11949,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"883:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"883:10:49","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":11946,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"865:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11947,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"865:10:49","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"865:29:49","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":11933,"name":"poolOutput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11910,"src":"711:10:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11932,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"699:11:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"699:23:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":3392,"src":"699:28:49","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":11952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"699:206:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":11953,"nodeType":"ExpressionStatement","src":"699:206:49"}]},"functionSelector":"c96aa6c7","id":11955,"implemented":true,"kind":"function","modifiers":[],"name":"swapForExact0Multi","nodeType":"FunctionDefinition","parameters":{"id":11913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11906,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11955,"src":"485:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11905,"name":"address","nodeType":"ElementaryTypeName","src":"485:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11908,"mutability":"mutable","name":"poolInput","nodeType":"VariableDeclaration","scope":11955,"src":"513:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11907,"name":"address","nodeType":"ElementaryTypeName","src":"513:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11910,"mutability":"mutable","name":"poolOutput","nodeType":"VariableDeclaration","scope":11955,"src":"541:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11909,"name":"address","nodeType":"ElementaryTypeName","src":"541:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11912,"mutability":"mutable","name":"amount0Out","nodeType":"VariableDeclaration","scope":11955,"src":"570:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11911,"name":"uint256","nodeType":"ElementaryTypeName","src":"570:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"474:121:49"},"returnParameters":{"id":11914,"nodeType":"ParameterList","parameters":[],"src":"605:0:49"},"scope":12168,"src":"447:466:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12005,"nodeType":"Block","src":"1148:307:49","statements":[{"assignments":[11970],"declarations":[{"constant":false,"id":11970,"mutability":"mutable","name":"pools","nodeType":"VariableDeclaration","scope":12005,"src":"1159:22:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":11968,"name":"address","nodeType":"ElementaryTypeName","src":"1159:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11969,"nodeType":"ArrayTypeName","src":"1159:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":11976,"initialValue":{"arguments":[{"hexValue":"31","id":11974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1198:1:49","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"}],"id":11973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1184:13:49","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":11971,"name":"address","nodeType":"ElementaryTypeName","src":"1188:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11972,"nodeType":"ArrayTypeName","src":"1188:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":11975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1184:16:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"1159:41:49"},{"expression":{"id":11981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11977,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11970,"src":"1211:5:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":11979,"indexExpression":{"hexValue":"30","id":11978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1217:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1211:8:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11980,"name":"poolInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11959,"src":"1222:9:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1211:20:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11982,"nodeType":"ExpressionStatement","src":"1211:20:49"},{"expression":{"arguments":[{"id":11987,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11957,"src":"1285:9:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":11988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1309:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":11992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1328:22:49","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11989,"name":"amount1Out","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11963,"src":"1329:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5525,"src":"1329:19:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":11991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1329:21:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11993,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"1365:8:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":11994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":7049,"src":"1365:23:49","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":11995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1391:1:49","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1365:27:49","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":11999,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11970,"src":"1418:5:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"expression":{"id":12000,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1425:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1425:10:49","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":11997,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1407:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11998,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1407:10:49","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1407:29:49","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":11984,"name":"poolOutput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11961,"src":"1254:10:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11983,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1242:11:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":11985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1242:23:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":11986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":3392,"src":"1242:28:49","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":12003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1242:205:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":12004,"nodeType":"ExpressionStatement","src":"1242:205:49"}]},"functionSelector":"c35a2b68","id":12006,"implemented":true,"kind":"function","modifiers":[],"name":"swapForExact1Multi","nodeType":"FunctionDefinition","parameters":{"id":11964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11957,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":12006,"src":"1028:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11956,"name":"address","nodeType":"ElementaryTypeName","src":"1028:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11959,"mutability":"mutable","name":"poolInput","nodeType":"VariableDeclaration","scope":12006,"src":"1056:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11958,"name":"address","nodeType":"ElementaryTypeName","src":"1056:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11961,"mutability":"mutable","name":"poolOutput","nodeType":"VariableDeclaration","scope":12006,"src":"1084:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11960,"name":"address","nodeType":"ElementaryTypeName","src":"1084:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11963,"mutability":"mutable","name":"amount1Out","nodeType":"VariableDeclaration","scope":12006,"src":"1113:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11962,"name":"uint256","nodeType":"ElementaryTypeName","src":"1113:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1017:121:49"},"returnParameters":{"id":11965,"nodeType":"ParameterList","parameters":[],"src":"1148:0:49"},"scope":12168,"src":"990:465:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"id":12012,"name":"SwapCallback","nodeType":"EventDefinition","parameters":{"id":12011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12008,"indexed":false,"mutability":"mutable","name":"amount0Delta","nodeType":"VariableDeclaration","scope":12012,"src":"1482:19:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12007,"name":"int256","nodeType":"ElementaryTypeName","src":"1482:6:49","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":12010,"indexed":false,"mutability":"mutable","name":"amount1Delta","nodeType":"VariableDeclaration","scope":12012,"src":"1503:19:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12009,"name":"int256","nodeType":"ElementaryTypeName","src":"1503:6:49","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1481:42:49"},"src":"1463:61:49"},{"baseFunctions":[3314],"body":{"id":12166,"nodeType":"Block","src":"1673:1508:49","statements":[{"eventCall":{"arguments":[{"id":12023,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12014,"src":"1702:12:49","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":12024,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12016,"src":"1716:12:49","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12022,"name":"SwapCallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12012,"src":"1689:12:49","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_int256_$_t_int256_$returns$__$","typeString":"function (int256,int256)"}},"id":12025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1689:40:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12026,"nodeType":"EmitStatement","src":"1684:45:49"},{"assignments":[12031,12033],"declarations":[{"constant":false,"id":12031,"mutability":"mutable","name":"pools","nodeType":"VariableDeclaration","scope":12166,"src":"1743:22:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":12029,"name":"address","nodeType":"ElementaryTypeName","src":"1743:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12030,"nodeType":"ArrayTypeName","src":"1743:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":12033,"mutability":"mutable","name":"payer","nodeType":"VariableDeclaration","scope":12166,"src":"1767:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12032,"name":"address","nodeType":"ElementaryTypeName","src":"1767:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12044,"initialValue":{"arguments":[{"id":12036,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12018,"src":"1809:4:49","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"baseExpression":{"id":12038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1829:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12037,"name":"address","nodeType":"ElementaryTypeName","src":"1829:7:49","typeDescriptions":{}}},"id":12039,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"1829:9:49","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"type(address[] memory)"}},{"id":12041,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1840:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12040,"name":"address","nodeType":"ElementaryTypeName","src":"1840:7:49","typeDescriptions":{}}}],"id":12042,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1828:20:49","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_address_$_$","typeString":"tuple(type(address[] memory),type(address))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_address_$_$","typeString":"tuple(type(address[] memory),type(address))"}],"expression":{"id":12034,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1784:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12035,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1784:10:49","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":12043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1784:75:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_address_payable_$","typeString":"tuple(address[] memory,address payable)"}},"nodeType":"VariableDeclarationStatement","src":"1742:117:49"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12045,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12031,"src":"1876:5:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1876:12:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":12047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1892:1:49","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1876:17:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12164,"nodeType":"Block","src":"2682:492:49","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12122,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12014,"src":"2701:12:49","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2716:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2701:16:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12162,"nodeType":"Block","src":"2944:219:49","statements":[{"expression":{"arguments":[{"id":12153,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12033,"src":"3046:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":12154,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3074:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3074:10:49","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":12158,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12016,"src":"3115:12:49","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3107:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12156,"name":"uint256","nodeType":"ElementaryTypeName","src":"3107:7:49","typeDescriptions":{}}},"id":12159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3107:21:49","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":12146,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2989:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2989:10:49","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":12145,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"2977:11:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":12148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2977:23:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":12149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":3594,"src":"2977:30:49","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2977:32:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12144,"name":"IERC20Minimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3162,"src":"2963:13:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Minimal_$3162_$","typeString":"type(contract IERC20Minimal)"}},"id":12151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2963:47:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Minimal_$3162","typeString":"contract IERC20Minimal"}},"id":12152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":3143,"src":"2963:60:49","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":12160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2963:184:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12161,"nodeType":"ExpressionStatement","src":"2963:184:49"}]},"id":12163,"nodeType":"IfStatement","src":"2697:466:49","trueBody":{"id":12143,"nodeType":"Block","src":"2719:219:49","statements":[{"expression":{"arguments":[{"id":12134,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12033,"src":"2821:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":12135,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2849:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2849:10:49","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":12139,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12014,"src":"2890:12:49","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2882:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12137,"name":"uint256","nodeType":"ElementaryTypeName","src":"2882:7:49","typeDescriptions":{}}},"id":12140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2882:21:49","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":12127,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2764:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2764:10:49","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":12126,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"2752:11:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":12129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2752:23:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":12130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":3588,"src":"2752:30:49","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2752:32:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12125,"name":"IERC20Minimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3162,"src":"2738:13:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Minimal_$3162_$","typeString":"type(contract IERC20Minimal)"}},"id":12132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2738:47:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Minimal_$3162","typeString":"contract IERC20Minimal"}},"id":12133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":3143,"src":"2738:60:49","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":12141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2738:184:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12142,"nodeType":"ExpressionStatement","src":"2738:184:49"}]}}]},"id":12165,"nodeType":"IfStatement","src":"1872:1302:49","trueBody":{"id":12121,"nodeType":"Block","src":"1895:781:49","statements":[{"assignments":[12050],"declarations":[{"constant":false,"id":12050,"mutability":"mutable","name":"tokenToBePaid","nodeType":"VariableDeclaration","scope":12121,"src":"1986:21:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12049,"name":"address","nodeType":"ElementaryTypeName","src":"1986:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12067,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12051,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12014,"src":"2010:12:49","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2025:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2010:16:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"id":12061,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2110:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2110:10:49","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":12060,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"2098:11:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":12063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2098:23:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":12064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":3594,"src":"2098:30:49","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2098:32:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2010:120:49","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"id":12055,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2058:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2058:10:49","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":12054,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"2046:11:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":12057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2046:23:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":12058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":3588,"src":"2046:30:49","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2046:32:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1986:144:49"},{"assignments":[12069],"declarations":[{"constant":false,"id":12069,"mutability":"mutable","name":"amountToBePaid","nodeType":"VariableDeclaration","scope":12121,"src":"2145:21:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12068,"name":"int256","nodeType":"ElementaryTypeName","src":"2145:6:49","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":12076,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12070,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12014,"src":"2169:12:49","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2184:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2169:16:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":12074,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12016,"src":"2237:12:49","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":12075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2169:80:49","trueExpression":{"id":12073,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12014,"src":"2205:12:49","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"2145:104:49"},{"assignments":[12078],"declarations":[{"constant":false,"id":12078,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":12121,"src":"2266:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12077,"name":"bool","nodeType":"ElementaryTypeName","src":"2266:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":12088,"initialValue":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12079,"name":"tokenToBePaid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12050,"src":"2284:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"baseExpression":{"id":12081,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12031,"src":"2313:5:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12083,"indexExpression":{"hexValue":"30","id":12082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2319:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2313:8:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12080,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"2301:11:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":12084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2301:21:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":12085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":3594,"src":"2301:28:49","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2301:30:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2284:47:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"2266:65:49"},{"expression":{"arguments":[{"expression":{"id":12095,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2391:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2391:10:49","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":12097,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12078,"src":"2420:10:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":12099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2449:15:49","subExpression":{"id":12098,"name":"amountToBePaid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12069,"src":"2450:14:49","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"condition":{"id":12100,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12078,"src":"2483:10:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12105,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"2568:8:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":7053,"src":"2568:23:49","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":12107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2594:1:49","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2568:27:49","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":12109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2483:112:49","trueExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12101,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"2517:8:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":7049,"src":"2517:23:49","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":12103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2543:1:49","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2517:27:49","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"arguments":[{"hexValue":"30","id":12115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2639:1:49","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":12114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2625:13:49","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":12112,"name":"address","nodeType":"ElementaryTypeName","src":"2629:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12113,"nodeType":"ArrayTypeName","src":"2629:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":12116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2625:16:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"id":12117,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12033,"src":"2643:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12110,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2614:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12111,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2614:10:49","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2614:35:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"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":[{"baseExpression":{"id":12090,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12031,"src":"2358:5:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12092,"indexExpression":{"hexValue":"30","id":12091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2364:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2358:8:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12089,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"2346:11:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":12093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2346:21:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":12094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":3392,"src":"2346:26:49","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":12119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2346:318:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":12120,"nodeType":"ExpressionStatement","src":"2346:318:49"}]}}]},"functionSelector":"d804d7a7","id":12167,"implemented":true,"kind":"function","modifiers":[],"name":"elixirSwapCallback","nodeType":"FunctionDefinition","overrides":{"id":12020,"nodeType":"OverrideSpecifier","overrides":[],"src":"1664:8:49"},"parameters":{"id":12019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12014,"mutability":"mutable","name":"amount0Delta","nodeType":"VariableDeclaration","scope":12167,"src":"1570:19:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12013,"name":"int256","nodeType":"ElementaryTypeName","src":"1570:6:49","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":12016,"mutability":"mutable","name":"amount1Delta","nodeType":"VariableDeclaration","scope":12167,"src":"1600:19:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12015,"name":"int256","nodeType":"ElementaryTypeName","src":"1600:6:49","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":12018,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":12167,"src":"1630:19:49","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":12017,"name":"bytes","nodeType":"ElementaryTypeName","src":"1630:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1559:97:49"},"returnParameters":{"id":12021,"nodeType":"ParameterList","parameters":[],"src":"1673:0:49"},"scope":12168,"src":"1532:1649:49","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":12169,"src":"287:2897:49"}],"src":"40:3146:49"},"id":49},"contracts/elixir-core/test/TestElixirSwapPay.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/TestElixirSwapPay.sol","exportedSymbols":{"IERC20Minimal":[3162],"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"IElixirSwapCallback":[3315],"TestElixirSwapPay":[12286]},"id":12287,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":12170,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:50"},{"absolutePath":"contracts/elixir-core/interfaces/IERC20Minimal.sol","file":"../interfaces/IERC20Minimal.sol","id":12171,"nodeType":"ImportDirective","scope":12287,"sourceUnit":3163,"src":"67:41:50","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol","file":"../interfaces/callback/IElixirSwapCallback.sol","id":12172,"nodeType":"ImportDirective","scope":12287,"sourceUnit":3316,"src":"112:56:50","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"../interfaces/IElixirPool.sol","id":12173,"nodeType":"ImportDirective","scope":12287,"sourceUnit":3274,"src":"170:39:50","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12174,"name":"IElixirSwapCallback","nodeType":"UserDefinedTypeName","referencedDeclaration":3315,"src":"243:19:50","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirSwapCallback_$3315","typeString":"contract IElixirSwapCallback"}},"id":12175,"nodeType":"InheritanceSpecifier","src":"243:19:50"}],"contractDependencies":[3315],"contractKind":"contract","fullyImplemented":true,"id":12286,"linearizedBaseContracts":[12286,3315],"name":"TestElixirSwapPay","nodeType":"ContractDefinition","nodes":[{"body":{"id":12209,"nodeType":"Block","src":"487:207:50","statements":[{"expression":{"arguments":[{"id":12196,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12179,"src":"535:9:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12197,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12181,"src":"559:10:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":12198,"name":"amountSpecified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12185,"src":"584:15:50","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":12199,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12183,"src":"614:12:50","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"expression":{"id":12202,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"652:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"652:10:50","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":12204,"name":"pay0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12187,"src":"664:4:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12205,"name":"pay1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12189,"src":"670:4:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12200,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"641:3:50","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"641:10:50","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"641:34:50","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":12193,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12177,"src":"510:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12192,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"498:11:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":12194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"498:17:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":12195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":3392,"src":"498:22:50","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":12207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"498:188:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":12208,"nodeType":"ExpressionStatement","src":"498:188:50"}]},"functionSelector":"f13cdf90","id":12210,"implemented":true,"kind":"function","modifiers":[],"name":"swap","nodeType":"FunctionDefinition","parameters":{"id":12190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12177,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":12210,"src":"294:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12176,"name":"address","nodeType":"ElementaryTypeName","src":"294:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12179,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":12210,"src":"317:17:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12178,"name":"address","nodeType":"ElementaryTypeName","src":"317:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12181,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":12210,"src":"345:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12180,"name":"bool","nodeType":"ElementaryTypeName","src":"345:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":12183,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":12210,"src":"371:20:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12182,"name":"uint160","nodeType":"ElementaryTypeName","src":"371:7:50","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":12185,"mutability":"mutable","name":"amountSpecified","nodeType":"VariableDeclaration","scope":12210,"src":"402:22:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12184,"name":"int256","nodeType":"ElementaryTypeName","src":"402:6:50","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":12187,"mutability":"mutable","name":"pay0","nodeType":"VariableDeclaration","scope":12210,"src":"435:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12186,"name":"uint256","nodeType":"ElementaryTypeName","src":"435:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12189,"mutability":"mutable","name":"pay1","nodeType":"VariableDeclaration","scope":12210,"src":"458:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12188,"name":"uint256","nodeType":"ElementaryTypeName","src":"458:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"283:194:50"},"returnParameters":{"id":12191,"nodeType":"ParameterList","parameters":[],"src":"487:0:50"},"scope":12286,"src":"270:424:50","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3314],"body":{"id":12284,"nodeType":"Block","src":"819:570:50","statements":[{"assignments":[12221,12223,12225],"declarations":[{"constant":false,"id":12221,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":12284,"src":"831:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12220,"name":"address","nodeType":"ElementaryTypeName","src":"831:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12223,"mutability":"mutable","name":"pay0","nodeType":"VariableDeclaration","scope":12284,"src":"847:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12222,"name":"uint256","nodeType":"ElementaryTypeName","src":"847:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12225,"mutability":"mutable","name":"pay1","nodeType":"VariableDeclaration","scope":12284,"src":"861:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12224,"name":"uint256","nodeType":"ElementaryTypeName","src":"861:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12237,"initialValue":{"arguments":[{"id":12228,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12216,"src":"902:4:50","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":12230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"922:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12229,"name":"address","nodeType":"ElementaryTypeName","src":"922:7:50","typeDescriptions":{}}},{"id":12232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"931:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12231,"name":"uint256","nodeType":"ElementaryTypeName","src":"931:7:50","typeDescriptions":{}}},{"id":12234,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"940:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12233,"name":"uint256","nodeType":"ElementaryTypeName","src":"940:7:50","typeDescriptions":{}}}],"id":12235,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"921:27:50","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(address),type(uint256),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(address),type(uint256),type(uint256))"}],"expression":{"id":12226,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"877:3:50","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"877:10:50","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":12236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"877:82:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_uint256_$_t_uint256_$","typeString":"tuple(address payable,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"830:129:50"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12238,"name":"pay0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12223,"src":"976:4:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"983:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"976:8:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12260,"name":"pay1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12225,"src":"1184:4:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1191:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1184:8:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12282,"nodeType":"IfStatement","src":"1180:202:50","trueBody":{"id":12281,"nodeType":"Block","src":"1194:188:50","statements":[{"expression":{"arguments":[{"id":12272,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12221,"src":"1288:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":12273,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1313:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1313:10:50","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":12277,"name":"pay1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12225,"src":"1350:4:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1342:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12275,"name":"uint256","nodeType":"ElementaryTypeName","src":"1342:7:50","typeDescriptions":{}}},"id":12278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1342:13:50","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":12265,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1235:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1235:10:50","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":12264,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1223:11:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":12267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1223:23:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":12268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":3594,"src":"1223:30:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1223:32:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12263,"name":"IERC20Minimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3162,"src":"1209:13:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Minimal_$3162_$","typeString":"type(contract IERC20Minimal)"}},"id":12270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1209:47:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Minimal_$3162","typeString":"contract IERC20Minimal"}},"id":12271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":3143,"src":"1209:60:50","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":12279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1209:161:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12280,"nodeType":"ExpressionStatement","src":"1209:161:50"}]}},"id":12283,"nodeType":"IfStatement","src":"972:410:50","trueBody":{"id":12259,"nodeType":"Block","src":"986:188:50","statements":[{"expression":{"arguments":[{"id":12250,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12221,"src":"1080:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":12251,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1105:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1105:10:50","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":12255,"name":"pay0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12223,"src":"1142:4:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1134:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12253,"name":"uint256","nodeType":"ElementaryTypeName","src":"1134:7:50","typeDescriptions":{}}},"id":12256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1134:13:50","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":12243,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1027:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1027:10:50","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":12242,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1015:11:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":12245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1015:23:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":12246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":3588,"src":"1015:30:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1015:32:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12241,"name":"IERC20Minimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3162,"src":"1001:13:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Minimal_$3162_$","typeString":"type(contract IERC20Minimal)"}},"id":12248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1001:47:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Minimal_$3162","typeString":"contract IERC20Minimal"}},"id":12249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":3143,"src":"1001:60:50","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":12257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1001:161:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12258,"nodeType":"ExpressionStatement","src":"1001:161:50"}]}}]},"functionSelector":"d804d7a7","id":12285,"implemented":true,"kind":"function","modifiers":[],"name":"elixirSwapCallback","nodeType":"FunctionDefinition","overrides":{"id":12218,"nodeType":"OverrideSpecifier","overrides":[],"src":"810:8:50"},"parameters":{"id":12217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12212,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12285,"src":"740:6:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12211,"name":"int256","nodeType":"ElementaryTypeName","src":"740:6:50","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":12214,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12285,"src":"757:6:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12213,"name":"int256","nodeType":"ElementaryTypeName","src":"757:6:50","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":12216,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":12285,"src":"774:19:50","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":12215,"name":"bytes","nodeType":"ElementaryTypeName","src":"774:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"729:71:50"},"returnParameters":{"id":12219,"nodeType":"ParameterList","parameters":[],"src":"819:0:50"},"scope":12286,"src":"702:687:50","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":12287,"src":"213:1179:50"}],"src":"40:1354:50"},"id":50},"contracts/elixir-core/test/TickBitmapEchidnaTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/TickBitmapEchidnaTest.sol","exportedSymbols":{"BitMath":[4058],"TickBitmap":[7032],"TickBitmapEchidnaTest":[12473]},"id":12474,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":12288,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:51"},{"absolutePath":"contracts/elixir-core/libraries/TickBitmap.sol","file":"../libraries/TickBitmap.sol","id":12289,"nodeType":"ImportDirective","scope":12474,"sourceUnit":7033,"src":"67:37:51","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":12473,"linearizedBaseContracts":[12473],"name":"TickBitmapEchidnaTest","nodeType":"ContractDefinition","nodes":[{"id":12294,"libraryName":{"id":12290,"name":"TickBitmap","nodeType":"UserDefinedTypeName","referencedDeclaration":7032,"src":"152:10:51","typeDescriptions":{"typeIdentifier":"t_contract$_TickBitmap_$7032","typeString":"library TickBitmap"}},"nodeType":"UsingForDirective","src":"146:47:51","typeName":{"id":12293,"keyType":{"id":12291,"name":"int16","nodeType":"ElementaryTypeName","src":"175:5:51","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Mapping","src":"167:25:51","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"valueType":{"id":12292,"name":"uint256","nodeType":"ElementaryTypeName","src":"184:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},{"constant":false,"id":12298,"mutability":"mutable","name":"bitmap","nodeType":"VariableDeclaration","scope":12473,"src":"201:40:51","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"typeName":{"id":12297,"keyType":{"id":12295,"name":"int16","nodeType":"ElementaryTypeName","src":"209:5:51","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Mapping","src":"201:25:51","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"valueType":{"id":12296,"name":"uint256","nodeType":"ElementaryTypeName","src":"218:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"body":{"id":12323,"nodeType":"Block","src":"367:158:51","statements":[{"assignments":[12306,12308],"declarations":[{"constant":false,"id":12306,"mutability":"mutable","name":"next","nodeType":"VariableDeclaration","scope":12323,"src":"379:10:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12305,"name":"int24","nodeType":"ElementaryTypeName","src":"379:5:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":12308,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":12323,"src":"391:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12307,"name":"bool","nodeType":"ElementaryTypeName","src":"391:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":12315,"initialValue":{"arguments":[{"id":12311,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12300,"src":"451:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"hexValue":"31","id":12312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"457:1:51","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"74727565","id":12313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"460:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12309,"name":"bitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12298,"src":"411:6:51","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":12310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"nextInitializedTickWithinOneWord","nodeType":"MemberAccess","referencedDeclaration":7031,"src":"411:39:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_mapping$_t_int16_$_t_uint256_$_$_t_int24_$_t_int24_$_t_bool_$returns$_t_int24_$_t_bool_$bound_to$_t_mapping$_t_int16_$_t_uint256_$_$","typeString":"function (mapping(int16 => uint256),int24,int24,bool) view returns (int24,bool)"}},"id":12314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"411:54:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int24_$_t_bool_$","typeString":"tuple(int24,bool)"}},"nodeType":"VariableDeclarationStatement","src":"378:87:51"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12316,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12306,"src":"483:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":12317,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12300,"src":"491:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"483:12:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"66616c7365","id":12320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"512:5:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"id":12321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"483:34:51","trueExpression":{"id":12319,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12308,"src":"498:11:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12304,"id":12322,"nodeType":"Return","src":"476:41:51"}]},"id":12324,"implemented":true,"kind":"function","modifiers":[],"name":"isInitialized","nodeType":"FunctionDefinition","parameters":{"id":12301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12300,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":12324,"src":"327:10:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12299,"name":"int24","nodeType":"ElementaryTypeName","src":"327:5:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"326:12:51"},"returnParameters":{"id":12304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12303,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12324,"src":"361:4:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12302,"name":"bool","nodeType":"ElementaryTypeName","src":"361:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"360:6:51"},"scope":12473,"src":"304:221:51","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":12351,"nodeType":"Block","src":"572:136:51","statements":[{"assignments":[12330],"declarations":[{"constant":false,"id":12330,"mutability":"mutable","name":"before","nodeType":"VariableDeclaration","scope":12351,"src":"583:11:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12329,"name":"bool","nodeType":"ElementaryTypeName","src":"583:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":12334,"initialValue":{"arguments":[{"id":12332,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12326,"src":"611:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":12331,"name":"isInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12324,"src":"597:13:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_int24_$returns$_t_bool_$","typeString":"function (int24) view returns (bool)"}},"id":12333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"597:19:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"583:33:51"},{"expression":{"arguments":[{"id":12338,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12326,"src":"643:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"hexValue":"31","id":12339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"649:1:51","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"expression":{"id":12335,"name":"bitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12298,"src":"627:6:51","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":12337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"flipTick","nodeType":"MemberAccess","referencedDeclaration":6852,"src":"627:15:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int16_$_t_uint256_$_$_t_int24_$_t_int24_$returns$__$bound_to$_t_mapping$_t_int16_$_t_uint256_$_$","typeString":"function (mapping(int16 => uint256),int24,int24)"}},"id":12340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"627:24:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12341,"nodeType":"ExpressionStatement","src":"627:24:51"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12344,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12326,"src":"683:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":12343,"name":"isInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12324,"src":"669:13:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_int24_$returns$_t_bool_$","typeString":"function (int24) view returns (bool)"}},"id":12345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"669:19:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":12347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"692:7:51","subExpression":{"id":12346,"name":"before","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12330,"src":"693:6:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"669:30:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12342,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"662:6:51","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"662:38:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12350,"nodeType":"ExpressionStatement","src":"662:38:51"}]},"functionSelector":"8815912f","id":12352,"implemented":true,"kind":"function","modifiers":[],"name":"flipTick","nodeType":"FunctionDefinition","parameters":{"id":12327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12326,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":12352,"src":"551:10:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12325,"name":"int24","nodeType":"ElementaryTypeName","src":"551:5:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"550:12:51"},"returnParameters":{"id":12328,"nodeType":"ParameterList","parameters":[],"src":"572:0:51"},"scope":12473,"src":"533:175:51","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12471,"nodeType":"Block","src":"809:986:51","statements":[{"assignments":[12360,12362],"declarations":[{"constant":false,"id":12360,"mutability":"mutable","name":"next","nodeType":"VariableDeclaration","scope":12471,"src":"821:10:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12359,"name":"int24","nodeType":"ElementaryTypeName","src":"821:5:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":12362,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":12471,"src":"833:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12361,"name":"bool","nodeType":"ElementaryTypeName","src":"833:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":12369,"initialValue":{"arguments":[{"id":12365,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12354,"src":"893:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"hexValue":"31","id":12366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"899:1:51","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"id":12367,"name":"lte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12356,"src":"902:3:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12363,"name":"bitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12298,"src":"853:6:51","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":12364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"nextInitializedTickWithinOneWord","nodeType":"MemberAccess","referencedDeclaration":7031,"src":"853:39:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_mapping$_t_int16_$_t_uint256_$_$_t_int24_$_t_int24_$_t_bool_$returns$_t_int24_$_t_bool_$bound_to$_t_mapping$_t_int16_$_t_uint256_$_$","typeString":"function (mapping(int16 => uint256),int24,int24,bool) view returns (int24,bool)"}},"id":12368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"853:53:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int24_$_t_bool_$","typeString":"tuple(int24,bool)"}},"nodeType":"VariableDeclarationStatement","src":"820:86:51"},{"condition":{"id":12370,"name":"lte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12356,"src":"921:3:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12469,"nodeType":"Block","src":"1359:429:51","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12421,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12354,"src":"1420:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"38333838333531","id":12422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1427:7:51","typeDescriptions":{"typeIdentifier":"t_rational_8388351_by_1","typeString":"int_const 8388351"},"value":"8388351"},"src":"1420:14:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12420,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1412:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1412:23:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12425,"nodeType":"ExpressionStatement","src":"1412:23:51"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12427,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12360,"src":"1457:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12428,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12354,"src":"1464:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1457:11:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12426,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1450:6:51","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1450:19:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12431,"nodeType":"ExpressionStatement","src":"1450:19:51"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12433,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12360,"src":"1491:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":12434,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12354,"src":"1498:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1491:11:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"323536","id":12436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1506:3:51","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"1491:18:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12432,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1484:6:51","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1484:26:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12439,"nodeType":"ExpressionStatement","src":"1484:26:51"},{"body":{"id":12459,"nodeType":"Block","src":"1660:60:51","statements":[{"expression":{"arguments":[{"id":12456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1686:17:51","subExpression":{"arguments":[{"id":12454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12441,"src":"1701:1:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":12453,"name":"isInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12324,"src":"1687:13:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_int24_$returns$_t_bool_$","typeString":"function (int24) view returns (bool)"}},"id":12455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1687:16:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12452,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1679:6:51","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1679:25:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12458,"nodeType":"ExpressionStatement","src":"1679:25:51"}]},"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12446,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12441,"src":"1645:1:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12447,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12360,"src":"1649:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1645:8:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12460,"initializationExpression":{"assignments":[12441],"declarations":[{"constant":false,"id":12441,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":12460,"src":"1625:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12440,"name":"int24","nodeType":"ElementaryTypeName","src":"1625:5:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":12445,"initialValue":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12442,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12354,"src":"1635:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":12443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1642:1:51","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1635:8:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"1625:18:51"},"loopExpression":{"expression":{"id":12450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1655:3:51","subExpression":{"id":12449,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12441,"src":"1655:1:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":12451,"nodeType":"ExpressionStatement","src":"1655:3:51"},"nodeType":"ForStatement","src":"1620:100:51"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12463,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12360,"src":"1755:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":12462,"name":"isInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12324,"src":"1741:13:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_int24_$returns$_t_bool_$","typeString":"function (int24) view returns (bool)"}},"id":12464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1741:19:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":12465,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12362,"src":"1764:11:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1741:34:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12461,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1734:6:51","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1734:42:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12468,"nodeType":"ExpressionStatement","src":"1734:42:51"}]},"id":12470,"nodeType":"IfStatement","src":"917:871:51","trueBody":{"id":12419,"nodeType":"Block","src":"926:427:51","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12372,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12354,"src":"987:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":12374,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"995:8:51","subExpression":{"hexValue":"38333838333532","id":12373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"996:7:51","typeDescriptions":{"typeIdentifier":"t_rational_8388352_by_1","typeString":"int_const 8388352"},"value":"8388352"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_8388352_by_1","typeString":"int_const -8388352"}},"src":"987:16:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12371,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"979:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"979:25:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12377,"nodeType":"ExpressionStatement","src":"979:25:51"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12379,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12360,"src":"1026:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":12380,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12354,"src":"1034:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1026:12:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12378,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1019:6:51","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1019:20:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12383,"nodeType":"ExpressionStatement","src":"1019:20:51"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12385,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12354,"src":"1061:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":12386,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12360,"src":"1068:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1061:11:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"323536","id":12388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1075:3:51","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"1061:17:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12384,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1054:6:51","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1054:25:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12391,"nodeType":"ExpressionStatement","src":"1054:25:51"},{"body":{"id":12409,"nodeType":"Block","src":"1225:60:51","statements":[{"expression":{"arguments":[{"id":12406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1251:17:51","subExpression":{"arguments":[{"id":12404,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12393,"src":"1266:1:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":12403,"name":"isInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12324,"src":"1252:13:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_int24_$returns$_t_bool_$","typeString":"function (int24) view returns (bool)"}},"id":12405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1252:16:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12402,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1244:6:51","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1244:25:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12408,"nodeType":"ExpressionStatement","src":"1244:25:51"}]},"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12396,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12393,"src":"1210:1:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12397,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12360,"src":"1214:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1210:8:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12410,"initializationExpression":{"assignments":[12393],"declarations":[{"constant":false,"id":12393,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":12410,"src":"1194:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12392,"name":"int24","nodeType":"ElementaryTypeName","src":"1194:5:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":12395,"initialValue":{"id":12394,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12354,"src":"1204:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"1194:14:51"},"loopExpression":{"expression":{"id":12400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"1220:3:51","subExpression":{"id":12399,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12393,"src":"1220:1:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":12401,"nodeType":"ExpressionStatement","src":"1220:3:51"},"nodeType":"ForStatement","src":"1189:96:51"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12413,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12360,"src":"1320:4:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":12412,"name":"isInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12324,"src":"1306:13:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_int24_$returns$_t_bool_$","typeString":"function (int24) view returns (bool)"}},"id":12414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1306:19:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":12415,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12362,"src":"1329:11:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1306:34:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12411,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1299:6:51","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1299:42:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12418,"nodeType":"ExpressionStatement","src":"1299:42:51"}]}}]},"functionSelector":"2854ac0a","id":12472,"implemented":true,"kind":"function","modifiers":[],"name":"checkNextInitializedTickWithinOneWordInvariants","nodeType":"FunctionDefinition","parameters":{"id":12357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12354,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":12472,"src":"773:10:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12353,"name":"int24","nodeType":"ElementaryTypeName","src":"773:5:51","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":12356,"mutability":"mutable","name":"lte","nodeType":"VariableDeclaration","scope":12472,"src":"785:8:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12355,"name":"bool","nodeType":"ElementaryTypeName","src":"785:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"772:22:51"},"returnParameters":{"id":12358,"nodeType":"ParameterList","parameters":[],"src":"809:0:51"},"scope":12473,"src":"716:1079:51","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":12474,"src":"108:1690:51"}],"src":"40:1760:51"},"id":51},"contracts/elixir-core/test/TickBitmapTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/TickBitmapTest.sol","exportedSymbols":{"BitMath":[4058],"TickBitmap":[7032],"TickBitmapTest":[12597]},"id":12598,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":12475,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:52"},{"absolutePath":"contracts/elixir-core/libraries/TickBitmap.sol","file":"../libraries/TickBitmap.sol","id":12476,"nodeType":"ImportDirective","scope":12598,"sourceUnit":7033,"src":"67:37:52","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":12597,"linearizedBaseContracts":[12597],"name":"TickBitmapTest","nodeType":"ContractDefinition","nodes":[{"id":12481,"libraryName":{"id":12477,"name":"TickBitmap","nodeType":"UserDefinedTypeName","referencedDeclaration":7032,"src":"145:10:52","typeDescriptions":{"typeIdentifier":"t_contract$_TickBitmap_$7032","typeString":"library TickBitmap"}},"nodeType":"UsingForDirective","src":"139:47:52","typeName":{"id":12480,"keyType":{"id":12478,"name":"int16","nodeType":"ElementaryTypeName","src":"168:5:52","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Mapping","src":"160:25:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"valueType":{"id":12479,"name":"uint256","nodeType":"ElementaryTypeName","src":"177:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},{"constant":false,"functionSelector":"3ffc81ee","id":12485,"mutability":"mutable","name":"bitmap","nodeType":"VariableDeclaration","scope":12597,"src":"194:39:52","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"typeName":{"id":12484,"keyType":{"id":12482,"name":"int16","nodeType":"ElementaryTypeName","src":"202:5:52","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Mapping","src":"194:25:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"valueType":{"id":12483,"name":"uint256","nodeType":"ElementaryTypeName","src":"211:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"body":{"id":12497,"nodeType":"Block","src":"281:43:52","statements":[{"expression":{"arguments":[{"id":12493,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12487,"src":"308:4:52","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"hexValue":"31","id":12494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"314:1:52","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"expression":{"id":12490,"name":"bitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12485,"src":"292:6:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":12492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"flipTick","nodeType":"MemberAccess","referencedDeclaration":6852,"src":"292:15:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int16_$_t_uint256_$_$_t_int24_$_t_int24_$returns$__$bound_to$_t_mapping$_t_int16_$_t_uint256_$_$","typeString":"function (mapping(int16 => uint256),int24,int24)"}},"id":12495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"292:24:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12496,"nodeType":"ExpressionStatement","src":"292:24:52"}]},"functionSelector":"8815912f","id":12498,"implemented":true,"kind":"function","modifiers":[],"name":"flipTick","nodeType":"FunctionDefinition","parameters":{"id":12488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12487,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":12498,"src":"260:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12486,"name":"int24","nodeType":"ElementaryTypeName","src":"260:5:52","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"259:12:52"},"returnParameters":{"id":12489,"nodeType":"ParameterList","parameters":[],"src":"281:0:52"},"scope":12597,"src":"242:82:52","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12522,"nodeType":"Block","src":"401:122:52","statements":[{"assignments":[12506],"declarations":[{"constant":false,"id":12506,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":12522,"src":"412:17:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12505,"name":"uint256","nodeType":"ElementaryTypeName","src":"412:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12509,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":12507,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"432:7:52","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":12508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"432:9:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"412:29:52"},{"expression":{"arguments":[{"id":12513,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12500,"src":"468:4:52","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"hexValue":"31","id":12514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"474:1:52","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"expression":{"id":12510,"name":"bitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12485,"src":"452:6:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":12512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"flipTick","nodeType":"MemberAccess","referencedDeclaration":6852,"src":"452:15:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int16_$_t_uint256_$_$_t_int24_$_t_int24_$returns$__$bound_to$_t_mapping$_t_int16_$_t_uint256_$_$","typeString":"function (mapping(int16 => uint256),int24,int24)"}},"id":12515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"452:24:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12516,"nodeType":"ExpressionStatement","src":"452:24:52"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12517,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12506,"src":"494:9:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":12518,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"506:7:52","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":12519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"506:9:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"494:21:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12504,"id":12521,"nodeType":"Return","src":"487:28:52"}]},"functionSelector":"f04bc943","id":12523,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfFlipTick","nodeType":"FunctionDefinition","parameters":{"id":12501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12500,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":12523,"src":"362:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12499,"name":"int24","nodeType":"ElementaryTypeName","src":"362:5:52","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"361:12:52"},"returnParameters":{"id":12504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12503,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12523,"src":"392:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12502,"name":"uint256","nodeType":"ElementaryTypeName","src":"392:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"391:9:52"},"scope":12597,"src":"332:191:52","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12541,"nodeType":"Block","src":"680:79:52","statements":[{"expression":{"arguments":[{"id":12536,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12525,"src":"738:4:52","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"hexValue":"31","id":12537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"744:1:52","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"id":12538,"name":"lte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12527,"src":"747:3:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12534,"name":"bitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12485,"src":"698:6:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":12535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"nextInitializedTickWithinOneWord","nodeType":"MemberAccess","referencedDeclaration":7031,"src":"698:39:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_mapping$_t_int16_$_t_uint256_$_$_t_int24_$_t_int24_$_t_bool_$returns$_t_int24_$_t_bool_$bound_to$_t_mapping$_t_int16_$_t_uint256_$_$","typeString":"function (mapping(int16 => uint256),int24,int24,bool) view returns (int24,bool)"}},"id":12539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"698:53:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int24_$_t_bool_$","typeString":"tuple(int24,bool)"}},"functionReturnParameters":12533,"id":12540,"nodeType":"Return","src":"691:60:52"}]},"functionSelector":"3e7ba228","id":12542,"implemented":true,"kind":"function","modifiers":[],"name":"nextInitializedTickWithinOneWord","nodeType":"FunctionDefinition","parameters":{"id":12528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12525,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":12542,"src":"573:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12524,"name":"int24","nodeType":"ElementaryTypeName","src":"573:5:52","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":12527,"mutability":"mutable","name":"lte","nodeType":"VariableDeclaration","scope":12542,"src":"585:8:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12526,"name":"bool","nodeType":"ElementaryTypeName","src":"585:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"572:22:52"},"returnParameters":{"id":12533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12530,"mutability":"mutable","name":"next","nodeType":"VariableDeclaration","scope":12542,"src":"645:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12529,"name":"int24","nodeType":"ElementaryTypeName","src":"645:5:52","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":12532,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":12542,"src":"657:16:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12531,"name":"bool","nodeType":"ElementaryTypeName","src":"657:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"644:30:52"},"scope":12597,"src":"531:228:52","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":12569,"nodeType":"Block","src":"875:151:52","statements":[{"assignments":[12552],"declarations":[{"constant":false,"id":12552,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":12569,"src":"886:17:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12551,"name":"uint256","nodeType":"ElementaryTypeName","src":"886:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12555,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":12553,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"906:7:52","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":12554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"906:9:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"886:29:52"},{"expression":{"arguments":[{"id":12559,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12544,"src":"966:4:52","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"hexValue":"31","id":12560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"972:1:52","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"id":12561,"name":"lte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12546,"src":"975:3:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12556,"name":"bitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12485,"src":"926:6:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":12558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"nextInitializedTickWithinOneWord","nodeType":"MemberAccess","referencedDeclaration":7031,"src":"926:39:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_mapping$_t_int16_$_t_uint256_$_$_t_int24_$_t_int24_$_t_bool_$returns$_t_int24_$_t_bool_$bound_to$_t_mapping$_t_int16_$_t_uint256_$_$","typeString":"function (mapping(int16 => uint256),int24,int24,bool) view returns (int24,bool)"}},"id":12562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"926:53:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int24_$_t_bool_$","typeString":"tuple(int24,bool)"}},"id":12563,"nodeType":"ExpressionStatement","src":"926:53:52"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12564,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12552,"src":"997:9:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":12565,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1009:7:52","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":12566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1009:9:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"997:21:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12550,"id":12568,"nodeType":"Return","src":"990:28:52"}]},"functionSelector":"f0fc9224","id":12570,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfNextInitializedTickWithinOneWord","nodeType":"FunctionDefinition","parameters":{"id":12547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12544,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":12570,"src":"821:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12543,"name":"int24","nodeType":"ElementaryTypeName","src":"821:5:52","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":12546,"mutability":"mutable","name":"lte","nodeType":"VariableDeclaration","scope":12570,"src":"833:8:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12545,"name":"bool","nodeType":"ElementaryTypeName","src":"833:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"820:22:52"},"returnParameters":{"id":12550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12549,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12570,"src":"866:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12548,"name":"uint256","nodeType":"ElementaryTypeName","src":"866:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"865:9:52"},"scope":12597,"src":"767:259:52","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":12595,"nodeType":"Block","src":"1152:158:52","statements":[{"assignments":[12578,12580],"declarations":[{"constant":false,"id":12578,"mutability":"mutable","name":"next","nodeType":"VariableDeclaration","scope":12595,"src":"1164:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12577,"name":"int24","nodeType":"ElementaryTypeName","src":"1164:5:52","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":12580,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":12595,"src":"1176:16:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12579,"name":"bool","nodeType":"ElementaryTypeName","src":"1176:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":12587,"initialValue":{"arguments":[{"id":12583,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12572,"src":"1236:4:52","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"hexValue":"31","id":12584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1242:1:52","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"74727565","id":12585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1245:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12581,"name":"bitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12485,"src":"1196:6:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":12582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"nextInitializedTickWithinOneWord","nodeType":"MemberAccess","referencedDeclaration":7031,"src":"1196:39:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_mapping$_t_int16_$_t_uint256_$_$_t_int24_$_t_int24_$_t_bool_$returns$_t_int24_$_t_bool_$bound_to$_t_mapping$_t_int16_$_t_uint256_$_$","typeString":"function (mapping(int16 => uint256),int24,int24,bool) view returns (int24,bool)"}},"id":12586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1196:54:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int24_$_t_bool_$","typeString":"tuple(int24,bool)"}},"nodeType":"VariableDeclarationStatement","src":"1163:87:52"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12588,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12578,"src":"1268:4:52","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":12589,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12572,"src":"1276:4:52","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1268:12:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"66616c7365","id":12592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1297:5:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"id":12593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1268:34:52","trueExpression":{"id":12591,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12580,"src":"1283:11:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12576,"id":12594,"nodeType":"Return","src":"1261:41:52"}]},"functionSelector":"2bdc2fd3","id":12596,"implemented":true,"kind":"function","modifiers":[],"name":"isInitialized","nodeType":"FunctionDefinition","parameters":{"id":12573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12572,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":12596,"src":"1111:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12571,"name":"int24","nodeType":"ElementaryTypeName","src":"1111:5:52","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1110:12:52"},"returnParameters":{"id":12576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12575,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12596,"src":"1146:4:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12574,"name":"bool","nodeType":"ElementaryTypeName","src":"1146:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1145:6:52"},"scope":12597,"src":"1088:222:52","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":12598,"src":"108:1205:52"}],"src":"40:1275:52"},"id":52},"contracts/elixir-core/test/TickEchidnaTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/TickEchidnaTest.sol","exportedSymbols":{"LiquidityMath":[4300],"LowGasSafeMath":[4430],"SafeCast":[5526],"Tick":[6776],"TickEchidnaTest":[12700],"TickMath":[7567]},"id":12701,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":12599,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:53"},{"absolutePath":"contracts/elixir-core/libraries/Tick.sol","file":"../libraries/Tick.sol","id":12600,"nodeType":"ImportDirective","scope":12701,"sourceUnit":6777,"src":"67:31:53","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":12700,"linearizedBaseContracts":[12700],"name":"TickEchidnaTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":12698,"nodeType":"Block","src":"215:773:53","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12606,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12602,"src":"234:11:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":12607,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"249:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_TICK","nodeType":"MemberAccess","referencedDeclaration":7045,"src":"249:17:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"234:32:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12605,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"226:7:53","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"226:41:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12611,"nodeType":"ExpressionStatement","src":"226:41:53"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12613,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12602,"src":"286:11:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"300:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"286:15:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12612,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"278:7:53","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"278:24:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12617,"nodeType":"ExpressionStatement","src":"278:24:53"},{"assignments":[12619],"declarations":[{"constant":false,"id":12619,"mutability":"mutable","name":"minTick","nodeType":"VariableDeclaration","scope":12698,"src":"315:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12618,"name":"int24","nodeType":"ElementaryTypeName","src":"315:5:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":12627,"initialValue":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12620,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"332:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_TICK","nodeType":"MemberAccess","referencedDeclaration":7040,"src":"332:17:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":12622,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12602,"src":"352:11:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"332:31:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":12624,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"331:33:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":12625,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12602,"src":"367:11:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"331:47:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"315:63:53"},{"assignments":[12629],"declarations":[{"constant":false,"id":12629,"mutability":"mutable","name":"maxTick","nodeType":"VariableDeclaration","scope":12698,"src":"389:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12628,"name":"int24","nodeType":"ElementaryTypeName","src":"389:5:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":12637,"initialValue":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12630,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"406:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_TICK","nodeType":"MemberAccess","referencedDeclaration":7045,"src":"406:17:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":12632,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12602,"src":"426:11:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"406:31:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":12634,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"405:33:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":12635,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12602,"src":"441:11:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"405:47:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"389:63:53"},{"assignments":[12639],"declarations":[{"constant":false,"id":12639,"mutability":"mutable","name":"maxLiquidityPerTick","nodeType":"VariableDeclaration","scope":12698,"src":"465:27:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":12638,"name":"uint128","nodeType":"ElementaryTypeName","src":"465:7:53","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":12644,"initialValue":{"arguments":[{"id":12642,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12602,"src":"533:11:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":12640,"name":"Tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6776,"src":"495:4:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Tick_$6776_$","typeString":"type(library Tick)"}},"id":12641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickSpacingToMaxLiquidityPerTick","nodeType":"MemberAccess","referencedDeclaration":6386,"src":"495:37:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint128_$","typeString":"function (int24) pure returns (uint128)"}},"id":12643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"495:50:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"465:80:53"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12646,"name":"maxTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12629,"src":"600:7:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":12648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"611:8:53","subExpression":{"id":12647,"name":"minTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12619,"src":"612:7:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"600:19:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12645,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"593:6:53","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"593:27:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12651,"nodeType":"ExpressionStatement","src":"593:27:53"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12653,"name":"maxTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12629,"src":"668:7:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"678:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"668:11:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12652,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"661:6:53","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"661:19:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12657,"nodeType":"ExpressionStatement","src":"661:19:53"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12659,"name":"maxTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12629,"src":"724:7:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":12660,"name":"minTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12619,"src":"734:7:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"724:17:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":12662,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"723:19:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":12663,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12602,"src":"745:11:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"723:33:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":12665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"760:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"723:38:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12658,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"716:6:53","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"716:46:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12668,"nodeType":"ExpressionStatement","src":"716:46:53"},{"assignments":[12670],"declarations":[{"constant":false,"id":12670,"mutability":"mutable","name":"numTicks","nodeType":"VariableDeclaration","scope":12698,"src":"775:16:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12669,"name":"uint256","nodeType":"ElementaryTypeName","src":"775:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12682,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12673,"name":"maxTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12629,"src":"803:7:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":12674,"name":"minTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12619,"src":"813:7:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"803:17:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":12676,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"802:19:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":12677,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12602,"src":"824:11:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"802:33:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":12672,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"794:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12671,"name":"uint256","nodeType":"ElementaryTypeName","src":"794:7:53","typeDescriptions":{}}},"id":12679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"794:42:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":12680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"839:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"794:46:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"775:65:53"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12686,"name":"maxLiquidityPerTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12639,"src":"927:19:53","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":12685,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"919:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12684,"name":"uint256","nodeType":"ElementaryTypeName","src":"919:7:53","typeDescriptions":{}}},"id":12687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"919:28:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":12688,"name":"numTicks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12670,"src":"950:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"919:39:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":12692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"967:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":12691,"name":"uint128","nodeType":"ElementaryTypeName","src":"967:7:53","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":12690,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"962:4:53","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"962:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":12694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"962:17:53","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"919:60:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12683,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"912:6:53","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"912:68:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12697,"nodeType":"ExpressionStatement","src":"912:68:53"}]},"functionSelector":"858027e5","id":12699,"implemented":true,"kind":"function","modifiers":[],"name":"checkTickSpacingToParametersInvariants","nodeType":"FunctionDefinition","parameters":{"id":12603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12602,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":12699,"src":"182:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12601,"name":"int24","nodeType":"ElementaryTypeName","src":"182:5:53","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"181:19:53"},"returnParameters":{"id":12604,"nodeType":"ParameterList","parameters":[],"src":"215:0:53"},"scope":12700,"src":"134:854:53","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":12701,"src":"102:889:53"}],"src":"40:953:53"},"id":53},"contracts/elixir-core/test/TickMathEchidnaTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/TickMathEchidnaTest.sol","exportedSymbols":{"TickMath":[7567],"TickMathEchidnaTest":[12796]},"id":12797,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":12702,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:54"},{"absolutePath":"contracts/elixir-core/libraries/TickMath.sol","file":"../libraries/TickMath.sol","id":12703,"nodeType":"ImportDirective","scope":12797,"sourceUnit":7568,"src":"67:35:54","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":12796,"linearizedBaseContracts":[12796],"name":"TickMathEchidnaTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":12749,"nodeType":"Block","src":"251:283:54","statements":[{"assignments":[12709],"declarations":[{"constant":false,"id":12709,"mutability":"mutable","name":"ratio","nodeType":"VariableDeclaration","scope":12749,"src":"262:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12708,"name":"uint160","nodeType":"ElementaryTypeName","src":"262:7:54","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":12714,"initialValue":{"arguments":[{"id":12712,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12705,"src":"306:4:54","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":12710,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"278:8:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":7427,"src":"278:27:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":12713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"278:33:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"262:49:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12718,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12705,"src":"357:4:54","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":12719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"364:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"357:8:54","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":12716,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"329:8:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":7427,"src":"329:27:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":12721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"329:37:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12722,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12709,"src":"369:5:54","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"329:45:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12724,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12709,"src":"378:5:54","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12727,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12705,"src":"414:4:54","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":12728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"421:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"414:8:54","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":12725,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"386:8:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":7427,"src":"386:27:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":12730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"386:37:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"378:45:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"329:94:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12715,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"322:6:54","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"322:102:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12734,"nodeType":"ExpressionStatement","src":"322:102:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12736,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12709,"src":"442:5:54","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":12737,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"451:8:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":7049,"src":"451:23:54","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"442:32:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12735,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"435:6:54","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"435:40:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12741,"nodeType":"ExpressionStatement","src":"435:40:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12743,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12709,"src":"493:5:54","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":12744,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"502:8:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":7053,"src":"502:23:54","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"493:32:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12742,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"486:6:54","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"486:40:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12748,"nodeType":"ExpressionStatement","src":"486:40:54"}]},"functionSelector":"47d38f4d","id":12750,"implemented":true,"kind":"function","modifiers":[],"name":"checkGetSqrtRatioAtTickInvariants","nodeType":"FunctionDefinition","parameters":{"id":12706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12705,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":12750,"src":"225:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12704,"name":"int24","nodeType":"ElementaryTypeName","src":"225:5:54","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"224:12:54"},"returnParameters":{"id":12707,"nodeType":"ParameterList","parameters":[],"src":"251:0:54"},"scope":12796,"src":"182:352:54","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":12794,"nodeType":"Block","src":"692:263:54","statements":[{"assignments":[12756],"declarations":[{"constant":false,"id":12756,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":12794,"src":"703:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12755,"name":"int24","nodeType":"ElementaryTypeName","src":"703:5:54","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":12761,"initialValue":{"arguments":[{"id":12759,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12752,"src":"744:5:54","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":12757,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"716:8:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getTickAtSqrtRatio","nodeType":"MemberAccess","referencedDeclaration":7566,"src":"716:27:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_int24_$","typeString":"function (uint160) pure returns (int24)"}},"id":12760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"716:34:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"703:47:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12763,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12752,"src":"768:5:54","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"id":12766,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12756,"src":"805:4:54","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":12764,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"777:8:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":7427,"src":"777:27:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":12767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"777:33:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"768:42:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12769,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12752,"src":"814:5:54","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12772,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12756,"src":"850:4:54","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":12773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"857:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"850:8:54","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":12770,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"822:8:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":7427,"src":"822:27:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":12775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"822:37:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"814:45:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"768:91:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12762,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"761:6:54","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"761:99:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12779,"nodeType":"ExpressionStatement","src":"761:99:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12781,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12756,"src":"878:4:54","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":12782,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"886:8:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_TICK","nodeType":"MemberAccess","referencedDeclaration":7040,"src":"886:17:54","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"878:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12780,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"871:6:54","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"871:33:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12786,"nodeType":"ExpressionStatement","src":"871:33:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":12791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12788,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12756,"src":"922:4:54","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":12789,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"929:8:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_TICK","nodeType":"MemberAccess","referencedDeclaration":7045,"src":"929:17:54","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"922:24:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12787,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"915:6:54","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"915:32:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12793,"nodeType":"ExpressionStatement","src":"915:32:54"}]},"functionSelector":"df01e52d","id":12795,"implemented":true,"kind":"function","modifiers":[],"name":"checkGetTickAtSqrtRatioInvariants","nodeType":"FunctionDefinition","parameters":{"id":12753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12752,"mutability":"mutable","name":"ratio","nodeType":"VariableDeclaration","scope":12795,"src":"663:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12751,"name":"uint160","nodeType":"ElementaryTypeName","src":"663:7:54","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"662:15:54"},"returnParameters":{"id":12754,"nodeType":"ParameterList","parameters":[],"src":"692:0:54"},"scope":12796,"src":"620:335:54","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":12797,"src":"106:852:54"}],"src":"40:920:54"},"id":54},"contracts/elixir-core/test/TickMathTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/TickMathTest.sol","exportedSymbols":{"TickMath":[7567],"TickMathTest":[12892]},"id":12893,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":12798,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:55"},{"absolutePath":"contracts/elixir-core/libraries/TickMath.sol","file":"../libraries/TickMath.sol","id":12799,"nodeType":"ImportDirective","scope":12893,"sourceUnit":7568,"src":"67:35:55","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":12892,"linearizedBaseContracts":[12892],"name":"TickMathTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":12811,"nodeType":"Block","src":"207:59:55","statements":[{"expression":{"arguments":[{"id":12808,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12801,"src":"253:4:55","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":12806,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"225:8:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":7427,"src":"225:27:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":12809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"225:33:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":12805,"id":12810,"nodeType":"Return","src":"218:40:55"}]},"functionSelector":"986cfba3","id":12812,"implemented":true,"kind":"function","modifiers":[],"name":"getSqrtRatioAtTick","nodeType":"FunctionDefinition","parameters":{"id":12802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12801,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":12812,"src":"163:10:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12800,"name":"int24","nodeType":"ElementaryTypeName","src":"163:5:55","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"162:12:55"},"returnParameters":{"id":12805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12804,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12812,"src":"198:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12803,"name":"uint160","nodeType":"ElementaryTypeName","src":"198:7:55","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"197:9:55"},"scope":12892,"src":"135:131:55","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":12835,"nodeType":"Block","src":"358:131:55","statements":[{"assignments":[12820],"declarations":[{"constant":false,"id":12820,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":12835,"src":"369:17:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12819,"name":"uint256","nodeType":"ElementaryTypeName","src":"369:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12823,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":12821,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"389:7:55","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":12822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"389:9:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"369:29:55"},{"expression":{"arguments":[{"id":12827,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12814,"src":"437:4:55","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":12824,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"409:8:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":7427,"src":"409:27:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":12828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"409:33:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":12829,"nodeType":"ExpressionStatement","src":"409:33:55"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12830,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12820,"src":"460:9:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":12831,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"472:7:55","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":12832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"472:9:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"460:21:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12818,"id":12834,"nodeType":"Return","src":"453:28:55"}]},"functionSelector":"a7398eb4","id":12836,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetSqrtRatioAtTick","nodeType":"FunctionDefinition","parameters":{"id":12815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12814,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":12836,"src":"314:10:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12813,"name":"int24","nodeType":"ElementaryTypeName","src":"314:5:55","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"313:12:55"},"returnParameters":{"id":12818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12817,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12836,"src":"349:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12816,"name":"uint256","nodeType":"ElementaryTypeName","src":"349:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"348:9:55"},"scope":12892,"src":"274:215:55","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":12848,"nodeType":"Block","src":"577:67:55","statements":[{"expression":{"arguments":[{"id":12845,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12838,"src":"623:12:55","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":12843,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"595:8:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getTickAtSqrtRatio","nodeType":"MemberAccess","referencedDeclaration":7566,"src":"595:27:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_int24_$","typeString":"function (uint160) pure returns (int24)"}},"id":12846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"595:41:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"functionReturnParameters":12842,"id":12847,"nodeType":"Return","src":"588:48:55"}]},"functionSelector":"4f76c058","id":12849,"implemented":true,"kind":"function","modifiers":[],"name":"getTickAtSqrtRatio","nodeType":"FunctionDefinition","parameters":{"id":12839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12838,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":12849,"src":"525:20:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12837,"name":"uint160","nodeType":"ElementaryTypeName","src":"525:7:55","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"524:22:55"},"returnParameters":{"id":12842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12841,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12849,"src":"570:5:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12840,"name":"int24","nodeType":"ElementaryTypeName","src":"570:5:55","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"569:7:55"},"scope":12892,"src":"497:147:55","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":12872,"nodeType":"Block","src":"746:139:55","statements":[{"assignments":[12857],"declarations":[{"constant":false,"id":12857,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":12872,"src":"757:17:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12856,"name":"uint256","nodeType":"ElementaryTypeName","src":"757:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12860,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":12858,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"777:7:55","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":12859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"777:9:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"757:29:55"},{"expression":{"arguments":[{"id":12864,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12851,"src":"825:12:55","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":12861,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"797:8:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getTickAtSqrtRatio","nodeType":"MemberAccess","referencedDeclaration":7566,"src":"797:27:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_int24_$","typeString":"function (uint160) pure returns (int24)"}},"id":12865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"797:41:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":12866,"nodeType":"ExpressionStatement","src":"797:41:55"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12867,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12857,"src":"856:9:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":12868,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"868:7:55","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":12869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"868:9:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"856:21:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12855,"id":12871,"nodeType":"Return","src":"849:28:55"}]},"functionSelector":"b0622f67","id":12873,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetTickAtSqrtRatio","nodeType":"FunctionDefinition","parameters":{"id":12852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12851,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":12873,"src":"692:20:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12850,"name":"uint160","nodeType":"ElementaryTypeName","src":"692:7:55","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"691:22:55"},"returnParameters":{"id":12855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12854,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12873,"src":"737:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12853,"name":"uint256","nodeType":"ElementaryTypeName","src":"737:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"736:9:55"},"scope":12892,"src":"652:233:55","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":12881,"nodeType":"Block","src":"951:49:55","statements":[{"expression":{"expression":{"id":12878,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"969:8:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":7049,"src":"969:23:55","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":12877,"id":12880,"nodeType":"Return","src":"962:30:55"}]},"functionSelector":"ee8847ff","id":12882,"implemented":true,"kind":"function","modifiers":[],"name":"MIN_SQRT_RATIO","nodeType":"FunctionDefinition","parameters":{"id":12874,"nodeType":"ParameterList","parameters":[],"src":"916:2:55"},"returnParameters":{"id":12877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12876,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12882,"src":"942:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12875,"name":"uint160","nodeType":"ElementaryTypeName","src":"942:7:55","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"941:9:55"},"scope":12892,"src":"893:107:55","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":12890,"nodeType":"Block","src":"1066:49:55","statements":[{"expression":{"expression":{"id":12887,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"1084:8:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":12888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":7053,"src":"1084:23:55","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":12886,"id":12889,"nodeType":"Return","src":"1077:30:55"}]},"functionSelector":"6d2cc304","id":12891,"implemented":true,"kind":"function","modifiers":[],"name":"MAX_SQRT_RATIO","nodeType":"FunctionDefinition","parameters":{"id":12883,"nodeType":"ParameterList","parameters":[],"src":"1031:2:55"},"returnParameters":{"id":12886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12885,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12891,"src":"1057:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12884,"name":"uint160","nodeType":"ElementaryTypeName","src":"1057:7:55","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1056:9:55"},"scope":12892,"src":"1008:107:55","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":12893,"src":"106:1012:55"}],"src":"40:1080:55"},"id":55},"contracts/elixir-core/test/TickOverflowSafetyEchidnaTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/TickOverflowSafetyEchidnaTest.sol","exportedSymbols":{"LiquidityMath":[4300],"LowGasSafeMath":[4430],"SafeCast":[5526],"Tick":[6776],"TickMath":[7567],"TickOverflowSafetyEchidnaTest":[13239]},"id":13240,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":12894,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:56"},{"absolutePath":"contracts/elixir-core/libraries/Tick.sol","file":"../libraries/Tick.sol","id":12895,"nodeType":"ImportDirective","scope":13240,"sourceUnit":6777,"src":"67:31:56","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":13239,"linearizedBaseContracts":[13239],"name":"TickOverflowSafetyEchidnaTest","nodeType":"ContractDefinition","nodes":[{"id":12900,"libraryName":{"id":12896,"name":"Tick","nodeType":"UserDefinedTypeName","referencedDeclaration":6776,"src":"154:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_Tick_$6776","typeString":"library Tick"}},"nodeType":"UsingForDirective","src":"148:43:56","typeName":{"id":12899,"keyType":{"id":12897,"name":"int24","nodeType":"ElementaryTypeName","src":"171:5:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Mapping","src":"163:27:56","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"valueType":{"id":12898,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":6335,"src":"180:9:56","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"}}}},{"constant":true,"id":12904,"mutability":"constant","name":"MIN_TICK","nodeType":"VariableDeclaration","scope":13239,"src":"199:37:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12901,"name":"int24","nodeType":"ElementaryTypeName","src":"199:5:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"value":{"id":12903,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"233:3:56","subExpression":{"hexValue":"3136","id":12902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"234:2:56","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_16_by_1","typeString":"int_const -16"}},"visibility":"private"},{"constant":true,"id":12907,"mutability":"constant","name":"MAX_TICK","nodeType":"VariableDeclaration","scope":13239,"src":"243:36:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12905,"name":"int24","nodeType":"ElementaryTypeName","src":"243:5:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"value":{"hexValue":"3136","id":12906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"277:2:56","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"visibility":"private"},{"constant":true,"id":12916,"mutability":"constant","name":"MAX_LIQUIDITY","nodeType":"VariableDeclaration","scope":13239,"src":"286:63:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":12908,"name":"uint128","nodeType":"ElementaryTypeName","src":"286:7:56","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"value":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":12915,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":12911,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"332:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":12910,"name":"uint128","nodeType":"ElementaryTypeName","src":"332:7:56","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":12909,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"327:4:56","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"327:13:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":12913,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"327:17:56","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3332","id":12914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"347:2:56","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"327:22:56","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"private"},{"constant":false,"id":12920,"mutability":"mutable","name":"ticks","nodeType":"VariableDeclaration","scope":13239,"src":"358:41:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"typeName":{"id":12919,"keyType":{"id":12917,"name":"int24","nodeType":"ElementaryTypeName","src":"366:5:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Mapping","src":"358:27:56","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"valueType":{"id":12918,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":6335,"src":"375:9:56","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"}}},"visibility":"private"},{"constant":false,"id":12923,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":13239,"src":"406:22:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12921,"name":"int24","nodeType":"ElementaryTypeName","src":"406:5:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"value":{"hexValue":"30","id":12922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"427:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"private"},{"constant":false,"id":12926,"mutability":"mutable","name":"totalLiquidity","nodeType":"VariableDeclaration","scope":13239,"src":"525:25:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12924,"name":"int256","nodeType":"ElementaryTypeName","src":"525:6:56","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"30","id":12925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"549:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"constant":false,"id":12935,"mutability":"mutable","name":"feeGrowthGlobal0X128","nodeType":"VariableDeclaration","scope":13239,"src":"624:60:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12927,"name":"uint256","nodeType":"ElementaryTypeName","src":"624:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":12930,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"668:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12929,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:56","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":12928,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"663:4:56","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"663:13:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":12932,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"663:17:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":12933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"683:1:56","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"663:21:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":12944,"mutability":"mutable","name":"feeGrowthGlobal1X128","nodeType":"VariableDeclaration","scope":13239,"src":"691:60:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12936,"name":"uint256","nodeType":"ElementaryTypeName","src":"691:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12943,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":12939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"735:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12938,"name":"uint256","nodeType":"ElementaryTypeName","src":"735:7:56","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":12937,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"730:4:56","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"730:13:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":12941,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"730:17:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":12942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"750:1:56","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"730:21:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":12947,"mutability":"mutable","name":"totalGrowth0","nodeType":"VariableDeclaration","scope":13239,"src":"823:32:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12945,"name":"uint256","nodeType":"ElementaryTypeName","src":"823:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":12946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"854:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"private"},{"constant":false,"id":12950,"mutability":"mutable","name":"totalGrowth1","nodeType":"VariableDeclaration","scope":13239,"src":"862:32:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12948,"name":"uint256","nodeType":"ElementaryTypeName","src":"862:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":12949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"893:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"private"},{"constant":false,"id":12952,"mutability":"mutable","name":"rewardPerLiquidityCumulativeX64","nodeType":"VariableDeclaration","scope":13239,"src":"944:47:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":12951,"name":"uint192","nodeType":"ElementaryTypeName","src":"944:7:56","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"private"},{"body":{"id":12973,"nodeType":"Block","src":"1063:176:56","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12958,"name":"totalGrowth0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12947,"src":"1082:12:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":12959,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12954,"src":"1097:6:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1082:21:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12961,"name":"totalGrowth0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12947,"src":"1106:12:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1082:36:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12957,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1074:7:56","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1074:45:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12964,"nodeType":"ExpressionStatement","src":"1074:45:56"},{"expression":{"id":12967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12965,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12935,"src":"1148:20:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":12966,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12954,"src":"1172:6:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1148:30:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12968,"nodeType":"ExpressionStatement","src":"1148:30:56"},{"expression":{"id":12971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12969,"name":"totalGrowth0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12947,"src":"1209:12:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":12970,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12954,"src":"1225:6:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1209:22:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12972,"nodeType":"ExpressionStatement","src":"1209:22:56"}]},"functionSelector":"0b0c061f","id":12974,"implemented":true,"kind":"function","modifiers":[],"name":"increaseFeeGrowthGlobal0X128","nodeType":"FunctionDefinition","parameters":{"id":12955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12954,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":12974,"src":"1038:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12953,"name":"uint256","nodeType":"ElementaryTypeName","src":"1038:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1037:16:56"},"returnParameters":{"id":12956,"nodeType":"ParameterList","parameters":[],"src":"1063:0:56"},"scope":13239,"src":"1000:239:56","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12995,"nodeType":"Block","src":"1310:176:56","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12980,"name":"totalGrowth1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12950,"src":"1329:12:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":12981,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12976,"src":"1344:6:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1329:21:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12983,"name":"totalGrowth1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12950,"src":"1353:12:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1329:36:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12979,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1321:7:56","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1321:45:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12986,"nodeType":"ExpressionStatement","src":"1321:45:56"},{"expression":{"id":12989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12987,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12944,"src":"1395:20:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":12988,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12976,"src":"1419:6:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1395:30:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12990,"nodeType":"ExpressionStatement","src":"1395:30:56"},{"expression":{"id":12993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12991,"name":"totalGrowth1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12950,"src":"1456:12:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":12992,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12976,"src":"1472:6:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1456:22:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12994,"nodeType":"ExpressionStatement","src":"1456:22:56"}]},"functionSelector":"3f03e194","id":12996,"implemented":true,"kind":"function","modifiers":[],"name":"increaseFeeGrowthGlobal1X128","nodeType":"FunctionDefinition","parameters":{"id":12977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12976,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":12996,"src":"1285:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12975,"name":"uint256","nodeType":"ElementaryTypeName","src":"1285:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1284:16:56"},"returnParameters":{"id":12978,"nodeType":"ParameterList","parameters":[],"src":"1310:0:56"},"scope":13239,"src":"1247:239:56","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":13152,"nodeType":"Block","src":"1615:1590:56","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13006,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12998,"src":"1634:9:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13007,"name":"MIN_TICK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12904,"src":"1646:8:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1634:20:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13005,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1626:7:56","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":13009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1626:29:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13010,"nodeType":"ExpressionStatement","src":"1626:29:56"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13012,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13000,"src":"1674:9:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13013,"name":"MAX_TICK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12907,"src":"1686:8:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1674:20:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13011,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1666:7:56","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":13015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1666:29:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13016,"nodeType":"ExpressionStatement","src":"1666:29:56"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13018,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12998,"src":"1714:9:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13019,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13000,"src":"1726:9:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1714:21:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13017,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1706:7:56","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":13021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1706:30:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13022,"nodeType":"ExpressionStatement","src":"1706:30:56"},{"assignments":[13024],"declarations":[{"constant":false,"id":13024,"mutability":"mutable","name":"flippedLower","nodeType":"VariableDeclaration","scope":13152,"src":"1747:17:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13023,"name":"bool","nodeType":"ElementaryTypeName","src":"1747:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":13043,"initialValue":{"arguments":[{"id":13027,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12998,"src":"1794:9:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":13028,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12923,"src":"1818:4:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":13029,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13002,"src":"1837:14:56","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"id":13030,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12935,"src":"1866:20:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13031,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12944,"src":"1901:20:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":13032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1936:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":13033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1952:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"expression":{"id":13036,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1975:5:56","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"1975:15:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13035,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1968:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":13034,"name":"uint32","nodeType":"ElementaryTypeName","src":"1968:6:56","typeDescriptions":{}}},"id":13038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1968:23:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"66616c7365","id":13039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2006:5:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":13040,"name":"MAX_LIQUIDITY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12916,"src":"2026:13:56","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":13041,"name":"rewardPerLiquidityCumulativeX64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12952,"src":"2054:31:56","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint192","typeString":"uint192"}],"expression":{"id":13025,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12920,"src":"1767:5:56","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":13026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"update","nodeType":"MemberAccess","referencedDeclaration":6667,"src":"1767:12:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$_t_int24_$_t_int24_$_t_int128_$_t_uint256_$_t_uint256_$_t_uint160_$_t_int56_$_t_uint32_$_t_bool_$_t_uint128_$_t_uint192_$returns$_t_bool_$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$","typeString":"function (mapping(int24 => struct Tick.Info storage ref),int24,int24,int128,uint256,uint256,uint160,int56,uint32,bool,uint128,uint192) returns (bool)"}},"id":13042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1767:329:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"1747:349:56"},{"assignments":[13045],"declarations":[{"constant":false,"id":13045,"mutability":"mutable","name":"flippedUpper","nodeType":"VariableDeclaration","scope":13152,"src":"2107:17:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13044,"name":"bool","nodeType":"ElementaryTypeName","src":"2107:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":13064,"initialValue":{"arguments":[{"id":13048,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13000,"src":"2154:9:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":13049,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12923,"src":"2178:4:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":13050,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13002,"src":"2197:14:56","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"id":13051,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12935,"src":"2226:20:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13052,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12944,"src":"2261:20:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":13053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2296:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":13054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2312:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"expression":{"id":13057,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2335:5:56","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"2335:15:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13056,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2328:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":13055,"name":"uint32","nodeType":"ElementaryTypeName","src":"2328:6:56","typeDescriptions":{}}},"id":13059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2328:23:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"74727565","id":13060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2366:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":13061,"name":"MAX_LIQUIDITY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12916,"src":"2385:13:56","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":13062,"name":"rewardPerLiquidityCumulativeX64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12952,"src":"2413:31:56","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint192","typeString":"uint192"}],"expression":{"id":13046,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12920,"src":"2127:5:56","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":13047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"update","nodeType":"MemberAccess","referencedDeclaration":6667,"src":"2127:12:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$_t_int24_$_t_int24_$_t_int128_$_t_uint256_$_t_uint256_$_t_uint160_$_t_int56_$_t_uint32_$_t_bool_$_t_uint128_$_t_uint192_$returns$_t_bool_$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$","typeString":"function (mapping(int24 => struct Tick.Info storage ref),int24,int24,int128,uint256,uint256,uint160,int56,uint32,bool,uint128,uint192) returns (bool)"}},"id":13063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2127:328:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"2107:348:56"},{"condition":{"id":13065,"name":"flippedLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13024,"src":"2472:12:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13096,"nodeType":"IfStatement","src":"2468:238:56","trueBody":{"id":13095,"nodeType":"Block","src":"2486:220:56","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":13068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13066,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13002,"src":"2505:14:56","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":13067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2522:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2505:18:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":13091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":13086,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12920,"src":"2658:5:56","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":13088,"indexExpression":{"id":13087,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12998,"src":"2664:9:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2658:16:56","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage","typeString":"struct Tick.Info storage ref"}},"id":13089,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityGross","nodeType":"MemberAccess","referencedDeclaration":6318,"src":"2658:31:56","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2692:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2658:35:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13085,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2651:6:56","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":13092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2651:43:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13093,"nodeType":"ExpressionStatement","src":"2651:43:56"},"id":13094,"nodeType":"IfStatement","src":"2501:193:56","trueBody":{"id":13084,"nodeType":"Block","src":"2525:120:56","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":13075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":13070,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12920,"src":"2551:5:56","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":13072,"indexExpression":{"id":13071,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12998,"src":"2557:9:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2551:16:56","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage","typeString":"struct Tick.Info storage ref"}},"id":13073,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityGross","nodeType":"MemberAccess","referencedDeclaration":6318,"src":"2551:31:56","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2586:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2551:36:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13069,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2544:6:56","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":13076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2544:44:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13077,"nodeType":"ExpressionStatement","src":"2544:44:56"},{"expression":{"arguments":[{"id":13081,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12998,"src":"2619:9:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":13078,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12920,"src":"2607:5:56","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":13080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"clear","nodeType":"MemberAccess","referencedDeclaration":6683,"src":"2607:11:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$_t_int24_$returns$__$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$","typeString":"function (mapping(int24 => struct Tick.Info storage ref),int24)"}},"id":13082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2607:22:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13083,"nodeType":"ExpressionStatement","src":"2607:22:56"}]}}]}},{"condition":{"id":13097,"name":"flippedUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13045,"src":"2722:12:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13128,"nodeType":"IfStatement","src":"2718:238:56","trueBody":{"id":13127,"nodeType":"Block","src":"2736:220:56","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":13100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13098,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13002,"src":"2755:14:56","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":13099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2772:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2755:18:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":13123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":13118,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12920,"src":"2908:5:56","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":13120,"indexExpression":{"id":13119,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13000,"src":"2914:9:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2908:16:56","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage","typeString":"struct Tick.Info storage ref"}},"id":13121,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityGross","nodeType":"MemberAccess","referencedDeclaration":6318,"src":"2908:31:56","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2942:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2908:35:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13117,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2901:6:56","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":13124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2901:43:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13125,"nodeType":"ExpressionStatement","src":"2901:43:56"},"id":13126,"nodeType":"IfStatement","src":"2751:193:56","trueBody":{"id":13116,"nodeType":"Block","src":"2775:120:56","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":13107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":13102,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12920,"src":"2801:5:56","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":13104,"indexExpression":{"id":13103,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13000,"src":"2807:9:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2801:16:56","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage","typeString":"struct Tick.Info storage ref"}},"id":13105,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityGross","nodeType":"MemberAccess","referencedDeclaration":6318,"src":"2801:31:56","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2836:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2801:36:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13101,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2794:6:56","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":13108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2794:44:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13109,"nodeType":"ExpressionStatement","src":"2794:44:56"},{"expression":{"arguments":[{"id":13113,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13000,"src":"2869:9:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":13110,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12920,"src":"2857:5:56","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":13112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"clear","nodeType":"MemberAccess","referencedDeclaration":6683,"src":"2857:11:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$_t_int24_$returns$__$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$","typeString":"function (mapping(int24 => struct Tick.Info storage ref),int24)"}},"id":13114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2857:22:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13115,"nodeType":"ExpressionStatement","src":"2857:22:56"}]}}]}},{"expression":{"id":13131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13129,"name":"totalLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12926,"src":"2968:14:56","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":13130,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13002,"src":"2986:14:56","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"2968:32:56","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":13132,"nodeType":"ExpressionStatement","src":"2968:32:56"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13134,"name":"totalLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12926,"src":"3066:14:56","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":13135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3084:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3066:19:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13133,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"3059:6:56","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":13137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3059:27:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13138,"nodeType":"ExpressionStatement","src":"3059:27:56"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13139,"name":"totalLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12926,"src":"3103:14:56","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3121:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3103:19:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13151,"nodeType":"IfStatement","src":"3099:99:56","trueBody":{"id":13150,"nodeType":"Block","src":"3124:74:56","statements":[{"expression":{"id":13144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13142,"name":"totalGrowth0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12947,"src":"3139:12:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":13143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3154:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3139:16:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13145,"nodeType":"ExpressionStatement","src":"3139:16:56"},{"expression":{"id":13148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13146,"name":"totalGrowth1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12950,"src":"3170:12:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":13147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3185:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3170:16:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13149,"nodeType":"ExpressionStatement","src":"3170:16:56"}]}}]},"functionSelector":"541bdfb1","id":13153,"implemented":true,"kind":"function","modifiers":[],"name":"setPosition","nodeType":"FunctionDefinition","parameters":{"id":13003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12998,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":13153,"src":"1525:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12997,"name":"int24","nodeType":"ElementaryTypeName","src":"1525:5:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":13000,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":13153,"src":"1551:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12999,"name":"int24","nodeType":"ElementaryTypeName","src":"1551:5:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":13002,"mutability":"mutable","name":"liquidityDelta","nodeType":"VariableDeclaration","scope":13153,"src":"1577:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":13001,"name":"int128","nodeType":"ElementaryTypeName","src":"1577:6:56","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1514:91:56"},"returnParameters":{"id":13004,"nodeType":"ParameterList","parameters":[],"src":"1615:0:56"},"scope":13239,"src":"1494:1711:56","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":13237,"nodeType":"Block","src":"3256:1054:56","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13159,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13155,"src":"3275:6:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13160,"name":"MIN_TICK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12904,"src":"3284:8:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3275:17:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13158,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3267:7:56","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":13162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3267:26:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13163,"nodeType":"ExpressionStatement","src":"3267:26:56"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13165,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13155,"src":"3312:6:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13166,"name":"MAX_TICK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12907,"src":"3321:8:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3312:17:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13164,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3304:7:56","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":13168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3304:26:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13169,"nodeType":"ExpressionStatement","src":"3304:26:56"},{"body":{"id":13235,"nodeType":"Block","src":"3364:939:56","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13173,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12923,"src":"3383:4:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13174,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13155,"src":"3390:6:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3383:13:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13233,"nodeType":"Block","src":"3852:440:56","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":13212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":13207,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12920,"src":"3875:5:56","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":13209,"indexExpression":{"id":13208,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12923,"src":"3881:4:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3875:11:56","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage","typeString":"struct Tick.Info storage ref"}},"id":13210,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityGross","nodeType":"MemberAccess","referencedDeclaration":6318,"src":"3875:26:56","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3904:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3875:30:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13229,"nodeType":"IfStatement","src":"3871:380:56","trueBody":{"expression":{"arguments":[{"id":13216,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12923,"src":"3966:4:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":13217,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12935,"src":"3997:20:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13218,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12944,"src":"4044:20:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":13219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4091:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":13220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4119:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"expression":{"id":13223,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4154:5:56","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"4154:15:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13222,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4147:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":13221,"name":"uint32","nodeType":"ElementaryTypeName","src":"4147:6:56","typeDescriptions":{}}},"id":13225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4147:23:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":13226,"name":"rewardPerLiquidityCumulativeX64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12952,"src":"4197:31:56","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint192","typeString":"uint192"}],"expression":{"id":13213,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12920,"src":"3928:5:56","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":13215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"cross","nodeType":"MemberAccess","referencedDeclaration":6775,"src":"3928:11:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$_t_int24_$_t_uint256_$_t_uint256_$_t_uint160_$_t_int56_$_t_uint32_$_t_uint192_$returns$_t_int128_$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$","typeString":"function (mapping(int24 => struct Tick.Info storage ref),int24,uint256,uint256,uint160,int56,uint32,uint192) returns (int128)"}},"id":13227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3928:323:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":13228,"nodeType":"ExpressionStatement","src":"3928:323:56"}},{"expression":{"id":13231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"4270:6:56","subExpression":{"id":13230,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12923,"src":"4270:4:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":13232,"nodeType":"ExpressionStatement","src":"4270:6:56"}]},"id":13234,"nodeType":"IfStatement","src":"3379:913:56","trueBody":{"id":13206,"nodeType":"Block","src":"3398:448:56","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":13183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":13176,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12920,"src":"3421:5:56","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":13180,"indexExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13177,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12923,"src":"3427:4:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":13178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3434:1:56","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3427:8:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3421:15:56","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage","typeString":"struct Tick.Info storage ref"}},"id":13181,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityGross","nodeType":"MemberAccess","referencedDeclaration":6318,"src":"3421:30:56","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3454:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3421:34:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13202,"nodeType":"IfStatement","src":"3417:388:56","trueBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13187,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12923,"src":"3516:4:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":13188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3523:1:56","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3516:8:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":13190,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12935,"src":"3551:20:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13191,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12944,"src":"3598:20:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":13192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3645:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":13193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3673:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"expression":{"id":13196,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3708:5:56","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"3708:15:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13195,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3701:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":13194,"name":"uint32","nodeType":"ElementaryTypeName","src":"3701:6:56","typeDescriptions":{}}},"id":13198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3701:23:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":13199,"name":"rewardPerLiquidityCumulativeX64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12952,"src":"3751:31:56","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint192","typeString":"uint192"}],"expression":{"id":13184,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12920,"src":"3478:5:56","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":13186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"cross","nodeType":"MemberAccess","referencedDeclaration":6775,"src":"3478:11:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$_t_int24_$_t_uint256_$_t_uint256_$_t_uint160_$_t_int56_$_t_uint32_$_t_uint192_$returns$_t_int128_$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$","typeString":"function (mapping(int24 => struct Tick.Info storage ref),int24,uint256,uint256,uint160,int56,uint32,uint192) returns (int128)"}},"id":13200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3478:327:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":13201,"nodeType":"ExpressionStatement","src":"3478:327:56"}},{"expression":{"id":13204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3824:6:56","subExpression":{"id":13203,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12923,"src":"3824:4:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":13205,"nodeType":"ExpressionStatement","src":"3824:6:56"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13170,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12923,"src":"3348:4:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13171,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13155,"src":"3356:6:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3348:14:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13236,"nodeType":"WhileStatement","src":"3341:962:56"}]},"functionSelector":"af759368","id":13238,"implemented":true,"kind":"function","modifiers":[],"name":"moveToTick","nodeType":"FunctionDefinition","parameters":{"id":13156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13155,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":13238,"src":"3233:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13154,"name":"int24","nodeType":"ElementaryTypeName","src":"3233:5:56","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"3232:14:56"},"returnParameters":{"id":13157,"nodeType":"ParameterList","parameters":[],"src":"3256:0:56"},"scope":13239,"src":"3213:1097:56","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":13240,"src":"102:4211:56"}],"src":"40:4275:56"},"id":56},"contracts/elixir-core/test/TickTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/TickTest.sol","exportedSymbols":{"LiquidityMath":[4300],"LowGasSafeMath":[4430],"SafeCast":[5526],"Tick":[6776],"TickMath":[7567],"TickTest":[13393]},"id":13394,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":13241,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:57"},{"id":13242,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"65:19:57"},{"absolutePath":"contracts/elixir-core/libraries/Tick.sol","file":"../libraries/Tick.sol","id":13243,"nodeType":"ImportDirective","scope":13394,"sourceUnit":6777,"src":"88:31:57","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":13393,"linearizedBaseContracts":[13393],"name":"TickTest","nodeType":"ContractDefinition","nodes":[{"id":13248,"libraryName":{"id":13244,"name":"Tick","nodeType":"UserDefinedTypeName","referencedDeclaration":6776,"src":"154:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_Tick_$6776","typeString":"library Tick"}},"nodeType":"UsingForDirective","src":"148:43:57","typeName":{"id":13247,"keyType":{"id":13245,"name":"int24","nodeType":"ElementaryTypeName","src":"171:5:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Mapping","src":"163:27:57","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"valueType":{"id":13246,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":6335,"src":"180:9:57","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"}}}},{"constant":false,"functionSelector":"f30dba93","id":13252,"mutability":"mutable","name":"ticks","nodeType":"VariableDeclaration","scope":13393,"src":"199:40:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"typeName":{"id":13251,"keyType":{"id":13249,"name":"int24","nodeType":"ElementaryTypeName","src":"207:5:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Mapping","src":"199:27:57","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"valueType":{"id":13250,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":6335,"src":"216:9:57","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"}}},"visibility":"public"},{"body":{"id":13264,"nodeType":"Block","src":"357:76:57","statements":[{"expression":{"arguments":[{"id":13261,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13254,"src":"413:11:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":13259,"name":"Tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6776,"src":"375:4:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Tick_$6776_$","typeString":"type(library Tick)"}},"id":13260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickSpacingToMaxLiquidityPerTick","nodeType":"MemberAccess","referencedDeclaration":6386,"src":"375:37:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint128_$","typeString":"function (int24) pure returns (uint128)"}},"id":13262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"375:50:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":13258,"id":13263,"nodeType":"Return","src":"368:57:57"}]},"functionSelector":"82c66f87","id":13265,"implemented":true,"kind":"function","modifiers":[],"name":"tickSpacingToMaxLiquidityPerTick","nodeType":"FunctionDefinition","parameters":{"id":13255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13254,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":13265,"src":"300:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13253,"name":"int24","nodeType":"ElementaryTypeName","src":"300:5:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"289:35:57"},"returnParameters":{"id":13258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13257,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13265,"src":"348:7:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":13256,"name":"uint128","nodeType":"ElementaryTypeName","src":"348:7:57","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"347:9:57"},"scope":13393,"src":"248:185:57","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":13278,"nodeType":"Block","src":"502:37:57","statements":[{"expression":{"id":13276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13272,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13252,"src":"513:5:57","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":13274,"indexExpression":{"id":13273,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13267,"src":"519:4:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"513:11:57","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage","typeString":"struct Tick.Info storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13275,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13269,"src":"527:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_memory_ptr","typeString":"struct Tick.Info memory"}},"src":"513:18:57","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage","typeString":"struct Tick.Info storage ref"}},"id":13277,"nodeType":"ExpressionStatement","src":"513:18:57"}]},"functionSelector":"e6fb02ee","id":13279,"implemented":true,"kind":"function","modifiers":[],"name":"setTick","nodeType":"FunctionDefinition","parameters":{"id":13270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13267,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":13279,"src":"458:10:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13266,"name":"int24","nodeType":"ElementaryTypeName","src":"458:5:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":13269,"mutability":"mutable","name":"info","nodeType":"VariableDeclaration","scope":13279,"src":"470:21:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_memory_ptr","typeString":"struct Tick.Info"},"typeName":{"id":13268,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":6335,"src":"470:9:57","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$6335_storage_ptr","typeString":"struct Tick.Info"}},"visibility":"internal"}],"src":"457:35:57"},"returnParameters":{"id":13271,"nodeType":"ParameterList","parameters":[],"src":"502:0:57"},"scope":13393,"src":"441:98:57","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":13305,"nodeType":"Block","src":"855:242:57","statements":[{"expression":{"arguments":[{"id":13298,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13281,"src":"929:9:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":13299,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13283,"src":"957:9:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":13300,"name":"tickCurrent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13285,"src":"985:11:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":13301,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13287,"src":"1015:20:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13302,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13289,"src":"1054:20:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13296,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13252,"src":"886:5:57","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":13297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getFeeGrowthInside","nodeType":"MemberAccess","referencedDeclaration":6509,"src":"886:24:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$_t_int24_$_t_int24_$_t_int24_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$","typeString":"function (mapping(int24 => struct Tick.Info storage ref),int24,int24,int24,uint256,uint256) view returns (uint256,uint256)"}},"id":13303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"886:203:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":13295,"id":13304,"nodeType":"Return","src":"866:223:57"}]},"functionSelector":"30e3ff4c","id":13306,"implemented":true,"kind":"function","modifiers":[],"name":"getFeeGrowthInside","nodeType":"FunctionDefinition","parameters":{"id":13290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13281,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":13306,"src":"585:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13280,"name":"int24","nodeType":"ElementaryTypeName","src":"585:5:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":13283,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":13306,"src":"611:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13282,"name":"int24","nodeType":"ElementaryTypeName","src":"611:5:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":13285,"mutability":"mutable","name":"tickCurrent","nodeType":"VariableDeclaration","scope":13306,"src":"637:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13284,"name":"int24","nodeType":"ElementaryTypeName","src":"637:5:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":13287,"mutability":"mutable","name":"feeGrowthGlobal0X128","nodeType":"VariableDeclaration","scope":13306,"src":"665:28:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13286,"name":"uint256","nodeType":"ElementaryTypeName","src":"665:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13289,"mutability":"mutable","name":"feeGrowthGlobal1X128","nodeType":"VariableDeclaration","scope":13306,"src":"704:28:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13288,"name":"uint256","nodeType":"ElementaryTypeName","src":"704:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"574:165:57"},"returnParameters":{"id":13295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13292,"mutability":"mutable","name":"feeGrowthInside0X128","nodeType":"VariableDeclaration","scope":13306,"src":"790:28:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13291,"name":"uint256","nodeType":"ElementaryTypeName","src":"790:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13294,"mutability":"mutable","name":"feeGrowthInside1X128","nodeType":"VariableDeclaration","scope":13306,"src":"820:28:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13293,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"789:60:57"},"scope":13393,"src":"547:550:57","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":13348,"nodeType":"Block","src":"1526:443:57","statements":[{"expression":{"arguments":[{"id":13335,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13308,"src":"1588:4:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":13336,"name":"tickCurrent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13310,"src":"1611:11:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":13337,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13312,"src":"1641:14:57","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"id":13338,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13314,"src":"1674:20:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13339,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13316,"src":"1713:20:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13340,"name":"secondsPerLiquidityCumulativeX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13318,"src":"1752:33:57","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":13341,"name":"tickCumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13320,"src":"1804:14:57","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"id":13342,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13322,"src":"1837:4:57","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":13343,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13324,"src":"1860:5:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":13344,"name":"maxLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13326,"src":"1884:12:57","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":13345,"name":"rewardPerLiquidityCumulativeX64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13328,"src":"1915:31:57","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int56","typeString":"int56"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint192","typeString":"uint192"}],"expression":{"id":13333,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13252,"src":"1557:5:57","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":13334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"update","nodeType":"MemberAccess","referencedDeclaration":6667,"src":"1557:12:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$_t_int24_$_t_int24_$_t_int128_$_t_uint256_$_t_uint256_$_t_uint160_$_t_int56_$_t_uint32_$_t_bool_$_t_uint128_$_t_uint192_$returns$_t_bool_$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$","typeString":"function (mapping(int24 => struct Tick.Info storage ref),int24,int24,int128,uint256,uint256,uint160,int56,uint32,bool,uint128,uint192) returns (bool)"}},"id":13346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1557:404:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13332,"id":13347,"nodeType":"Return","src":"1537:424:57"}]},"functionSelector":"8e27463b","id":13349,"implemented":true,"kind":"function","modifiers":[],"name":"update","nodeType":"FunctionDefinition","parameters":{"id":13329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13308,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":13349,"src":"1131:10:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13307,"name":"int24","nodeType":"ElementaryTypeName","src":"1131:5:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":13310,"mutability":"mutable","name":"tickCurrent","nodeType":"VariableDeclaration","scope":13349,"src":"1152:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13309,"name":"int24","nodeType":"ElementaryTypeName","src":"1152:5:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":13312,"mutability":"mutable","name":"liquidityDelta","nodeType":"VariableDeclaration","scope":13349,"src":"1180:21:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":13311,"name":"int128","nodeType":"ElementaryTypeName","src":"1180:6:57","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":13314,"mutability":"mutable","name":"feeGrowthGlobal0X128","nodeType":"VariableDeclaration","scope":13349,"src":"1212:28:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13313,"name":"uint256","nodeType":"ElementaryTypeName","src":"1212:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13316,"mutability":"mutable","name":"feeGrowthGlobal1X128","nodeType":"VariableDeclaration","scope":13349,"src":"1251:28:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13315,"name":"uint256","nodeType":"ElementaryTypeName","src":"1251:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13318,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128","nodeType":"VariableDeclaration","scope":13349,"src":"1290:41:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":13317,"name":"uint160","nodeType":"ElementaryTypeName","src":"1290:7:57","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":13320,"mutability":"mutable","name":"tickCumulative","nodeType":"VariableDeclaration","scope":13349,"src":"1342:20:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":13319,"name":"int56","nodeType":"ElementaryTypeName","src":"1342:5:57","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":13322,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":13349,"src":"1373:11:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13321,"name":"uint32","nodeType":"ElementaryTypeName","src":"1373:6:57","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":13324,"mutability":"mutable","name":"upper","nodeType":"VariableDeclaration","scope":13349,"src":"1395:10:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13323,"name":"bool","nodeType":"ElementaryTypeName","src":"1395:4:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":13326,"mutability":"mutable","name":"maxLiquidity","nodeType":"VariableDeclaration","scope":13349,"src":"1416:20:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":13325,"name":"uint128","nodeType":"ElementaryTypeName","src":"1416:7:57","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":13328,"mutability":"mutable","name":"rewardPerLiquidityCumulativeX64","nodeType":"VariableDeclaration","scope":13349,"src":"1447:39:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":13327,"name":"uint192","nodeType":"ElementaryTypeName","src":"1447:7:57","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"1120:373:57"},"returnParameters":{"id":13332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13331,"mutability":"mutable","name":"flipped","nodeType":"VariableDeclaration","scope":13349,"src":"1512:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13330,"name":"bool","nodeType":"ElementaryTypeName","src":"1512:4:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1511:14:57"},"scope":13393,"src":"1105:864:57","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":13360,"nodeType":"Block","src":"2013:36:57","statements":[{"expression":{"arguments":[{"id":13357,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13351,"src":"2036:4:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":13354,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13252,"src":"2024:5:57","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":13356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"clear","nodeType":"MemberAccess","referencedDeclaration":6683,"src":"2024:11:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$_t_int24_$returns$__$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$","typeString":"function (mapping(int24 => struct Tick.Info storage ref),int24)"}},"id":13358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2024:17:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13359,"nodeType":"ExpressionStatement","src":"2024:17:57"}]},"functionSelector":"b613524a","id":13361,"implemented":true,"kind":"function","modifiers":[],"name":"clear","nodeType":"FunctionDefinition","parameters":{"id":13352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13351,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":13361,"src":"1992:10:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13350,"name":"int24","nodeType":"ElementaryTypeName","src":"1992:5:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1991:12:57"},"returnParameters":{"id":13353,"nodeType":"ParameterList","parameters":[],"src":"2013:0:57"},"scope":13393,"src":"1977:72:57","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":13391,"nodeType":"Block","src":"2372:324:57","statements":[{"expression":{"arguments":[{"id":13382,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13363,"src":"2433:4:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":13383,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13365,"src":"2456:20:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13384,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13367,"src":"2495:20:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13385,"name":"secondsPerLiquidityCumulativeX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13369,"src":"2534:33:57","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":13386,"name":"tickCumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13371,"src":"2586:14:57","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"id":13387,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13373,"src":"2619:4:57","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":13388,"name":"rewardPerLiquidityCumulativeX64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13375,"src":"2642:31:57","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_int56","typeString":"int56"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint192","typeString":"uint192"}],"expression":{"id":13380,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13252,"src":"2403:5:57","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":13381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"cross","nodeType":"MemberAccess","referencedDeclaration":6775,"src":"2403:11:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$_t_int24_$_t_uint256_$_t_uint256_$_t_uint160_$_t_int56_$_t_uint32_$_t_uint192_$returns$_t_int128_$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6335_storage_$_$","typeString":"function (mapping(int24 => struct Tick.Info storage ref),int24,uint256,uint256,uint160,int56,uint32,uint192) returns (int128)"}},"id":13389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2403:285:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"functionReturnParameters":13379,"id":13390,"nodeType":"Return","src":"2383:305:57"}]},"functionSelector":"97308ed3","id":13392,"implemented":true,"kind":"function","modifiers":[],"name":"cross","nodeType":"FunctionDefinition","parameters":{"id":13376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13363,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":13392,"src":"2082:10:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13362,"name":"int24","nodeType":"ElementaryTypeName","src":"2082:5:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":13365,"mutability":"mutable","name":"feeGrowthGlobal0X128","nodeType":"VariableDeclaration","scope":13392,"src":"2103:28:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13364,"name":"uint256","nodeType":"ElementaryTypeName","src":"2103:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13367,"mutability":"mutable","name":"feeGrowthGlobal1X128","nodeType":"VariableDeclaration","scope":13392,"src":"2142:28:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13366,"name":"uint256","nodeType":"ElementaryTypeName","src":"2142:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13369,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128","nodeType":"VariableDeclaration","scope":13392,"src":"2181:41:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":13368,"name":"uint160","nodeType":"ElementaryTypeName","src":"2181:7:57","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":13371,"mutability":"mutable","name":"tickCumulative","nodeType":"VariableDeclaration","scope":13392,"src":"2233:20:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":13370,"name":"int56","nodeType":"ElementaryTypeName","src":"2233:5:57","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":13373,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":13392,"src":"2264:11:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13372,"name":"uint32","nodeType":"ElementaryTypeName","src":"2264:6:57","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":13375,"mutability":"mutable","name":"rewardPerLiquidityCumulativeX64","nodeType":"VariableDeclaration","scope":13392,"src":"2286:39:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":13374,"name":"uint192","nodeType":"ElementaryTypeName","src":"2286:7:57","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"2071:261:57"},"returnParameters":{"id":13379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13378,"mutability":"mutable","name":"liquidityNet","nodeType":"VariableDeclaration","scope":13392,"src":"2351:19:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":13377,"name":"int128","nodeType":"ElementaryTypeName","src":"2351:6:57","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"2350:21:57"},"scope":13393,"src":"2057:639:57","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":13394,"src":"123:2576:57"}],"src":"40:2661:57"},"id":57},"contracts/elixir-core/test/UnsafeMathEchidnaTest.sol":{"ast":{"absolutePath":"contracts/elixir-core/test/UnsafeMathEchidnaTest.sol","exportedSymbols":{"UnsafeMath":[7634],"UnsafeMathEchidnaTest":[13448]},"id":13449,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":13395,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:58"},{"absolutePath":"contracts/elixir-core/libraries/UnsafeMath.sol","file":"../libraries/UnsafeMath.sol","id":13396,"nodeType":"ImportDirective","scope":13449,"sourceUnit":7635,"src":"67:37:58","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":13448,"linearizedBaseContracts":[13448],"name":"UnsafeMathEchidnaTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":13446,"nodeType":"Block","src":"210:243:58","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13404,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13400,"src":"229:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"233:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"229:5:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13403,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"221:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":13407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"221:14:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13408,"nodeType":"ExpressionStatement","src":"221:14:58"},{"assignments":[13410],"declarations":[{"constant":false,"id":13410,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":13446,"src":"246:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13409,"name":"uint256","nodeType":"ElementaryTypeName","src":"246:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13416,"initialValue":{"arguments":[{"id":13413,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13398,"src":"283:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13414,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13400,"src":"286:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13411,"name":"UnsafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7634,"src":"258:10:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UnsafeMath_$7634_$","typeString":"type(library UnsafeMath)"}},"id":13412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divRoundingUp","nodeType":"MemberAccess","referencedDeclaration":7633,"src":"258:24:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"258:30:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"246:42:58"},{"assignments":[13418],"declarations":[{"constant":false,"id":13418,"mutability":"mutable","name":"diff","nodeType":"VariableDeclaration","scope":13446,"src":"299:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13417,"name":"uint256","nodeType":"ElementaryTypeName","src":"299:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13425,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13419,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13410,"src":"314:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13420,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13398,"src":"319:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":13421,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13400,"src":"323:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"319:5:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13423,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"318:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"314:11:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"299:26:58"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13426,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13398,"src":"340:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":13427,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13400,"src":"344:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"340:5:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"349:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"340:10:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13444,"nodeType":"Block","src":"402:44:58","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13439,"name":"diff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13418,"src":"424:4:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":13440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"432:1:58","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"424:9:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13438,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"417:6:58","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":13442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"417:17:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13443,"nodeType":"ExpressionStatement","src":"417:17:58"}]},"id":13445,"nodeType":"IfStatement","src":"336:110:58","trueBody":{"id":13437,"nodeType":"Block","src":"352:44:58","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13432,"name":"diff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13418,"src":"374:4:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"382:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"374:9:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13431,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"367:6:58","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":13435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"367:17:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13436,"nodeType":"ExpressionStatement","src":"367:17:58"}]}}]},"functionSelector":"2724da4e","id":13447,"implemented":true,"kind":"function","modifiers":[],"name":"checkDivRoundingUp","nodeType":"FunctionDefinition","parameters":{"id":13401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13398,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":13447,"src":"174:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13397,"name":"uint256","nodeType":"ElementaryTypeName","src":"174:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13400,"mutability":"mutable","name":"d","nodeType":"VariableDeclaration","scope":13447,"src":"185:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13399,"name":"uint256","nodeType":"ElementaryTypeName","src":"185:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"173:22:58"},"returnParameters":{"id":13402,"nodeType":"ParameterList","parameters":[],"src":"210:0:58"},"scope":13448,"src":"146:307:58","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":13449,"src":"108:348:58"}],"src":"40:418:58"},"id":58},"contracts/elixir-periphery/ElixirMigrator.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/ElixirMigrator.sol","exportedSymbols":{"ElixirMigrator":[13750],"IERC165":[30378],"IERC20":[31070],"IERC20Permit":[30309],"IERC20PermitAllowed":[16428],"IERC721":[32130],"IERC721Enumerable":[32161],"IERC721Metadata":[32188],"IERC721Permit":[15699],"IElixirFactory":[3251],"IElixirMigrator":[15746],"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"IMulticall":[15852],"INonfungiblePositionManager":[16094],"IPangolinPair":[22563],"IPeripheryImmutableState":[16125],"IPeripheryPayments":[16151],"IPoolInitializer":[16203],"ISelfPermit":[16271],"IWETH9":[16445],"LowGasSafeMath":[4430],"Multicall":[14924],"PeripheryImmutableState":[14955],"PoolAddress":[19734],"PoolInitializer":[15472],"SelfPermit":[15639],"TransferHelper":[20731]},"id":13751,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13450,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:59"},{"id":13451,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"71:19:59"},{"absolutePath":"contracts/elixir-core/libraries/LowGasSafeMath.sol","file":"../elixir-core/libraries/LowGasSafeMath.sol","id":13452,"nodeType":"ImportDirective","scope":13751,"sourceUnit":4431,"src":"94:53:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/pangolin-core/interfaces/IPangolinPair.sol","file":"../pangolin-core/interfaces/IPangolinPair.sol","id":13453,"nodeType":"ImportDirective","scope":13751,"sourceUnit":22564,"src":"149:55:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol","file":"./interfaces/INonfungiblePositionManager.sol","id":13454,"nodeType":"ImportDirective","scope":13751,"sourceUnit":16095,"src":"208:54:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/TransferHelper.sol","file":"./libraries/TransferHelper.sol","id":13455,"nodeType":"ImportDirective","scope":13751,"sourceUnit":20732,"src":"266:40:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/IElixirMigrator.sol","file":"./interfaces/IElixirMigrator.sol","id":13456,"nodeType":"ImportDirective","scope":13751,"sourceUnit":15747,"src":"310:42:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/PeripheryImmutableState.sol","file":"./base/PeripheryImmutableState.sol","id":13457,"nodeType":"ImportDirective","scope":13751,"sourceUnit":14956,"src":"354:44:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/Multicall.sol","file":"./base/Multicall.sol","id":13458,"nodeType":"ImportDirective","scope":13751,"sourceUnit":14925,"src":"400:30:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/SelfPermit.sol","file":"./base/SelfPermit.sol","id":13459,"nodeType":"ImportDirective","scope":13751,"sourceUnit":15640,"src":"432:31:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/external/IWETH9.sol","file":"./interfaces/external/IWETH9.sol","id":13460,"nodeType":"ImportDirective","scope":13751,"sourceUnit":16446,"src":"465:42:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/PoolInitializer.sol","file":"./base/PoolInitializer.sol","id":13461,"nodeType":"ImportDirective","scope":13751,"sourceUnit":15473,"src":"509:36:59","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13463,"name":"IElixirMigrator","nodeType":"UserDefinedTypeName","referencedDeclaration":15746,"src":"604:15:59","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirMigrator_$15746","typeString":"contract IElixirMigrator"}},"id":13464,"nodeType":"InheritanceSpecifier","src":"604:15:59"},{"baseName":{"id":13465,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":14955,"src":"621:23:59","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$14955","typeString":"contract PeripheryImmutableState"}},"id":13466,"nodeType":"InheritanceSpecifier","src":"621:23:59"},{"baseName":{"id":13467,"name":"PoolInitializer","nodeType":"UserDefinedTypeName","referencedDeclaration":15472,"src":"646:15:59","typeDescriptions":{"typeIdentifier":"t_contract$_PoolInitializer_$15472","typeString":"contract PoolInitializer"}},"id":13468,"nodeType":"InheritanceSpecifier","src":"646:15:59"},{"baseName":{"id":13469,"name":"Multicall","nodeType":"UserDefinedTypeName","referencedDeclaration":14924,"src":"663:9:59","typeDescriptions":{"typeIdentifier":"t_contract$_Multicall_$14924","typeString":"contract Multicall"}},"id":13470,"nodeType":"InheritanceSpecifier","src":"663:9:59"},{"baseName":{"id":13471,"name":"SelfPermit","nodeType":"UserDefinedTypeName","referencedDeclaration":15639,"src":"674:10:59","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$15639","typeString":"contract SelfPermit"}},"id":13472,"nodeType":"InheritanceSpecifier","src":"674:10:59"}],"contractDependencies":[14924,14955,15472,15639,15746,15852,16125,16203,16271],"contractKind":"contract","documentation":{"id":13462,"nodeType":"StructuredDocumentation","src":"549:28:59","text":"@title Elixir Migrator"},"fullyImplemented":true,"id":13750,"linearizedBaseContracts":[13750,15639,14924,15472,14955,16125,15746,16203,16271,15852],"name":"ElixirMigrator","nodeType":"ContractDefinition","nodes":[{"id":13475,"libraryName":{"id":13473,"name":"LowGasSafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":4430,"src":"698:14:59","typeDescriptions":{"typeIdentifier":"t_contract$_LowGasSafeMath_$4430","typeString":"library LowGasSafeMath"}},"nodeType":"UsingForDirective","src":"692:33:59","typeName":{"id":13474,"name":"uint256","nodeType":"ElementaryTypeName","src":"717:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"functionSelector":"b44a2722","id":13477,"mutability":"immutable","name":"nonfungiblePositionManager","nodeType":"VariableDeclaration","scope":13750,"src":"733:51:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13476,"name":"address","nodeType":"ElementaryTypeName","src":"733:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"body":{"id":13494,"nodeType":"Block","src":"952:75:59","statements":[{"expression":{"id":13492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13490,"name":"nonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13477,"src":"963:26:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13491,"name":"_nonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13483,"src":"992:27:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"963:56:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13493,"nodeType":"ExpressionStatement","src":"963:56:59"}]},"id":13495,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":13486,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13479,"src":"934:8:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13487,"name":"_WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13481,"src":"944:6:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":13488,"modifierName":{"id":13485,"name":"PeripheryImmutableState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14955,"src":"910:23:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PeripheryImmutableState_$14955_$","typeString":"type(contract PeripheryImmutableState)"}},"nodeType":"ModifierInvocation","src":"910:41:59"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":13484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13479,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":13495,"src":"815:16:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13478,"name":"address","nodeType":"ElementaryTypeName","src":"815:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13481,"mutability":"mutable","name":"_WETH9","nodeType":"VariableDeclaration","scope":13495,"src":"842:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13480,"name":"address","nodeType":"ElementaryTypeName","src":"842:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13483,"mutability":"mutable","name":"_nonfungiblePositionManager","nodeType":"VariableDeclaration","scope":13495,"src":"867:35:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13482,"name":"address","nodeType":"ElementaryTypeName","src":"867:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"804:105:59"},"returnParameters":{"id":13489,"nodeType":"ParameterList","parameters":[],"src":"952:0:59"},"scope":13750,"src":"793:234:59","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":13506,"nodeType":"Block","src":"1062:60:59","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13499,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1081:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1081:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":13501,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14938,"src":"1095:5:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1081:19:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f74205745544839","id":13503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1102:11:59","typeDescriptions":{"typeIdentifier":"t_stringliteral_9a5f12903ee10b20c1ea1ca8d6f6723d553112d744fe8db2bc5453efb990e6b1","typeString":"literal_string \"Not WETH9\""},"value":"Not WETH9"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9a5f12903ee10b20c1ea1ca8d6f6723d553112d744fe8db2bc5453efb990e6b1","typeString":"literal_string \"Not WETH9\""}],"id":13498,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1073:7:59","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1073:41:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13505,"nodeType":"ExpressionStatement","src":"1073:41:59"}]},"id":13507,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":13496,"nodeType":"ParameterList","parameters":[],"src":"1042:2:59"},"returnParameters":{"id":13497,"nodeType":"ParameterList","parameters":[],"src":"1062:0:59"},"scope":13750,"src":"1035:87:59","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[15745],"body":{"id":13748,"nodeType":"Block","src":"1196:2909:59","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":13517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13514,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"1215:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"percentageToMigrate","nodeType":"MemberAccess","referencedDeclaration":15718,"src":"1215:26:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1244:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1215:30:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50657263656e7461676520746f6f20736d616c6c","id":13518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1247:22:59","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":13513,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1207:7:59","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1207:63:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13520,"nodeType":"ExpressionStatement","src":"1207:63:59"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":13525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13522,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"1289:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"percentageToMigrate","nodeType":"MemberAccess","referencedDeclaration":15718,"src":"1289:26:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"313030","id":13524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1319:3:59","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"1289:33:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50657263656e7461676520746f6f206c61726765","id":13526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1324:22:59","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":13521,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1281:7:59","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1281:66:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13528,"nodeType":"ExpressionStatement","src":"1281:66:59"},{"expression":{"arguments":[{"expression":{"id":13534,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1446:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1446:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":13536,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"1458:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pair","nodeType":"MemberAccess","referencedDeclaration":15714,"src":"1458:11:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":13538,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"1471:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"liquidityToMigrate","nodeType":"MemberAccess","referencedDeclaration":15716,"src":"1471:25:59","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":13530,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"1420:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pair","nodeType":"MemberAccess","referencedDeclaration":15714,"src":"1420:11:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13529,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"1406:13:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":13532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1406:26:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":13533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":22404,"src":"1406:39:59","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":13540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1406:91:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13541,"nodeType":"ExpressionStatement","src":"1406:91:59"},{"assignments":[13543,13545],"declarations":[{"constant":false,"id":13543,"mutability":"mutable","name":"amount0V1","nodeType":"VariableDeclaration","scope":13748,"src":"1509:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13542,"name":"uint256","nodeType":"ElementaryTypeName","src":"1509:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13545,"mutability":"mutable","name":"amount1V1","nodeType":"VariableDeclaration","scope":13748,"src":"1528:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13544,"name":"uint256","nodeType":"ElementaryTypeName","src":"1528:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13556,"initialValue":{"arguments":[{"arguments":[{"id":13553,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1589:4:59","typeDescriptions":{"typeIdentifier":"t_contract$_ElixirMigrator_$13750","typeString":"contract ElixirMigrator"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ElixirMigrator_$13750","typeString":"contract ElixirMigrator"}],"id":13552,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1581:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13551,"name":"address","nodeType":"ElementaryTypeName","src":"1581:7:59","typeDescriptions":{}}},"id":13554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1581:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"expression":{"id":13547,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"1563:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pair","nodeType":"MemberAccess","referencedDeclaration":15714,"src":"1563:11:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13546,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"1549:13:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":13549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1549:26:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":13550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":22536,"src":"1549:31:59","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address) external returns (uint256,uint256)"}},"id":13555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1549:46:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1508:87:59"},{"assignments":[13558],"declarations":[{"constant":false,"id":13558,"mutability":"mutable","name":"amount0V1ToMigrate","nodeType":"VariableDeclaration","scope":13748,"src":"1663:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13557,"name":"uint256","nodeType":"ElementaryTypeName","src":"1663:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13566,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":13561,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"1706:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"percentageToMigrate","nodeType":"MemberAccess","referencedDeclaration":15718,"src":"1706:26:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":13559,"name":"amount0V1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13543,"src":"1692:9:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":4375,"src":"1692:13:59","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":13563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1692:41:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":13564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1736:3:59","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"1692:47:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1663:76:59"},{"assignments":[13568],"declarations":[{"constant":false,"id":13568,"mutability":"mutable","name":"amount1V1ToMigrate","nodeType":"VariableDeclaration","scope":13748,"src":"1750:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13567,"name":"uint256","nodeType":"ElementaryTypeName","src":"1750:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13576,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":13571,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"1793:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"percentageToMigrate","nodeType":"MemberAccess","referencedDeclaration":15718,"src":"1793:26:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":13569,"name":"amount1V1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13545,"src":"1779:9:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":4375,"src":"1779:13:59","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":13573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1779:41:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":13574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1823:3:59","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"1779:47:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1750:76:59"},{"expression":{"arguments":[{"expression":{"id":13580,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"1939:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":15720,"src":"1939:13:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13582,"name":"nonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13477,"src":"1954:26:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13583,"name":"amount0V1ToMigrate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13558,"src":"1982:18:59","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":13577,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20731,"src":"1912:14:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$20731_$","typeString":"type(library TransferHelper)"}},"id":13579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":20704,"src":"1912:26:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":13584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1912:89:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13585,"nodeType":"ExpressionStatement","src":"1912:89:59"},{"expression":{"arguments":[{"expression":{"id":13589,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"2039:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":15722,"src":"2039:13:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13591,"name":"nonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13477,"src":"2054:26:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13592,"name":"amount1V1ToMigrate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13568,"src":"2082:18:59","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":13586,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20731,"src":"2012:14:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$20731_$","typeString":"type(library TransferHelper)"}},"id":13588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":20704,"src":"2012:26:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":13593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2012:89:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13594,"nodeType":"ExpressionStatement","src":"2012:89:59"},{"assignments":[null,null,13596,13598],"declarations":[null,null,{"constant":false,"id":13596,"mutability":"mutable","name":"amount0V2","nodeType":"VariableDeclaration","scope":13748,"src":"2157:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13595,"name":"uint256","nodeType":"ElementaryTypeName","src":"2157:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13598,"mutability":"mutable","name":"amount1V2","nodeType":"VariableDeclaration","scope":13748,"src":"2176:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13597,"name":"uint256","nodeType":"ElementaryTypeName","src":"2176:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13627,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":13605,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"2359:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":15720,"src":"2359:13:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":13607,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"2403:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":15722,"src":"2403:13:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":13609,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"2444:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":15724,"src":"2444:10:59","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"expression":{"id":13611,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"2488:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":15726,"src":"2488:16:59","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":13613,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"2538:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":15728,"src":"2538:16:59","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":13615,"name":"amount0V1ToMigrate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13558,"src":"2593:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13616,"name":"amount1V1ToMigrate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13568,"src":"2650:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":13617,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"2703:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount0Min","nodeType":"MemberAccess","referencedDeclaration":15730,"src":"2703:17:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":13619,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"2755:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount1Min","nodeType":"MemberAccess","referencedDeclaration":15732,"src":"2755:17:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":13621,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"2806:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":15734,"src":"2806:16:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":13623,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"2855:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":15736,"src":"2855:15:59","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":13603,"name":"INonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16094,"src":"2289:27:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_INonfungiblePositionManager_$16094_$","typeString":"type(contract INonfungiblePositionManager)"}},"id":13604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MintParams","nodeType":"MemberAccess","referencedDeclaration":15982,"src":"2289:38:59","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MintParams_$15982_storage_ptr_$","typeString":"type(struct INonfungiblePositionManager.MintParams storage pointer)"}},"id":13625,"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":"2289:601:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$15982_memory_ptr","typeString":"struct INonfungiblePositionManager.MintParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_MintParams_$15982_memory_ptr","typeString":"struct INonfungiblePositionManager.MintParams memory"}],"expression":{"arguments":[{"id":13600,"name":"nonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13477,"src":"2238:26:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13599,"name":"INonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16094,"src":"2210:27:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_INonfungiblePositionManager_$16094_$","typeString":"type(contract INonfungiblePositionManager)"}},"id":13601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2210:55:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"id":13602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":15996,"src":"2210:60:59","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_MintParams_$15982_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":13626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2210:695:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint128_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint128,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"2152:753:59"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13628,"name":"amount0V2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13596,"src":"2980:9:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13629,"name":"amount0V1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13543,"src":"2992:9:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2980:21:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13687,"nodeType":"IfStatement","src":"2976:556:59","trueBody":{"id":13686,"nodeType":"Block","src":"3003:529:59","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13631,"name":"amount0V2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13596,"src":"3022:9:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13632,"name":"amount0V1ToMigrate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13558,"src":"3034:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3022:30:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13644,"nodeType":"IfStatement","src":"3018:143:59","trueBody":{"id":13643,"nodeType":"Block","src":"3054:107:59","statements":[{"expression":{"arguments":[{"expression":{"id":13637,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"3100:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":15720,"src":"3100:13:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13639,"name":"nonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13477,"src":"3115:26:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":13640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3143:1:59","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":13634,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20731,"src":"3073:14:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$20731_$","typeString":"type(library TransferHelper)"}},"id":13636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":20704,"src":"3073:26:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":13641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3073:72:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13642,"nodeType":"ExpressionStatement","src":"3073:72:59"}]}},{"assignments":[13646],"declarations":[{"constant":false,"id":13646,"mutability":"mutable","name":"refund0","nodeType":"VariableDeclaration","scope":13686,"src":"3177:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13645,"name":"uint256","nodeType":"ElementaryTypeName","src":"3177:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13650,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13647,"name":"amount0V1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13543,"src":"3195:9:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13648,"name":"amount0V2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13596,"src":"3207:9:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3195:21:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3177:39:59"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13651,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"3235:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"refundAsETH","nodeType":"MemberAccess","referencedDeclaration":15738,"src":"3235:18:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13653,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"3257:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":15720,"src":"3257:13:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":13655,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14938,"src":"3274:5:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3257:22:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3235:44:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13684,"nodeType":"Block","src":"3423:98:59","statements":[{"expression":{"arguments":[{"expression":{"id":13677,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"3470:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":15720,"src":"3470:13:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":13679,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3485:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3485:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":13681,"name":"refund0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13646,"src":"3497:7:59","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":13674,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20731,"src":"3442:14:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$20731_$","typeString":"type(library TransferHelper)"}},"id":13676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":20658,"src":"3442:27:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":13682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3442:63:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13683,"nodeType":"ExpressionStatement","src":"3442:63:59"}]},"id":13685,"nodeType":"IfStatement","src":"3231:290:59","trueBody":{"id":13673,"nodeType":"Block","src":"3281:136:59","statements":[{"expression":{"arguments":[{"id":13662,"name":"refund0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13646,"src":"3323:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":13659,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14938,"src":"3307:5:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13658,"name":"IWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16445,"src":"3300:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWETH9_$16445_$","typeString":"type(contract IWETH9)"}},"id":13660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3300:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH9_$16445","typeString":"contract IWETH9"}},"id":13661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":16444,"src":"3300:22:59","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":13663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3300:31:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13664,"nodeType":"ExpressionStatement","src":"3300:31:59"},{"expression":{"arguments":[{"expression":{"id":13668,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3381:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3381:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":13670,"name":"refund0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13646,"src":"3393:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13665,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20731,"src":"3350:14:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$20731_$","typeString":"type(library TransferHelper)"}},"id":13667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferETH","nodeType":"MemberAccess","referencedDeclaration":20730,"src":"3350:30:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":13671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3350:51:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13672,"nodeType":"ExpressionStatement","src":"3350:51:59"}]}}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13688,"name":"amount1V2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13598,"src":"3546:9:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13689,"name":"amount1V1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13545,"src":"3558:9:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3546:21:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13747,"nodeType":"IfStatement","src":"3542:556:59","trueBody":{"id":13746,"nodeType":"Block","src":"3569:529:59","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13691,"name":"amount1V2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13598,"src":"3588:9:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13692,"name":"amount1V1ToMigrate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13568,"src":"3600:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3588:30:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13704,"nodeType":"IfStatement","src":"3584:143:59","trueBody":{"id":13703,"nodeType":"Block","src":"3620:107:59","statements":[{"expression":{"arguments":[{"expression":{"id":13697,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"3666:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":15722,"src":"3666:13:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13699,"name":"nonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13477,"src":"3681:26:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":13700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3709:1:59","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":13694,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20731,"src":"3639:14:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$20731_$","typeString":"type(library TransferHelper)"}},"id":13696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":20704,"src":"3639:26:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":13701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3639:72:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13702,"nodeType":"ExpressionStatement","src":"3639:72:59"}]}},{"assignments":[13706],"declarations":[{"constant":false,"id":13706,"mutability":"mutable","name":"refund1","nodeType":"VariableDeclaration","scope":13746,"src":"3743:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13705,"name":"uint256","nodeType":"ElementaryTypeName","src":"3743:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13710,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13707,"name":"amount1V1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13545,"src":"3761:9:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13708,"name":"amount1V2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13598,"src":"3773:9:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3761:21:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3743:39:59"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13711,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"3801:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"refundAsETH","nodeType":"MemberAccess","referencedDeclaration":15738,"src":"3801:18:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13713,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"3823:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":15722,"src":"3823:13:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":13715,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14938,"src":"3840:5:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3823:22:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3801:44:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13744,"nodeType":"Block","src":"3989:98:59","statements":[{"expression":{"arguments":[{"expression":{"id":13737,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"4036:6:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams calldata"}},"id":13738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":15722,"src":"4036:13:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":13739,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4051:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4051:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":13741,"name":"refund1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13706,"src":"4063:7:59","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":13734,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20731,"src":"4008:14:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$20731_$","typeString":"type(library TransferHelper)"}},"id":13736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":20658,"src":"4008:27:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":13742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4008:63:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13743,"nodeType":"ExpressionStatement","src":"4008:63:59"}]},"id":13745,"nodeType":"IfStatement","src":"3797:290:59","trueBody":{"id":13733,"nodeType":"Block","src":"3847:136:59","statements":[{"expression":{"arguments":[{"id":13722,"name":"refund1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13706,"src":"3889:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":13719,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14938,"src":"3873:5:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13718,"name":"IWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16445,"src":"3866:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWETH9_$16445_$","typeString":"type(contract IWETH9)"}},"id":13720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3866:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH9_$16445","typeString":"contract IWETH9"}},"id":13721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":16444,"src":"3866:22:59","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":13723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3866:31:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13724,"nodeType":"ExpressionStatement","src":"3866:31:59"},{"expression":{"arguments":[{"expression":{"id":13728,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3947:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3947:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":13730,"name":"refund1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13706,"src":"3959:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13725,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20731,"src":"3916:14:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$20731_$","typeString":"type(library TransferHelper)"}},"id":13727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferETH","nodeType":"MemberAccess","referencedDeclaration":20730,"src":"3916:30:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":13731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3916:51:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13732,"nodeType":"ExpressionStatement","src":"3916:51:59"}]}}]}}]},"functionSelector":"d44f2bf2","id":13749,"implemented":true,"kind":"function","modifiers":[],"name":"migrate","nodeType":"FunctionDefinition","overrides":{"id":13511,"nodeType":"OverrideSpecifier","overrides":[],"src":"1187:8:59"},"parameters":{"id":13510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13509,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":13749,"src":"1147:29:59","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams"},"typeName":{"id":13508,"name":"MigrateParams","nodeType":"UserDefinedTypeName","referencedDeclaration":15739,"src":"1147:13:59","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_storage_ptr","typeString":"struct IElixirMigrator.MigrateParams"}},"visibility":"internal"}],"src":"1146:31:59"},"returnParameters":{"id":13512,"nodeType":"ParameterList","parameters":[],"src":"1196:0:59"},"scope":13750,"src":"1130:2975:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":13751,"src":"577:3531:59"}],"src":"46:4064:59"},"id":59},"contracts/elixir-periphery/SwapRouter.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/SwapRouter.sol","exportedSymbols":{"BytesLib":[17433],"CallbackValidation":[17495],"IERC20":[31070],"IERC20Permit":[30309],"IERC20PermitAllowed":[16428],"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"IElixirSwapCallback":[3315],"IMulticall":[15852],"IPeripheryImmutableState":[16125],"IPeripheryPayments":[16151],"IPeripheryPaymentsWithFee":[16184],"ISelfPermit":[16271],"ISwapRouter":[16367],"IWETH9":[16445],"LowGasSafeMath":[4430],"Multicall":[14924],"Path":[19642],"PeripheryImmutableState":[14955],"PeripheryPayments":[15172],"PeripheryPaymentsWithFee":[15353],"PeripheryValidation":[15380],"PoolAddress":[19734],"SafeCast":[5526],"SelfPermit":[15639],"SwapRouter":[14422],"TickMath":[7567],"TransferHelper":[20731]},"id":14423,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13752,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:60"},{"id":13753,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"71:19:60"},{"absolutePath":"contracts/elixir-core/libraries/SafeCast.sol","file":"../elixir-core/libraries/SafeCast.sol","id":13754,"nodeType":"ImportDirective","scope":14423,"sourceUnit":5527,"src":"94:47:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/TickMath.sol","file":"../elixir-core/libraries/TickMath.sol","id":13755,"nodeType":"ImportDirective","scope":14423,"sourceUnit":7568,"src":"143:47:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"../elixir-core/interfaces/IElixirPool.sol","id":13756,"nodeType":"ImportDirective","scope":14423,"sourceUnit":3274,"src":"192:51:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/ISwapRouter.sol","file":"./interfaces/ISwapRouter.sol","id":13757,"nodeType":"ImportDirective","scope":14423,"sourceUnit":16368,"src":"247:38:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/PeripheryImmutableState.sol","file":"./base/PeripheryImmutableState.sol","id":13758,"nodeType":"ImportDirective","scope":14423,"sourceUnit":14956,"src":"287:44:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/PeripheryValidation.sol","file":"./base/PeripheryValidation.sol","id":13759,"nodeType":"ImportDirective","scope":14423,"sourceUnit":15381,"src":"333:40:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/PeripheryPaymentsWithFee.sol","file":"./base/PeripheryPaymentsWithFee.sol","id":13760,"nodeType":"ImportDirective","scope":14423,"sourceUnit":15354,"src":"375:45:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/Multicall.sol","file":"./base/Multicall.sol","id":13761,"nodeType":"ImportDirective","scope":14423,"sourceUnit":14925,"src":"422:30:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/SelfPermit.sol","file":"./base/SelfPermit.sol","id":13762,"nodeType":"ImportDirective","scope":14423,"sourceUnit":15640,"src":"454:31:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/Path.sol","file":"./libraries/Path.sol","id":13763,"nodeType":"ImportDirective","scope":14423,"sourceUnit":19643,"src":"487:30:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/PoolAddress.sol","file":"./libraries/PoolAddress.sol","id":13764,"nodeType":"ImportDirective","scope":14423,"sourceUnit":19735,"src":"519:37:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/CallbackValidation.sol","file":"./libraries/CallbackValidation.sol","id":13765,"nodeType":"ImportDirective","scope":14423,"sourceUnit":17496,"src":"558:44:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/external/IWETH9.sol","file":"./interfaces/external/IWETH9.sol","id":13766,"nodeType":"ImportDirective","scope":14423,"sourceUnit":16446,"src":"604:42:60","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13768,"name":"ISwapRouter","nodeType":"UserDefinedTypeName","referencedDeclaration":16367,"src":"777:11:60","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$16367","typeString":"contract ISwapRouter"}},"id":13769,"nodeType":"InheritanceSpecifier","src":"777:11:60"},{"baseName":{"id":13770,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":14955,"src":"795:23:60","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$14955","typeString":"contract PeripheryImmutableState"}},"id":13771,"nodeType":"InheritanceSpecifier","src":"795:23:60"},{"baseName":{"id":13772,"name":"PeripheryValidation","nodeType":"UserDefinedTypeName","referencedDeclaration":15380,"src":"825:19:60","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryValidation_$15380","typeString":"contract PeripheryValidation"}},"id":13773,"nodeType":"InheritanceSpecifier","src":"825:19:60"},{"baseName":{"id":13774,"name":"PeripheryPaymentsWithFee","nodeType":"UserDefinedTypeName","referencedDeclaration":15353,"src":"851:24:60","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPaymentsWithFee_$15353","typeString":"contract PeripheryPaymentsWithFee"}},"id":13775,"nodeType":"InheritanceSpecifier","src":"851:24:60"},{"baseName":{"id":13776,"name":"Multicall","nodeType":"UserDefinedTypeName","referencedDeclaration":14924,"src":"882:9:60","typeDescriptions":{"typeIdentifier":"t_contract$_Multicall_$14924","typeString":"contract Multicall"}},"id":13777,"nodeType":"InheritanceSpecifier","src":"882:9:60"},{"baseName":{"id":13778,"name":"SelfPermit","nodeType":"UserDefinedTypeName","referencedDeclaration":15639,"src":"898:10:60","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$15639","typeString":"contract SelfPermit"}},"id":13779,"nodeType":"InheritanceSpecifier","src":"898:10:60"}],"contractDependencies":[3315,14924,14955,15172,15353,15380,15639,15852,16125,16151,16184,16271,16367],"contractKind":"contract","documentation":{"id":13767,"nodeType":"StructuredDocumentation","src":"650:99:60","text":"@title Elixir Swap Router\n @notice Router for stateless execution of swaps against Elixir"},"fullyImplemented":true,"id":14422,"linearizedBaseContracts":[14422,15639,16271,14924,15852,15353,16184,15172,15380,14955,16125,16151,16367,3315],"name":"SwapRouter","nodeType":"ContractDefinition","nodes":[{"id":13782,"libraryName":{"id":13780,"name":"Path","nodeType":"UserDefinedTypeName","referencedDeclaration":19642,"src":"923:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_Path_$19642","typeString":"library Path"}},"nodeType":"UsingForDirective","src":"917:21:60","typeName":{"id":13781,"name":"bytes","nodeType":"ElementaryTypeName","src":"932:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"id":13785,"libraryName":{"id":13783,"name":"SafeCast","nodeType":"UserDefinedTypeName","referencedDeclaration":5526,"src":"950:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_SafeCast_$5526","typeString":"library SafeCast"}},"nodeType":"UsingForDirective","src":"944:27:60","typeName":{"id":13784,"name":"uint256","nodeType":"ElementaryTypeName","src":"963:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"documentation":{"id":13786,"nodeType":"StructuredDocumentation","src":"979:156:60","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":13793,"mutability":"constant","name":"DEFAULT_AMOUNT_IN_CACHED","nodeType":"VariableDeclaration","scope":14422,"src":"1141:69:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13787,"name":"uint256","nodeType":"ElementaryTypeName","src":"1141:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"expression":{"arguments":[{"id":13790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1198:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13789,"name":"uint256","nodeType":"ElementaryTypeName","src":"1198:7:60","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":13788,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1193:4:60","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1193:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":13792,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"1193:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"documentation":{"id":13794,"nodeType":"StructuredDocumentation","src":"1219:103:60","text":"@dev Transient storage variable used for returning the computed amount in for an exact output swap."},"id":13797,"mutability":"mutable","name":"amountInCached","nodeType":"VariableDeclaration","scope":14422,"src":"1328:57:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13795,"name":"uint256","nodeType":"ElementaryTypeName","src":"1328:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"id":13796,"name":"DEFAULT_AMOUNT_IN_CACHED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13793,"src":"1361:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":13808,"nodeType":"Block","src":"1482:2:60","statements":[]},"id":13809,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":13804,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13799,"src":"1464:8:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13805,"name":"_WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13801,"src":"1474:6:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":13806,"modifierName":{"id":13803,"name":"PeripheryImmutableState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14955,"src":"1440:23:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PeripheryImmutableState_$14955_$","typeString":"type(contract PeripheryImmutableState)"}},"nodeType":"ModifierInvocation","src":"1440:41:60"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":13802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13799,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":13809,"src":"1406:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13798,"name":"address","nodeType":"ElementaryTypeName","src":"1406:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13801,"mutability":"mutable","name":"_WETH9","nodeType":"VariableDeclaration","scope":13809,"src":"1424:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13800,"name":"address","nodeType":"ElementaryTypeName","src":"1424:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1405:34:60"},"returnParameters":{"id":13807,"nodeType":"ParameterList","parameters":[],"src":"1482:0:60"},"scope":14422,"src":"1394:90:60","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":13834,"nodeType":"Block","src":"1727:119:60","statements":[{"expression":{"arguments":[{"arguments":[{"id":13824,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14934,"src":"1784:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":13827,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13812,"src":"1816:6:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13828,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13814,"src":"1824:6:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13829,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13816,"src":"1832:3:60","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":13825,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19734,"src":"1793:11:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$19734_$","typeString":"type(library PoolAddress)"}},"id":13826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPoolKey","nodeType":"MemberAccess","referencedDeclaration":19686,"src":"1793:22:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_uint24_$returns$_t_struct$_PoolKey_$19655_memory_ptr_$","typeString":"function (address,address,uint24) pure returns (struct PoolAddress.PoolKey memory)"}},"id":13830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1793:43:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":13822,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19734,"src":"1757:11:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$19734_$","typeString":"type(library PoolAddress)"}},"id":13823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":19733,"src":"1757:26:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$19655_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":13831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1757:80:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13821,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1745:11:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":13832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1745:93:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"functionReturnParameters":13820,"id":13833,"nodeType":"Return","src":"1738:100:60"}]},"documentation":{"id":13810,"nodeType":"StructuredDocumentation","src":"1492:99:60","text":"@dev Returns the pool for the given token pair and fee. The pool contract may or may not exist."},"id":13835,"implemented":true,"kind":"function","modifiers":[],"name":"getPool","nodeType":"FunctionDefinition","parameters":{"id":13817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13812,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":13835,"src":"1624:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13811,"name":"address","nodeType":"ElementaryTypeName","src":"1624:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13814,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":13835,"src":"1649:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13813,"name":"address","nodeType":"ElementaryTypeName","src":"1649:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13816,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":13835,"src":"1674:10:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":13815,"name":"uint24","nodeType":"ElementaryTypeName","src":"1674:6:60","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"1613:78:60"},"returnParameters":{"id":13820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13819,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13835,"src":"1714:11:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"},"typeName":{"id":13818,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":3273,"src":"1714:11:60","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"visibility":"internal"}],"src":"1713:13:60"},"scope":14422,"src":"1597:249:60","stateMutability":"view","virtual":false,"visibility":"private"},{"canonicalName":"SwapRouter.SwapCallbackData","id":13840,"members":[{"constant":false,"id":13837,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":13840,"src":"1889:10:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":13836,"name":"bytes","nodeType":"ElementaryTypeName","src":"1889:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":13839,"mutability":"mutable","name":"payer","nodeType":"VariableDeclaration","scope":13840,"src":"1910:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13838,"name":"address","nodeType":"ElementaryTypeName","src":"1910:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"SwapCallbackData","nodeType":"StructDefinition","scope":14422,"src":"1854:77:60","visibility":"public"},{"baseFunctions":[3314],"body":{"id":13969,"nodeType":"Block","src":"2124:1174:60","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13852,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13843,"src":"2143:12:60","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2158:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2143:16:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13855,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13845,"src":"2163:12:60","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2178:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2163:16:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2143:36:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13851,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2135:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":13859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2135:45:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13860,"nodeType":"ExpressionStatement","src":"2135:45:60"},{"assignments":[13862],"declarations":[{"constant":false,"id":13862,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":13969,"src":"2254:28:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData"},"typeName":{"id":13861,"name":"SwapCallbackData","nodeType":"UserDefinedTypeName","referencedDeclaration":13840,"src":"2254:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_storage_ptr","typeString":"struct SwapRouter.SwapCallbackData"}},"visibility":"internal"}],"id":13869,"initialValue":{"arguments":[{"id":13865,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13847,"src":"2296:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":13866,"name":"SwapCallbackData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13840,"src":"2304:16:60","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapCallbackData_$13840_storage_ptr_$","typeString":"type(struct SwapRouter.SwapCallbackData storage pointer)"}}],"id":13867,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2303:18:60","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapCallbackData_$13840_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_$13840_storage_ptr_$","typeString":"type(struct SwapRouter.SwapCallbackData storage pointer)"}],"expression":{"id":13863,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2285:3:60","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":13864,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2285:10:60","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":13868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2285:37:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}},"nodeType":"VariableDeclarationStatement","src":"2254:68:60"},{"assignments":[13871,13873,13875],"declarations":[{"constant":false,"id":13871,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":13969,"src":"2334:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13870,"name":"address","nodeType":"ElementaryTypeName","src":"2334:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13873,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":13969,"src":"2351:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13872,"name":"address","nodeType":"ElementaryTypeName","src":"2351:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13875,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":13969,"src":"2369:10:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":13874,"name":"uint24","nodeType":"ElementaryTypeName","src":"2369:6:60","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":13880,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":13876,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13862,"src":"2383:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}},"id":13877,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":13837,"src":"2383:9:60","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":19608,"src":"2383:25:60","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":13879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2383:27:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint24_$","typeString":"tuple(address,address,uint24)"}},"nodeType":"VariableDeclarationStatement","src":"2333:77:60"},{"expression":{"arguments":[{"id":13884,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14934,"src":"2455:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13885,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13871,"src":"2464:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13886,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13873,"src":"2473:8:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13887,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13875,"src":"2483:3:60","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":13881,"name":"CallbackValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17495,"src":"2421:18:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CallbackValidation_$17495_$","typeString":"type(library CallbackValidation)"}},"id":13883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"verifyCallback","nodeType":"MemberAccess","referencedDeclaration":17463,"src":"2421:33:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint24_$returns$_t_contract$_IElixirPool_$3273_$","typeString":"function (address,address,address,uint24) view returns (contract IElixirPool)"}},"id":13888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2421:66:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":13889,"nodeType":"ExpressionStatement","src":"2421:66:60"},{"assignments":[13891,13893],"declarations":[{"constant":false,"id":13891,"mutability":"mutable","name":"isExactInput","nodeType":"VariableDeclaration","scope":13969,"src":"2501:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13890,"name":"bool","nodeType":"ElementaryTypeName","src":"2501:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":13893,"mutability":"mutable","name":"amountToPay","nodeType":"VariableDeclaration","scope":13969,"src":"2520:19:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13892,"name":"uint256","nodeType":"ElementaryTypeName","src":"2520:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13914,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13894,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13843,"src":"2556:12:60","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2571:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2556:16:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13905,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13873,"src":"2656:8:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13906,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13871,"src":"2667:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2656:18:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":13910,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13845,"src":"2684:12:60","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13909,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2676:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13908,"name":"uint256","nodeType":"ElementaryTypeName","src":"2676:7:60","typeDescriptions":{}}},"id":13911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2676:21:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13912,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2655:43:60","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"id":13913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2556:142:60","trueExpression":{"components":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13897,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13871,"src":"2593:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13898,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13873,"src":"2603:8:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2593:18:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":13902,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13843,"src":"2621:12:60","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13901,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2613:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13900,"name":"uint256","nodeType":"ElementaryTypeName","src":"2613:7:60","typeDescriptions":{}}},"id":13903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2613:21:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13904,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2592:43:60","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":"2500:198:60"},{"condition":{"id":13915,"name":"isExactInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13891,"src":"2713:12:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13967,"nodeType":"Block","src":"2809:482:60","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":13926,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13862,"src":"2881:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}},"id":13927,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":13837,"src":"2881:9:60","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasMultiplePools","nodeType":"MemberAccess","referencedDeclaration":19556,"src":"2881:26:60","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":13929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2881:28:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13965,"nodeType":"Block","src":"3057:223:60","statements":[{"expression":{"id":13950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13948,"name":"amountInCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13797,"src":"3076:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13949,"name":"amountToPay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13893,"src":"3093:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3076:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13951,"nodeType":"ExpressionStatement","src":"3076:28:60"},{"expression":{"id":13954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13952,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13871,"src":"3123:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13953,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13873,"src":"3133:8:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3123:18:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13955,"nodeType":"ExpressionStatement","src":"3123:18:60"},{"expression":{"arguments":[{"id":13957,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13871,"src":"3219:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":13958,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13862,"src":"3228:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}},"id":13959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payer","nodeType":"MemberAccess","referencedDeclaration":13839,"src":"3228:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":13960,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3240:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3240:10:60","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":13962,"name":"amountToPay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13893,"src":"3252:11:60","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":13956,"name":"pay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15171,"src":"3215:3:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":13963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3215:49:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13964,"nodeType":"ExpressionStatement","src":"3215:49:60"}]},"id":13966,"nodeType":"IfStatement","src":"2877:403:60","trueBody":{"id":13947,"nodeType":"Block","src":"2911:140:60","statements":[{"expression":{"id":13937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":13930,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13862,"src":"2930:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}},"id":13932,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":13837,"src":"2930:9:60","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":13933,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13862,"src":"2942:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}},"id":13934,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":13837,"src":"2942:9:60","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"skipToken","nodeType":"MemberAccess","referencedDeclaration":19641,"src":"2942:19:60","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":13936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2942:21:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"2930:33:60","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13938,"nodeType":"ExpressionStatement","src":"2930:33:60"},{"expression":{"arguments":[{"id":13940,"name":"amountToPay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13893,"src":"3002:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":13941,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3015:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3015:10:60","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"hexValue":"30","id":13943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3027:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":13944,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13862,"src":"3030:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_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_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}],"id":13939,"name":"exactOutputInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14327,"src":"2982:19:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint160_$_t_struct$_SwapCallbackData_$13840_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,address,uint160,struct SwapRouter.SwapCallbackData memory) returns (uint256)"}},"id":13945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2982:53:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13946,"nodeType":"ExpressionStatement","src":"2982:53:60"}]}}]},"id":13968,"nodeType":"IfStatement","src":"2709:582:60","trueBody":{"id":13925,"nodeType":"Block","src":"2727:76:60","statements":[{"expression":{"arguments":[{"id":13917,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13871,"src":"2746:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":13918,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13862,"src":"2755:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}},"id":13919,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payer","nodeType":"MemberAccess","referencedDeclaration":13839,"src":"2755:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":13920,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2767:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2767:10:60","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":13922,"name":"amountToPay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13893,"src":"2779:11:60","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":13916,"name":"pay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15171,"src":"2742:3:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":13923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2742:49:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13924,"nodeType":"ExpressionStatement","src":"2742:49:60"}]}}]},"documentation":{"id":13841,"nodeType":"StructuredDocumentation","src":"1939:35:60","text":"@inheritdoc IElixirSwapCallback"},"functionSelector":"d804d7a7","id":13970,"implemented":true,"kind":"function","modifiers":[],"name":"elixirSwapCallback","nodeType":"FunctionDefinition","overrides":{"id":13849,"nodeType":"OverrideSpecifier","overrides":[],"src":"2115:8:60"},"parameters":{"id":13848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13843,"mutability":"mutable","name":"amount0Delta","nodeType":"VariableDeclaration","scope":13970,"src":"2018:19:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13842,"name":"int256","nodeType":"ElementaryTypeName","src":"2018:6:60","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":13845,"mutability":"mutable","name":"amount1Delta","nodeType":"VariableDeclaration","scope":13970,"src":"2048:19:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13844,"name":"int256","nodeType":"ElementaryTypeName","src":"2048:6:60","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":13847,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":13970,"src":"2078:20:60","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13846,"name":"bytes","nodeType":"ElementaryTypeName","src":"2078:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2007:98:60"},"returnParameters":{"id":13850,"nodeType":"ParameterList","parameters":[],"src":"2124:0:60"},"scope":14422,"src":"1980:1318:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14062,"nodeType":"Block","src":"3556:758:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13984,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13975,"src":"3635:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":13987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3656:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":13986,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3648:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13985,"name":"address","nodeType":"ElementaryTypeName","src":"3648:7:60","typeDescriptions":{}}},"id":13988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3648:10:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3635:23:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13997,"nodeType":"IfStatement","src":"3631:54:60","trueBody":{"expression":{"id":13995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13990,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13975,"src":"3660:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13993,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3680:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_SwapRouter_$14422","typeString":"contract SwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapRouter_$14422","typeString":"contract SwapRouter"}],"id":13992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3672:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13991,"name":"address","nodeType":"ElementaryTypeName","src":"3672:7:60","typeDescriptions":{}}},"id":13994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3672:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3660:25:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13996,"nodeType":"ExpressionStatement","src":"3660:25:60"}},{"assignments":[13999,14001,14003],"declarations":[{"constant":false,"id":13999,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":14062,"src":"3699:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13998,"name":"address","nodeType":"ElementaryTypeName","src":"3699:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14001,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":14062,"src":"3716:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14000,"name":"address","nodeType":"ElementaryTypeName","src":"3716:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14003,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":14062,"src":"3734:10:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":14002,"name":"uint24","nodeType":"ElementaryTypeName","src":"3734:6:60","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":14008,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":14004,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13979,"src":"3748:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}},"id":14005,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":13837,"src":"3748:9:60","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":19608,"src":"3748:25:60","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":14007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3748:27:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint24_$","typeString":"tuple(address,address,uint24)"}},"nodeType":"VariableDeclarationStatement","src":"3698:77:60"},{"assignments":[14010],"declarations":[{"constant":false,"id":14010,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":14062,"src":"3788:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14009,"name":"bool","nodeType":"ElementaryTypeName","src":"3788:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":14014,"initialValue":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14011,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13999,"src":"3806:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":14012,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14001,"src":"3816:8:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3806:18:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3788:36:60"},{"assignments":[14016,14018],"declarations":[{"constant":false,"id":14016,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":14062,"src":"3838:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14015,"name":"int256","nodeType":"ElementaryTypeName","src":"3838:6:60","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":14018,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":14062,"src":"3854:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14017,"name":"int256","nodeType":"ElementaryTypeName","src":"3854:6:60","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":14051,"initialValue":{"arguments":[{"id":14025,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13975,"src":"3940:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14026,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14010,"src":"3968:10:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14027,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13973,"src":"3997:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5525,"src":"3997:17:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":14029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3997:19:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":14032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14030,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13977,"src":"4035:17:60","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":14031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4056:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4035:22:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":14044,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13977,"src":"4177:17:60","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":14045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4035:159:60","trueExpression":{"components":[{"condition":{"id":14033,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14010,"src":"4082:10:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":14041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14038,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"4125:8:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":14039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":7053,"src":"4125:23:60","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":14040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4151:1:60","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4125:27:60","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":14042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4082:70:60","trueExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":14037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14034,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"4095:8:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":14035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":7049,"src":"4095:23:60","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":14036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4121:1:60","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4095:27:60","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":14043,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4081:72:60","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":14048,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13979,"src":"4224:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}],"expression":{"id":14046,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4213:3:60","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14047,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"4213:10:60","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4213:16:60","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":14020,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13999,"src":"3893:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14021,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14001,"src":"3902:8:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14022,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14003,"src":"3912:3:60","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":14019,"name":"getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13835,"src":"3885:7:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint24_$returns$_t_contract$_IElixirPool_$3273_$","typeString":"function (address,address,uint24) view returns (contract IElixirPool)"}},"id":14023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3885:31:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":14024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":3392,"src":"3885:36:60","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":14050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3885:359:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"nodeType":"VariableDeclarationStatement","src":"3837:407:60"},{"expression":{"arguments":[{"id":14059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"4272:33:60","subExpression":{"components":[{"condition":{"id":14054,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14010,"src":"4274:10:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":14056,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14016,"src":"4297:7:60","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":14057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4274:30:60","trueExpression":{"id":14055,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14018,"src":"4287:7:60","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":14058,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4273:32:60","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14053,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4264:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14052,"name":"uint256","nodeType":"ElementaryTypeName","src":"4264:7:60","typeDescriptions":{}}},"id":14060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4264:42:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13983,"id":14061,"nodeType":"Return","src":"4257:49:60"}]},"documentation":{"id":13971,"nodeType":"StructuredDocumentation","src":"3306:43:60","text":"@dev Performs a single exact input swap"},"id":14063,"implemented":true,"kind":"function","modifiers":[],"name":"exactInputInternal","nodeType":"FunctionDefinition","parameters":{"id":13980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13973,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":14063,"src":"3393:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13972,"name":"uint256","nodeType":"ElementaryTypeName","src":"3393:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13975,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":14063,"src":"3420:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13974,"name":"address","nodeType":"ElementaryTypeName","src":"3420:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13977,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":14063,"src":"3448:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":13976,"name":"uint160","nodeType":"ElementaryTypeName","src":"3448:7:60","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":13979,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":14063,"src":"3484:28:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData"},"typeName":{"id":13978,"name":"SwapCallbackData","nodeType":"UserDefinedTypeName","referencedDeclaration":13840,"src":"3484:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_storage_ptr","typeString":"struct SwapRouter.SwapCallbackData"}},"visibility":"internal"}],"src":"3382:137:60"},"returnParameters":{"id":13983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13982,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":14063,"src":"3537:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13981,"name":"uint256","nodeType":"ElementaryTypeName","src":"3537:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3536:19:60"},"scope":14422,"src":"3355:959:60","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[16303],"body":{"id":14111,"nodeType":"Block","src":"4556:383:60","statements":[{"expression":{"id":14098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14076,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14074,"src":"4567:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":14078,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14066,"src":"4612:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$16295_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":14079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":16290,"src":"4612:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":14080,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14066,"src":"4642:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$16295_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":14081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":16286,"src":"4642:16:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14082,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14066,"src":"4673:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$16295_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":14083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":16294,"src":"4673:24:60","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"arguments":[{"expression":{"id":14087,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14066,"src":"4753:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$16295_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":14088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":16280,"src":"4753:14:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14089,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14066,"src":"4769:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$16295_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":14090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":16284,"src":"4769:10:60","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"expression":{"id":14091,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14066,"src":"4781:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$16295_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":14092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":16282,"src":"4781:15:60","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":14085,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4736:3:60","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"4736:16:60","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4736:61:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":14094,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4806:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4806:10:60","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":14084,"name":"SwapCallbackData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13840,"src":"4712:16:60","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapCallbackData_$13840_storage_ptr_$","typeString":"type(struct SwapRouter.SwapCallbackData storage pointer)"}},"id":14096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["path","payer"],"nodeType":"FunctionCall","src":"4712:106:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_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_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}],"id":14077,"name":"exactInputInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14063,"src":"4579:18:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint160_$_t_struct$_SwapCallbackData_$13840_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,address,uint160,struct SwapRouter.SwapCallbackData memory) returns (uint256)"}},"id":14097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4579:250:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4567:262:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14099,"nodeType":"ExpressionStatement","src":"4567:262:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14101,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14074,"src":"4848:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":14102,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14066,"src":"4861:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$16295_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":14103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amountOutMinimum","nodeType":"MemberAccess","referencedDeclaration":16292,"src":"4861:23:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4848:36:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6f206c6974746c65207265636569766564","id":14105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4886:21:60","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":14100,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4840:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4840:68:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14107,"nodeType":"ExpressionStatement","src":"4840:68:60"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14108,"name":"_refundETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15103,"src":"4919:10:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":14109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4919:12:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14110,"nodeType":"ExpressionStatement","src":"4919:12:60"}]},"documentation":{"id":14064,"nodeType":"StructuredDocumentation","src":"4322:27:60","text":"@inheritdoc ISwapRouter"},"functionSelector":"414bf389","id":14112,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":14070,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14066,"src":"4497:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$16295_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":14071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":16288,"src":"4497:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14072,"modifierName":{"id":14069,"name":"checkDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"4483:13:60","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"4483:30:60"}],"name":"exactInputSingle","nodeType":"FunctionDefinition","overrides":{"id":14068,"nodeType":"OverrideSpecifier","overrides":[],"src":"4465:8:60"},"parameters":{"id":14067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14066,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":14112,"src":"4381:38:60","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$16295_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"},"typeName":{"id":14065,"name":"ExactInputSingleParams","nodeType":"UserDefinedTypeName","referencedDeclaration":16295,"src":"4381:22:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$16295_storage_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"}},"visibility":"internal"}],"src":"4380:40:60"},"returnParameters":{"id":14075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14074,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":14112,"src":"4532:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14073,"name":"uint256","nodeType":"ElementaryTypeName","src":"4532:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4531:19:60"},"scope":14422,"src":"4355:584:60","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[16322],"body":{"id":14202,"nodeType":"Block","src":"5167:1145:60","statements":[{"assignments":[14126],"declarations":[{"constant":false,"id":14126,"mutability":"mutable","name":"payer","nodeType":"VariableDeclaration","scope":14202,"src":"5178:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14125,"name":"address","nodeType":"ElementaryTypeName","src":"5178:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":14129,"initialValue":{"expression":{"id":14127,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5194:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5194:10:60","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"5178:26:60"},{"body":{"id":14189,"nodeType":"Block","src":"5267:934:60","statements":[{"assignments":[14132],"declarations":[{"constant":false,"id":14132,"mutability":"mutable","name":"hasMultiplePools","nodeType":"VariableDeclaration","scope":14189,"src":"5282:21:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14131,"name":"bool","nodeType":"ElementaryTypeName","src":"5282:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":14137,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":14133,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14115,"src":"5306:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$16314_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"id":14134,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":16305,"src":"5306:11:60","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasMultiplePools","nodeType":"MemberAccess","referencedDeclaration":19556,"src":"5306:28:60","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":14136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5306:30:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"5282:54:60"},{"expression":{"id":14161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":14138,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14115,"src":"5433:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$16314_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"id":14140,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":16311,"src":"5433:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":14142,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14115,"src":"5488:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$16314_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"id":14143,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":16311,"src":"5488:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"condition":{"id":14144,"name":"hasMultiplePools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14132,"src":"5522:16:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":14149,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14115,"src":"5557:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$16314_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"id":14150,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":16307,"src":"5557:16:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5522:51:60","trueExpression":{"arguments":[{"id":14147,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5549:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_SwapRouter_$14422","typeString":"contract SwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapRouter_$14422","typeString":"contract SwapRouter"}],"id":14146,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5541:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14145,"name":"address","nodeType":"ElementaryTypeName","src":"5541:7:60","typeDescriptions":{}}},"id":14148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5541:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":14152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5643:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":14154,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14115,"src":"5709:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$16314_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"id":14155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":16305,"src":"5709:11:60","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getFirstPool","nodeType":"MemberAccess","referencedDeclaration":19623,"src":"5709:24:60","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":14157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5709:26:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":14158,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14126,"src":"5813:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14153,"name":"SwapCallbackData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13840,"src":"5663:16:60","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapCallbackData_$13840_storage_ptr_$","typeString":"type(struct SwapRouter.SwapCallbackData storage pointer)"}},"id":14159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["path","payer"],"nodeType":"FunctionCall","src":"5663:175:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_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_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}],"id":14141,"name":"exactInputInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14063,"src":"5451:18:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint160_$_t_struct$_SwapCallbackData_$13840_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,address,uint160,struct SwapRouter.SwapCallbackData memory) returns (uint256)"}},"id":14160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5451:402:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5433:420:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14162,"nodeType":"ExpressionStatement","src":"5433:420:60"},{"condition":{"id":14163,"name":"hasMultiplePools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14132,"src":"5930:16:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":14187,"nodeType":"Block","src":"6104:86:60","statements":[{"expression":{"id":14184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14181,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14123,"src":"6123:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":14182,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14115,"src":"6135:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$16314_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"id":14183,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":16311,"src":"6135:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6123:27:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14185,"nodeType":"ExpressionStatement","src":"6123:27:60"},{"id":14186,"nodeType":"Break","src":"6169:5:60"}]},"id":14188,"nodeType":"IfStatement","src":"5926:264:60","trueBody":{"id":14180,"nodeType":"Block","src":"5948:150:60","statements":[{"expression":{"id":14169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14164,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14126,"src":"5967:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14167,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5983:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_SwapRouter_$14422","typeString":"contract SwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapRouter_$14422","typeString":"contract SwapRouter"}],"id":14166,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5975:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14165,"name":"address","nodeType":"ElementaryTypeName","src":"5975:7:60","typeDescriptions":{}}},"id":14168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5975:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"5967:21:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14170,"nodeType":"ExpressionStatement","src":"5967:21:60"},{"expression":{"id":14178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":14171,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14115,"src":"6045:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$16314_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"id":14173,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":16305,"src":"6045:11:60","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":14174,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14115,"src":"6059:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$16314_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"id":14175,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":16305,"src":"6059:11:60","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"skipToken","nodeType":"MemberAccess","referencedDeclaration":19641,"src":"6059:21:60","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":14177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6059:23:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"6045:37:60","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14179,"nodeType":"ExpressionStatement","src":"6045:37:60"}]}}]},"condition":{"hexValue":"74727565","id":14130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5261:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":14190,"nodeType":"WhileStatement","src":"5254:947:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14192,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14123,"src":"6221:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":14193,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14115,"src":"6234:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$16314_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"id":14194,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amountOutMinimum","nodeType":"MemberAccess","referencedDeclaration":16313,"src":"6234:23:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6221:36:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6f206c6974746c65207265636569766564","id":14196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6259:21:60","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":14191,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6213:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6213:68:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14198,"nodeType":"ExpressionStatement","src":"6213:68:60"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14199,"name":"_refundETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15103,"src":"6292:10:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":14200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6292:12:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14201,"nodeType":"ExpressionStatement","src":"6292:12:60"}]},"documentation":{"id":14113,"nodeType":"StructuredDocumentation","src":"4947:27:60","text":"@inheritdoc ISwapRouter"},"functionSelector":"c04b8d59","id":14203,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":14119,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14115,"src":"5108:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$16314_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"id":14120,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":16309,"src":"5108:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14121,"modifierName":{"id":14118,"name":"checkDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"5094:13:60","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"5094:30:60"}],"name":"exactInput","nodeType":"FunctionDefinition","overrides":{"id":14117,"nodeType":"OverrideSpecifier","overrides":[],"src":"5076:8:60"},"parameters":{"id":14116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14115,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":14203,"src":"5000:30:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$16314_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams"},"typeName":{"id":14114,"name":"ExactInputParams","nodeType":"UserDefinedTypeName","referencedDeclaration":16314,"src":"5000:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$16314_storage_ptr","typeString":"struct ISwapRouter.ExactInputParams"}},"visibility":"internal"}],"src":"4999:32:60"},"returnParameters":{"id":14124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14123,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":14203,"src":"5143:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14122,"name":"uint256","nodeType":"ElementaryTypeName","src":"5143:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5142:19:60"},"scope":14422,"src":"4980:1332:60","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":14326,"nodeType":"Block","src":"6572:1163:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14217,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14208,"src":"6651:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":14220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6672:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":14219,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6664:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14218,"name":"address","nodeType":"ElementaryTypeName","src":"6664:7:60","typeDescriptions":{}}},"id":14221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6664:10:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"6651:23:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14230,"nodeType":"IfStatement","src":"6647:54:60","trueBody":{"expression":{"id":14228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14223,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14208,"src":"6676:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14226,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6696:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_SwapRouter_$14422","typeString":"contract SwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapRouter_$14422","typeString":"contract SwapRouter"}],"id":14225,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6688:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14224,"name":"address","nodeType":"ElementaryTypeName","src":"6688:7:60","typeDescriptions":{}}},"id":14227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6688:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"6676:25:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14229,"nodeType":"ExpressionStatement","src":"6676:25:60"}},{"assignments":[14232,14234,14236],"declarations":[{"constant":false,"id":14232,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":14326,"src":"6715:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14231,"name":"address","nodeType":"ElementaryTypeName","src":"6715:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14234,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":14326,"src":"6733:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14233,"name":"address","nodeType":"ElementaryTypeName","src":"6733:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14236,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":14326,"src":"6750:10:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":14235,"name":"uint24","nodeType":"ElementaryTypeName","src":"6750:6:60","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":14241,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":14237,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14212,"src":"6764:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}},"id":14238,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":13837,"src":"6764:9:60","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":19608,"src":"6764:25:60","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":14240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6764:27:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint24_$","typeString":"tuple(address,address,uint24)"}},"nodeType":"VariableDeclarationStatement","src":"6714:77:60"},{"assignments":[14243],"declarations":[{"constant":false,"id":14243,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":14326,"src":"6804:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14242,"name":"bool","nodeType":"ElementaryTypeName","src":"6804:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":14247,"initialValue":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14244,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14234,"src":"6822:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":14245,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14232,"src":"6832:8:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6822:18:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"6804:36:60"},{"assignments":[14249,14251],"declarations":[{"constant":false,"id":14249,"mutability":"mutable","name":"amount0Delta","nodeType":"VariableDeclaration","scope":14326,"src":"6854:19:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14248,"name":"int256","nodeType":"ElementaryTypeName","src":"6854:6:60","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":14251,"mutability":"mutable","name":"amount1Delta","nodeType":"VariableDeclaration","scope":14326,"src":"6875:19:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14250,"name":"int256","nodeType":"ElementaryTypeName","src":"6875:6:60","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":14285,"initialValue":{"arguments":[{"id":14258,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14208,"src":"6966:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14259,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14243,"src":"6994:10:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":14263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7023:21:60","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14260,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14206,"src":"7024:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5525,"src":"7024:18:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":14262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7024:20:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":14266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14264,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14210,"src":"7063:17:60","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":14265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7084:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7063:22:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":14278,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14210,"src":"7205:17:60","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":14279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7063:159:60","trueExpression":{"components":[{"condition":{"id":14267,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14243,"src":"7110:10:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":14275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14272,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"7153:8:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":14273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":7053,"src":"7153:23:60","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":14274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7179:1:60","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7153:27:60","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":14276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7110:70:60","trueExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":14271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14268,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"7123:8:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":14269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":7049,"src":"7123:23:60","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":14270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7149:1:60","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7123:27:60","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":14277,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7109:72:60","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":14282,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14212,"src":"7252:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}],"expression":{"id":14280,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7241:3:60","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14281,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"7241:10:60","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7241:16:60","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":14253,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14234,"src":"6919:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14254,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14232,"src":"6928:8:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14255,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14236,"src":"6938:3:60","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":14252,"name":"getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13835,"src":"6911:7:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint24_$returns$_t_contract$_IElixirPool_$3273_$","typeString":"function (address,address,uint24) view returns (contract IElixirPool)"}},"id":14256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6911:31:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":14257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":3392,"src":"6911:36:60","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":14284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6911:361:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"nodeType":"VariableDeclarationStatement","src":"6853:419:60"},{"assignments":[14287],"declarations":[{"constant":false,"id":14287,"mutability":"mutable","name":"amountOutReceived","nodeType":"VariableDeclaration","scope":14326,"src":"7285:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14286,"name":"uint256","nodeType":"ElementaryTypeName","src":"7285:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14288,"nodeType":"VariableDeclarationStatement","src":"7285:25:60"},{"expression":{"id":14314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":14289,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14215,"src":"7322:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14290,"name":"amountOutReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14287,"src":"7332:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14291,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7321:29:60","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":14292,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14243,"src":"7353:10:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"arguments":[{"id":14305,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14251,"src":"7451:12:60","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14304,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7443:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14303,"name":"uint256","nodeType":"ElementaryTypeName","src":"7443:7:60","typeDescriptions":{}}},"id":14306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7443:21:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":14310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7474:13:60","subExpression":{"id":14309,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14249,"src":"7475:12:60","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14308,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7466:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14307,"name":"uint256","nodeType":"ElementaryTypeName","src":"7466:7:60","typeDescriptions":{}}},"id":14311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7466:22:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14312,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7442:47:60","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":14313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7353:136:60","trueExpression":{"components":[{"arguments":[{"id":14295,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14249,"src":"7388:12:60","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7380:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14293,"name":"uint256","nodeType":"ElementaryTypeName","src":"7380:7:60","typeDescriptions":{}}},"id":14296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7380:21:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":14300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7411:13:60","subExpression":{"id":14299,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14251,"src":"7412:12:60","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14298,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7403:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14297,"name":"uint256","nodeType":"ElementaryTypeName","src":"7403:7:60","typeDescriptions":{}}},"id":14301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7403:22:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14302,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7379:47:60","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":"7321:168:60","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14315,"nodeType":"ExpressionStatement","src":"7321:168:60"},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":14318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14316,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14210,"src":"7664:17:60","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":14317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7685:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7664:22:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14325,"nodeType":"IfStatement","src":"7660:67:60","trueBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14320,"name":"amountOutReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14287,"src":"7696:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":14321,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14206,"src":"7717:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7696:30:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":14319,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7688:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":14323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7688:39:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14324,"nodeType":"ExpressionStatement","src":"7688:39:60"}}]},"documentation":{"id":14204,"nodeType":"StructuredDocumentation","src":"6320:44:60","text":"@dev Performs a single exact output swap"},"id":14327,"implemented":true,"kind":"function","modifiers":[],"name":"exactOutputInternal","nodeType":"FunctionDefinition","parameters":{"id":14213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14206,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":14327,"src":"6409:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14205,"name":"uint256","nodeType":"ElementaryTypeName","src":"6409:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14208,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":14327,"src":"6437:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14207,"name":"address","nodeType":"ElementaryTypeName","src":"6437:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14210,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":14327,"src":"6465:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":14209,"name":"uint160","nodeType":"ElementaryTypeName","src":"6465:7:60","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":14212,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":14327,"src":"6501:28:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData"},"typeName":{"id":14211,"name":"SwapCallbackData","nodeType":"UserDefinedTypeName","referencedDeclaration":13840,"src":"6501:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_storage_ptr","typeString":"struct SwapRouter.SwapCallbackData"}},"visibility":"internal"}],"src":"6398:138:60"},"returnParameters":{"id":14216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14215,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":14327,"src":"6554:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14214,"name":"uint256","nodeType":"ElementaryTypeName","src":"6554:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6553:18:60"},"scope":14422,"src":"6370:1365:60","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[16347],"body":{"id":14376,"nodeType":"Block","src":"7978:548:60","statements":[{"expression":{"id":14362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14340,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14338,"src":"8046:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":14342,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14330,"src":"8091:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$16339_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":14343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":16334,"src":"8091:16:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":14344,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14330,"src":"8122:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$16339_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":14345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":16330,"src":"8122:16:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14346,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14330,"src":"8153:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$16339_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":14347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":16338,"src":"8153:24:60","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"arguments":[{"expression":{"id":14351,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14330,"src":"8233:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$16339_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":14352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":16326,"src":"8233:15:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14353,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14330,"src":"8250:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$16339_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":14354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":16328,"src":"8250:10:60","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"expression":{"id":14355,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14330,"src":"8262:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$16339_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":14356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":16324,"src":"8262:14:60","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":14349,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8216:3:60","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14350,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"8216:16:60","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8216:61:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":14358,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8286:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8286:10:60","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":14348,"name":"SwapCallbackData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13840,"src":"8192:16:60","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapCallbackData_$13840_storage_ptr_$","typeString":"type(struct SwapRouter.SwapCallbackData storage pointer)"}},"id":14360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["path","payer"],"nodeType":"FunctionCall","src":"8192:106:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_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_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}],"id":14341,"name":"exactOutputInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14327,"src":"8057:19:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint160_$_t_struct$_SwapCallbackData_$13840_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,address,uint160,struct SwapRouter.SwapCallbackData memory) returns (uint256)"}},"id":14361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8057:252:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8046:263:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14363,"nodeType":"ExpressionStatement","src":"8046:263:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14365,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14338,"src":"8330:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":14366,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14330,"src":"8342:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$16339_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":14367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amountInMaximum","nodeType":"MemberAccess","referencedDeclaration":16336,"src":"8342:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8330:34:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6f206d75636820726571756573746564","id":14369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8366:20:60","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":14364,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8322:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8322:65:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14371,"nodeType":"ExpressionStatement","src":"8322:65:60"},{"expression":{"id":14374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14372,"name":"amountInCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13797,"src":"8477:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14373,"name":"DEFAULT_AMOUNT_IN_CACHED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13793,"src":"8494:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8477:41:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14375,"nodeType":"ExpressionStatement","src":"8477:41:60"}]},"documentation":{"id":14328,"nodeType":"StructuredDocumentation","src":"7743:27:60","text":"@inheritdoc ISwapRouter"},"functionSelector":"db3e2198","id":14377,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":14334,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14330,"src":"7920:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$16339_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":14335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":16332,"src":"7920:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14336,"modifierName":{"id":14333,"name":"checkDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"7906:13:60","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"7906:30:60"}],"name":"exactOutputSingle","nodeType":"FunctionDefinition","overrides":{"id":14332,"nodeType":"OverrideSpecifier","overrides":[],"src":"7888:8:60"},"parameters":{"id":14331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14330,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":14377,"src":"7803:39:60","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$16339_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"},"typeName":{"id":14329,"name":"ExactOutputSingleParams","nodeType":"UserDefinedTypeName","referencedDeclaration":16339,"src":"7803:23:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$16339_storage_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"}},"visibility":"internal"}],"src":"7802:41:60"},"returnParameters":{"id":14339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14338,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":14377,"src":"7955:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14337,"name":"uint256","nodeType":"ElementaryTypeName","src":"7955:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7954:18:60"},"scope":14422,"src":"7776:750:60","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[16366],"body":{"id":14420,"nodeType":"Block","src":"8757:585:60","statements":[{"expression":{"arguments":[{"expression":{"id":14391,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14380,"src":"9023:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$16358_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams calldata"}},"id":14392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":16355,"src":"9023:16:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":14393,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14380,"src":"9054:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$16358_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams calldata"}},"id":14394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":16351,"src":"9054:16:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":14395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9085:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"expression":{"id":14397,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14380,"src":"9125:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$16358_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams calldata"}},"id":14398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":16349,"src":"9125:11:60","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":14399,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9145:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"9145:10:60","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":14396,"name":"SwapCallbackData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13840,"src":"9101:16:60","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapCallbackData_$13840_storage_ptr_$","typeString":"type(struct SwapRouter.SwapCallbackData storage pointer)"}},"id":14401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["path","payer"],"nodeType":"FunctionCall","src":"9101:56:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$13840_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_$13840_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}],"id":14390,"name":"exactOutputInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14327,"src":"8989:19:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint160_$_t_struct$_SwapCallbackData_$13840_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,address,uint160,struct SwapRouter.SwapCallbackData memory) returns (uint256)"}},"id":14402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8989:179:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14403,"nodeType":"ExpressionStatement","src":"8989:179:60"},{"expression":{"id":14406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14404,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14388,"src":"9181:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14405,"name":"amountInCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13797,"src":"9192:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9181:25:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14407,"nodeType":"ExpressionStatement","src":"9181:25:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14409,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14388,"src":"9225:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":14410,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14380,"src":"9237:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$16358_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams calldata"}},"id":14411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amountInMaximum","nodeType":"MemberAccess","referencedDeclaration":16357,"src":"9237:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9225:34:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6f206d75636820726571756573746564","id":14413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9261:20:60","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":14408,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9217:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9217:65:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14415,"nodeType":"ExpressionStatement","src":"9217:65:60"},{"expression":{"id":14418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14416,"name":"amountInCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13797,"src":"9293:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14417,"name":"DEFAULT_AMOUNT_IN_CACHED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13793,"src":"9310:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9293:41:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14419,"nodeType":"ExpressionStatement","src":"9293:41:60"}]},"documentation":{"id":14378,"nodeType":"StructuredDocumentation","src":"8534:27:60","text":"@inheritdoc ISwapRouter"},"functionSelector":"f28c0498","id":14421,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":14384,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14380,"src":"8699:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$16358_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams calldata"}},"id":14385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":16353,"src":"8699:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14386,"modifierName":{"id":14383,"name":"checkDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"8685:13:60","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"8685:30:60"}],"name":"exactOutput","nodeType":"FunctionDefinition","overrides":{"id":14382,"nodeType":"OverrideSpecifier","overrides":[],"src":"8667:8:60"},"parameters":{"id":14381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14380,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":14421,"src":"8588:33:60","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$16358_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams"},"typeName":{"id":14379,"name":"ExactOutputParams","nodeType":"UserDefinedTypeName","referencedDeclaration":16358,"src":"8588:17:60","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$16358_storage_ptr","typeString":"struct ISwapRouter.ExactOutputParams"}},"visibility":"internal"}],"src":"8587:35:60"},"returnParameters":{"id":14389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14388,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":14421,"src":"8734:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14387,"name":"uint256","nodeType":"ElementaryTypeName","src":"8734:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8733:18:60"},"scope":14422,"src":"8567:775:60","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":14423,"src":"749:8596:60"}],"src":"46:9301:60"},"id":60},"contracts/elixir-periphery/base/ERC721Permit.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/base/ERC721Permit.sol","exportedSymbols":{"Address":[32502],"ChainId":[17507],"Context":[32525],"ERC165":[30366],"ERC721":[32014],"ERC721Permit":[14624],"EnumerableMap":[33085],"EnumerableSet":[33577],"IERC1271":[16404],"IERC165":[30378],"IERC721":[32130],"IERC721Enumerable":[32161],"IERC721Metadata":[32188],"IERC721Permit":[15699],"IERC721Receiver":[32206],"PeripheryValidation":[15380],"SafeMath":[30733],"Strings":[33664]},"id":14625,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14424,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:61"},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/ERC721.sol","file":"openzeppelin-contracts-solc-0.7/token/ERC721/ERC721.sol","id":14425,"nodeType":"ImportDirective","scope":14625,"sourceUnit":32015,"src":"73:65:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/Address.sol","file":"openzeppelin-contracts-solc-0.7/utils/Address.sol","id":14426,"nodeType":"ImportDirective","scope":14625,"sourceUnit":32503,"src":"140:59:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/ChainId.sol","file":"../libraries/ChainId.sol","id":14427,"nodeType":"ImportDirective","scope":14625,"sourceUnit":17508,"src":"203:34:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/external/IERC1271.sol","file":"../interfaces/external/IERC1271.sol","id":14428,"nodeType":"ImportDirective","scope":14625,"sourceUnit":16405,"src":"239:45:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/IERC721Permit.sol","file":"../interfaces/IERC721Permit.sol","id":14429,"nodeType":"ImportDirective","scope":14625,"sourceUnit":15700,"src":"286:41:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/PeripheryValidation.sol","file":"./PeripheryValidation.sol","id":14430,"nodeType":"ImportDirective","scope":14625,"sourceUnit":15381,"src":"329:35:61","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":14432,"name":"PeripheryValidation","nodeType":"UserDefinedTypeName","referencedDeclaration":15380,"src":"516:19:61","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryValidation_$15380","typeString":"contract PeripheryValidation"}},"id":14433,"nodeType":"InheritanceSpecifier","src":"516:19:61"},{"baseName":{"id":14434,"name":"ERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":32014,"src":"537:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_ERC721_$32014","typeString":"contract ERC721"}},"id":14435,"nodeType":"InheritanceSpecifier","src":"537:6:61"},{"baseName":{"id":14436,"name":"IERC721Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":15699,"src":"545:13:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Permit_$15699","typeString":"contract IERC721Permit"}},"id":14437,"nodeType":"InheritanceSpecifier","src":"545:13:61"}],"contractDependencies":[15380,15699,30366,30378,32014,32130,32161,32188,32525],"contractKind":"contract","documentation":{"id":14431,"nodeType":"StructuredDocumentation","src":"368:114:61","text":"@title ERC721 with permit\n @notice Nonfungible tokens that support an approve via signature, i.e. permit"},"fullyImplemented":false,"id":14624,"linearizedBaseContracts":[14624,15699,32014,32161,32188,32130,30366,30378,32525,15380],"name":"ERC721Permit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":14438,"nodeType":"StructuredDocumentation","src":"566:99:61","text":"@dev Gets the current nonce for a token ID and then increments it, returning the original value"},"id":14445,"implemented":false,"kind":"function","modifiers":[],"name":"_getAndIncrementNonce","nodeType":"FunctionDefinition","parameters":{"id":14441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14440,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":14445,"src":"702:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14439,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"701:17:61"},"returnParameters":{"id":14444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14443,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14445,"src":"745:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14442,"name":"uint256","nodeType":"ElementaryTypeName","src":"745:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"744:9:61"},"scope":14624,"src":"671:83:61","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":14446,"nodeType":"StructuredDocumentation","src":"762:71:61","text":"@dev The hash of the name used in the permit signature verification"},"id":14448,"mutability":"immutable","name":"nameHash","nodeType":"VariableDeclaration","scope":14624,"src":"839:34:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14447,"name":"bytes32","nodeType":"ElementaryTypeName","src":"839:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"documentation":{"id":14449,"nodeType":"StructuredDocumentation","src":"882:81:61","text":"@dev The hash of the version string used in the permit signature verification"},"id":14451,"mutability":"immutable","name":"versionHash","nodeType":"VariableDeclaration","scope":14624,"src":"969:37:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14450,"name":"bytes32","nodeType":"ElementaryTypeName","src":"969:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":14483,"nodeType":"Block","src":"1207:104:61","statements":[{"expression":{"id":14472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14465,"name":"nameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14448,"src":"1218:8:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":14469,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14454,"src":"1245:5:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":14468,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1239:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":14467,"name":"bytes","nodeType":"ElementaryTypeName","src":"1239:5:61","typeDescriptions":{}}},"id":14470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1239:12:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14466,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1229:9:61","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1229:23:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1218:34:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":14473,"nodeType":"ExpressionStatement","src":"1218:34:61"},{"expression":{"id":14481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14474,"name":"versionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14451,"src":"1263:11:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":14478,"name":"version_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14458,"src":"1293:8:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":14477,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1287:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":14476,"name":"bytes","nodeType":"ElementaryTypeName","src":"1287:5:61","typeDescriptions":{}}},"id":14479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1287:15:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14475,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1277:9:61","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1277:26:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1263:40:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":14482,"nodeType":"ExpressionStatement","src":"1263:40:61"}]},"documentation":{"id":14452,"nodeType":"StructuredDocumentation","src":"1015:49:61","text":"@notice Computes the nameHash and versionHash"},"id":14484,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":14461,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14454,"src":"1191:5:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":14462,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14456,"src":"1198:7:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":14463,"modifierName":{"id":14460,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32014,"src":"1184:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$32014_$","typeString":"type(contract ERC721)"}},"nodeType":"ModifierInvocation","src":"1184:22:61"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":14459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14454,"mutability":"mutable","name":"name_","nodeType":"VariableDeclaration","scope":14484,"src":"1092:19:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14453,"name":"string","nodeType":"ElementaryTypeName","src":"1092:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14456,"mutability":"mutable","name":"symbol_","nodeType":"VariableDeclaration","scope":14484,"src":"1122:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14455,"name":"string","nodeType":"ElementaryTypeName","src":"1122:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14458,"mutability":"mutable","name":"version_","nodeType":"VariableDeclaration","scope":14484,"src":"1154:22:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14457,"name":"string","nodeType":"ElementaryTypeName","src":"1154:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1081:102:61"},"returnParameters":{"id":14464,"nodeType":"ParameterList","parameters":[],"src":"1207:0:61"},"scope":14624,"src":"1070:241:61","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[15682],"body":{"id":14507,"nodeType":"Block","src":"1421:457:61","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"307838623733633363363962623866653364353132656363346366373539636337393233396637623137396230666661636161396137356435323262333934303066","id":14494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1633:66:61","typeDescriptions":{"typeIdentifier":"t_rational_63076024560530113402979550242307453568063438748328787417531900361828837441551_by_1","typeString":"int_const 6307...(69 digits omitted)...1551"},"value":"0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f"},{"id":14495,"name":"nameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14448,"src":"1722:8:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":14496,"name":"versionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14451,"src":"1753:11:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14497,"name":"ChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17507,"src":"1787:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChainId_$17507_$","typeString":"type(library ChainId)"}},"id":14498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"get","nodeType":"MemberAccess","referencedDeclaration":17506,"src":"1787:11:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":14499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1787:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":14502,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1831:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_ERC721Permit_$14624","typeString":"contract ERC721Permit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC721Permit_$14624","typeString":"contract ERC721Permit"}],"id":14501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1823:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14500,"name":"address","nodeType":"ElementaryTypeName","src":"1823:7:61","typeDescriptions":{}}},"id":14503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1823:13:61","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":14492,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1480:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1480:10:61","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1480:375:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14491,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1452:9:61","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1452:418:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":14490,"id":14506,"nodeType":"Return","src":"1432:438:61"}]},"documentation":{"id":14485,"nodeType":"StructuredDocumentation","src":"1319:29:61","text":"@inheritdoc IERC721Permit"},"functionSelector":"3644e515","id":14508,"implemented":true,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","overrides":{"id":14487,"nodeType":"OverrideSpecifier","overrides":[],"src":"1394:8:61"},"parameters":{"id":14486,"nodeType":"ParameterList","parameters":[],"src":"1379:2:61"},"returnParameters":{"id":14490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14489,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14508,"src":"1412:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14488,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1412:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1411:9:61"},"scope":14624,"src":"1354:524:61","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[15676],"constant":true,"documentation":{"id":14509,"nodeType":"StructuredDocumentation","src":"1886:146:61","text":"@inheritdoc IERC721Permit\n @dev Value is equal to keccak256(\"Permit(address spender,uint256 tokenId,uint256 nonce,uint256 deadline)\");"},"functionSelector":"30adf81f","id":14513,"mutability":"constant","name":"PERMIT_TYPEHASH","nodeType":"VariableDeclaration","overrides":{"id":14511,"nodeType":"OverrideSpecifier","overrides":[],"src":"2062:8:61"},"scope":14624,"src":"2038:126:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14510,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2038:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834396563663333336535623863393563343066646166633935633161643133366538393134613866623535653964633862623031656161383361326466396164","id":14512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2098:66:61","typeDescriptions":{"typeIdentifier":"t_rational_33437492377378226760087498811281282659873828549087316441254475749622436198829_by_1","typeString":"int_const 3343...(69 digits omitted)...8829"},"value":"0x49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad"},"visibility":"public"},{"baseFunctions":[15698],"body":{"id":14622,"nodeType":"Block","src":"2418:890:61","statements":[{"assignments":[14534],"declarations":[{"constant":false,"id":14534,"mutability":"mutable","name":"digest","nodeType":"VariableDeclaration","scope":14622,"src":"2429:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14533,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2429:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":14555,"initialValue":{"arguments":[{"arguments":[{"hexValue":"1901","id":14538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2526:10:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},"value":"\u0019\u0001"},{"arguments":[],"expression":{"argumentTypes":[],"id":14539,"name":"DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14508,"src":"2559:16:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":14540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2559:18:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"id":14544,"name":"PERMIT_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14513,"src":"2621:15:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":14545,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14516,"src":"2638:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14546,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14518,"src":"2647:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":14548,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14518,"src":"2678:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14547,"name":"_getAndIncrementNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14445,"src":"2656:21:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":14549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2656:30:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14550,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14520,"src":"2688:8:61","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":14542,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2610:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2610:10:61","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2610:87:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14541,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2600:9:61","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2600:98:61","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":14536,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2487:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2487:16:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2487:230:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14535,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2459:9:61","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2459:273:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2429:303:61"},{"assignments":[14557],"declarations":[{"constant":false,"id":14557,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":14622,"src":"2743:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14556,"name":"address","nodeType":"ElementaryTypeName","src":"2743:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":14561,"initialValue":{"arguments":[{"id":14559,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14518,"src":"2767:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14558,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31218,"src":"2759:7:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":14560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2759:16:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2743:32:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14563,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14516,"src":"2794:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":14564,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14557,"src":"2805:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2794:16:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732315065726d69743a20617070726f76616c20746f206f776e6572","id":14566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2812:33:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_99779a3a50d1aa184b1171397a4bb9abb7558220b5a24b3fa36ed6aa1232ef51","typeString":"literal_string \"ERC721Permit: approval to owner\""},"value":"ERC721Permit: approval to owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_99779a3a50d1aa184b1171397a4bb9abb7558220b5a24b3fa36ed6aa1232ef51","typeString":"literal_string \"ERC721Permit: approval to owner\""}],"id":14562,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2786:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2786:60:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14568,"nodeType":"ExpressionStatement","src":"2786:60:61"},{"condition":{"arguments":[{"id":14571,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14557,"src":"2882:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14569,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32502,"src":"2863:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$32502_$","typeString":"type(library Address)"}},"id":14570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":32226,"src":"2863:18:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":14572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2863:25:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":14615,"nodeType":"Block","src":"3029:233:61","statements":[{"assignments":[14593],"declarations":[{"constant":false,"id":14593,"mutability":"mutable","name":"recoveredAddress","nodeType":"VariableDeclaration","scope":14615,"src":"3044:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14592,"name":"address","nodeType":"ElementaryTypeName","src":"3044:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":14600,"initialValue":{"arguments":[{"id":14595,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14534,"src":"3081:6:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":14596,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14522,"src":"3089:1:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":14597,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14524,"src":"3092:1:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":14598,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14526,"src":"3095:1:61","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":14594,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"3071:9:61","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":14599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3071:26:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3044:53:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14602,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14593,"src":"3138:16:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":14605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3166:1:61","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":14604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3158:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14603,"name":"address","nodeType":"ElementaryTypeName","src":"3158:7:61","typeDescriptions":{}}},"id":14606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3158:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3138:30:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14608,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14593,"src":"3172:16:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":14609,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14557,"src":"3192:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3172:25:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3138:59:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964207369676e6174757265","id":14612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3216:19:61","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":14601,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3112:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3112:138:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14614,"nodeType":"ExpressionStatement","src":"3112:138:61"}]},"id":14616,"nodeType":"IfStatement","src":"2859:403:61","trueBody":{"id":14591,"nodeType":"Block","src":"2890:133:61","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":14587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":14578,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14534,"src":"2946:6:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":14581,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14524,"src":"2971:1:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":14582,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14526,"src":"2974:1:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":14583,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14522,"src":"2977:1:61","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":14579,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2954:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14580,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2954:16:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2954:25:61","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":14575,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14557,"src":"2922:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14574,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16404,"src":"2913:8:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1271_$16404_$","typeString":"type(contract IERC1271)"}},"id":14576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2913:15:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1271_$16404","typeString":"contract IERC1271"}},"id":14577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isValidSignature","nodeType":"MemberAccess","referencedDeclaration":16403,"src":"2913:32:61","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":14585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2913:67:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783136323662613765","id":14586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2984:10:61","typeDescriptions":{"typeIdentifier":"t_rational_371636862_by_1","typeString":"int_const 371636862"},"value":"0x1626ba7e"},"src":"2913:81:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e617574686f72697a6564","id":14588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2996:14:61","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":14573,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2905:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2905:106:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14590,"nodeType":"ExpressionStatement","src":"2905:106:61"}]}},{"expression":{"arguments":[{"id":14618,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14516,"src":"3283:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14619,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14518,"src":"3292:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14617,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32002,"src":"3274:8:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":14620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3274:26:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14621,"nodeType":"ExpressionStatement","src":"3274:26:61"}]},"documentation":{"id":14514,"nodeType":"StructuredDocumentation","src":"2173:29:61","text":"@inheritdoc IERC721Permit"},"functionSelector":"7ac2ff7b","id":14623,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":14530,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14520,"src":"2408:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14531,"modifierName":{"id":14529,"name":"checkDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"2394:13:61","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"2394:23:61"}],"name":"permit","nodeType":"FunctionDefinition","overrides":{"id":14528,"nodeType":"OverrideSpecifier","overrides":[],"src":"2385:8:61"},"parameters":{"id":14527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14516,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":14623,"src":"2234:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14515,"name":"address","nodeType":"ElementaryTypeName","src":"2234:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14518,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":14623,"src":"2260:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14517,"name":"uint256","nodeType":"ElementaryTypeName","src":"2260:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14520,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":14623,"src":"2286:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14519,"name":"uint256","nodeType":"ElementaryTypeName","src":"2286:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14522,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":14623,"src":"2313:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":14521,"name":"uint8","nodeType":"ElementaryTypeName","src":"2313:5:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":14524,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":14623,"src":"2331:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14523,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2331:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14526,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":14623,"src":"2351:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14525,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2351:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2223:144:61"},"returnParameters":{"id":14532,"nodeType":"ParameterList","parameters":[],"src":"2418:0:61"},"scope":14624,"src":"2208:1100:61","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":14625,"src":"482:2829:61"}],"src":"46:3267:61"},"id":61},"contracts/elixir-periphery/base/LiquidityManagement.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/base/LiquidityManagement.sol","exportedSymbols":{"CallbackValidation":[17495],"FixedPoint96":[4075],"FullMath":[4248],"IERC20":[31070],"IElixirFactory":[3251],"IElixirMintCallback":[3301],"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"IPeripheryImmutableState":[16125],"IPeripheryPayments":[16151],"IWETH9":[16445],"LiquidityAmounts":[17982],"LiquidityManagement":[14839],"PeripheryImmutableState":[14955],"PeripheryPayments":[15172],"PoolAddress":[19734],"TickMath":[7567],"TransferHelper":[20731]},"id":14840,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14626,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:62"},{"id":14627,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"71:19:62"},{"absolutePath":"contracts/elixir-core/interfaces/IElixirFactory.sol","file":"../../elixir-core/interfaces/IElixirFactory.sol","id":14628,"nodeType":"ImportDirective","scope":14840,"sourceUnit":3252,"src":"94:57:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol","file":"../../elixir-core/interfaces/callback/IElixirMintCallback.sol","id":14629,"nodeType":"ImportDirective","scope":14840,"sourceUnit":3302,"src":"153:71:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/TickMath.sol","file":"../../elixir-core/libraries/TickMath.sol","id":14630,"nodeType":"ImportDirective","scope":14840,"sourceUnit":7568,"src":"226:50:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/PoolAddress.sol","file":"../libraries/PoolAddress.sol","id":14631,"nodeType":"ImportDirective","scope":14840,"sourceUnit":19735,"src":"280:38:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/CallbackValidation.sol","file":"../libraries/CallbackValidation.sol","id":14632,"nodeType":"ImportDirective","scope":14840,"sourceUnit":17496,"src":"320:45:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/LiquidityAmounts.sol","file":"../libraries/LiquidityAmounts.sol","id":14633,"nodeType":"ImportDirective","scope":14840,"sourceUnit":17983,"src":"367:43:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/PeripheryPayments.sol","file":"./PeripheryPayments.sol","id":14634,"nodeType":"ImportDirective","scope":14840,"sourceUnit":15173,"src":"414:33:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/PeripheryImmutableState.sol","file":"./PeripheryImmutableState.sol","id":14635,"nodeType":"ImportDirective","scope":14840,"sourceUnit":14956,"src":"449:39:62","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":14637,"name":"IElixirMintCallback","nodeType":"UserDefinedTypeName","referencedDeclaration":3301,"src":"648:19:62","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirMintCallback_$3301","typeString":"contract IElixirMintCallback"}},"id":14638,"nodeType":"InheritanceSpecifier","src":"648:19:62"},{"baseName":{"id":14639,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":14955,"src":"669:23:62","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$14955","typeString":"contract PeripheryImmutableState"}},"id":14640,"nodeType":"InheritanceSpecifier","src":"669:23:62"},{"baseName":{"id":14641,"name":"PeripheryPayments","nodeType":"UserDefinedTypeName","referencedDeclaration":15172,"src":"694:17:62","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$15172","typeString":"contract PeripheryPayments"}},"id":14642,"nodeType":"InheritanceSpecifier","src":"694:17:62"}],"contractDependencies":[3301,14955,15172,16125,16151],"contractKind":"contract","documentation":{"id":14636,"nodeType":"StructuredDocumentation","src":"492:115:62","text":"@title Liquidity management functions\n @notice Internal functions for safely managing liquidity in Elixir"},"fullyImplemented":false,"id":14839,"linearizedBaseContracts":[14839,15172,14955,16125,16151,3301],"name":"LiquidityManagement","nodeType":"ContractDefinition","nodes":[{"canonicalName":"LiquidityManagement.MintCallbackData","id":14647,"members":[{"constant":false,"id":14644,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":14647,"src":"754:27:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_storage_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":14643,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":19655,"src":"754:19:62","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"},{"constant":false,"id":14646,"mutability":"mutable","name":"payer","nodeType":"VariableDeclaration","scope":14647,"src":"792:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14645,"name":"address","nodeType":"ElementaryTypeName","src":"792:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"MintCallbackData","nodeType":"StructDefinition","scope":14839,"src":"719:94:62","visibility":"public"},{"baseFunctions":[3300],"body":{"id":14705,"nodeType":"Block","src":"1005:359:62","statements":[{"assignments":[14659],"declarations":[{"constant":false,"id":14659,"mutability":"mutable","name":"decoded","nodeType":"VariableDeclaration","scope":14705,"src":"1016:31:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$14647_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData"},"typeName":{"id":14658,"name":"MintCallbackData","nodeType":"UserDefinedTypeName","referencedDeclaration":14647,"src":"1016:16:62","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$14647_storage_ptr","typeString":"struct LiquidityManagement.MintCallbackData"}},"visibility":"internal"}],"id":14666,"initialValue":{"arguments":[{"id":14662,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14654,"src":"1061:4:62","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":14663,"name":"MintCallbackData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14647,"src":"1068:16:62","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MintCallbackData_$14647_storage_ptr_$","typeString":"type(struct LiquidityManagement.MintCallbackData storage pointer)"}}],"id":14664,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1067:18:62","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MintCallbackData_$14647_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_$14647_storage_ptr_$","typeString":"type(struct LiquidityManagement.MintCallbackData storage pointer)"}],"expression":{"id":14660,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1050:3:62","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14661,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1050:10:62","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":14665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1050:36:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$14647_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"nodeType":"VariableDeclarationStatement","src":"1016:70:62"},{"expression":{"arguments":[{"id":14670,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14934,"src":"1131:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14671,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14659,"src":"1140:7:62","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$14647_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"id":14672,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolKey","nodeType":"MemberAccess","referencedDeclaration":14644,"src":"1140:15:62","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":14667,"name":"CallbackValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17495,"src":"1097:18:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CallbackValidation_$17495_$","typeString":"type(library CallbackValidation)"}},"id":14669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"verifyCallback","nodeType":"MemberAccess","referencedDeclaration":17494,"src":"1097:33:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_struct$_PoolKey_$19655_memory_ptr_$returns$_t_contract$_IElixirPool_$3273_$","typeString":"function (address,struct PoolAddress.PoolKey memory) view returns (contract IElixirPool)"}},"id":14673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1097:59:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":14674,"nodeType":"ExpressionStatement","src":"1097:59:62"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14675,"name":"amount0Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14650,"src":"1173:11:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1187:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1173:15:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14689,"nodeType":"IfStatement","src":"1169:88:62","trueBody":{"expression":{"arguments":[{"expression":{"expression":{"id":14679,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14659,"src":"1194:7:62","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$14647_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"id":14680,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolKey","nodeType":"MemberAccess","referencedDeclaration":14644,"src":"1194:15:62","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":14681,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":19650,"src":"1194:22:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14682,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14659,"src":"1218:7:62","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$14647_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"id":14683,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payer","nodeType":"MemberAccess","referencedDeclaration":14646,"src":"1218:13:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14684,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1233:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1233:10:62","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":14686,"name":"amount0Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14650,"src":"1245:11:62","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":14678,"name":"pay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15171,"src":"1190:3:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":14687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1190:67:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14688,"nodeType":"ExpressionStatement","src":"1190:67:62"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14690,"name":"amount1Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14652,"src":"1272:11:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1286:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1272:15:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14704,"nodeType":"IfStatement","src":"1268:88:62","trueBody":{"expression":{"arguments":[{"expression":{"expression":{"id":14694,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14659,"src":"1293:7:62","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$14647_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"id":14695,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolKey","nodeType":"MemberAccess","referencedDeclaration":14644,"src":"1293:15:62","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":14696,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":19652,"src":"1293:22:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14697,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14659,"src":"1317:7:62","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$14647_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"id":14698,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payer","nodeType":"MemberAccess","referencedDeclaration":14646,"src":"1317:13:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14699,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1332:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1332:10:62","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":14701,"name":"amount1Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14652,"src":"1344:11:62","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":14693,"name":"pay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15171,"src":"1289:3:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":14702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1289:67:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14703,"nodeType":"ExpressionStatement","src":"1289:67:62"}}]},"documentation":{"id":14648,"nodeType":"StructuredDocumentation","src":"821:35:62","text":"@inheritdoc IElixirMintCallback"},"functionSelector":"1507a8f4","id":14706,"implemented":true,"kind":"function","modifiers":[],"name":"elixirMintCallback","nodeType":"FunctionDefinition","overrides":{"id":14656,"nodeType":"OverrideSpecifier","overrides":[],"src":"996:8:62"},"parameters":{"id":14655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14650,"mutability":"mutable","name":"amount0Owed","nodeType":"VariableDeclaration","scope":14706,"src":"900:19:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14649,"name":"uint256","nodeType":"ElementaryTypeName","src":"900:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14652,"mutability":"mutable","name":"amount1Owed","nodeType":"VariableDeclaration","scope":14706,"src":"930:19:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14651,"name":"uint256","nodeType":"ElementaryTypeName","src":"930:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14654,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":14706,"src":"960:19:62","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":14653,"name":"bytes","nodeType":"ElementaryTypeName","src":"960:5:62","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"889:97:62"},"returnParameters":{"id":14657,"nodeType":"ParameterList","parameters":[],"src":"1005:0:62"},"scope":14839,"src":"862:502:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"LiquidityManagement.AddLiquidityParams","id":14727,"members":[{"constant":false,"id":14708,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":14727,"src":"1409:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14707,"name":"address","nodeType":"ElementaryTypeName","src":"1409:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14710,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":14727,"src":"1434:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14709,"name":"address","nodeType":"ElementaryTypeName","src":"1434:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14712,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":14727,"src":"1459:10:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":14711,"name":"uint24","nodeType":"ElementaryTypeName","src":"1459:6:62","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":14714,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":14727,"src":"1480:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14713,"name":"address","nodeType":"ElementaryTypeName","src":"1480:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14716,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":14727,"src":"1508:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":14715,"name":"int24","nodeType":"ElementaryTypeName","src":"1508:5:62","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":14718,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":14727,"src":"1534:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":14717,"name":"int24","nodeType":"ElementaryTypeName","src":"1534:5:62","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":14720,"mutability":"mutable","name":"amount0Desired","nodeType":"VariableDeclaration","scope":14727,"src":"1560:22:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14719,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14722,"mutability":"mutable","name":"amount1Desired","nodeType":"VariableDeclaration","scope":14727,"src":"1593:22:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14721,"name":"uint256","nodeType":"ElementaryTypeName","src":"1593:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14724,"mutability":"mutable","name":"amount0Min","nodeType":"VariableDeclaration","scope":14727,"src":"1626:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14723,"name":"uint256","nodeType":"ElementaryTypeName","src":"1626:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14726,"mutability":"mutable","name":"amount1Min","nodeType":"VariableDeclaration","scope":14727,"src":"1655:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14725,"name":"uint256","nodeType":"ElementaryTypeName","src":"1655:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"AddLiquidityParams","nodeType":"StructDefinition","scope":14839,"src":"1372:309:62","visibility":"public"},{"body":{"id":14837,"nodeType":"Block","src":"1974:1144:62","statements":[{"assignments":[14744],"declarations":[{"constant":false,"id":14744,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":14837,"src":"1985:34:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":14743,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":19655,"src":"1985:19:62","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"id":14754,"initialValue":{"arguments":[{"expression":{"id":14747,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14730,"src":"2064:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$14727_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":14748,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":14708,"src":"2064:13:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14749,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14730,"src":"2087:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$14727_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":14750,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":14710,"src":"2087:13:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14751,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14730,"src":"2107:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$14727_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":14752,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":14712,"src":"2107:10:62","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":14745,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19734,"src":"2035:11:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$19734_$","typeString":"type(library PoolAddress)"}},"id":14746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PoolKey","nodeType":"MemberAccess","referencedDeclaration":19655,"src":"2035:19:62","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolKey_$19655_storage_ptr_$","typeString":"type(struct PoolAddress.PoolKey storage pointer)"}},"id":14753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee"],"nodeType":"FunctionCall","src":"2035:84:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"nodeType":"VariableDeclarationStatement","src":"1985:134:62"},{"expression":{"id":14763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14755,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14739,"src":"2132:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":14759,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14934,"src":"2178:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14760,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"2187:7:62","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":14757,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19734,"src":"2151:11:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$19734_$","typeString":"type(library PoolAddress)"}},"id":14758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":19733,"src":"2151:26:62","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$19655_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":14761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2151:44:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14756,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"2139:11:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":14762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2139:57:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"src":"2132:64:62","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":14764,"nodeType":"ExpressionStatement","src":"2132:64:62"},{"id":14800,"nodeType":"Block","src":"2250:502:62","statements":[{"assignments":[14766,null,null,null,null,null,null],"declarations":[{"constant":false,"id":14766,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":14800,"src":"2266:20:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":14765,"name":"uint160","nodeType":"ElementaryTypeName","src":"2266:7:62","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},null,null,null,null,null,null],"id":14770,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14767,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14739,"src":"2302:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":14768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":3680,"src":"2302:10:62","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":14769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2302:12:62","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":"2265:49:62"},{"assignments":[14772],"declarations":[{"constant":false,"id":14772,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":14800,"src":"2329:21:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":14771,"name":"uint160","nodeType":"ElementaryTypeName","src":"2329:7:62","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":14778,"initialValue":{"arguments":[{"expression":{"id":14775,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14730,"src":"2381:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$14727_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":14776,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":14716,"src":"2381:16:62","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":14773,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"2353:8:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":14774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":7427,"src":"2353:27:62","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":14777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2353:45:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"2329:69:62"},{"assignments":[14780],"declarations":[{"constant":false,"id":14780,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":14800,"src":"2413:21:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":14779,"name":"uint160","nodeType":"ElementaryTypeName","src":"2413:7:62","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":14786,"initialValue":{"arguments":[{"expression":{"id":14783,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14730,"src":"2465:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$14727_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":14784,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":14718,"src":"2465:16:62","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":14781,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"2437:8:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":14782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":7427,"src":"2437:27:62","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":"2437:45:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"2413:69:62"},{"expression":{"id":14798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14787,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14733,"src":"2499:9:62","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14790,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14766,"src":"2569:12:62","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":14791,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14772,"src":"2600:13:62","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":14792,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14780,"src":"2632:13:62","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":14793,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14730,"src":"2664:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$14727_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":14794,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount0Desired","nodeType":"MemberAccess","referencedDeclaration":14720,"src":"2664:21:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":14795,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14730,"src":"2704:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$14727_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":14796,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount1Desired","nodeType":"MemberAccess","referencedDeclaration":14722,"src":"2704:21:62","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":14788,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17982,"src":"2511:16:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$17982_$","typeString":"type(library LiquidityAmounts)"}},"id":14789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityForAmounts","nodeType":"MemberAccess","referencedDeclaration":17832,"src":"2511:39:62","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":14797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2511:229:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2499:241:62","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":14799,"nodeType":"ExpressionStatement","src":"2499:241:62"}]},{"expression":{"id":14822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":14801,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14735,"src":"2765:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14802,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14737,"src":"2774:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14803,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2764:18:62","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":14806,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14730,"src":"2809:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$14727_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":14807,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":14714,"src":"2809:16:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14808,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14730,"src":"2840:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$14727_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":14809,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":14716,"src":"2840:16:62","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":14810,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14730,"src":"2871:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$14727_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":14811,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":14718,"src":"2871:16:62","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":14812,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14733,"src":"2902:9:62","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"arguments":[{"id":14816,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"2964:7:62","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},{"expression":{"id":14817,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2980:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2980:10:62","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":14815,"name":"MintCallbackData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14647,"src":"2937:16:62","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MintCallbackData_$14647_storage_ptr_$","typeString":"type(struct LiquidityManagement.MintCallbackData storage pointer)"}},"id":14819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["poolKey","payer"],"nodeType":"FunctionCall","src":"2937:55:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$14647_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_MintCallbackData_$14647_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}],"expression":{"id":14813,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2926:3:62","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14814,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2926:10:62","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2926:67:62","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":14804,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14739,"src":"2785:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":14805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":3342,"src":"2785:9:62","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":14821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2785:219:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"2764:240:62","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14823,"nodeType":"ExpressionStatement","src":"2764:240:62"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14825,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14735,"src":"3025:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":14826,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14730,"src":"3036:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$14727_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":14827,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount0Min","nodeType":"MemberAccess","referencedDeclaration":14724,"src":"3036:17:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3025:28:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14829,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14737,"src":"3057:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":14830,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14730,"src":"3068:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$14727_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":14831,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount1Min","nodeType":"MemberAccess","referencedDeclaration":14726,"src":"3068:17:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3057:28:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3025:60:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"507269636520736c69707061676520636865636b","id":14834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3087:22:62","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":14824,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3017:7:62","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3017:93:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14836,"nodeType":"ExpressionStatement","src":"3017:93:62"}]},"documentation":{"id":14728,"nodeType":"StructuredDocumentation","src":"1689:48:62","text":"@notice Add liquidity to an initialized pool"},"id":14838,"implemented":true,"kind":"function","modifiers":[],"name":"addLiquidity","nodeType":"FunctionDefinition","parameters":{"id":14731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14730,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":14838,"src":"1765:32:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$14727_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams"},"typeName":{"id":14729,"name":"AddLiquidityParams","nodeType":"UserDefinedTypeName","referencedDeclaration":14727,"src":"1765:18:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$14727_storage_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams"}},"visibility":"internal"}],"src":"1764:34:62"},"returnParameters":{"id":14740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14733,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":14838,"src":"1849:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":14732,"name":"uint128","nodeType":"ElementaryTypeName","src":"1849:7:62","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":14735,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":14838,"src":"1881:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14734,"name":"uint256","nodeType":"ElementaryTypeName","src":"1881:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14737,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":14838,"src":"1911:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14736,"name":"uint256","nodeType":"ElementaryTypeName","src":"1911:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14739,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":14838,"src":"1941:16:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"},"typeName":{"id":14738,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":3273,"src":"1941:11:62","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"visibility":"internal"}],"src":"1834:134:62"},"scope":14839,"src":"1743:1375:62","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":14840,"src":"607:2514:62"}],"src":"46:3077:62"},"id":62},"contracts/elixir-periphery/base/Multicall.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/base/Multicall.sol","exportedSymbols":{"IMulticall":[15852],"Multicall":[14924]},"id":14925,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14841,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:63"},{"id":14842,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"71:19:63"},{"absolutePath":"contracts/elixir-periphery/interfaces/IMulticall.sol","file":"../interfaces/IMulticall.sol","id":14843,"nodeType":"ImportDirective","scope":14925,"sourceUnit":15853,"src":"94:38:63","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":14845,"name":"IMulticall","nodeType":"UserDefinedTypeName","referencedDeclaration":15852,"src":"268:10:63","typeDescriptions":{"typeIdentifier":"t_contract$_IMulticall_$15852","typeString":"contract IMulticall"}},"id":14846,"nodeType":"InheritanceSpecifier","src":"268:10:63"}],"contractDependencies":[15852],"contractKind":"contract","documentation":{"id":14844,"nodeType":"StructuredDocumentation","src":"136:101:63","text":"@title Multicall\n @notice Enables calling multiple methods in a single call to the contract"},"fullyImplemented":true,"id":14924,"linearizedBaseContracts":[14924,15852],"name":"Multicall","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[15851],"body":{"id":14922,"nodeType":"Block","src":"417:570:63","statements":[{"expression":{"id":14864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14857,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14855,"src":"428:7:63","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":14861,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14850,"src":"450:4:63","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":14862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"450:11:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14860,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"438:11:63","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":14858,"name":"bytes","nodeType":"ElementaryTypeName","src":"442:5:63","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":14859,"nodeType":"ArrayTypeName","src":"442:7:63","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}}},"id":14863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"438:24:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"src":"428:34:63","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":14865,"nodeType":"ExpressionStatement","src":"428:34:63"},{"body":{"id":14920,"nodeType":"Block","src":"515:465:63","statements":[{"assignments":[14878,14880],"declarations":[{"constant":false,"id":14878,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":14920,"src":"531:12:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14877,"name":"bool","nodeType":"ElementaryTypeName","src":"531:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":14880,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":14920,"src":"545:19:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14879,"name":"bytes","nodeType":"ElementaryTypeName","src":"545:5:63","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":14890,"initialValue":{"arguments":[{"baseExpression":{"id":14886,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14850,"src":"595:4:63","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":14888,"indexExpression":{"id":14887,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14867,"src":"600:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"595:7:63","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"id":14883,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"576:4:63","typeDescriptions":{"typeIdentifier":"t_contract$_Multicall_$14924","typeString":"contract Multicall"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Multicall_$14924","typeString":"contract Multicall"}],"id":14882,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"568:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14881,"name":"address","nodeType":"ElementaryTypeName","src":"568:7:63","typeDescriptions":{}}},"id":14884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"568:13:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"568:26:63","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":14889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"568:35:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"530:73:63"},{"condition":{"id":14892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"624:8:63","subExpression":{"id":14891,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14878,"src":"625:7:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14913,"nodeType":"IfStatement","src":"620:313:63","trueBody":{"id":14912,"nodeType":"Block","src":"634:299:63","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14893,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14880,"src":"738:6:63","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"738:13:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3638","id":14895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"754:2:63","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"68"},"src":"738:18:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14900,"nodeType":"IfStatement","src":"734:32:63","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14897,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"758:6:63","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$__$returns$__$","typeString":"function () pure"}},"id":14898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"758:8:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14899,"nodeType":"ExpressionStatement","src":"758:8:63"}},{"AST":{"nodeType":"YulBlock","src":"794:69:63","statements":[{"nodeType":"YulAssignment","src":"817:27:63","value":{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"831:6:63"},{"kind":"number","nodeType":"YulLiteral","src":"839:4:63","type":"","value":"0x04"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"827:3:63"},"nodeType":"YulFunctionCall","src":"827:17:63"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"817:6:63"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":14880,"isOffset":false,"isSlot":false,"src":"817:6:63","valueSize":1},{"declaration":14880,"isOffset":false,"isSlot":false,"src":"831:6:63","valueSize":1}],"id":14901,"nodeType":"InlineAssembly","src":"785:78:63"},{"expression":{"arguments":[{"arguments":[{"id":14905,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14880,"src":"899:6:63","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":14907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"908:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":14906,"name":"string","nodeType":"ElementaryTypeName","src":"908:6:63","typeDescriptions":{}}}],"id":14908,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"907:8:63","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":14903,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"888:3:63","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14904,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"888:10:63","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":14909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"888:28:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":14902,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"881:6:63","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":14910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"881:36:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14911,"nodeType":"ExpressionStatement","src":"881:36:63"}]}},{"expression":{"id":14918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14914,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14855,"src":"949:7:63","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":14916,"indexExpression":{"id":14915,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14867,"src":"957:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"949:10:63","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14917,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14880,"src":"962:6:63","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"949:19:63","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14919,"nodeType":"ExpressionStatement","src":"949:19:63"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14870,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14867,"src":"493:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":14871,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14850,"src":"497:4:63","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":14872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"497:11:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"493:15:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14921,"initializationExpression":{"assignments":[14867],"declarations":[{"constant":false,"id":14867,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":14921,"src":"478:9:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14866,"name":"uint256","nodeType":"ElementaryTypeName","src":"478:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14869,"initialValue":{"hexValue":"30","id":14868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"490:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"478:13:63"},"loopExpression":{"expression":{"id":14875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"510:3:63","subExpression":{"id":14874,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14867,"src":"510:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14876,"nodeType":"ExpressionStatement","src":"510:3:63"},"nodeType":"ForStatement","src":"473:507:63"}]},"documentation":{"id":14847,"nodeType":"StructuredDocumentation","src":"286:26:63","text":"@inheritdoc IMulticall"},"functionSelector":"ac9650d8","id":14923,"implemented":true,"kind":"function","modifiers":[],"name":"multicall","nodeType":"FunctionDefinition","overrides":{"id":14852,"nodeType":"OverrideSpecifier","overrides":[],"src":"375:8:63"},"parameters":{"id":14851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14850,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":14923,"src":"337:21:63","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":14848,"name":"bytes","nodeType":"ElementaryTypeName","src":"337:5:63","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":14849,"nodeType":"ArrayTypeName","src":"337:7:63","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"336:23:63"},"returnParameters":{"id":14856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14855,"mutability":"mutable","name":"results","nodeType":"VariableDeclaration","scope":14923,"src":"393:22:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":14853,"name":"bytes","nodeType":"ElementaryTypeName","src":"393:5:63","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":14854,"nodeType":"ArrayTypeName","src":"393:7:63","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"392:24:63"},"scope":14924,"src":"318:669:63","stateMutability":"payable","virtual":false,"visibility":"public"}],"scope":14925,"src":"237:753:63"}],"src":"46:946:63"},"id":63},"contracts/elixir-periphery/base/PeripheryImmutableState.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/base/PeripheryImmutableState.sol","exportedSymbols":{"IPeripheryImmutableState":[16125],"PeripheryImmutableState":[14955]},"id":14956,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14926,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:64"},{"absolutePath":"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol","file":"../interfaces/IPeripheryImmutableState.sol","id":14927,"nodeType":"ImportDirective","scope":14956,"sourceUnit":16126,"src":"73:52:64","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":14929,"name":"IPeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":16125,"src":"259:24:64","typeDescriptions":{"typeIdentifier":"t_contract$_IPeripheryImmutableState_$16125","typeString":"contract IPeripheryImmutableState"}},"id":14930,"nodeType":"InheritanceSpecifier","src":"259:24:64"}],"contractDependencies":[16125],"contractKind":"contract","documentation":{"id":14928,"nodeType":"StructuredDocumentation","src":"129:85:64","text":"@title Immutable state\n @notice Immutable state used by periphery contracts"},"fullyImplemented":true,"id":14955,"linearizedBaseContracts":[14955,16125],"name":"PeripheryImmutableState","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[16118],"constant":false,"documentation":{"id":14931,"nodeType":"StructuredDocumentation","src":"291:40:64","text":"@inheritdoc IPeripheryImmutableState"},"functionSelector":"c45a0155","id":14934,"mutability":"immutable","name":"factory","nodeType":"VariableDeclaration","overrides":{"id":14933,"nodeType":"OverrideSpecifier","overrides":[],"src":"362:8:64"},"scope":14955,"src":"337:41:64","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14932,"name":"address","nodeType":"ElementaryTypeName","src":"337:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"baseFunctions":[16124],"constant":false,"documentation":{"id":14935,"nodeType":"StructuredDocumentation","src":"385:40:64","text":"@inheritdoc IPeripheryImmutableState"},"functionSelector":"4aa4a4fc","id":14938,"mutability":"immutable","name":"WETH9","nodeType":"VariableDeclaration","overrides":{"id":14937,"nodeType":"OverrideSpecifier","overrides":[],"src":"456:8:64"},"scope":14955,"src":"431:39:64","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14936,"name":"address","nodeType":"ElementaryTypeName","src":"431:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"body":{"id":14953,"nodeType":"Block","src":"525:62:64","statements":[{"expression":{"id":14947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14945,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14934,"src":"536:7:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14946,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14940,"src":"546:8:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"536:18:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14948,"nodeType":"ExpressionStatement","src":"536:18:64"},{"expression":{"id":14951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14949,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14938,"src":"565:5:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14950,"name":"_WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14942,"src":"573:6:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"565:14:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14952,"nodeType":"ExpressionStatement","src":"565:14:64"}]},"id":14954,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":14943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14940,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":14954,"src":"491:16:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14939,"name":"address","nodeType":"ElementaryTypeName","src":"491:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14942,"mutability":"mutable","name":"_WETH9","nodeType":"VariableDeclaration","scope":14954,"src":"509:14:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14941,"name":"address","nodeType":"ElementaryTypeName","src":"509:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"490:34:64"},"returnParameters":{"id":14944,"nodeType":"ParameterList","parameters":[],"src":"525:0:64"},"scope":14955,"src":"479:108:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":14956,"src":"214:376:64"}],"src":"46:546:64"},"id":64},"contracts/elixir-periphery/base/PeripheryPayments.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/base/PeripheryPayments.sol","exportedSymbols":{"IERC20":[31070],"IPeripheryImmutableState":[16125],"IPeripheryPayments":[16151],"IWETH9":[16445],"PeripheryImmutableState":[14955],"PeripheryPayments":[15172],"TransferHelper":[20731]},"id":15173,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14957,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:65"},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","file":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","id":14958,"nodeType":"ImportDirective","scope":15173,"sourceUnit":31071,"src":"74:64:65","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol","file":"../interfaces/IPeripheryPayments.sol","id":14959,"nodeType":"ImportDirective","scope":15173,"sourceUnit":16152,"src":"142:46:65","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/external/IWETH9.sol","file":"../interfaces/external/IWETH9.sol","id":14960,"nodeType":"ImportDirective","scope":15173,"sourceUnit":16446,"src":"190:43:65","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/TransferHelper.sol","file":"../libraries/TransferHelper.sol","id":14961,"nodeType":"ImportDirective","scope":15173,"sourceUnit":20732,"src":"237:41:65","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/PeripheryImmutableState.sol","file":"./PeripheryImmutableState.sol","id":14962,"nodeType":"ImportDirective","scope":15173,"sourceUnit":14956,"src":"282:39:65","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":14963,"name":"IPeripheryPayments","nodeType":"UserDefinedTypeName","referencedDeclaration":16151,"src":"364:18:65","typeDescriptions":{"typeIdentifier":"t_contract$_IPeripheryPayments_$16151","typeString":"contract IPeripheryPayments"}},"id":14964,"nodeType":"InheritanceSpecifier","src":"364:18:65"},{"baseName":{"id":14965,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":14955,"src":"384:23:65","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$14955","typeString":"contract PeripheryImmutableState"}},"id":14966,"nodeType":"InheritanceSpecifier","src":"384:23:65"}],"contractDependencies":[14955,16125,16151],"contractKind":"contract","fullyImplemented":false,"id":15172,"linearizedBaseContracts":[15172,14955,16125,16151],"name":"PeripheryPayments","nodeType":"ContractDefinition","nodes":[{"body":{"id":14977,"nodeType":"Block","src":"442:60:65","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14970,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"461:3:65","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"461:10:65","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":14972,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14938,"src":"475:5:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"461:19:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f74205745544839","id":14974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"482:11:65","typeDescriptions":{"typeIdentifier":"t_stringliteral_9a5f12903ee10b20c1ea1ca8d6f6723d553112d744fe8db2bc5453efb990e6b1","typeString":"literal_string \"Not WETH9\""},"value":"Not WETH9"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9a5f12903ee10b20c1ea1ca8d6f6723d553112d744fe8db2bc5453efb990e6b1","typeString":"literal_string \"Not WETH9\""}],"id":14969,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"453:7:65","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"453:41:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14976,"nodeType":"ExpressionStatement","src":"453:41:65"}]},"id":14978,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":14967,"nodeType":"ParameterList","parameters":[],"src":"422:2:65"},"returnParameters":{"id":14968,"nodeType":"ParameterList","parameters":[],"src":"442:0:65"},"scope":15172,"src":"415:87:65","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[16136],"body":{"id":15025,"nodeType":"Block","src":"637:318:65","statements":[{"assignments":[14988],"declarations":[{"constant":false,"id":14988,"mutability":"mutable","name":"balanceWETH9","nodeType":"VariableDeclaration","scope":15025,"src":"648:20:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14987,"name":"uint256","nodeType":"ElementaryTypeName","src":"648:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14998,"initialValue":{"arguments":[{"arguments":[{"id":14995,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"703:4:65","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$15172","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$15172","typeString":"contract PeripheryPayments"}],"id":14994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"695:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14993,"name":"address","nodeType":"ElementaryTypeName","src":"695:7:65","typeDescriptions":{}}},"id":14996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"695:13:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"id":14990,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14938,"src":"678:5:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14989,"name":"IWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16445,"src":"671:6:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWETH9_$16445_$","typeString":"type(contract IWETH9)"}},"id":14991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"671:13:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH9_$16445","typeString":"contract IWETH9"}},"id":14992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":31009,"src":"671:23:65","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":14997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"671:38:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"648:61:65"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15000,"name":"balanceWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14988,"src":"728:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":15001,"name":"amountMinimum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14981,"src":"744:13:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"728:29:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e74205745544839","id":15003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"759:20:65","typeDescriptions":{"typeIdentifier":"t_stringliteral_01e23337f78f001c03af3011e04e4dea54f4997ff97d41da263c1606bf0f9f73","typeString":"literal_string \"Insufficient WETH9\""},"value":"Insufficient WETH9"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_01e23337f78f001c03af3011e04e4dea54f4997ff97d41da263c1606bf0f9f73","typeString":"literal_string \"Insufficient WETH9\""}],"id":14999,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"720:7:65","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"720:60:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15005,"nodeType":"ExpressionStatement","src":"720:60:65"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15006,"name":"balanceWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14988,"src":"797:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"812:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"797:16:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15024,"nodeType":"IfStatement","src":"793:155:65","trueBody":{"id":15023,"nodeType":"Block","src":"815:133:65","statements":[{"expression":{"arguments":[{"id":15013,"name":"balanceWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14988,"src":"853:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":15010,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14938,"src":"837:5:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15009,"name":"IWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16445,"src":"830:6:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWETH9_$16445_$","typeString":"type(contract IWETH9)"}},"id":15011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"830:13:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH9_$16445","typeString":"contract IWETH9"}},"id":15012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":16444,"src":"830:22:65","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":15014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"830:36:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15015,"nodeType":"ExpressionStatement","src":"830:36:65"},{"expression":{"arguments":[{"id":15019,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14983,"src":"912:9:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15020,"name":"balanceWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14988,"src":"923:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15016,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20731,"src":"881:14:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$20731_$","typeString":"type(library TransferHelper)"}},"id":15018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferETH","nodeType":"MemberAccess","referencedDeclaration":20730,"src":"881:30:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":15021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"881:55:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15022,"nodeType":"ExpressionStatement","src":"881:55:65"}]}}]},"documentation":{"id":14979,"nodeType":"StructuredDocumentation","src":"510:34:65","text":"@inheritdoc IPeripheryPayments"},"functionSelector":"49404b7c","id":15026,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapWETH9","nodeType":"FunctionDefinition","overrides":{"id":14985,"nodeType":"OverrideSpecifier","overrides":[],"src":"628:8:65"},"parameters":{"id":14984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14981,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":15026,"src":"571:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14980,"name":"uint256","nodeType":"ElementaryTypeName","src":"571:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14983,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":15026,"src":"594:17:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14982,"name":"address","nodeType":"ElementaryTypeName","src":"594:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"570:42:65"},"returnParameters":{"id":14986,"nodeType":"ParameterList","parameters":[],"src":"637:0:65"},"scope":15172,"src":"550:405:65","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[16150],"body":{"id":15069,"nodeType":"Block","src":"1138:271:65","statements":[{"assignments":[15038],"declarations":[{"constant":false,"id":15038,"mutability":"mutable","name":"balanceToken","nodeType":"VariableDeclaration","scope":15069,"src":"1149:20:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15037,"name":"uint256","nodeType":"ElementaryTypeName","src":"1149:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15048,"initialValue":{"arguments":[{"arguments":[{"id":15045,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1204:4:65","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$15172","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$15172","typeString":"contract PeripheryPayments"}],"id":15044,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1196:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15043,"name":"address","nodeType":"ElementaryTypeName","src":"1196:7:65","typeDescriptions":{}}},"id":15046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1196:13:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"id":15040,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15029,"src":"1179:5:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15039,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31070,"src":"1172:6:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$31070_$","typeString":"type(contract IERC20)"}},"id":15041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1172:13:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$31070","typeString":"contract IERC20"}},"id":15042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":31009,"src":"1172:23:65","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1172:38:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1149:61:65"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15050,"name":"balanceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15038,"src":"1229:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":15051,"name":"amountMinimum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15031,"src":"1245:13:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1229:29:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e7420746f6b656e","id":15053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1260:20:65","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":15049,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1221:7:65","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1221:60:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15055,"nodeType":"ExpressionStatement","src":"1221:60:65"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15056,"name":"balanceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15038,"src":"1298:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1313:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1298:16:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15068,"nodeType":"IfStatement","src":"1294:108:65","trueBody":{"id":15067,"nodeType":"Block","src":"1316:86:65","statements":[{"expression":{"arguments":[{"id":15062,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15029,"src":"1359:5:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15063,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15033,"src":"1366:9:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15064,"name":"balanceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15038,"src":"1377:12:65","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":15059,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20731,"src":"1331:14:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$20731_$","typeString":"type(library TransferHelper)"}},"id":15061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":20658,"src":"1331:27:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":15065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1331:59:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15066,"nodeType":"ExpressionStatement","src":"1331:59:65"}]}}]},"documentation":{"id":15027,"nodeType":"StructuredDocumentation","src":"963:34:65","text":"@inheritdoc IPeripheryPayments"},"functionSelector":"df2ab5bb","id":15070,"implemented":true,"kind":"function","modifiers":[],"name":"sweepToken","nodeType":"FunctionDefinition","overrides":{"id":15035,"nodeType":"OverrideSpecifier","overrides":[],"src":"1129:8:65"},"parameters":{"id":15034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15029,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15070,"src":"1033:13:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15028,"name":"address","nodeType":"ElementaryTypeName","src":"1033:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15031,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":15070,"src":"1057:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15030,"name":"uint256","nodeType":"ElementaryTypeName","src":"1057:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15033,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":15070,"src":"1089:17:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15032,"name":"address","nodeType":"ElementaryTypeName","src":"1089:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1022:91:65"},"returnParameters":{"id":15036,"nodeType":"ParameterList","parameters":[],"src":"1138:0:65"},"scope":15172,"src":"1003:406:65","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[16140],"body":{"id":15078,"nodeType":"Block","src":"1504:31:65","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15075,"name":"_refundETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15103,"src":"1515:10:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":15076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1515:12:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15077,"nodeType":"ExpressionStatement","src":"1515:12:65"}]},"documentation":{"id":15071,"nodeType":"StructuredDocumentation","src":"1417:34:65","text":"@inheritdoc IPeripheryPayments"},"functionSelector":"12210e8a","id":15079,"implemented":true,"kind":"function","modifiers":[],"name":"refundETH","nodeType":"FunctionDefinition","overrides":{"id":15073,"nodeType":"OverrideSpecifier","overrides":[],"src":"1495:8:65"},"parameters":{"id":15072,"nodeType":"ParameterList","parameters":[],"src":"1475:2:65"},"returnParameters":{"id":15074,"nodeType":"ParameterList","parameters":[],"src":"1504:0:65"},"scope":15172,"src":"1457:78:65","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":15102,"nodeType":"Block","src":"1574:115:65","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":15084,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1597:4:65","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$15172","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$15172","typeString":"contract PeripheryPayments"}],"id":15083,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1589:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15082,"name":"address","nodeType":"ElementaryTypeName","src":"1589:7:65","typeDescriptions":{}}},"id":15085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1589:13:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":15086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"1589:21:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1613:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1589:25:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15101,"nodeType":"IfStatement","src":"1585:96:65","trueBody":{"expression":{"arguments":[{"expression":{"id":15092,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1647:3:65","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1647:10:65","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"arguments":[{"id":15096,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1667:4:65","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$15172","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$15172","typeString":"contract PeripheryPayments"}],"id":15095,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1659:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15094,"name":"address","nodeType":"ElementaryTypeName","src":"1659:7:65","typeDescriptions":{}}},"id":15097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1659:13:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":15098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"1659:21:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15089,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20731,"src":"1616:14:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$20731_$","typeString":"type(library TransferHelper)"}},"id":15091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferETH","nodeType":"MemberAccess","referencedDeclaration":20730,"src":"1616:30:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":15099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1616:65:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15100,"nodeType":"ExpressionStatement","src":"1616:65:65"}}]},"id":15103,"implemented":true,"kind":"function","modifiers":[],"name":"_refundETH","nodeType":"FunctionDefinition","parameters":{"id":15080,"nodeType":"ParameterList","parameters":[],"src":"1562:2:65"},"returnParameters":{"id":15081,"nodeType":"ParameterList","parameters":[],"src":"1574:0:65"},"scope":15172,"src":"1543:146:65","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15170,"nodeType":"Block","src":"2015:587:65","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15115,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15106,"src":"2030:5:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":15116,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14938,"src":"2039:5:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2030:14:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":15120,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2056:4:65","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$15172","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$15172","typeString":"contract PeripheryPayments"}],"id":15119,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2048:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15118,"name":"address","nodeType":"ElementaryTypeName","src":"2048:7:65","typeDescriptions":{}}},"id":15121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2048:13:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":15122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2048:21:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":15123,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15112,"src":"2073:5:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2048:30:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2030:48:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15143,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15108,"src":"2275:5:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":15146,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2292:4:65","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$15172","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$15172","typeString":"contract PeripheryPayments"}],"id":15145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2284:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15144,"name":"address","nodeType":"ElementaryTypeName","src":"2284:7:65","typeDescriptions":{}}},"id":15147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2284:13:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2275:22:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15167,"nodeType":"Block","src":"2476:119:65","statements":[{"expression":{"arguments":[{"id":15161,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15106,"src":"2552:5:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15162,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15108,"src":"2559:5:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15163,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15110,"src":"2566:9:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15164,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15112,"src":"2577:5:65","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":15158,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20731,"src":"2520:14:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$20731_$","typeString":"type(library TransferHelper)"}},"id":15160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":20612,"src":"2520:31:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":15165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2520:63:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15166,"nodeType":"ExpressionStatement","src":"2520:63:65"}]},"id":15168,"nodeType":"IfStatement","src":"2271:324:65","trueBody":{"id":15157,"nodeType":"Block","src":"2299:171:65","statements":[{"expression":{"arguments":[{"id":15152,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15106,"src":"2434:5:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15153,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15110,"src":"2441:9:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15154,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15112,"src":"2452:5:65","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":15149,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20731,"src":"2406:14:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$20731_$","typeString":"type(library TransferHelper)"}},"id":15151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":20658,"src":"2406:27:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":15155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2406:52:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15156,"nodeType":"ExpressionStatement","src":"2406:52:65"}]}},"id":15169,"nodeType":"IfStatement","src":"2026:569:65","trueBody":{"id":15142,"nodeType":"Block","src":"2080:185:65","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":15127,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14938,"src":"2133:5:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15126,"name":"IWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16445,"src":"2126:6:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWETH9_$16445_$","typeString":"type(contract IWETH9)"}},"id":15128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2126:13:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH9_$16445","typeString":"contract IWETH9"}},"id":15129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":16438,"src":"2126:21:65","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$","typeString":"function () payable external"}},"id":15131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":15130,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15112,"src":"2155:5:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2126:35:65","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$value","typeString":"function () payable external"}},"id":15132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2126:37:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15133,"nodeType":"ExpressionStatement","src":"2126:37:65"},{"expression":{"arguments":[{"id":15138,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15110,"src":"2236:9:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15139,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15112,"src":"2247:5:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":15135,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14938,"src":"2220:5:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15134,"name":"IWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16445,"src":"2213:6:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWETH9_$16445_$","typeString":"type(contract IWETH9)"}},"id":15136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2213:13:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH9_$16445","typeString":"contract IWETH9"}},"id":15137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":31019,"src":"2213:22:65","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":15140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2213:40:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15141,"nodeType":"ExpressionStatement","src":"2213:40:65"}]}}]},"documentation":{"id":15104,"nodeType":"StructuredDocumentation","src":"1697:183:65","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":15171,"implemented":true,"kind":"function","modifiers":[],"name":"pay","nodeType":"FunctionDefinition","parameters":{"id":15113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15106,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15171,"src":"1909:13:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15105,"name":"address","nodeType":"ElementaryTypeName","src":"1909:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15108,"mutability":"mutable","name":"payer","nodeType":"VariableDeclaration","scope":15171,"src":"1933:13:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15107,"name":"address","nodeType":"ElementaryTypeName","src":"1933:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15110,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":15171,"src":"1957:17:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15109,"name":"address","nodeType":"ElementaryTypeName","src":"1957:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15112,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":15171,"src":"1985:13:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15111,"name":"uint256","nodeType":"ElementaryTypeName","src":"1985:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1898:107:65"},"returnParameters":{"id":15114,"nodeType":"ParameterList","parameters":[],"src":"2015:0:65"},"scope":15172,"src":"1886:716:65","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":15173,"src":"325:2280:65"}],"src":"46:2561:65"},"id":65},"contracts/elixir-periphery/base/PeripheryPaymentsWithFee.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/base/PeripheryPaymentsWithFee.sol","exportedSymbols":{"IERC20":[31070],"IPeripheryImmutableState":[16125],"IPeripheryPayments":[16151],"IPeripheryPaymentsWithFee":[16184],"IWETH9":[16445],"LowGasSafeMath":[4430],"PeripheryImmutableState":[14955],"PeripheryPayments":[15172],"PeripheryPaymentsWithFee":[15353],"TransferHelper":[20731]},"id":15354,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15174,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:66"},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","file":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","id":15175,"nodeType":"ImportDirective","scope":15354,"sourceUnit":31071,"src":"74:64:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/LowGasSafeMath.sol","file":"../../elixir-core/libraries/LowGasSafeMath.sol","id":15176,"nodeType":"ImportDirective","scope":15354,"sourceUnit":4431,"src":"140:56:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/PeripheryPayments.sol","file":"./PeripheryPayments.sol","id":15177,"nodeType":"ImportDirective","scope":15354,"sourceUnit":15173,"src":"200:33:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/IPeripheryPaymentsWithFee.sol","file":"../interfaces/IPeripheryPaymentsWithFee.sol","id":15178,"nodeType":"ImportDirective","scope":15354,"sourceUnit":16185,"src":"235:53:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/external/IWETH9.sol","file":"../interfaces/external/IWETH9.sol","id":15179,"nodeType":"ImportDirective","scope":15354,"sourceUnit":16446,"src":"292:43:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/TransferHelper.sol","file":"../libraries/TransferHelper.sol","id":15180,"nodeType":"ImportDirective","scope":15354,"sourceUnit":20732,"src":"337:41:66","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":15181,"name":"PeripheryPayments","nodeType":"UserDefinedTypeName","referencedDeclaration":15172,"src":"428:17:66","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$15172","typeString":"contract PeripheryPayments"}},"id":15182,"nodeType":"InheritanceSpecifier","src":"428:17:66"},{"baseName":{"id":15183,"name":"IPeripheryPaymentsWithFee","nodeType":"UserDefinedTypeName","referencedDeclaration":16184,"src":"447:25:66","typeDescriptions":{"typeIdentifier":"t_contract$_IPeripheryPaymentsWithFee_$16184","typeString":"contract IPeripheryPaymentsWithFee"}},"id":15184,"nodeType":"InheritanceSpecifier","src":"447:25:66"}],"contractDependencies":[14955,15172,16125,16151,16184],"contractKind":"contract","fullyImplemented":false,"id":15353,"linearizedBaseContracts":[15353,16184,15172,14955,16125,16151],"name":"PeripheryPaymentsWithFee","nodeType":"ContractDefinition","nodes":[{"id":15187,"libraryName":{"id":15185,"name":"LowGasSafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":4430,"src":"486:14:66","typeDescriptions":{"typeIdentifier":"t_contract$_LowGasSafeMath_$4430","typeString":"library LowGasSafeMath"}},"nodeType":"UsingForDirective","src":"480:33:66","typeName":{"id":15186,"name":"uint256","nodeType":"ElementaryTypeName","src":"505:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"baseFunctions":[16169],"body":{"id":15270,"nodeType":"Block","src":"744:539:66","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15201,"name":"feeBips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15194,"src":"763:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"773:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"763:11:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15204,"name":"feeBips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15194,"src":"778:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"313030","id":15205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"789:3:66","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"778:14:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"763:29:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15200,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"755:7:66","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":15208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"755:38:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15209,"nodeType":"ExpressionStatement","src":"755:38:66"},{"assignments":[15211],"declarations":[{"constant":false,"id":15211,"mutability":"mutable","name":"balanceWETH9","nodeType":"VariableDeclaration","scope":15270,"src":"806:20:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15210,"name":"uint256","nodeType":"ElementaryTypeName","src":"806:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15221,"initialValue":{"arguments":[{"arguments":[{"id":15218,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"861:4:66","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPaymentsWithFee_$15353","typeString":"contract PeripheryPaymentsWithFee"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPaymentsWithFee_$15353","typeString":"contract PeripheryPaymentsWithFee"}],"id":15217,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"853:7:66","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15216,"name":"address","nodeType":"ElementaryTypeName","src":"853:7:66","typeDescriptions":{}}},"id":15219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"853:13:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"id":15213,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14938,"src":"836:5:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15212,"name":"IWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16445,"src":"829:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWETH9_$16445_$","typeString":"type(contract IWETH9)"}},"id":15214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"829:13:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH9_$16445","typeString":"contract IWETH9"}},"id":15215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":31009,"src":"829:23:66","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"829:38:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"806:61:66"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15223,"name":"balanceWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15211,"src":"886:12:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":15224,"name":"amountMinimum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15190,"src":"902:13:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"886:29:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e74205745544839","id":15226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"917:20:66","typeDescriptions":{"typeIdentifier":"t_stringliteral_01e23337f78f001c03af3011e04e4dea54f4997ff97d41da263c1606bf0f9f73","typeString":"literal_string \"Insufficient WETH9\""},"value":"Insufficient WETH9"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_01e23337f78f001c03af3011e04e4dea54f4997ff97d41da263c1606bf0f9f73","typeString":"literal_string \"Insufficient WETH9\""}],"id":15222,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"878:7:66","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"878:60:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15228,"nodeType":"ExpressionStatement","src":"878:60:66"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15229,"name":"balanceWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15211,"src":"955:12:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"970:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"955:16:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15269,"nodeType":"IfStatement","src":"951:325:66","trueBody":{"id":15268,"nodeType":"Block","src":"973:303:66","statements":[{"expression":{"arguments":[{"id":15236,"name":"balanceWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15211,"src":"1011:12:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":15233,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14938,"src":"995:5:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15232,"name":"IWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16445,"src":"988:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWETH9_$16445_$","typeString":"type(contract IWETH9)"}},"id":15234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"988:13:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH9_$16445","typeString":"contract IWETH9"}},"id":15235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":16444,"src":"988:22:66","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":15237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"988:36:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15238,"nodeType":"ExpressionStatement","src":"988:36:66"},{"assignments":[15240],"declarations":[{"constant":false,"id":15240,"mutability":"mutable","name":"feeAmount","nodeType":"VariableDeclaration","scope":15268,"src":"1039:17:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15239,"name":"uint256","nodeType":"ElementaryTypeName","src":"1039:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15247,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":15243,"name":"feeBips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15194,"src":"1076:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15241,"name":"balanceWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15211,"src":"1059:12:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":4375,"src":"1059:16:66","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":15244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1059:25:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31305f303030","id":15245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1087:6:66","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10_000"},"src":"1059:34:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1039:54:66"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15248,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15240,"src":"1112:9:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1124:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1112:13:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15258,"nodeType":"IfStatement","src":"1108:74:66","trueBody":{"expression":{"arguments":[{"id":15254,"name":"feeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15196,"src":"1158:12:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15255,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15240,"src":"1172:9:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15251,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20731,"src":"1127:14:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$20731_$","typeString":"type(library TransferHelper)"}},"id":15253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferETH","nodeType":"MemberAccess","referencedDeclaration":20730,"src":"1127:30:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":15256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1127:55:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15257,"nodeType":"ExpressionStatement","src":"1127:55:66"}},{"expression":{"arguments":[{"id":15262,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15192,"src":"1228:9:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15263,"name":"balanceWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15211,"src":"1239:12:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":15264,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15240,"src":"1254:9:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1239:24:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15259,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20731,"src":"1197:14:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$20731_$","typeString":"type(library TransferHelper)"}},"id":15261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferETH","nodeType":"MemberAccess","referencedDeclaration":20730,"src":"1197:30:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":15266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1197:67:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15267,"nodeType":"ExpressionStatement","src":"1197:67:66"}]}}]},"documentation":{"id":15188,"nodeType":"StructuredDocumentation","src":"521:41:66","text":"@inheritdoc IPeripheryPaymentsWithFee"},"functionSelector":"9b2c0a37","id":15271,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapWETH9WithFee","nodeType":"FunctionDefinition","overrides":{"id":15198,"nodeType":"OverrideSpecifier","overrides":[],"src":"735:8:66"},"parameters":{"id":15197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15190,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":15271,"src":"606:21:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15189,"name":"uint256","nodeType":"ElementaryTypeName","src":"606:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15192,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":15271,"src":"638:17:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15191,"name":"address","nodeType":"ElementaryTypeName","src":"638:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15194,"mutability":"mutable","name":"feeBips","nodeType":"VariableDeclaration","scope":15271,"src":"666:15:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15193,"name":"uint256","nodeType":"ElementaryTypeName","src":"666:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15196,"mutability":"mutable","name":"feeRecipient","nodeType":"VariableDeclaration","scope":15271,"src":"692:20:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15195,"name":"address","nodeType":"ElementaryTypeName","src":"692:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"595:124:66"},"returnParameters":{"id":15199,"nodeType":"ParameterList","parameters":[],"src":"744:0:66"},"scope":15353,"src":"568:715:66","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[16183],"body":{"id":15351,"nodeType":"Block","src":"1537:496:66","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15287,"name":"feeBips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15280,"src":"1556:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1566:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1556:11:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15290,"name":"feeBips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15280,"src":"1571:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"313030","id":15291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1582:3:66","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"1571:14:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1556:29:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15286,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1548:7:66","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":15294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1548:38:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15295,"nodeType":"ExpressionStatement","src":"1548:38:66"},{"assignments":[15297],"declarations":[{"constant":false,"id":15297,"mutability":"mutable","name":"balanceToken","nodeType":"VariableDeclaration","scope":15351,"src":"1599:20:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15296,"name":"uint256","nodeType":"ElementaryTypeName","src":"1599:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15307,"initialValue":{"arguments":[{"arguments":[{"id":15304,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1654:4:66","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPaymentsWithFee_$15353","typeString":"contract PeripheryPaymentsWithFee"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPaymentsWithFee_$15353","typeString":"contract PeripheryPaymentsWithFee"}],"id":15303,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1646:7:66","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15302,"name":"address","nodeType":"ElementaryTypeName","src":"1646:7:66","typeDescriptions":{}}},"id":15305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1646:13:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"id":15299,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15274,"src":"1629:5:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15298,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31070,"src":"1622:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$31070_$","typeString":"type(contract IERC20)"}},"id":15300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1622:13:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$31070","typeString":"contract IERC20"}},"id":15301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":31009,"src":"1622:23:66","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1622:38:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1599:61:66"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15309,"name":"balanceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15297,"src":"1679:12:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":15310,"name":"amountMinimum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15276,"src":"1695:13:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1679:29:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e7420746f6b656e","id":15312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1710:20:66","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":15308,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1671:7:66","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1671:60:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15314,"nodeType":"ExpressionStatement","src":"1671:60:66"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15315,"name":"balanceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15297,"src":"1748:12:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1763:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1748:16:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15350,"nodeType":"IfStatement","src":"1744:282:66","trueBody":{"id":15349,"nodeType":"Block","src":"1766:260:66","statements":[{"assignments":[15319],"declarations":[{"constant":false,"id":15319,"mutability":"mutable","name":"feeAmount","nodeType":"VariableDeclaration","scope":15349,"src":"1781:17:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15318,"name":"uint256","nodeType":"ElementaryTypeName","src":"1781:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15326,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":15322,"name":"feeBips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15280,"src":"1818:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15320,"name":"balanceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15297,"src":"1801:12:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":4375,"src":"1801:16:66","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":15323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1801:25:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31305f303030","id":15324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1829:6:66","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10_000"},"src":"1801:34:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1781:54:66"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15327,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15319,"src":"1854:9:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1866:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1854:13:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15338,"nodeType":"IfStatement","src":"1850:78:66","trueBody":{"expression":{"arguments":[{"id":15333,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15274,"src":"1897:5:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15334,"name":"feeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15282,"src":"1904:12:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15335,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15319,"src":"1918:9:66","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":15330,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20731,"src":"1869:14:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$20731_$","typeString":"type(library TransferHelper)"}},"id":15332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":20658,"src":"1869:27:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":15336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1869:59:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15337,"nodeType":"ExpressionStatement","src":"1869:59:66"}},{"expression":{"arguments":[{"id":15342,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15274,"src":"1971:5:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15343,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15278,"src":"1978:9:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15344,"name":"balanceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15297,"src":"1989:12:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":15345,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15319,"src":"2004:9:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1989:24:66","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":15339,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20731,"src":"1943:14:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$20731_$","typeString":"type(library TransferHelper)"}},"id":15341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":20658,"src":"1943:27:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":15347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1943:71:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15348,"nodeType":"ExpressionStatement","src":"1943:71:66"}]}}]},"documentation":{"id":15272,"nodeType":"StructuredDocumentation","src":"1291:41:66","text":"@inheritdoc IPeripheryPaymentsWithFee"},"functionSelector":"e0e189a0","id":15352,"implemented":true,"kind":"function","modifiers":[],"name":"sweepTokenWithFee","nodeType":"FunctionDefinition","overrides":{"id":15284,"nodeType":"OverrideSpecifier","overrides":[],"src":"1528:8:66"},"parameters":{"id":15283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15274,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15352,"src":"1375:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15273,"name":"address","nodeType":"ElementaryTypeName","src":"1375:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15276,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":15352,"src":"1399:21:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15275,"name":"uint256","nodeType":"ElementaryTypeName","src":"1399:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15278,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":15352,"src":"1431:17:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15277,"name":"address","nodeType":"ElementaryTypeName","src":"1431:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15280,"mutability":"mutable","name":"feeBips","nodeType":"VariableDeclaration","scope":15352,"src":"1459:15:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15279,"name":"uint256","nodeType":"ElementaryTypeName","src":"1459:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15282,"mutability":"mutable","name":"feeRecipient","nodeType":"VariableDeclaration","scope":15352,"src":"1485:20:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15281,"name":"address","nodeType":"ElementaryTypeName","src":"1485:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1364:148:66"},"returnParameters":{"id":15285,"nodeType":"ParameterList","parameters":[],"src":"1537:0:66"},"scope":15353,"src":"1338:695:66","stateMutability":"payable","virtual":false,"visibility":"public"}],"scope":15354,"src":"382:1654:66"}],"src":"46:1992:66"},"id":66},"contracts/elixir-periphery/base/PeripheryValidation.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/base/PeripheryValidation.sol","exportedSymbols":{"PeripheryValidation":[15380]},"id":15381,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15355,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:67"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":15380,"linearizedBaseContracts":[15380],"name":"PeripheryValidation","nodeType":"ContractDefinition","nodes":[{"body":{"id":15364,"nodeType":"Block","src":"159:55:67","statements":[{"expression":{"arguments":[{"id":15360,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15357,"src":"185:8:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15359,"name":"_checkDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15379,"src":"170:14:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":15361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"170:24:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15362,"nodeType":"ExpressionStatement","src":"170:24:67"},{"id":15363,"nodeType":"PlaceholderStatement","src":"205:1:67"}]},"id":15365,"name":"checkDeadline","nodeType":"ModifierDefinition","parameters":{"id":15358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15357,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":15365,"src":"141:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15356,"name":"uint256","nodeType":"ElementaryTypeName","src":"141:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"140:18:67"},"src":"118:96:67","virtual":false,"visibility":"internal"},{"body":{"id":15378,"nodeType":"Block","src":"277:78:67","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15371,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"296:5:67","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":15372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"296:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":15373,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15367,"src":"315:8:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"296:27:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472616e73616374696f6e20746f6f206f6c64","id":15375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"325:21:67","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":15370,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"288:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"288:59:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15377,"nodeType":"ExpressionStatement","src":"288:59:67"}]},"id":15379,"implemented":true,"kind":"function","modifiers":[],"name":"_checkDeadline","nodeType":"FunctionDefinition","parameters":{"id":15368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15367,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":15379,"src":"246:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15366,"name":"uint256","nodeType":"ElementaryTypeName","src":"246:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"245:18:67"},"returnParameters":{"id":15369,"nodeType":"ParameterList","parameters":[],"src":"277:0:67"},"scope":15380,"src":"222:133:67","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":15381,"src":"73:285:67"}],"src":"46:314:67"},"id":67},"contracts/elixir-periphery/base/PoolInitializer.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/base/PoolInitializer.sol","exportedSymbols":{"IElixirFactory":[3251],"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"IPeripheryImmutableState":[16125],"IPoolInitializer":[16203],"PeripheryImmutableState":[14955],"PoolInitializer":[15472]},"id":15473,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15382,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:68"},{"absolutePath":"contracts/elixir-core/interfaces/IElixirFactory.sol","file":"../../elixir-core/interfaces/IElixirFactory.sol","id":15383,"nodeType":"ImportDirective","scope":15473,"sourceUnit":3252,"src":"73:57:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"../../elixir-core/interfaces/IElixirPool.sol","id":15384,"nodeType":"ImportDirective","scope":15473,"sourceUnit":3274,"src":"132:54:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/PeripheryImmutableState.sol","file":"./PeripheryImmutableState.sol","id":15385,"nodeType":"ImportDirective","scope":15473,"sourceUnit":14956,"src":"190:39:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/IPoolInitializer.sol","file":"../interfaces/IPoolInitializer.sol","id":15386,"nodeType":"ImportDirective","scope":15473,"sourceUnit":16204,"src":"231:44:68","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":15388,"name":"IPoolInitializer","nodeType":"UserDefinedTypeName","referencedDeclaration":16203,"src":"361:16:68","typeDescriptions":{"typeIdentifier":"t_contract$_IPoolInitializer_$16203","typeString":"contract IPoolInitializer"}},"id":15389,"nodeType":"InheritanceSpecifier","src":"361:16:68"},{"baseName":{"id":15390,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":14955,"src":"379:23:68","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$14955","typeString":"contract PeripheryImmutableState"}},"id":15391,"nodeType":"InheritanceSpecifier","src":"379:23:68"}],"contractDependencies":[14955,16125,16203],"contractKind":"contract","documentation":{"id":15387,"nodeType":"StructuredDocumentation","src":"279:45:68","text":"@title Creates and initializes V3 Pools"},"fullyImplemented":false,"id":15472,"linearizedBaseContracts":[15472,14955,16125,16203],"name":"PoolInitializer","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[16202],"body":{"id":15470,"nodeType":"Block","src":"650:520:68","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15407,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15394,"src":"669:6:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":15408,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15396,"src":"678:6:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"669:15:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15406,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"661:7:68","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":15410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"661:24:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15411,"nodeType":"ExpressionStatement","src":"661:24:68"},{"expression":{"id":15421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15412,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15404,"src":"696:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":15417,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15394,"src":"735:6:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15418,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15396,"src":"743:6:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15419,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15398,"src":"751:3:68","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":15414,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14934,"src":"718:7:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15413,"name":"IElixirFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3251,"src":"703:14:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirFactory_$3251_$","typeString":"type(contract IElixirFactory)"}},"id":15415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"703:23:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirFactory_$3251","typeString":"contract IElixirFactory"}},"id":15416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":3224,"src":"703:31:68","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":15420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"703:52:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"696:59:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15422,"nodeType":"ExpressionStatement","src":"696:59:68"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15423,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15404,"src":"772:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":15426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"788:1:68","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":15425,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"780:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15424,"name":"address","nodeType":"ElementaryTypeName","src":"780:7:68","typeDescriptions":{}}},"id":15427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"780:10:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"772:18:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15468,"nodeType":"Block","src":"944:219:68","statements":[{"assignments":[15449,null,null,null,null,null,null],"declarations":[{"constant":false,"id":15449,"mutability":"mutable","name":"sqrtPriceX96Existing","nodeType":"VariableDeclaration","scope":15468,"src":"960:28:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15448,"name":"uint160","nodeType":"ElementaryTypeName","src":"960:7:68","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},null,null,null,null,null,null],"id":15455,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":15451,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15404,"src":"1016:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15450,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1004:11:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":15452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1004:17:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":15453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":3680,"src":"1004:23:68","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":15454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1004:25:68","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":"959:70:68"},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":15458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15456,"name":"sqrtPriceX96Existing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15449,"src":"1048:20:68","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":15457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1072:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1048:25:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15467,"nodeType":"IfStatement","src":"1044:108:68","trueBody":{"id":15466,"nodeType":"Block","src":"1075:77:68","statements":[{"expression":{"arguments":[{"id":15463,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15400,"src":"1123:12:68","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"arguments":[{"id":15460,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15404,"src":"1106:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15459,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1094:11:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":15461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1094:17:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":15462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":3324,"src":"1094:28:68","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint160_$returns$__$","typeString":"function (uint160) external"}},"id":15464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1094:42:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15465,"nodeType":"ExpressionStatement","src":"1094:42:68"}]}}]},"id":15469,"nodeType":"IfStatement","src":"768:395:68","trueBody":{"id":15447,"nodeType":"Block","src":"792:146:68","statements":[{"expression":{"id":15438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15429,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15404,"src":"807:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":15434,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15394,"src":"849:6:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15435,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15396,"src":"857:6:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15436,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15398,"src":"865:3:68","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":15431,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14934,"src":"829:7:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15430,"name":"IElixirFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3251,"src":"814:14:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirFactory_$3251_$","typeString":"type(contract IElixirFactory)"}},"id":15432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"814:23:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirFactory_$3251","typeString":"contract IElixirFactory"}},"id":15433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"createPool","nodeType":"MemberAccess","referencedDeclaration":3236,"src":"814:34:68","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint24_$returns$_t_address_$","typeString":"function (address,address,uint24) external returns (address)"}},"id":15437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"814:55:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"807:62:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15439,"nodeType":"ExpressionStatement","src":"807:62:68"},{"expression":{"arguments":[{"id":15444,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15400,"src":"913:12:68","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"arguments":[{"id":15441,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15404,"src":"896:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15440,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"884:11:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":15442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"884:17:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":15443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":3324,"src":"884:28:68","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint160_$returns$__$","typeString":"function (uint160) external"}},"id":15445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"884:42:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15446,"nodeType":"ExpressionStatement","src":"884:42:68"}]}}]},"documentation":{"id":15392,"nodeType":"StructuredDocumentation","src":"410:32:68","text":"@inheritdoc IPoolInitializer"},"functionSelector":"13ead562","id":15471,"implemented":true,"kind":"function","modifiers":[],"name":"createAndInitializePoolIfNecessary","nodeType":"FunctionDefinition","overrides":{"id":15402,"nodeType":"OverrideSpecifier","overrides":[],"src":"618:8:68"},"parameters":{"id":15401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15394,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":15471,"src":"502:14:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15393,"name":"address","nodeType":"ElementaryTypeName","src":"502:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15396,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":15471,"src":"527:14:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15395,"name":"address","nodeType":"ElementaryTypeName","src":"527:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15398,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":15471,"src":"552:10:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":15397,"name":"uint24","nodeType":"ElementaryTypeName","src":"552:6:68","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":15400,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":15471,"src":"573:20:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15399,"name":"uint160","nodeType":"ElementaryTypeName","src":"573:7:68","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"491:109:68"},"returnParameters":{"id":15405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15404,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":15471,"src":"636:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15403,"name":"address","nodeType":"ElementaryTypeName","src":"636:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"635:14:68"},"scope":15472,"src":"448:722:68","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":15473,"src":"324:849:68"}],"src":"46:1129:68"},"id":68},"contracts/elixir-periphery/base/SelfPermit.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/base/SelfPermit.sol","exportedSymbols":{"IERC20":[31070],"IERC20Permit":[30309],"IERC20PermitAllowed":[16428],"ISelfPermit":[16271],"SelfPermit":[15639]},"id":15640,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15474,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:69"},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","file":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","id":15475,"nodeType":"ImportDirective","scope":15640,"sourceUnit":31071,"src":"74:64:69","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol","file":"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol","id":15476,"nodeType":"ImportDirective","scope":15640,"sourceUnit":30310,"src":"140:65:69","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/ISelfPermit.sol","file":"../interfaces/ISelfPermit.sol","id":15477,"nodeType":"ImportDirective","scope":15640,"sourceUnit":16272,"src":"209:39:69","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol","file":"../interfaces/external/IERC20PermitAllowed.sol","id":15478,"nodeType":"ImportDirective","scope":15640,"sourceUnit":16429,"src":"250:56:69","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":15480,"name":"ISelfPermit","nodeType":"UserDefinedTypeName","referencedDeclaration":16271,"src":"641:11:69","typeDescriptions":{"typeIdentifier":"t_contract$_ISelfPermit_$16271","typeString":"contract ISelfPermit"}},"id":15481,"nodeType":"InheritanceSpecifier","src":"641:11:69"}],"contractDependencies":[16271],"contractKind":"contract","documentation":{"id":15479,"nodeType":"StructuredDocumentation","src":"310:299:69","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":15639,"linearizedBaseContracts":[15639,16271],"name":"SelfPermit","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[16222],"body":{"id":15515,"nodeType":"Block","src":"877:98:69","statements":[{"expression":{"arguments":[{"expression":{"id":15502,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"915:3:69","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"915:10:69","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":15506,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"935:4:69","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$15639","typeString":"contract SelfPermit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfPermit_$15639","typeString":"contract SelfPermit"}],"id":15505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"927:7:69","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15504,"name":"address","nodeType":"ElementaryTypeName","src":"927:7:69","typeDescriptions":{}}},"id":15507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"927:13:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15508,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15486,"src":"942:5:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15509,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15488,"src":"949:8:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15510,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15490,"src":"959:1:69","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":15511,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15492,"src":"962:1:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":15512,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15494,"src":"965:1:69","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":15499,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"901:5:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15498,"name":"IERC20Permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30309,"src":"888:12:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Permit_$30309_$","typeString":"type(contract IERC20Permit)"}},"id":15500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"888:19:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$30309","typeString":"contract IERC20Permit"}},"id":15501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":30294,"src":"888:26:69","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":15513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"888:79:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15514,"nodeType":"ExpressionStatement","src":"888:79:69"}]},"documentation":{"id":15482,"nodeType":"StructuredDocumentation","src":"660:27:69","text":"@inheritdoc ISelfPermit"},"functionSelector":"f3995c67","id":15516,"implemented":true,"kind":"function","modifiers":[],"name":"selfPermit","nodeType":"FunctionDefinition","overrides":{"id":15496,"nodeType":"OverrideSpecifier","overrides":[],"src":"868:8:69"},"parameters":{"id":15495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15484,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15516,"src":"723:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15483,"name":"address","nodeType":"ElementaryTypeName","src":"723:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15486,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":15516,"src":"747:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15485,"name":"uint256","nodeType":"ElementaryTypeName","src":"747:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15488,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":15516,"src":"771:16:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15487,"name":"uint256","nodeType":"ElementaryTypeName","src":"771:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15490,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":15516,"src":"798:7:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15489,"name":"uint8","nodeType":"ElementaryTypeName","src":"798:5:69","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":15492,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":15516,"src":"816:9:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15491,"name":"bytes32","nodeType":"ElementaryTypeName","src":"816:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15494,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":15516,"src":"836:9:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15493,"name":"bytes32","nodeType":"ElementaryTypeName","src":"836:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"712:140:69"},"returnParameters":{"id":15497,"nodeType":"ParameterList","parameters":[],"src":"877:0:69"},"scope":15639,"src":"693:282:69","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[16238],"body":{"id":15556,"nodeType":"Block","src":"1213:126:69","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":15537,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1252:3:69","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1252:10:69","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":15541,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1272:4:69","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$15639","typeString":"contract SelfPermit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfPermit_$15639","typeString":"contract SelfPermit"}],"id":15540,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1264:7:69","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15539,"name":"address","nodeType":"ElementaryTypeName","src":"1264:7:69","typeDescriptions":{}}},"id":15542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1264:13:69","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":15534,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15519,"src":"1235:5:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15533,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31070,"src":"1228:6:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$31070_$","typeString":"type(contract IERC20)"}},"id":15535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1228:13:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$31070","typeString":"contract IERC20"}},"id":15536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":31029,"src":"1228:23:69","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":15543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1228:50:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":15544,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15521,"src":"1281:5:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1228:58:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15555,"nodeType":"IfStatement","src":"1224:107:69","trueBody":{"expression":{"arguments":[{"id":15547,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15519,"src":"1299:5:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15548,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15521,"src":"1306:5:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15549,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15523,"src":"1313:8:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15550,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15525,"src":"1323:1:69","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":15551,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15527,"src":"1326:1:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":15552,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15529,"src":"1329:1:69","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":15546,"name":"selfPermit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15516,"src":"1288:10:69","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":15553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1288:43:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15554,"nodeType":"ExpressionStatement","src":"1288:43:69"}}]},"documentation":{"id":15517,"nodeType":"StructuredDocumentation","src":"983:27:69","text":"@inheritdoc ISelfPermit"},"functionSelector":"c2e3140a","id":15557,"implemented":true,"kind":"function","modifiers":[],"name":"selfPermitIfNecessary","nodeType":"FunctionDefinition","overrides":{"id":15531,"nodeType":"OverrideSpecifier","overrides":[],"src":"1204:8:69"},"parameters":{"id":15530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15519,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15557,"src":"1057:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15518,"name":"address","nodeType":"ElementaryTypeName","src":"1057:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15521,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":15557,"src":"1081:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15520,"name":"uint256","nodeType":"ElementaryTypeName","src":"1081:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15523,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":15557,"src":"1105:16:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15522,"name":"uint256","nodeType":"ElementaryTypeName","src":"1105:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15525,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":15557,"src":"1132:7:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15524,"name":"uint8","nodeType":"ElementaryTypeName","src":"1132:5:69","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":15527,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":15557,"src":"1150:9:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15526,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1150:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15529,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":15557,"src":"1170:9:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15528,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1170:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1046:140:69"},"returnParameters":{"id":15532,"nodeType":"ParameterList","parameters":[],"src":"1213:0:69"},"scope":15639,"src":"1016:323:69","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[16254],"body":{"id":15592,"nodeType":"Block","src":"1569:109:69","statements":[{"expression":{"arguments":[{"expression":{"id":15578,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1614:3:69","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1614:10:69","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":15582,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1634:4:69","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$15639","typeString":"contract SelfPermit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfPermit_$15639","typeString":"contract SelfPermit"}],"id":15581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1626:7:69","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15580,"name":"address","nodeType":"ElementaryTypeName","src":"1626:7:69","typeDescriptions":{}}},"id":15583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1626:13:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15584,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15562,"src":"1641:5:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15585,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15564,"src":"1648:6:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":15586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1656:4:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":15587,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15566,"src":"1662:1:69","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":15588,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15568,"src":"1665:1:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":15589,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15570,"src":"1668:1:69","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":15575,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15560,"src":"1600:5:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15574,"name":"IERC20PermitAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16428,"src":"1580:19:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20PermitAllowed_$16428_$","typeString":"type(contract IERC20PermitAllowed)"}},"id":15576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1580:26:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitAllowed_$16428","typeString":"contract IERC20PermitAllowed"}},"id":15577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":16427,"src":"1580:33:69","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":15590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1580:90:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15591,"nodeType":"ExpressionStatement","src":"1580:90:69"}]},"documentation":{"id":15558,"nodeType":"StructuredDocumentation","src":"1347:27:69","text":"@inheritdoc ISelfPermit"},"functionSelector":"4659a494","id":15593,"implemented":true,"kind":"function","modifiers":[],"name":"selfPermitAllowed","nodeType":"FunctionDefinition","overrides":{"id":15572,"nodeType":"OverrideSpecifier","overrides":[],"src":"1560:8:69"},"parameters":{"id":15571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15560,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15593,"src":"1417:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15559,"name":"address","nodeType":"ElementaryTypeName","src":"1417:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15562,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":15593,"src":"1441:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15561,"name":"uint256","nodeType":"ElementaryTypeName","src":"1441:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15564,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":15593,"src":"1465:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15563,"name":"uint256","nodeType":"ElementaryTypeName","src":"1465:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15566,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":15593,"src":"1490:7:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15565,"name":"uint8","nodeType":"ElementaryTypeName","src":"1490:5:69","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":15568,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":15593,"src":"1508:9:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15567,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1508:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15570,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":15593,"src":"1528:9:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15569,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1528:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1406:138:69"},"returnParameters":{"id":15573,"nodeType":"ParameterList","parameters":[],"src":"1569:0:69"},"scope":15639,"src":"1380:298:69","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[16270],"body":{"id":15637,"nodeType":"Block","src":"1921:156:69","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":15614,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1960:3:69","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1960:10:69","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":15618,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1980:4:69","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$15639","typeString":"contract SelfPermit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfPermit_$15639","typeString":"contract SelfPermit"}],"id":15617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1972:7:69","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15616,"name":"address","nodeType":"ElementaryTypeName","src":"1972:7:69","typeDescriptions":{}}},"id":15619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1972:13:69","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":15611,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15596,"src":"1943:5:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15610,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31070,"src":"1936:6:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$31070_$","typeString":"type(contract IERC20)"}},"id":15612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1936:13:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$31070","typeString":"contract IERC20"}},"id":15613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":31029,"src":"1936:23:69","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":15620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1936:50:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":15623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1994:7:69","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":15622,"name":"uint256","nodeType":"ElementaryTypeName","src":"1994:7:69","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":15621,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1989:4:69","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":15624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1989:13:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":15625,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"1989:17:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1936:70:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15636,"nodeType":"IfStatement","src":"1932:137:69","trueBody":{"expression":{"arguments":[{"id":15628,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15596,"src":"2039:5:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15629,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15598,"src":"2046:5:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15630,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15600,"src":"2053:6:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15631,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15602,"src":"2061:1:69","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":15632,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15604,"src":"2064:1:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":15633,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15606,"src":"2067:1:69","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":15627,"name":"selfPermitAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15593,"src":"2021:17:69","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":15634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2021:48:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15635,"nodeType":"ExpressionStatement","src":"2021:48:69"}}]},"documentation":{"id":15594,"nodeType":"StructuredDocumentation","src":"1686:27:69","text":"@inheritdoc ISelfPermit"},"functionSelector":"a4a78f0c","id":15638,"implemented":true,"kind":"function","modifiers":[],"name":"selfPermitAllowedIfNecessary","nodeType":"FunctionDefinition","overrides":{"id":15608,"nodeType":"OverrideSpecifier","overrides":[],"src":"1912:8:69"},"parameters":{"id":15607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15596,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15638,"src":"1767:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15595,"name":"address","nodeType":"ElementaryTypeName","src":"1767:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15598,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":15638,"src":"1791:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15597,"name":"uint256","nodeType":"ElementaryTypeName","src":"1791:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15600,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":15638,"src":"1815:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15599,"name":"uint256","nodeType":"ElementaryTypeName","src":"1815:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15602,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":15638,"src":"1840:7:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15601,"name":"uint8","nodeType":"ElementaryTypeName","src":"1840:5:69","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":15604,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":15638,"src":"1858:9:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15603,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1858:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15606,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":15638,"src":"1878:9:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15605,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1878:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1756:138:69"},"returnParameters":{"id":15609,"nodeType":"ParameterList","parameters":[],"src":"1921:0:69"},"scope":15639,"src":"1719:358:69","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":15640,"src":"609:1471:69"}],"src":"46:2036:69"},"id":69},"contracts/elixir-periphery/interfaces/IERC20Metadata.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/IERC20Metadata.sol","exportedSymbols":{"IERC20":[31070],"IERC20Metadata":[15664]},"id":15665,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15641,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"46:23:70"},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","file":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","id":15642,"nodeType":"ImportDirective","scope":15665,"sourceUnit":31071,"src":"73:64:70","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":15644,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":31070,"src":"299:6:70","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$31070","typeString":"contract IERC20"}},"id":15645,"nodeType":"InheritanceSpecifier","src":"299:6:70"}],"contractDependencies":[31070],"contractKind":"interface","documentation":{"id":15643,"nodeType":"StructuredDocumentation","src":"141:130:70","text":"@title IERC20Metadata\n @title Interface for ERC20 Metadata\n @notice Extension to IERC20 that includes token metadata"},"fullyImplemented":false,"id":15664,"linearizedBaseContracts":[15664,31070],"name":"IERC20Metadata","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":15646,"nodeType":"StructuredDocumentation","src":"313:33:70","text":"@return The name of the token"},"functionSelector":"06fdde03","id":15651,"implemented":false,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","parameters":{"id":15647,"nodeType":"ParameterList","parameters":[],"src":"365:2:70"},"returnParameters":{"id":15650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15649,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15651,"src":"391:13:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15648,"name":"string","nodeType":"ElementaryTypeName","src":"391:6:70","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"390:15:70"},"scope":15664,"src":"352:54:70","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15652,"nodeType":"StructuredDocumentation","src":"414:35:70","text":"@return The symbol of the token"},"functionSelector":"95d89b41","id":15657,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","parameters":{"id":15653,"nodeType":"ParameterList","parameters":[],"src":"470:2:70"},"returnParameters":{"id":15656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15655,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15657,"src":"496:13:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15654,"name":"string","nodeType":"ElementaryTypeName","src":"496:6:70","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"495:15:70"},"scope":15664,"src":"455:56:70","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15658,"nodeType":"StructuredDocumentation","src":"519:54:70","text":"@return The number of decimal places the token has"},"functionSelector":"313ce567","id":15663,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nodeType":"FunctionDefinition","parameters":{"id":15659,"nodeType":"ParameterList","parameters":[],"src":"596:2:70"},"returnParameters":{"id":15662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15661,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15663,"src":"622:5:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15660,"name":"uint8","nodeType":"ElementaryTypeName","src":"622:5:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"621:7:70"},"scope":15664,"src":"579:50:70","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":15665,"src":"271:361:70"}],"src":"46:588:70"},"id":70},"contracts/elixir-periphery/interfaces/IERC721Permit.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/IERC721Permit.sol","exportedSymbols":{"IERC165":[30378],"IERC721":[32130],"IERC721Permit":[15699]},"id":15700,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15666,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:71"},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol","file":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol","id":15667,"nodeType":"ImportDirective","scope":15700,"sourceUnit":32131,"src":"74:66:71","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":15669,"name":"IERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":32130,"src":"297:7:71","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$32130","typeString":"contract IERC721"}},"id":15670,"nodeType":"InheritanceSpecifier","src":"297:7:71"}],"contractDependencies":[30378,32130],"contractKind":"interface","documentation":{"id":15668,"nodeType":"StructuredDocumentation","src":"144:126:71","text":"@title ERC721 with permit\n @notice Extension to ERC721 that includes a permit function for signature based approvals"},"fullyImplemented":false,"id":15699,"linearizedBaseContracts":[15699,32130,30378],"name":"IERC721Permit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":15671,"nodeType":"StructuredDocumentation","src":"312:105:71","text":"@notice The permit typehash used in the permit signature\n @return The typehash for the permit"},"functionSelector":"30adf81f","id":15676,"implemented":false,"kind":"function","modifiers":[],"name":"PERMIT_TYPEHASH","nodeType":"FunctionDefinition","parameters":{"id":15672,"nodeType":"ParameterList","parameters":[],"src":"447:2:71"},"returnParameters":{"id":15675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15674,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15676,"src":"473:7:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15673,"name":"bytes32","nodeType":"ElementaryTypeName","src":"473:7:71","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"472:9:71"},"scope":15699,"src":"423:59:71","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":15677,"nodeType":"StructuredDocumentation","src":"490:136:71","text":"@notice The domain separator used in the permit signature\n @return The domain seperator used in encoding of permit signature"},"functionSelector":"3644e515","id":15682,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","parameters":{"id":15678,"nodeType":"ParameterList","parameters":[],"src":"657:2:71"},"returnParameters":{"id":15681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15680,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15682,"src":"683:7:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15679,"name":"bytes32","nodeType":"ElementaryTypeName","src":"683:7:71","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"682:9:71"},"scope":15699,"src":"632:60:71","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15683,"nodeType":"StructuredDocumentation","src":"700:611:71","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":15698,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":15696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15685,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":15698,"src":"1343:15:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15684,"name":"address","nodeType":"ElementaryTypeName","src":"1343:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15687,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":15698,"src":"1369:15:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15686,"name":"uint256","nodeType":"ElementaryTypeName","src":"1369:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15689,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":15698,"src":"1395:16:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15688,"name":"uint256","nodeType":"ElementaryTypeName","src":"1395:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15691,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":15698,"src":"1422:7:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15690,"name":"uint8","nodeType":"ElementaryTypeName","src":"1422:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":15693,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":15698,"src":"1440:9:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15692,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1440:7:71","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15695,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":15698,"src":"1460:9:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15694,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1460:7:71","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1332:144:71"},"returnParameters":{"id":15697,"nodeType":"ParameterList","parameters":[],"src":"1493:0:71"},"scope":15699,"src":"1317:177:71","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":15700,"src":"270:1227:71"}],"src":"46:1453:71"},"id":71},"contracts/elixir-periphery/interfaces/IElixirMigrator.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/IElixirMigrator.sol","exportedSymbols":{"IElixirMigrator":[15746],"IMulticall":[15852],"IPoolInitializer":[16203],"ISelfPermit":[16271]},"id":15747,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15701,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:72"},{"id":15702,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"72:19:72"},{"absolutePath":"contracts/elixir-periphery/interfaces/IMulticall.sol","file":"./IMulticall.sol","id":15703,"nodeType":"ImportDirective","scope":15747,"sourceUnit":15853,"src":"95:26:72","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/ISelfPermit.sol","file":"./ISelfPermit.sol","id":15704,"nodeType":"ImportDirective","scope":15747,"sourceUnit":16272,"src":"123:27:72","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/IPoolInitializer.sol","file":"./IPoolInitializer.sol","id":15705,"nodeType":"ImportDirective","scope":15747,"sourceUnit":16204,"src":"152:32:72","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":15707,"name":"IMulticall","nodeType":"UserDefinedTypeName","referencedDeclaration":15852,"src":"340:10:72","typeDescriptions":{"typeIdentifier":"t_contract$_IMulticall_$15852","typeString":"contract IMulticall"}},"id":15708,"nodeType":"InheritanceSpecifier","src":"340:10:72"},{"baseName":{"id":15709,"name":"ISelfPermit","nodeType":"UserDefinedTypeName","referencedDeclaration":16271,"src":"352:11:72","typeDescriptions":{"typeIdentifier":"t_contract$_ISelfPermit_$16271","typeString":"contract ISelfPermit"}},"id":15710,"nodeType":"InheritanceSpecifier","src":"352:11:72"},{"baseName":{"id":15711,"name":"IPoolInitializer","nodeType":"UserDefinedTypeName","referencedDeclaration":16203,"src":"365:16:72","typeDescriptions":{"typeIdentifier":"t_contract$_IPoolInitializer_$16203","typeString":"contract IPoolInitializer"}},"id":15712,"nodeType":"InheritanceSpecifier","src":"365:16:72"}],"contractDependencies":[15852,16203,16271],"contractKind":"interface","documentation":{"id":15706,"nodeType":"StructuredDocumentation","src":"188:123:72","text":"@title Elixir Migrator\n @notice Enables migration of liqudity from Pangolin v1-compatible pairs into Elixir pools"},"fullyImplemented":false,"id":15746,"linearizedBaseContracts":[15746,16203,16271,15852],"name":"IElixirMigrator","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IElixirMigrator.MigrateParams","id":15739,"members":[{"constant":false,"id":15714,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","scope":15739,"src":"421:12:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15713,"name":"address","nodeType":"ElementaryTypeName","src":"421:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15716,"mutability":"mutable","name":"liquidityToMigrate","nodeType":"VariableDeclaration","scope":15739,"src":"479:26:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15715,"name":"uint256","nodeType":"ElementaryTypeName","src":"479:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15718,"mutability":"mutable","name":"percentageToMigrate","nodeType":"VariableDeclaration","scope":15739,"src":"556:25:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15717,"name":"uint8","nodeType":"ElementaryTypeName","src":"556:5:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":15720,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":15739,"src":"631:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15719,"name":"address","nodeType":"ElementaryTypeName","src":"631:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15722,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":15739,"src":"656:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15721,"name":"address","nodeType":"ElementaryTypeName","src":"656:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15724,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":15739,"src":"681:10:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":15723,"name":"uint24","nodeType":"ElementaryTypeName","src":"681:6:72","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":15726,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":15739,"src":"702:15:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":15725,"name":"int24","nodeType":"ElementaryTypeName","src":"702:5:72","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":15728,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":15739,"src":"728:15:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":15727,"name":"int24","nodeType":"ElementaryTypeName","src":"728:5:72","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":15730,"mutability":"mutable","name":"amount0Min","nodeType":"VariableDeclaration","scope":15739,"src":"754:18:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15729,"name":"uint256","nodeType":"ElementaryTypeName","src":"754:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15732,"mutability":"mutable","name":"amount1Min","nodeType":"VariableDeclaration","scope":15739,"src":"828:18:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15731,"name":"uint256","nodeType":"ElementaryTypeName","src":"828:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15734,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":15739,"src":"902:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15733,"name":"address","nodeType":"ElementaryTypeName","src":"902:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15736,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":15739,"src":"930:16:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15735,"name":"uint256","nodeType":"ElementaryTypeName","src":"930:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15738,"mutability":"mutable","name":"refundAsETH","nodeType":"VariableDeclaration","scope":15739,"src":"957:16:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15737,"name":"bool","nodeType":"ElementaryTypeName","src":"957:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"MigrateParams","nodeType":"StructDefinition","scope":15746,"src":"389:592:72","visibility":"public"},{"documentation":{"id":15740,"nodeType":"StructuredDocumentation","src":"989:564:72","text":"@notice Migrates liquidity to elxir by burning v1 liquidity and minting a new position for elixir\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 elixir liquidity that the v1 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 v1 liquidity, encoded as `MigrateParams` in calldata"},"functionSelector":"d44f2bf2","id":15745,"implemented":false,"kind":"function","modifiers":[],"name":"migrate","nodeType":"FunctionDefinition","parameters":{"id":15743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15742,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":15745,"src":"1576:29:72","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_calldata_ptr","typeString":"struct IElixirMigrator.MigrateParams"},"typeName":{"id":15741,"name":"MigrateParams","nodeType":"UserDefinedTypeName","referencedDeclaration":15739,"src":"1576:13:72","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$15739_storage_ptr","typeString":"struct IElixirMigrator.MigrateParams"}},"visibility":"internal"}],"src":"1575:31:72"},"returnParameters":{"id":15744,"nodeType":"ParameterList","parameters":[],"src":"1615:0:72"},"scope":15746,"src":"1559:57:72","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":15747,"src":"311:1308:72"}],"src":"46:1575:72"},"id":72},"contracts/elixir-periphery/interfaces/IElixirQuoter.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/IElixirQuoter.sol","exportedSymbols":{"IElixirQuoter":[15837]},"id":15838,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15748,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:73"},{"id":15749,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"72:19:73"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":15750,"nodeType":"StructuredDocumentation","src":"95:461:73","text":"@title Elixir Quoter 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":15837,"linearizedBaseContracts":[15837],"name":"IElixirQuoter","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":15751,"nodeType":"StructuredDocumentation","src":"587:624:73","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":15768,"implemented":false,"kind":"function","modifiers":[],"name":"quoteExactInput","nodeType":"FunctionDefinition","parameters":{"id":15756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15753,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":15768,"src":"1242:17:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15752,"name":"bytes","nodeType":"ElementaryTypeName","src":"1242:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":15755,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":15768,"src":"1261:16:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15754,"name":"uint256","nodeType":"ElementaryTypeName","src":"1261:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1241:37:73"},"returnParameters":{"id":15767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15758,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":15768,"src":"1329:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15757,"name":"uint256","nodeType":"ElementaryTypeName","src":"1329:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15761,"mutability":"mutable","name":"sqrtPriceX96AfterList","nodeType":"VariableDeclaration","scope":15768,"src":"1361:38:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[]"},"typeName":{"baseType":{"id":15759,"name":"uint160","nodeType":"ElementaryTypeName","src":"1361:7:73","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":15760,"nodeType":"ArrayTypeName","src":"1361:9:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"},{"constant":false,"id":15764,"mutability":"mutable","name":"initializedTicksCrossedList","nodeType":"VariableDeclaration","scope":15768,"src":"1414:43:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":15762,"name":"uint32","nodeType":"ElementaryTypeName","src":"1414:6:73","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":15763,"nodeType":"ArrayTypeName","src":"1414:8:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"},{"constant":false,"id":15766,"mutability":"mutable","name":"gasEstimate","nodeType":"VariableDeclaration","scope":15768,"src":"1472:19:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15765,"name":"uint256","nodeType":"ElementaryTypeName","src":"1472:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1314:188:73"},"scope":15837,"src":"1217:286:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"IElixirQuoter.QuoteExactInputSingleParams","id":15779,"members":[{"constant":false,"id":15770,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":15779,"src":"1557:15:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15769,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15772,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":15779,"src":"1583:16:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15771,"name":"address","nodeType":"ElementaryTypeName","src":"1583:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15774,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":15779,"src":"1610:16:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15773,"name":"uint256","nodeType":"ElementaryTypeName","src":"1610:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15776,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":15779,"src":"1637:10:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":15775,"name":"uint24","nodeType":"ElementaryTypeName","src":"1637:6:73","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":15778,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":15779,"src":"1658:25:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15777,"name":"uint160","nodeType":"ElementaryTypeName","src":"1658:7:73","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"QuoteExactInputSingleParams","nodeType":"StructDefinition","scope":15837,"src":"1511:180:73","visibility":"public"},{"documentation":{"id":15780,"nodeType":"StructuredDocumentation","src":"1699:800:73","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":15793,"implemented":false,"kind":"function","modifiers":[],"name":"quoteExactInputSingle","nodeType":"FunctionDefinition","parameters":{"id":15783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15782,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":15793,"src":"2536:41:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$15779_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactInputSingleParams"},"typeName":{"id":15781,"name":"QuoteExactInputSingleParams","nodeType":"UserDefinedTypeName","referencedDeclaration":15779,"src":"2536:27:73","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$15779_storage_ptr","typeString":"struct IElixirQuoter.QuoteExactInputSingleParams"}},"visibility":"internal"}],"src":"2535:43:73"},"returnParameters":{"id":15792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15785,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":15793,"src":"2629:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15784,"name":"uint256","nodeType":"ElementaryTypeName","src":"2629:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15787,"mutability":"mutable","name":"sqrtPriceX96After","nodeType":"VariableDeclaration","scope":15793,"src":"2661:25:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15786,"name":"uint160","nodeType":"ElementaryTypeName","src":"2661:7:73","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15789,"mutability":"mutable","name":"initializedTicksCrossed","nodeType":"VariableDeclaration","scope":15793,"src":"2701:30:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":15788,"name":"uint32","nodeType":"ElementaryTypeName","src":"2701:6:73","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":15791,"mutability":"mutable","name":"gasEstimate","nodeType":"VariableDeclaration","scope":15793,"src":"2746:19:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15790,"name":"uint256","nodeType":"ElementaryTypeName","src":"2746:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2614:162:73"},"scope":15837,"src":"2505:272:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15794,"nodeType":"StructuredDocumentation","src":"2785:660:73","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":15811,"implemented":false,"kind":"function","modifiers":[],"name":"quoteExactOutput","nodeType":"FunctionDefinition","parameters":{"id":15799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15796,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":15811,"src":"3477:17:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15795,"name":"bytes","nodeType":"ElementaryTypeName","src":"3477:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":15798,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":15811,"src":"3496:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15797,"name":"uint256","nodeType":"ElementaryTypeName","src":"3496:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3476:38:73"},"returnParameters":{"id":15810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15801,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":15811,"src":"3565:16:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15800,"name":"uint256","nodeType":"ElementaryTypeName","src":"3565:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15804,"mutability":"mutable","name":"sqrtPriceX96AfterList","nodeType":"VariableDeclaration","scope":15811,"src":"3596:38:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[]"},"typeName":{"baseType":{"id":15802,"name":"uint160","nodeType":"ElementaryTypeName","src":"3596:7:73","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":15803,"nodeType":"ArrayTypeName","src":"3596:9:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"},{"constant":false,"id":15807,"mutability":"mutable","name":"initializedTicksCrossedList","nodeType":"VariableDeclaration","scope":15811,"src":"3649:43:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":15805,"name":"uint32","nodeType":"ElementaryTypeName","src":"3649:6:73","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":15806,"nodeType":"ArrayTypeName","src":"3649:8:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"},{"constant":false,"id":15809,"mutability":"mutable","name":"gasEstimate","nodeType":"VariableDeclaration","scope":15811,"src":"3707:19:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15808,"name":"uint256","nodeType":"ElementaryTypeName","src":"3707:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3550:187:73"},"scope":15837,"src":"3451:287:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"IElixirQuoter.QuoteExactOutputSingleParams","id":15822,"members":[{"constant":false,"id":15813,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":15822,"src":"3793:15:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15812,"name":"address","nodeType":"ElementaryTypeName","src":"3793:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15815,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":15822,"src":"3819:16:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15814,"name":"address","nodeType":"ElementaryTypeName","src":"3819:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15817,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":15822,"src":"3846:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15816,"name":"uint256","nodeType":"ElementaryTypeName","src":"3846:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15819,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":15822,"src":"3871:10:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":15818,"name":"uint24","nodeType":"ElementaryTypeName","src":"3871:6:73","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":15821,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":15822,"src":"3892:25:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15820,"name":"uint160","nodeType":"ElementaryTypeName","src":"3892:7:73","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"QuoteExactOutputSingleParams","nodeType":"StructDefinition","scope":15837,"src":"3746:179:73","visibility":"public"},{"documentation":{"id":15823,"nodeType":"StructuredDocumentation","src":"3933:848:73","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":15836,"implemented":false,"kind":"function","modifiers":[],"name":"quoteExactOutputSingle","nodeType":"FunctionDefinition","parameters":{"id":15826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15825,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":15836,"src":"4819:42:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$15822_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactOutputSingleParams"},"typeName":{"id":15824,"name":"QuoteExactOutputSingleParams","nodeType":"UserDefinedTypeName","referencedDeclaration":15822,"src":"4819:28:73","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$15822_storage_ptr","typeString":"struct IElixirQuoter.QuoteExactOutputSingleParams"}},"visibility":"internal"}],"src":"4818:44:73"},"returnParameters":{"id":15835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15828,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":15836,"src":"4913:16:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15827,"name":"uint256","nodeType":"ElementaryTypeName","src":"4913:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15830,"mutability":"mutable","name":"sqrtPriceX96After","nodeType":"VariableDeclaration","scope":15836,"src":"4944:25:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15829,"name":"uint160","nodeType":"ElementaryTypeName","src":"4944:7:73","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15832,"mutability":"mutable","name":"initializedTicksCrossed","nodeType":"VariableDeclaration","scope":15836,"src":"4984:30:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":15831,"name":"uint32","nodeType":"ElementaryTypeName","src":"4984:6:73","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":15834,"mutability":"mutable","name":"gasEstimate","nodeType":"VariableDeclaration","scope":15836,"src":"5029:19:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15833,"name":"uint256","nodeType":"ElementaryTypeName","src":"5029:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4898:161:73"},"scope":15837,"src":"4787:273:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":15838,"src":"556:4507:73"}],"src":"46:5019:73"},"id":73},"contracts/elixir-periphery/interfaces/IMulticall.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/IMulticall.sol","exportedSymbols":{"IMulticall":[15852]},"id":15853,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15839,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:74"},{"id":15840,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"72:19:74"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":15841,"nodeType":"StructuredDocumentation","src":"95:111:74","text":"@title Multicall interface\n @notice Enables calling multiple methods in a single call to the contract"},"fullyImplemented":false,"id":15852,"linearizedBaseContracts":[15852],"name":"IMulticall","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":15842,"nodeType":"StructuredDocumentation","src":"234:381:74","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":15851,"implemented":false,"kind":"function","modifiers":[],"name":"multicall","nodeType":"FunctionDefinition","parameters":{"id":15846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15845,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":15851,"src":"640:21:74","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":15843,"name":"bytes","nodeType":"ElementaryTypeName","src":"640:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":15844,"nodeType":"ArrayTypeName","src":"640:7:74","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"639:23:74"},"returnParameters":{"id":15850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15849,"mutability":"mutable","name":"results","nodeType":"VariableDeclaration","scope":15851,"src":"689:22:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":15847,"name":"bytes","nodeType":"ElementaryTypeName","src":"689:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":15848,"nodeType":"ArrayTypeName","src":"689:7:74","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"688:24:74"},"scope":15852,"src":"621:92:74","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":15853,"src":"206:510:74"}],"src":"46:672:74"},"id":74},"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol","exportedSymbols":{"IERC165":[30378],"IERC721":[32130],"IERC721Enumerable":[32161],"IERC721Metadata":[32188],"IERC721Permit":[15699],"INonfungiblePositionManager":[16094],"IPeripheryImmutableState":[16125],"IPeripheryPayments":[16151],"IPoolInitializer":[16203],"PoolAddress":[19734]},"id":16095,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15854,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:75"},{"id":15855,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"72:19:75"},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol","file":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol","id":15856,"nodeType":"ImportDirective","scope":16095,"sourceUnit":32189,"src":"95:74:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol","file":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol","id":15857,"nodeType":"ImportDirective","scope":16095,"sourceUnit":32162,"src":"171:76:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/IPoolInitializer.sol","file":"./IPoolInitializer.sol","id":15858,"nodeType":"ImportDirective","scope":16095,"sourceUnit":16204,"src":"251:32:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/IERC721Permit.sol","file":"./IERC721Permit.sol","id":15859,"nodeType":"ImportDirective","scope":16095,"sourceUnit":15700,"src":"285:29:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol","file":"./IPeripheryPayments.sol","id":15860,"nodeType":"ImportDirective","scope":16095,"sourceUnit":16152,"src":"316:34:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol","file":"./IPeripheryImmutableState.sol","id":15861,"nodeType":"ImportDirective","scope":16095,"sourceUnit":16126,"src":"352:40:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/PoolAddress.sol","file":"../libraries/PoolAddress.sol","id":15862,"nodeType":"ImportDirective","scope":16095,"sourceUnit":19735,"src":"394:38:75","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":15864,"name":"IPoolInitializer","nodeType":"UserDefinedTypeName","referencedDeclaration":16203,"src":"658:16:75","typeDescriptions":{"typeIdentifier":"t_contract$_IPoolInitializer_$16203","typeString":"contract IPoolInitializer"}},"id":15865,"nodeType":"InheritanceSpecifier","src":"658:16:75"},{"baseName":{"id":15866,"name":"IPeripheryPayments","nodeType":"UserDefinedTypeName","referencedDeclaration":16151,"src":"681:18:75","typeDescriptions":{"typeIdentifier":"t_contract$_IPeripheryPayments_$16151","typeString":"contract IPeripheryPayments"}},"id":15867,"nodeType":"InheritanceSpecifier","src":"681:18:75"},{"baseName":{"id":15868,"name":"IPeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":16125,"src":"706:24:75","typeDescriptions":{"typeIdentifier":"t_contract$_IPeripheryImmutableState_$16125","typeString":"contract IPeripheryImmutableState"}},"id":15869,"nodeType":"InheritanceSpecifier","src":"706:24:75"},{"baseName":{"id":15870,"name":"IERC721Metadata","nodeType":"UserDefinedTypeName","referencedDeclaration":32188,"src":"737:15:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Metadata_$32188","typeString":"contract IERC721Metadata"}},"id":15871,"nodeType":"InheritanceSpecifier","src":"737:15:75"},{"baseName":{"id":15872,"name":"IERC721Enumerable","nodeType":"UserDefinedTypeName","referencedDeclaration":32161,"src":"759:17:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Enumerable_$32161","typeString":"contract IERC721Enumerable"}},"id":15873,"nodeType":"InheritanceSpecifier","src":"759:17:75"},{"baseName":{"id":15874,"name":"IERC721Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":15699,"src":"783:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Permit_$15699","typeString":"contract IERC721Permit"}},"id":15875,"nodeType":"InheritanceSpecifier","src":"783:13:75"}],"contractDependencies":[15699,16125,16151,16203,30378,32130,32161,32188],"contractKind":"interface","documentation":{"id":15863,"nodeType":"StructuredDocumentation","src":"436:176:75","text":"@title Non-fungible token for positions\n @notice Wraps Elixir positions in a non-fungible token interface which allows for them to be transferred\n and authorized."},"fullyImplemented":false,"id":16094,"linearizedBaseContracts":[16094,15699,32161,32188,32130,30378,16125,16151,16203],"name":"INonfungiblePositionManager","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":15876,"nodeType":"StructuredDocumentation","src":"805:463:75","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":15886,"name":"IncreaseLiquidity","nodeType":"EventDefinition","parameters":{"id":15885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15878,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":15886,"src":"1298:23:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15877,"name":"uint256","nodeType":"ElementaryTypeName","src":"1298:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15880,"indexed":false,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":15886,"src":"1323:17:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":15879,"name":"uint128","nodeType":"ElementaryTypeName","src":"1323:7:75","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":15882,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":15886,"src":"1342:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15881,"name":"uint256","nodeType":"ElementaryTypeName","src":"1342:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15884,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":15886,"src":"1359:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15883,"name":"uint256","nodeType":"ElementaryTypeName","src":"1359:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1297:78:75"},"src":"1274:102:75"},{"anonymous":false,"documentation":{"id":15887,"nodeType":"StructuredDocumentation","src":"1382:423:75","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":15897,"name":"DecreaseLiquidity","nodeType":"EventDefinition","parameters":{"id":15896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15889,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":15897,"src":"1835:23:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15888,"name":"uint256","nodeType":"ElementaryTypeName","src":"1835:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15891,"indexed":false,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":15897,"src":"1860:17:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":15890,"name":"uint128","nodeType":"ElementaryTypeName","src":"1860:7:75","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":15893,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":15897,"src":"1879:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15892,"name":"uint256","nodeType":"ElementaryTypeName","src":"1879:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15895,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":15897,"src":"1896:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15894,"name":"uint256","nodeType":"ElementaryTypeName","src":"1896:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1834:78:75"},"src":"1811:102:75"},{"anonymous":false,"documentation":{"id":15898,"nodeType":"StructuredDocumentation","src":"1919:527:75","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":15908,"name":"Collect","nodeType":"EventDefinition","parameters":{"id":15907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15900,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":15908,"src":"2466:23:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15899,"name":"uint256","nodeType":"ElementaryTypeName","src":"2466:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15902,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":15908,"src":"2491:17:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15901,"name":"address","nodeType":"ElementaryTypeName","src":"2491:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15904,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":15908,"src":"2510:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15903,"name":"uint256","nodeType":"ElementaryTypeName","src":"2510:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15906,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":15908,"src":"2527:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15905,"name":"uint256","nodeType":"ElementaryTypeName","src":"2527:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2465:78:75"},"src":"2452:92:75"},{"anonymous":false,"documentation":{"id":15909,"nodeType":"StructuredDocumentation","src":"2550:576:75","text":"@notice Emitted when Elixir Rewarder is called and notified of the reward amount\n @dev This only notifies that the Elixir Rewarder is called. Except some edge cases (which will be documented in Elixir\n Rewarder), this event is a good indicator of the rewards being claimed. However, it is not certain as it depends on\n Elixir Rewarder implementation to decide whether to send the rewards.\n @param tokenId The ID of the token for which the reward is being claimed\n @param recipient The address of the account that received the reward"},"id":15915,"name":"ClaimReward","nodeType":"EventDefinition","parameters":{"id":15914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15911,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":15915,"src":"3150:23:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15910,"name":"uint256","nodeType":"ElementaryTypeName","src":"3150:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15913,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":15915,"src":"3175:17:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15912,"name":"address","nodeType":"ElementaryTypeName","src":"3175:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3149:44:75"},"src":"3132:62:75"},{"documentation":{"id":15916,"nodeType":"StructuredDocumentation","src":"3202:1171:75","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":15945,"implemented":false,"kind":"function","modifiers":[],"name":"positions","nodeType":"FunctionDefinition","parameters":{"id":15919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15918,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":15945,"src":"4398:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15917,"name":"uint256","nodeType":"ElementaryTypeName","src":"4398:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4397:17:75"},"returnParameters":{"id":15944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15921,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":15945,"src":"4479:12:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15920,"name":"uint96","nodeType":"ElementaryTypeName","src":"4479:6:75","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":15923,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":15945,"src":"4506:16:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15922,"name":"address","nodeType":"ElementaryTypeName","src":"4506:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15925,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":15945,"src":"4537:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15924,"name":"address","nodeType":"ElementaryTypeName","src":"4537:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15927,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":15945,"src":"4566:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15926,"name":"address","nodeType":"ElementaryTypeName","src":"4566:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15929,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":15945,"src":"4595:10:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":15928,"name":"uint24","nodeType":"ElementaryTypeName","src":"4595:6:75","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":15931,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":15945,"src":"4620:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":15930,"name":"int24","nodeType":"ElementaryTypeName","src":"4620:5:75","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":15933,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":15945,"src":"4650:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":15932,"name":"int24","nodeType":"ElementaryTypeName","src":"4650:5:75","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":15935,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":15945,"src":"4680:17:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":15934,"name":"uint128","nodeType":"ElementaryTypeName","src":"4680:7:75","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":15937,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":15945,"src":"4712:32:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15936,"name":"uint256","nodeType":"ElementaryTypeName","src":"4712:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15939,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":15945,"src":"4759:32:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15938,"name":"uint256","nodeType":"ElementaryTypeName","src":"4759:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15941,"mutability":"mutable","name":"tokensOwed0","nodeType":"VariableDeclaration","scope":15945,"src":"4806:19:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":15940,"name":"uint128","nodeType":"ElementaryTypeName","src":"4806:7:75","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":15943,"mutability":"mutable","name":"tokensOwed1","nodeType":"VariableDeclaration","scope":15945,"src":"4840:19:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":15942,"name":"uint128","nodeType":"ElementaryTypeName","src":"4840:7:75","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"4464:406:75"},"scope":16094,"src":"4379:492:75","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15946,"nodeType":"StructuredDocumentation","src":"4879:659:75","text":"@notice Returns the position reward 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 rewardPerLiquidityInsideLastX64 The snapshot of liquidity inside the ticks at last operation\n @return rewardLastUpdated The timestamp of the last operation that updated rewardPerLiquidityInsideLastX64\n @return rewardLastCollected The timestamp of the last time user claimed the rewards of the position\n @return rewardOwed The uncollected amount of reward token owed to the position as of the last computation"},"functionSelector":"75e39cec","id":15959,"implemented":false,"kind":"function","modifiers":[],"name":"positionReward","nodeType":"FunctionDefinition","parameters":{"id":15949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15948,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":15959,"src":"5568:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15947,"name":"uint256","nodeType":"ElementaryTypeName","src":"5568:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5567:17:75"},"returnParameters":{"id":15958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15951,"mutability":"mutable","name":"rewardPerLiquidityInsideLastX64","nodeType":"VariableDeclaration","scope":15959,"src":"5649:39:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":15950,"name":"uint192","nodeType":"ElementaryTypeName","src":"5649:7:75","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"},{"constant":false,"id":15953,"mutability":"mutable","name":"rewardLastUpdated","nodeType":"VariableDeclaration","scope":15959,"src":"5703:24:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":15952,"name":"uint32","nodeType":"ElementaryTypeName","src":"5703:6:75","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":15955,"mutability":"mutable","name":"rewardLastCollected","nodeType":"VariableDeclaration","scope":15959,"src":"5742:26:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":15954,"name":"uint32","nodeType":"ElementaryTypeName","src":"5742:6:75","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":15957,"mutability":"mutable","name":"rewardOwed","nodeType":"VariableDeclaration","scope":15959,"src":"5783:18:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15956,"name":"uint256","nodeType":"ElementaryTypeName","src":"5783:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5634:178:75"},"scope":16094,"src":"5544:269:75","stateMutability":"view","virtual":false,"visibility":"external"},{"canonicalName":"INonfungiblePositionManager.MintParams","id":15982,"members":[{"constant":false,"id":15961,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":15982,"src":"5850:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15960,"name":"address","nodeType":"ElementaryTypeName","src":"5850:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15963,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":15982,"src":"5875:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15962,"name":"address","nodeType":"ElementaryTypeName","src":"5875:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15965,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":15982,"src":"5900:10:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":15964,"name":"uint24","nodeType":"ElementaryTypeName","src":"5900:6:75","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":15967,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":15982,"src":"5921:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":15966,"name":"int24","nodeType":"ElementaryTypeName","src":"5921:5:75","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":15969,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":15982,"src":"5947:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":15968,"name":"int24","nodeType":"ElementaryTypeName","src":"5947:5:75","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":15971,"mutability":"mutable","name":"amount0Desired","nodeType":"VariableDeclaration","scope":15982,"src":"5973:22:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15970,"name":"uint256","nodeType":"ElementaryTypeName","src":"5973:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15973,"mutability":"mutable","name":"amount1Desired","nodeType":"VariableDeclaration","scope":15982,"src":"6006:22:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15972,"name":"uint256","nodeType":"ElementaryTypeName","src":"6006:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15975,"mutability":"mutable","name":"amount0Min","nodeType":"VariableDeclaration","scope":15982,"src":"6039:18:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15974,"name":"uint256","nodeType":"ElementaryTypeName","src":"6039:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15977,"mutability":"mutable","name":"amount1Min","nodeType":"VariableDeclaration","scope":15982,"src":"6068:18:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15976,"name":"uint256","nodeType":"ElementaryTypeName","src":"6068:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15979,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":15982,"src":"6097:17:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15978,"name":"address","nodeType":"ElementaryTypeName","src":"6097:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15981,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":15982,"src":"6125:16:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15980,"name":"uint256","nodeType":"ElementaryTypeName","src":"6125:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"MintParams","nodeType":"StructDefinition","scope":16094,"src":"5821:328:75","visibility":"public"},{"documentation":{"id":15983,"nodeType":"StructuredDocumentation","src":"6157:593:75","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":15996,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":15986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15985,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":15996,"src":"6770:26:75","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$15982_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams"},"typeName":{"id":15984,"name":"MintParams","nodeType":"UserDefinedTypeName","referencedDeclaration":15982,"src":"6770:10:75","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$15982_storage_ptr","typeString":"struct INonfungiblePositionManager.MintParams"}},"visibility":"internal"}],"src":"6769:28:75"},"returnParameters":{"id":15995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15988,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":15996,"src":"6865:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15987,"name":"uint256","nodeType":"ElementaryTypeName","src":"6865:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15990,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":15996,"src":"6895:17:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":15989,"name":"uint128","nodeType":"ElementaryTypeName","src":"6895:7:75","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":15992,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":15996,"src":"6927:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15991,"name":"uint256","nodeType":"ElementaryTypeName","src":"6927:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15994,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":15996,"src":"6957:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15993,"name":"uint256","nodeType":"ElementaryTypeName","src":"6957:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6850:133:75"},"scope":16094,"src":"6756:228:75","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"INonfungiblePositionManager.IncreaseLiquidityParams","id":16009,"members":[{"constant":false,"id":15998,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":16009,"src":"7034:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15997,"name":"uint256","nodeType":"ElementaryTypeName","src":"7034:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16000,"mutability":"mutable","name":"amount0Desired","nodeType":"VariableDeclaration","scope":16009,"src":"7060:22:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15999,"name":"uint256","nodeType":"ElementaryTypeName","src":"7060:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16002,"mutability":"mutable","name":"amount1Desired","nodeType":"VariableDeclaration","scope":16009,"src":"7093:22:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16001,"name":"uint256","nodeType":"ElementaryTypeName","src":"7093:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16004,"mutability":"mutable","name":"amount0Min","nodeType":"VariableDeclaration","scope":16009,"src":"7126:18:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16003,"name":"uint256","nodeType":"ElementaryTypeName","src":"7126:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16006,"mutability":"mutable","name":"amount1Min","nodeType":"VariableDeclaration","scope":16009,"src":"7155:18:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16005,"name":"uint256","nodeType":"ElementaryTypeName","src":"7155:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16008,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":16009,"src":"7184:16:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16007,"name":"uint256","nodeType":"ElementaryTypeName","src":"7184:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"IncreaseLiquidityParams","nodeType":"StructDefinition","scope":16094,"src":"6992:216:75","visibility":"public"},{"documentation":{"id":16010,"nodeType":"StructuredDocumentation","src":"7216:830:75","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":16021,"implemented":false,"kind":"function","modifiers":[],"name":"increaseLiquidity","nodeType":"FunctionDefinition","parameters":{"id":16013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16012,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":16021,"src":"8079:39:75","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$16009_calldata_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams"},"typeName":{"id":16011,"name":"IncreaseLiquidityParams","nodeType":"UserDefinedTypeName","referencedDeclaration":16009,"src":"8079:23:75","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$16009_storage_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams"}},"visibility":"internal"}],"src":"8078:41:75"},"returnParameters":{"id":16020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16015,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":16021,"src":"8187:17:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":16014,"name":"uint128","nodeType":"ElementaryTypeName","src":"8187:7:75","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":16017,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":16021,"src":"8219:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16016,"name":"uint256","nodeType":"ElementaryTypeName","src":"8219:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16019,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":16021,"src":"8249:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16018,"name":"uint256","nodeType":"ElementaryTypeName","src":"8249:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8172:103:75"},"scope":16094,"src":"8052:224:75","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"INonfungiblePositionManager.DecreaseLiquidityParams","id":16032,"members":[{"constant":false,"id":16023,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":16032,"src":"8326:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16022,"name":"uint256","nodeType":"ElementaryTypeName","src":"8326:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16025,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":16032,"src":"8352:17:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":16024,"name":"uint128","nodeType":"ElementaryTypeName","src":"8352:7:75","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":16027,"mutability":"mutable","name":"amount0Min","nodeType":"VariableDeclaration","scope":16032,"src":"8380:18:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16026,"name":"uint256","nodeType":"ElementaryTypeName","src":"8380:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16029,"mutability":"mutable","name":"amount1Min","nodeType":"VariableDeclaration","scope":16032,"src":"8409:18:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16028,"name":"uint256","nodeType":"ElementaryTypeName","src":"8409:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16031,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":16032,"src":"8438:16:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16030,"name":"uint256","nodeType":"ElementaryTypeName","src":"8438:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"DecreaseLiquidityParams","nodeType":"StructDefinition","scope":16094,"src":"8284:178:75","visibility":"public"},{"documentation":{"id":16033,"nodeType":"StructuredDocumentation","src":"8470:709:75","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":16042,"implemented":false,"kind":"function","modifiers":[],"name":"decreaseLiquidity","nodeType":"FunctionDefinition","parameters":{"id":16036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16035,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":16042,"src":"9212:39:75","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$16032_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams"},"typeName":{"id":16034,"name":"DecreaseLiquidityParams","nodeType":"UserDefinedTypeName","referencedDeclaration":16032,"src":"9212:23:75","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$16032_storage_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams"}},"visibility":"internal"}],"src":"9211:41:75"},"returnParameters":{"id":16041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16038,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":16042,"src":"9306:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16037,"name":"uint256","nodeType":"ElementaryTypeName","src":"9306:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16040,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":16042,"src":"9323:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16039,"name":"uint256","nodeType":"ElementaryTypeName","src":"9323:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9305:34:75"},"scope":16094,"src":"9185:155:75","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"INonfungiblePositionManager.CollectParams","id":16051,"members":[{"constant":false,"id":16044,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":16051,"src":"9380:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16043,"name":"uint256","nodeType":"ElementaryTypeName","src":"9380:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16046,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16051,"src":"9406:17:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16045,"name":"address","nodeType":"ElementaryTypeName","src":"9406:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16048,"mutability":"mutable","name":"amount0Max","nodeType":"VariableDeclaration","scope":16051,"src":"9434:18:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":16047,"name":"uint128","nodeType":"ElementaryTypeName","src":"9434:7:75","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":16050,"mutability":"mutable","name":"amount1Max","nodeType":"VariableDeclaration","scope":16051,"src":"9463:18:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":16049,"name":"uint128","nodeType":"ElementaryTypeName","src":"9463:7:75","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"CollectParams","nodeType":"StructDefinition","scope":16094,"src":"9348:141:75","visibility":"public"},{"documentation":{"id":16052,"nodeType":"StructuredDocumentation","src":"9497:495:75","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":16061,"implemented":false,"kind":"function","modifiers":[],"name":"collect","nodeType":"FunctionDefinition","parameters":{"id":16055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16054,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":16061,"src":"10015:29:75","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$16051_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams"},"typeName":{"id":16053,"name":"CollectParams","nodeType":"UserDefinedTypeName","referencedDeclaration":16051,"src":"10015:13:75","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$16051_storage_ptr","typeString":"struct INonfungiblePositionManager.CollectParams"}},"visibility":"internal"}],"src":"10014:31:75"},"returnParameters":{"id":16060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16057,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":16061,"src":"10072:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16056,"name":"uint256","nodeType":"ElementaryTypeName","src":"10072:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16059,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":16061,"src":"10089:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16058,"name":"uint256","nodeType":"ElementaryTypeName","src":"10089:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10071:34:75"},"scope":16094,"src":"9998:108:75","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":16062,"nodeType":"StructuredDocumentation","src":"10114:258:75","text":"@notice Notifies rewards manager contract the amount of unclaimed rewards and then deletes the reward debt\n @param tokenId The ID of the NFT for which reward is being collected,\n recipient The account that should receive the reward tokens"},"functionSelector":"e70eb392","id":16069,"implemented":false,"kind":"function","modifiers":[],"name":"claimReward","nodeType":"FunctionDefinition","parameters":{"id":16067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16064,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":16069,"src":"10399:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16063,"name":"uint256","nodeType":"ElementaryTypeName","src":"10399:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16066,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16069,"src":"10416:17:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16065,"name":"address","nodeType":"ElementaryTypeName","src":"10416:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10398:36:75"},"returnParameters":{"id":16068,"nodeType":"ParameterList","parameters":[],"src":"10451:0:75"},"scope":16094,"src":"10378:74:75","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":16070,"nodeType":"StructuredDocumentation","src":"10460:442:75","text":"@notice Deletes reward debt of the token\n @dev Because of (1) `burn` prevents burning the tokenId if there is any reward debt and (2) `claimReward` can\n be DOSed by an improper reward manager implementation or a reward token, we have this separate function to\n forgo rewards if user really needs to burn the tokenId and does not care about the rewards\n @param tokenId The ID of the NFT to forgo the rewards"},"functionSelector":"29048e7b","id":16075,"implemented":false,"kind":"function","modifiers":[],"name":"forgoReward","nodeType":"FunctionDefinition","parameters":{"id":16073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16072,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":16075,"src":"10929:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16071,"name":"uint256","nodeType":"ElementaryTypeName","src":"10929:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10928:17:75"},"returnParameters":{"id":16074,"nodeType":"ParameterList","parameters":[],"src":"10962:0:75"},"scope":16094,"src":"10908:55:75","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":16076,"nodeType":"StructuredDocumentation","src":"10971:215:75","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":16081,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":16079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16078,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":16081,"src":"11206:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16077,"name":"uint256","nodeType":"ElementaryTypeName","src":"11206:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11205:17:75"},"returnParameters":{"id":16080,"nodeType":"ParameterList","parameters":[],"src":"11239:0:75"},"scope":16094,"src":"11192:48:75","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":16082,"nodeType":"StructuredDocumentation","src":"11248:146:75","text":"@notice Restricted function to update address that generates tokenURI\n @param tokenDescriptor_ The address of the new token descriptor"},"functionSelector":"97f12a83","id":16087,"implemented":false,"kind":"function","modifiers":[],"name":"updateTokenDescriptor","nodeType":"FunctionDefinition","parameters":{"id":16085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16084,"mutability":"mutable","name":"tokenDescriptor_","nodeType":"VariableDeclaration","scope":16087,"src":"11431:24:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16083,"name":"address","nodeType":"ElementaryTypeName","src":"11431:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11430:26:75"},"returnParameters":{"id":16086,"nodeType":"ParameterList","parameters":[],"src":"11473:0:75"},"scope":16094,"src":"11400:74:75","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":16088,"nodeType":"StructuredDocumentation","src":"11482:171:75","text":"@notice Restricted function to update the reward manager contract address\n @param rewardManager_ The contract that will distribute rewards during `claimReward`"},"functionSelector":"050eb2eb","id":16093,"implemented":false,"kind":"function","modifiers":[],"name":"updateRewardManager","nodeType":"FunctionDefinition","parameters":{"id":16091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16090,"mutability":"mutable","name":"rewardManager_","nodeType":"VariableDeclaration","scope":16093,"src":"11688:22:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16089,"name":"address","nodeType":"ElementaryTypeName","src":"11688:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11687:24:75"},"returnParameters":{"id":16092,"nodeType":"ParameterList","parameters":[],"src":"11728:0:75"},"scope":16094,"src":"11659:70:75","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":16095,"src":"612:11120:75"}],"src":"46:11688:75"},"id":75},"contracts/elixir-periphery/interfaces/INonfungibleTokenPositionDescriptor.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/INonfungibleTokenPositionDescriptor.sol","exportedSymbols":{"IERC165":[30378],"IERC721":[32130],"IERC721Enumerable":[32161],"IERC721Metadata":[32188],"IERC721Permit":[15699],"INonfungiblePositionManager":[16094],"INonfungibleTokenPositionDescriptor":[16109],"IPeripheryImmutableState":[16125],"IPeripheryPayments":[16151],"IPoolInitializer":[16203],"PoolAddress":[19734]},"id":16110,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16096,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:76"},{"absolutePath":"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol","file":"./INonfungiblePositionManager.sol","id":16097,"nodeType":"ImportDirective","scope":16110,"sourceUnit":16095,"src":"74:43:76","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":16098,"nodeType":"StructuredDocumentation","src":"121:50:76","text":"@title Describes position NFT tokens via URI"},"fullyImplemented":false,"id":16109,"linearizedBaseContracts":[16109],"name":"INonfungibleTokenPositionDescriptor","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":16099,"nodeType":"StructuredDocumentation","src":"224:417:76","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":16108,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nodeType":"FunctionDefinition","parameters":{"id":16104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16101,"mutability":"mutable","name":"positionManager","nodeType":"VariableDeclaration","scope":16108,"src":"665:43:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":16100,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":16094,"src":"665:27:76","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":16103,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":16108,"src":"710:15:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16102,"name":"uint256","nodeType":"ElementaryTypeName","src":"710:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"664:62:76"},"returnParameters":{"id":16107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16106,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16108,"src":"777:13:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16105,"name":"string","nodeType":"ElementaryTypeName","src":"777:6:76","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"776:15:76"},"scope":16109,"src":"647:145:76","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":16110,"src":"171:624:76"}],"src":"46:751:76"},"id":76},"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol","exportedSymbols":{"IPeripheryImmutableState":[16125]},"id":16126,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16111,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:77"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":16112,"nodeType":"StructuredDocumentation","src":"74:93:77","text":"@title Immutable state\n @notice Functions that return immutable state of the router"},"fullyImplemented":false,"id":16125,"linearizedBaseContracts":[16125],"name":"IPeripheryImmutableState","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":16113,"nodeType":"StructuredDocumentation","src":"209:58:77","text":"@return Returns the address of the Pangolin V2 factory"},"functionSelector":"c45a0155","id":16118,"implemented":false,"kind":"function","modifiers":[],"name":"factory","nodeType":"FunctionDefinition","parameters":{"id":16114,"nodeType":"ParameterList","parameters":[],"src":"289:2:77"},"returnParameters":{"id":16117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16116,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16118,"src":"315:7:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16115,"name":"address","nodeType":"ElementaryTypeName","src":"315:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"314:9:77"},"scope":16125,"src":"273:51:77","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16119,"nodeType":"StructuredDocumentation","src":"332:40:77","text":"@return Returns the address of WETH9"},"functionSelector":"4aa4a4fc","id":16124,"implemented":false,"kind":"function","modifiers":[],"name":"WETH9","nodeType":"FunctionDefinition","parameters":{"id":16120,"nodeType":"ParameterList","parameters":[],"src":"392:2:77"},"returnParameters":{"id":16123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16122,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16124,"src":"418:7:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16121,"name":"address","nodeType":"ElementaryTypeName","src":"418:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"417:9:77"},"scope":16125,"src":"378:49:77","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":16126,"src":"167:263:77"}],"src":"46:386:77"},"id":77},"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol","exportedSymbols":{"IPeripheryPayments":[16151]},"id":16152,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16127,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:78"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":16128,"nodeType":"StructuredDocumentation","src":"74:94:78","text":"@title Periphery Payments\n @notice Functions to ease deposits and withdrawals of ETH"},"fullyImplemented":false,"id":16151,"linearizedBaseContracts":[16151],"name":"IPeripheryPayments","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":16129,"nodeType":"StructuredDocumentation","src":"204:305:78","text":"@notice Unwraps the contract's WETH9 balance and sends it to recipient as ETH.\n @dev The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\n @param amountMinimum The minimum amount of WETH9 to unwrap\n @param recipient The address receiving ETH"},"functionSelector":"49404b7c","id":16136,"implemented":false,"kind":"function","modifiers":[],"name":"unwrapWETH9","nodeType":"FunctionDefinition","parameters":{"id":16134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16131,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":16136,"src":"536:21:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16130,"name":"uint256","nodeType":"ElementaryTypeName","src":"536:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16133,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16136,"src":"559:17:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16132,"name":"address","nodeType":"ElementaryTypeName","src":"559:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"535:42:78"},"returnParameters":{"id":16135,"nodeType":"ParameterList","parameters":[],"src":"594:0:78"},"scope":16151,"src":"515:80:78","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":16137,"nodeType":"StructuredDocumentation","src":"603:227:78","text":"@notice Refunds any ETH 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":"12210e8a","id":16140,"implemented":false,"kind":"function","modifiers":[],"name":"refundETH","nodeType":"FunctionDefinition","parameters":{"id":16138,"nodeType":"ParameterList","parameters":[],"src":"854:2:78"},"returnParameters":{"id":16139,"nodeType":"ParameterList","parameters":[],"src":"873:0:78"},"scope":16151,"src":"836:38:78","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":16141,"nodeType":"StructuredDocumentation","src":"882:431:78","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":16150,"implemented":false,"kind":"function","modifiers":[],"name":"sweepToken","nodeType":"FunctionDefinition","parameters":{"id":16148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16143,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":16150,"src":"1349:13:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16142,"name":"address","nodeType":"ElementaryTypeName","src":"1349:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16145,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":16150,"src":"1373:21:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16144,"name":"uint256","nodeType":"ElementaryTypeName","src":"1373:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16147,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16150,"src":"1405:17:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16146,"name":"address","nodeType":"ElementaryTypeName","src":"1405:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1338:91:78"},"returnParameters":{"id":16149,"nodeType":"ParameterList","parameters":[],"src":"1446:0:78"},"scope":16151,"src":"1319:128:78","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":16152,"src":"168:1282:78"}],"src":"46:1406:78"},"id":78},"contracts/elixir-periphery/interfaces/IPeripheryPaymentsWithFee.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/IPeripheryPaymentsWithFee.sol","exportedSymbols":{"IPeripheryPayments":[16151],"IPeripheryPaymentsWithFee":[16184]},"id":16185,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16153,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:79"},{"absolutePath":"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol","file":"./IPeripheryPayments.sol","id":16154,"nodeType":"ImportDirective","scope":16185,"sourceUnit":16152,"src":"74:34:79","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":16156,"name":"IPeripheryPayments","nodeType":"UserDefinedTypeName","referencedDeclaration":16151,"src":"245:18:79","typeDescriptions":{"typeIdentifier":"t_contract$_IPeripheryPayments_$16151","typeString":"contract IPeripheryPayments"}},"id":16157,"nodeType":"InheritanceSpecifier","src":"245:18:79"}],"contractDependencies":[16151],"contractKind":"interface","documentation":{"id":16155,"nodeType":"StructuredDocumentation","src":"112:94:79","text":"@title Periphery Payments\n @notice Functions to ease deposits and withdrawals of ETH"},"fullyImplemented":false,"id":16184,"linearizedBaseContracts":[16184,16151],"name":"IPeripheryPaymentsWithFee","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":16158,"nodeType":"StructuredDocumentation","src":"271:275:79","text":"@notice Unwraps the contract's WETH9 balance and sends it to recipient as ETH, with a percentage between\n 0 (exclusive), and 1 (inclusive) going to feeRecipient\n @dev The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users."},"functionSelector":"9b2c0a37","id":16169,"implemented":false,"kind":"function","modifiers":[],"name":"unwrapWETH9WithFee","nodeType":"FunctionDefinition","parameters":{"id":16167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16160,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":16169,"src":"590:21:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16159,"name":"uint256","nodeType":"ElementaryTypeName","src":"590:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16162,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16169,"src":"622:17:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16161,"name":"address","nodeType":"ElementaryTypeName","src":"622:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16164,"mutability":"mutable","name":"feeBips","nodeType":"VariableDeclaration","scope":16169,"src":"650:15:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16163,"name":"uint256","nodeType":"ElementaryTypeName","src":"650:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16166,"mutability":"mutable","name":"feeRecipient","nodeType":"VariableDeclaration","scope":16169,"src":"676:20:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16165,"name":"address","nodeType":"ElementaryTypeName","src":"676:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"579:124:79"},"returnParameters":{"id":16168,"nodeType":"ParameterList","parameters":[],"src":"720:0:79"},"scope":16184,"src":"552:169:79","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":16170,"nodeType":"StructuredDocumentation","src":"729:279:79","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":16183,"implemented":false,"kind":"function","modifiers":[],"name":"sweepTokenWithFee","nodeType":"FunctionDefinition","parameters":{"id":16181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16172,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":16183,"src":"1051:13:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16171,"name":"address","nodeType":"ElementaryTypeName","src":"1051:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16174,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":16183,"src":"1075:21:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16173,"name":"uint256","nodeType":"ElementaryTypeName","src":"1075:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16176,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16183,"src":"1107:17:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16175,"name":"address","nodeType":"ElementaryTypeName","src":"1107:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16178,"mutability":"mutable","name":"feeBips","nodeType":"VariableDeclaration","scope":16183,"src":"1135:15:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16177,"name":"uint256","nodeType":"ElementaryTypeName","src":"1135:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16180,"mutability":"mutable","name":"feeRecipient","nodeType":"VariableDeclaration","scope":16183,"src":"1161:20:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16179,"name":"address","nodeType":"ElementaryTypeName","src":"1161:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1040:148:79"},"returnParameters":{"id":16182,"nodeType":"ParameterList","parameters":[],"src":"1205:0:79"},"scope":16184,"src":"1014:192:79","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":16185,"src":"206:1003:79"}],"src":"46:1165:79"},"id":79},"contracts/elixir-periphery/interfaces/IPoolInitializer.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/IPoolInitializer.sol","exportedSymbols":{"IPoolInitializer":[16203]},"id":16204,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16186,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:80"},{"id":16187,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"72:19:80"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":16188,"nodeType":"StructuredDocumentation","src":"95:201:80","text":"@title Creates and initializes Elixir 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":16203,"linearizedBaseContracts":[16203],"name":"IPoolInitializer","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":16189,"nodeType":"StructuredDocumentation","src":"330:658:80","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 elixir 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":16202,"implemented":false,"kind":"function","modifiers":[],"name":"createAndInitializePoolIfNecessary","nodeType":"FunctionDefinition","parameters":{"id":16198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16191,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":16202,"src":"1048:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16190,"name":"address","nodeType":"ElementaryTypeName","src":"1048:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16193,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":16202,"src":"1073:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16192,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16195,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":16202,"src":"1098:10:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":16194,"name":"uint24","nodeType":"ElementaryTypeName","src":"1098:6:80","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":16197,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":16202,"src":"1119:20:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":16196,"name":"uint160","nodeType":"ElementaryTypeName","src":"1119:7:80","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1037:109:80"},"returnParameters":{"id":16201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16200,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":16202,"src":"1173:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16199,"name":"address","nodeType":"ElementaryTypeName","src":"1173:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1172:14:80"},"scope":16203,"src":"994:193:80","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":16204,"src":"296:894:80"}],"src":"46:1146:80"},"id":80},"contracts/elixir-periphery/interfaces/ISelfPermit.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/ISelfPermit.sol","exportedSymbols":{"ISelfPermit":[16271]},"id":16272,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16205,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:81"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":16206,"nodeType":"StructuredDocumentation","src":"74:119:81","text":"@title Self Permit\n @notice Functionality to call permit on any EIP-2612-compliant token for use in the route"},"fullyImplemented":false,"id":16271,"linearizedBaseContracts":[16271],"name":"ISelfPermit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":16207,"nodeType":"StructuredDocumentation","src":"222:670:81","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":16222,"implemented":false,"kind":"function","modifiers":[],"name":"selfPermit","nodeType":"FunctionDefinition","parameters":{"id":16220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16209,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":16222,"src":"928:13:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16208,"name":"address","nodeType":"ElementaryTypeName","src":"928:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16211,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":16222,"src":"952:13:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16210,"name":"uint256","nodeType":"ElementaryTypeName","src":"952:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16213,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":16222,"src":"976:16:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16212,"name":"uint256","nodeType":"ElementaryTypeName","src":"976:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16215,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":16222,"src":"1003:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16214,"name":"uint8","nodeType":"ElementaryTypeName","src":"1003:5:81","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":16217,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":16222,"src":"1021:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16216,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1021:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16219,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":16222,"src":"1041:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16218,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1041:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"917:140:81"},"returnParameters":{"id":16221,"nodeType":"ParameterList","parameters":[],"src":"1074:0:81"},"scope":16271,"src":"898:177:81","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":16223,"nodeType":"StructuredDocumentation","src":"1083:787:81","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":16238,"implemented":false,"kind":"function","modifiers":[],"name":"selfPermitIfNecessary","nodeType":"FunctionDefinition","parameters":{"id":16236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16225,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":16238,"src":"1917:13:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16224,"name":"address","nodeType":"ElementaryTypeName","src":"1917:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16227,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":16238,"src":"1941:13:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16226,"name":"uint256","nodeType":"ElementaryTypeName","src":"1941:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16229,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":16238,"src":"1965:16:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16228,"name":"uint256","nodeType":"ElementaryTypeName","src":"1965:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16231,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":16238,"src":"1992:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16230,"name":"uint8","nodeType":"ElementaryTypeName","src":"1992:5:81","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":16233,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":16238,"src":"2010:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16232,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2010:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16235,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":16238,"src":"2030:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16234,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2030:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1906:140:81"},"returnParameters":{"id":16237,"nodeType":"ParameterList","parameters":[],"src":"2063:0:81"},"scope":16271,"src":"1876:188:81","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":16239,"nodeType":"StructuredDocumentation","src":"2072:677:81","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":16254,"implemented":false,"kind":"function","modifiers":[],"name":"selfPermitAllowed","nodeType":"FunctionDefinition","parameters":{"id":16252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16241,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":16254,"src":"2792:13:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16240,"name":"address","nodeType":"ElementaryTypeName","src":"2792:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16243,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":16254,"src":"2816:13:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16242,"name":"uint256","nodeType":"ElementaryTypeName","src":"2816:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16245,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":16254,"src":"2840:14:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16244,"name":"uint256","nodeType":"ElementaryTypeName","src":"2840:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16247,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":16254,"src":"2865:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16246,"name":"uint8","nodeType":"ElementaryTypeName","src":"2865:5:81","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":16249,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":16254,"src":"2883:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16248,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2883:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16251,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":16254,"src":"2903:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16250,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2903:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2781:138:81"},"returnParameters":{"id":16253,"nodeType":"ParameterList","parameters":[],"src":"2936:0:81"},"scope":16271,"src":"2755:182:81","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":16255,"nodeType":"StructuredDocumentation","src":"2945:809:81","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":16270,"implemented":false,"kind":"function","modifiers":[],"name":"selfPermitAllowedIfNecessary","nodeType":"FunctionDefinition","parameters":{"id":16268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16257,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":16270,"src":"3808:13:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16256,"name":"address","nodeType":"ElementaryTypeName","src":"3808:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16259,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":16270,"src":"3832:13:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16258,"name":"uint256","nodeType":"ElementaryTypeName","src":"3832:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16261,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":16270,"src":"3856:14:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16260,"name":"uint256","nodeType":"ElementaryTypeName","src":"3856:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16263,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":16270,"src":"3881:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16262,"name":"uint8","nodeType":"ElementaryTypeName","src":"3881:5:81","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":16265,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":16270,"src":"3899:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16264,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3899:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16267,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":16270,"src":"3919:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16266,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3919:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3797:138:81"},"returnParameters":{"id":16269,"nodeType":"ParameterList","parameters":[],"src":"3952:0:81"},"scope":16271,"src":"3760:193:81","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":16272,"src":"193:3763:81"}],"src":"46:3912:81"},"id":81},"contracts/elixir-periphery/interfaces/ISwapRouter.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/ISwapRouter.sol","exportedSymbols":{"IElixirSwapCallback":[3315],"ISwapRouter":[16367]},"id":16368,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16273,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:82"},{"id":16274,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"72:19:82"},{"absolutePath":"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol","file":"../../elixir-core/interfaces/callback/IElixirSwapCallback.sol","id":16275,"nodeType":"ImportDirective","scope":16368,"sourceUnit":3316,"src":"95:71:82","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":16277,"name":"IElixirSwapCallback","nodeType":"UserDefinedTypeName","referencedDeclaration":3315,"src":"297:19:82","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirSwapCallback_$3315","typeString":"contract IElixirSwapCallback"}},"id":16278,"nodeType":"InheritanceSpecifier","src":"297:19:82"}],"contractDependencies":[3315],"contractKind":"interface","documentation":{"id":16276,"nodeType":"StructuredDocumentation","src":"170:102:82","text":"@title Router token swapping functionality\n @notice Functions for swapping tokens via Elixir"},"fullyImplemented":false,"id":16367,"linearizedBaseContracts":[16367,3315],"name":"ISwapRouter","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ISwapRouter.ExactInputSingleParams","id":16295,"members":[{"constant":false,"id":16280,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":16295,"src":"365:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16279,"name":"address","nodeType":"ElementaryTypeName","src":"365:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16282,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":16295,"src":"391:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16281,"name":"address","nodeType":"ElementaryTypeName","src":"391:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16284,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":16295,"src":"418:10:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":16283,"name":"uint24","nodeType":"ElementaryTypeName","src":"418:6:82","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":16286,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16295,"src":"439:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16285,"name":"address","nodeType":"ElementaryTypeName","src":"439:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16288,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":16295,"src":"467:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16287,"name":"uint256","nodeType":"ElementaryTypeName","src":"467:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16290,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":16295,"src":"494:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16289,"name":"uint256","nodeType":"ElementaryTypeName","src":"494:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16292,"mutability":"mutable","name":"amountOutMinimum","nodeType":"VariableDeclaration","scope":16295,"src":"521:24:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16291,"name":"uint256","nodeType":"ElementaryTypeName","src":"521:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16294,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":16295,"src":"556:25:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":16293,"name":"uint160","nodeType":"ElementaryTypeName","src":"556:7:82","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"ExactInputSingleParams","nodeType":"StructDefinition","scope":16367,"src":"324:265:82","visibility":"public"},{"documentation":{"id":16296,"nodeType":"StructuredDocumentation","src":"597:252:82","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":16303,"implemented":false,"kind":"function","modifiers":[],"name":"exactInputSingle","nodeType":"FunctionDefinition","parameters":{"id":16299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16298,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":16303,"src":"881:38:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$16295_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"},"typeName":{"id":16297,"name":"ExactInputSingleParams","nodeType":"UserDefinedTypeName","referencedDeclaration":16295,"src":"881:22:82","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$16295_storage_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"}},"visibility":"internal"}],"src":"880:40:82"},"returnParameters":{"id":16302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16301,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":16303,"src":"947:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16300,"name":"uint256","nodeType":"ElementaryTypeName","src":"947:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"946:19:82"},"scope":16367,"src":"855:111:82","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"ISwapRouter.ExactInputParams","id":16314,"members":[{"constant":false,"id":16305,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":16314,"src":"1009:10:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":16304,"name":"bytes","nodeType":"ElementaryTypeName","src":"1009:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":16307,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16314,"src":"1030:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16306,"name":"address","nodeType":"ElementaryTypeName","src":"1030:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16309,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":16314,"src":"1058:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16308,"name":"uint256","nodeType":"ElementaryTypeName","src":"1058:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16311,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":16314,"src":"1085:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16310,"name":"uint256","nodeType":"ElementaryTypeName","src":"1085:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16313,"mutability":"mutable","name":"amountOutMinimum","nodeType":"VariableDeclaration","scope":16314,"src":"1112:24:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16312,"name":"uint256","nodeType":"ElementaryTypeName","src":"1112:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ExactInputParams","nodeType":"StructDefinition","scope":16367,"src":"974:170:82","visibility":"public"},{"documentation":{"id":16315,"nodeType":"StructuredDocumentation","src":"1152:275:82","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":16322,"implemented":false,"kind":"function","modifiers":[],"name":"exactInput","nodeType":"FunctionDefinition","parameters":{"id":16318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16317,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":16322,"src":"1453:32:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$16314_calldata_ptr","typeString":"struct ISwapRouter.ExactInputParams"},"typeName":{"id":16316,"name":"ExactInputParams","nodeType":"UserDefinedTypeName","referencedDeclaration":16314,"src":"1453:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$16314_storage_ptr","typeString":"struct ISwapRouter.ExactInputParams"}},"visibility":"internal"}],"src":"1452:34:82"},"returnParameters":{"id":16321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16320,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":16322,"src":"1513:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16319,"name":"uint256","nodeType":"ElementaryTypeName","src":"1513:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1512:19:82"},"scope":16367,"src":"1433:99:82","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"ISwapRouter.ExactOutputSingleParams","id":16339,"members":[{"constant":false,"id":16324,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":16339,"src":"1582:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16323,"name":"address","nodeType":"ElementaryTypeName","src":"1582:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16326,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":16339,"src":"1608:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16325,"name":"address","nodeType":"ElementaryTypeName","src":"1608:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16328,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":16339,"src":"1635:10:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":16327,"name":"uint24","nodeType":"ElementaryTypeName","src":"1635:6:82","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":16330,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16339,"src":"1656:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16329,"name":"address","nodeType":"ElementaryTypeName","src":"1656:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16332,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":16339,"src":"1684:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16331,"name":"uint256","nodeType":"ElementaryTypeName","src":"1684:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16334,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":16339,"src":"1711:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16333,"name":"uint256","nodeType":"ElementaryTypeName","src":"1711:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16336,"mutability":"mutable","name":"amountInMaximum","nodeType":"VariableDeclaration","scope":16339,"src":"1739:23:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16335,"name":"uint256","nodeType":"ElementaryTypeName","src":"1739:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16338,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":16339,"src":"1773:25:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":16337,"name":"uint160","nodeType":"ElementaryTypeName","src":"1773:7:82","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"ExactOutputSingleParams","nodeType":"StructDefinition","scope":16367,"src":"1540:266:82","visibility":"public"},{"documentation":{"id":16340,"nodeType":"StructuredDocumentation","src":"1814:252:82","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":16347,"implemented":false,"kind":"function","modifiers":[],"name":"exactOutputSingle","nodeType":"FunctionDefinition","parameters":{"id":16343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16342,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":16347,"src":"2099:39:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$16339_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"},"typeName":{"id":16341,"name":"ExactOutputSingleParams","nodeType":"UserDefinedTypeName","referencedDeclaration":16339,"src":"2099:23:82","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$16339_storage_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"}},"visibility":"internal"}],"src":"2098:41:82"},"returnParameters":{"id":16346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16345,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":16347,"src":"2166:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16344,"name":"uint256","nodeType":"ElementaryTypeName","src":"2166:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2165:18:82"},"scope":16367,"src":"2072:112:82","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"ISwapRouter.ExactOutputParams","id":16358,"members":[{"constant":false,"id":16349,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":16358,"src":"2228:10:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":16348,"name":"bytes","nodeType":"ElementaryTypeName","src":"2228:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":16351,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16358,"src":"2249:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16350,"name":"address","nodeType":"ElementaryTypeName","src":"2249:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16353,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":16358,"src":"2277:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16352,"name":"uint256","nodeType":"ElementaryTypeName","src":"2277:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16355,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":16358,"src":"2304:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16354,"name":"uint256","nodeType":"ElementaryTypeName","src":"2304:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16357,"mutability":"mutable","name":"amountInMaximum","nodeType":"VariableDeclaration","scope":16358,"src":"2332:23:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16356,"name":"uint256","nodeType":"ElementaryTypeName","src":"2332:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ExactOutputParams","nodeType":"StructDefinition","scope":16367,"src":"2192:171:82","visibility":"public"},{"documentation":{"id":16359,"nodeType":"StructuredDocumentation","src":"2371:286:82","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":16366,"implemented":false,"kind":"function","modifiers":[],"name":"exactOutput","nodeType":"FunctionDefinition","parameters":{"id":16362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16361,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":16366,"src":"2684:33:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$16358_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams"},"typeName":{"id":16360,"name":"ExactOutputParams","nodeType":"UserDefinedTypeName","referencedDeclaration":16358,"src":"2684:17:82","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$16358_storage_ptr","typeString":"struct ISwapRouter.ExactOutputParams"}},"visibility":"internal"}],"src":"2683:35:82"},"returnParameters":{"id":16365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16364,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":16366,"src":"2745:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16363,"name":"uint256","nodeType":"ElementaryTypeName","src":"2745:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2744:18:82"},"scope":16367,"src":"2663:100:82","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":16368,"src":"272:2494:82"}],"src":"46:2722:82"},"id":82},"contracts/elixir-periphery/interfaces/ITickLens.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/ITickLens.sol","exportedSymbols":{"ITickLens":[16390]},"id":16391,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16369,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"46:24:83"},{"id":16370,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"72:19:83"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":16371,"nodeType":"StructuredDocumentation","src":"95:279:83","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":16390,"linearizedBaseContracts":[16390],"name":"ITickLens","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ITickLens.PopulatedTick","id":16378,"members":[{"constant":false,"id":16373,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":16378,"src":"433:10:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":16372,"name":"int24","nodeType":"ElementaryTypeName","src":"433:5:83","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":16375,"mutability":"mutable","name":"liquidityNet","nodeType":"VariableDeclaration","scope":16378,"src":"454:19:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":16374,"name":"int128","nodeType":"ElementaryTypeName","src":"454:6:83","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":16377,"mutability":"mutable","name":"liquidityGross","nodeType":"VariableDeclaration","scope":16378,"src":"484:22:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":16376,"name":"uint128","nodeType":"ElementaryTypeName","src":"484:7:83","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"PopulatedTick","nodeType":"StructDefinition","scope":16390,"src":"401:113:83","visibility":"public"},{"documentation":{"id":16379,"nodeType":"StructuredDocumentation","src":"522:420:83","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":16389,"implemented":false,"kind":"function","modifiers":[],"name":"getPopulatedTicksInWord","nodeType":"FunctionDefinition","parameters":{"id":16384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16381,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":16389,"src":"981:12:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16380,"name":"address","nodeType":"ElementaryTypeName","src":"981:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16383,"mutability":"mutable","name":"tickBitmapIndex","nodeType":"VariableDeclaration","scope":16389,"src":"995:21:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":16382,"name":"int16","nodeType":"ElementaryTypeName","src":"995:5:83","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"980:37:83"},"returnParameters":{"id":16388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16387,"mutability":"mutable","name":"populatedTicks","nodeType":"VariableDeclaration","scope":16389,"src":"1068:37:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PopulatedTick_$16378_memory_ptr_$dyn_memory_ptr","typeString":"struct ITickLens.PopulatedTick[]"},"typeName":{"baseType":{"id":16385,"name":"PopulatedTick","nodeType":"UserDefinedTypeName","referencedDeclaration":16378,"src":"1068:13:83","typeDescriptions":{"typeIdentifier":"t_struct$_PopulatedTick_$16378_storage_ptr","typeString":"struct ITickLens.PopulatedTick"}},"id":16386,"nodeType":"ArrayTypeName","src":"1068:15:83","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PopulatedTick_$16378_storage_$dyn_storage_ptr","typeString":"struct ITickLens.PopulatedTick[]"}},"visibility":"internal"}],"src":"1067:39:83"},"scope":16390,"src":"948:159:83","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":16391,"src":"374:736:83"}],"src":"46:1066:83"},"id":83},"contracts/elixir-periphery/interfaces/external/IERC1271.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/external/IERC1271.sol","exportedSymbols":{"IERC1271":[16404]},"id":16405,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16392,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:84"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":16393,"nodeType":"StructuredDocumentation","src":"74:179:84","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":16404,"linearizedBaseContracts":[16404],"name":"IERC1271","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":16394,"nodeType":"StructuredDocumentation","src":"279:477:84","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":16403,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nodeType":"FunctionDefinition","parameters":{"id":16399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16396,"mutability":"mutable","name":"hash","nodeType":"VariableDeclaration","scope":16403,"src":"788:12:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16395,"name":"bytes32","nodeType":"ElementaryTypeName","src":"788:7:84","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16398,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":16403,"src":"802:22:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16397,"name":"bytes","nodeType":"ElementaryTypeName","src":"802:5:84","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"787:38:84"},"returnParameters":{"id":16402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16401,"mutability":"mutable","name":"magicValue","nodeType":"VariableDeclaration","scope":16403,"src":"849:17:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":16400,"name":"bytes4","nodeType":"ElementaryTypeName","src":"849:6:84","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"848:19:84"},"scope":16404,"src":"762:106:84","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":16405,"src":"253:618:84"}],"src":"46:827:84"},"id":84},"contracts/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol","exportedSymbols":{"IERC20PermitAllowed":[16428]},"id":16429,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16406,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:85"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":16407,"nodeType":"StructuredDocumentation","src":"74:84:85","text":"@title Interface for permit\n @notice Interface used by DAI/CHAI for permit"},"fullyImplemented":false,"id":16428,"linearizedBaseContracts":[16428],"name":"IERC20PermitAllowed","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":16408,"nodeType":"StructuredDocumentation","src":"195:811:85","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":16427,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":16425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16410,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":16427,"src":"1038:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16409,"name":"address","nodeType":"ElementaryTypeName","src":"1038:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16412,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":16427,"src":"1063:15:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16411,"name":"address","nodeType":"ElementaryTypeName","src":"1063:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16414,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":16427,"src":"1089:13:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16413,"name":"uint256","nodeType":"ElementaryTypeName","src":"1089:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16416,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":16427,"src":"1113:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16415,"name":"uint256","nodeType":"ElementaryTypeName","src":"1113:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16418,"mutability":"mutable","name":"allowed","nodeType":"VariableDeclaration","scope":16427,"src":"1138:12:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16417,"name":"bool","nodeType":"ElementaryTypeName","src":"1138:4:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":16420,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":16427,"src":"1161:7:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16419,"name":"uint8","nodeType":"ElementaryTypeName","src":"1161:5:85","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":16422,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":16427,"src":"1179:9:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16421,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1179:7:85","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16424,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":16427,"src":"1199:9:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16423,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1199:7:85","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1027:188:85"},"returnParameters":{"id":16426,"nodeType":"ParameterList","parameters":[],"src":"1224:0:85"},"scope":16428,"src":"1012:213:85","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":16429,"src":"158:1070:85"}],"src":"46:1184:85"},"id":85},"contracts/elixir-periphery/interfaces/external/IWETH9.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/interfaces/external/IWETH9.sol","exportedSymbols":{"IERC20":[31070],"IWETH9":[16445]},"id":16446,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16430,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:86"},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","file":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","id":16431,"nodeType":"ImportDirective","scope":16446,"sourceUnit":31071,"src":"73:64:86","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":16433,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":31070,"src":"193:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$31070","typeString":"contract IERC20"}},"id":16434,"nodeType":"InheritanceSpecifier","src":"193:6:86"}],"contractDependencies":[31070],"contractKind":"interface","documentation":{"id":16432,"nodeType":"StructuredDocumentation","src":"141:32:86","text":"@title Interface for WETH9"},"fullyImplemented":false,"id":16445,"linearizedBaseContracts":[16445,31070],"name":"IWETH9","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":16435,"nodeType":"StructuredDocumentation","src":"207:46:86","text":"@notice Deposit ether to get wrapped ether"},"functionSelector":"d0e30db0","id":16438,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":16436,"nodeType":"ParameterList","parameters":[],"src":"275:2:86"},"returnParameters":{"id":16437,"nodeType":"ParameterList","parameters":[],"src":"294:0:86"},"scope":16445,"src":"259:36:86","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":16439,"nodeType":"StructuredDocumentation","src":"303:47:86","text":"@notice Withdraw wrapped ether to get ether"},"functionSelector":"2e1a7d4d","id":16444,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":16442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16441,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16444,"src":"374:7:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16440,"name":"uint256","nodeType":"ElementaryTypeName","src":"374:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"373:9:86"},"returnParameters":{"id":16443,"nodeType":"ParameterList","parameters":[],"src":"391:0:86"},"scope":16445,"src":"356:36:86","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":16446,"src":"173:222:86"}],"src":"46:351:86"},"id":86},"contracts/elixir-periphery/lens/ElixirQuoter.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/lens/ElixirQuoter.sol","exportedSymbols":{"BitMath":[4058],"BytesLib":[17433],"CallbackValidation":[17495],"ElixirQuoter":[17178],"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"IElixirQuoter":[15837],"IElixirSwapCallback":[3315],"IPeripheryImmutableState":[16125],"Path":[19642],"PeripheryImmutableState":[14955],"PoolAddress":[19734],"PoolTicksCounter":[20042],"SafeCast":[5526],"TickBitmap":[7032],"TickMath":[7567]},"id":17179,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16447,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:87"},{"id":16448,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"71:19:87"},{"absolutePath":"contracts/elixir-core/libraries/SafeCast.sol","file":"../../elixir-core/libraries/SafeCast.sol","id":16449,"nodeType":"ImportDirective","scope":17179,"sourceUnit":5527,"src":"94:50:87","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/TickMath.sol","file":"../../elixir-core/libraries/TickMath.sol","id":16450,"nodeType":"ImportDirective","scope":17179,"sourceUnit":7568,"src":"146:50:87","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/TickBitmap.sol","file":"../../elixir-core/libraries/TickBitmap.sol","id":16451,"nodeType":"ImportDirective","scope":17179,"sourceUnit":7033,"src":"198:52:87","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"../../elixir-core/interfaces/IElixirPool.sol","id":16452,"nodeType":"ImportDirective","scope":17179,"sourceUnit":3274,"src":"252:54:87","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol","file":"../../elixir-core/interfaces/callback/IElixirSwapCallback.sol","id":16453,"nodeType":"ImportDirective","scope":17179,"sourceUnit":3316,"src":"308:71:87","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/IElixirQuoter.sol","file":"../interfaces/IElixirQuoter.sol","id":16454,"nodeType":"ImportDirective","scope":17179,"sourceUnit":15838,"src":"383:41:87","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/base/PeripheryImmutableState.sol","file":"../base/PeripheryImmutableState.sol","id":16455,"nodeType":"ImportDirective","scope":17179,"sourceUnit":14956,"src":"426:45:87","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/Path.sol","file":"../libraries/Path.sol","id":16456,"nodeType":"ImportDirective","scope":17179,"sourceUnit":19643,"src":"473:31:87","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/PoolAddress.sol","file":"../libraries/PoolAddress.sol","id":16457,"nodeType":"ImportDirective","scope":17179,"sourceUnit":19735,"src":"506:38:87","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/CallbackValidation.sol","file":"../libraries/CallbackValidation.sol","id":16458,"nodeType":"ImportDirective","scope":17179,"sourceUnit":17496,"src":"546:45:87","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/PoolTicksCounter.sol","file":"../libraries/PoolTicksCounter.sol","id":16459,"nodeType":"ImportDirective","scope":17179,"sourceUnit":20043,"src":"593:43:87","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":16461,"name":"IElixirQuoter","nodeType":"UserDefinedTypeName","referencedDeclaration":15837,"src":"982:13:87","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirQuoter_$15837","typeString":"contract IElixirQuoter"}},"id":16462,"nodeType":"InheritanceSpecifier","src":"982:13:87"},{"baseName":{"id":16463,"name":"IElixirSwapCallback","nodeType":"UserDefinedTypeName","referencedDeclaration":3315,"src":"997:19:87","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirSwapCallback_$3315","typeString":"contract IElixirSwapCallback"}},"id":16464,"nodeType":"InheritanceSpecifier","src":"997:19:87"},{"baseName":{"id":16465,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":14955,"src":"1018:23:87","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$14955","typeString":"contract PeripheryImmutableState"}},"id":16466,"nodeType":"InheritanceSpecifier","src":"1018:23:87"}],"contractDependencies":[3315,14955,15837,16125],"contractKind":"contract","documentation":{"id":16460,"nodeType":"StructuredDocumentation","src":"640:317:87","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":17178,"linearizedBaseContracts":[17178,14955,16125,3315,15837],"name":"ElixirQuoter","nodeType":"ContractDefinition","nodes":[{"id":16469,"libraryName":{"id":16467,"name":"Path","nodeType":"UserDefinedTypeName","referencedDeclaration":19642,"src":"1055:4:87","typeDescriptions":{"typeIdentifier":"t_contract$_Path_$19642","typeString":"library Path"}},"nodeType":"UsingForDirective","src":"1049:21:87","typeName":{"id":16468,"name":"bytes","nodeType":"ElementaryTypeName","src":"1064:5:87","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"id":16472,"libraryName":{"id":16470,"name":"SafeCast","nodeType":"UserDefinedTypeName","referencedDeclaration":5526,"src":"1082:8:87","typeDescriptions":{"typeIdentifier":"t_contract$_SafeCast_$5526","typeString":"library SafeCast"}},"nodeType":"UsingForDirective","src":"1076:27:87","typeName":{"id":16471,"name":"uint256","nodeType":"ElementaryTypeName","src":"1095:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":16475,"libraryName":{"id":16473,"name":"PoolTicksCounter","nodeType":"UserDefinedTypeName","referencedDeclaration":20042,"src":"1115:16:87","typeDescriptions":{"typeIdentifier":"t_contract$_PoolTicksCounter_$20042","typeString":"library PoolTicksCounter"}},"nodeType":"UsingForDirective","src":"1109:39:87","typeName":{"id":16474,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":3273,"src":"1136:11:87","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}}},{"constant":false,"documentation":{"id":16476,"nodeType":"StructuredDocumentation","src":"1156:91:87","text":"@dev Transient storage variable used to check a safety condition in exact output swaps."},"id":16478,"mutability":"mutable","name":"amountOutCached","nodeType":"VariableDeclaration","scope":17178,"src":"1253:31:87","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16477,"name":"uint256","nodeType":"ElementaryTypeName","src":"1253:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":16489,"nodeType":"Block","src":"1381:2:87","statements":[]},"id":16490,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":16485,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16480,"src":"1363:8:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16486,"name":"_WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16482,"src":"1373:6:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":16487,"modifierName":{"id":16484,"name":"PeripheryImmutableState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14955,"src":"1339:23:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PeripheryImmutableState_$14955_$","typeString":"type(contract PeripheryImmutableState)"}},"nodeType":"ModifierInvocation","src":"1339:41:87"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":16483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16480,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":16490,"src":"1305:16:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16479,"name":"address","nodeType":"ElementaryTypeName","src":"1305:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16482,"mutability":"mutable","name":"_WETH9","nodeType":"VariableDeclaration","scope":16490,"src":"1323:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16481,"name":"address","nodeType":"ElementaryTypeName","src":"1323:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1304:34:87"},"returnParameters":{"id":16488,"nodeType":"ParameterList","parameters":[],"src":"1381:0:87"},"scope":17178,"src":"1293:90:87","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":16514,"nodeType":"Block","src":"1520:119:87","statements":[{"expression":{"arguments":[{"arguments":[{"id":16504,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14934,"src":"1577:7:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":16507,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16492,"src":"1609:6:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16508,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16494,"src":"1617:6:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16509,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16496,"src":"1625:3:87","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":16505,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19734,"src":"1586:11:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$19734_$","typeString":"type(library PoolAddress)"}},"id":16506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPoolKey","nodeType":"MemberAccess","referencedDeclaration":19686,"src":"1586:22:87","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_uint24_$returns$_t_struct$_PoolKey_$19655_memory_ptr_$","typeString":"function (address,address,uint24) pure returns (struct PoolAddress.PoolKey memory)"}},"id":16510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1586:43:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":16502,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19734,"src":"1550:11:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$19734_$","typeString":"type(library PoolAddress)"}},"id":16503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":19733,"src":"1550:26:87","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$19655_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":16511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1550:80:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16501,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1538:11:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":16512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1538:93:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"functionReturnParameters":16500,"id":16513,"nodeType":"Return","src":"1531:100:87"}]},"functionSelector":"1698ee82","id":16515,"implemented":true,"kind":"function","modifiers":[],"name":"getPool","nodeType":"FunctionDefinition","parameters":{"id":16497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16492,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":16515,"src":"1418:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16491,"name":"address","nodeType":"ElementaryTypeName","src":"1418:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16494,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":16515,"src":"1443:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16493,"name":"address","nodeType":"ElementaryTypeName","src":"1443:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16496,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":16515,"src":"1468:10:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":16495,"name":"uint24","nodeType":"ElementaryTypeName","src":"1468:6:87","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"1407:78:87"},"returnParameters":{"id":16500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16499,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16515,"src":"1507:11:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"},"typeName":{"id":16498,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":3273,"src":"1507:11:87","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"visibility":"internal"}],"src":"1506:13:87"},"scope":17178,"src":"1391:248:87","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[3314],"body":{"id":16624,"nodeType":"Block","src":"1834:1489:87","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":16529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16527,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16518,"src":"1853:12:87","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":16528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1868:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1853:16:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":16532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16530,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16520,"src":"1873:12:87","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":16531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1888:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1873:16:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1853:36:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":16526,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1845:7:87","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":16534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1845:45:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16535,"nodeType":"ExpressionStatement","src":"1845:45:87"},{"assignments":[16537,16539,16541],"declarations":[{"constant":false,"id":16537,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":16624,"src":"1965:15:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16536,"name":"address","nodeType":"ElementaryTypeName","src":"1965:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16539,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":16624,"src":"1982:16:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16538,"name":"address","nodeType":"ElementaryTypeName","src":"1982:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16541,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":16624,"src":"2000:10:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":16540,"name":"uint24","nodeType":"ElementaryTypeName","src":"2000:6:87","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":16545,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16542,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16522,"src":"2014:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":19608,"src":"2014:20:87","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":16544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2014:22:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint24_$","typeString":"tuple(address,address,uint24)"}},"nodeType":"VariableDeclarationStatement","src":"1964:72:87"},{"expression":{"arguments":[{"id":16549,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14934,"src":"2081:7:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16550,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16537,"src":"2090:7:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16551,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16539,"src":"2099:8:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16552,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16541,"src":"2109:3:87","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":16546,"name":"CallbackValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17495,"src":"2047:18:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CallbackValidation_$17495_$","typeString":"type(library CallbackValidation)"}},"id":16548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"verifyCallback","nodeType":"MemberAccess","referencedDeclaration":17463,"src":"2047:33:87","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint24_$returns$_t_contract$_IElixirPool_$3273_$","typeString":"function (address,address,address,uint24) view returns (contract IElixirPool)"}},"id":16553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2047:66:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":16554,"nodeType":"ExpressionStatement","src":"2047:66:87"},{"assignments":[16556,16558,16560],"declarations":[{"constant":false,"id":16556,"mutability":"mutable","name":"isExactInput","nodeType":"VariableDeclaration","scope":16624,"src":"2127:17:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16555,"name":"bool","nodeType":"ElementaryTypeName","src":"2127:4:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":16558,"mutability":"mutable","name":"amountToPay","nodeType":"VariableDeclaration","scope":16624,"src":"2146:19:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16557,"name":"uint256","nodeType":"ElementaryTypeName","src":"2146:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16560,"mutability":"mutable","name":"amountReceived","nodeType":"VariableDeclaration","scope":16624,"src":"2167:22:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16559,"name":"uint256","nodeType":"ElementaryTypeName","src":"2167:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16591,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":16563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16561,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16518,"src":"2206:12:87","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":16562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2221:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2206:16:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16577,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16539,"src":"2330:8:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16578,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16537,"src":"2341:7:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2330:18:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":16582,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16520,"src":"2358:12:87","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":16581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2350:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16580,"name":"uint256","nodeType":"ElementaryTypeName","src":"2350:7:87","typeDescriptions":{}}},"id":16583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2350:21:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":16587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2381:13:87","subExpression":{"id":16586,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16518,"src":"2382:12:87","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":16585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2373:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16584,"name":"uint256","nodeType":"ElementaryTypeName","src":"2373:7:87","typeDescriptions":{}}},"id":16588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2373:22:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":16589,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2329:67:87","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$_t_uint256_$","typeString":"tuple(bool,uint256,uint256)"}},"id":16590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2206:190:87","trueExpression":{"components":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16564,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16537,"src":"2243:7:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16565,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16539,"src":"2253:8:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2243:18:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":16569,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16518,"src":"2271:12:87","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":16568,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2263:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16567,"name":"uint256","nodeType":"ElementaryTypeName","src":"2263:7:87","typeDescriptions":{}}},"id":16570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2263:21:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":16574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2294:13:87","subExpression":{"id":16573,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16520,"src":"2295:12:87","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":16572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2286:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16571,"name":"uint256","nodeType":"ElementaryTypeName","src":"2286:7:87","typeDescriptions":{}}},"id":16575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2286:22:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":16576,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2242:67:87","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":"2126:270:87"},{"assignments":[16593],"declarations":[{"constant":false,"id":16593,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":16624,"src":"2409:16:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"},"typeName":{"id":16592,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":3273,"src":"2409:11:87","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"visibility":"internal"}],"id":16599,"initialValue":{"arguments":[{"id":16595,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16537,"src":"2436:7:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16596,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16539,"src":"2445:8:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16597,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16541,"src":"2455:3:87","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":16594,"name":"getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16515,"src":"2428:7:87","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint24_$returns$_t_contract$_IElixirPool_$3273_$","typeString":"function (address,address,uint24) view returns (contract IElixirPool)"}},"id":16598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2428:31:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"nodeType":"VariableDeclarationStatement","src":"2409:50:87"},{"assignments":[16601,16603,null,null,null,null,null],"declarations":[{"constant":false,"id":16601,"mutability":"mutable","name":"sqrtPriceX96After","nodeType":"VariableDeclaration","scope":16624,"src":"2471:25:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":16600,"name":"uint160","nodeType":"ElementaryTypeName","src":"2471:7:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":16603,"mutability":"mutable","name":"tickAfter","nodeType":"VariableDeclaration","scope":16624,"src":"2498:15:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":16602,"name":"int24","nodeType":"ElementaryTypeName","src":"2498:5:87","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},null,null,null,null,null],"id":16607,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16604,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16593,"src":"2527:4:87","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":16605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":3680,"src":"2527:10:87","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":16606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2527:12:87","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":"2470:69:87"},{"condition":{"id":16608,"name":"isExactInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16556,"src":"2556:12:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":16622,"nodeType":"Block","src":"2855:461:87","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16611,"name":"amountOutCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16478,"src":"2976:15:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":16612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2995:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2976:20:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16620,"nodeType":"IfStatement","src":"2972:68:87","trueBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16615,"name":"amountReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16560,"src":"3006:14:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":16616,"name":"amountOutCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16478,"src":"3024:15:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3006:33:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":16614,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2998:7:87","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":16618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2998:42:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16619,"nodeType":"ExpressionStatement","src":"2998:42:87"}},{"AST":{"nodeType":"YulBlock","src":"3064:241:87","statements":[{"nodeType":"YulVariableDeclaration","src":"3083:22:87","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3100:4:87","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3094:5:87"},"nodeType":"YulFunctionCall","src":"3094:11:87"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"3087:3:87","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3130:3:87"},{"name":"amountToPay","nodeType":"YulIdentifier","src":"3135:11:87"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3123:6:87"},"nodeType":"YulFunctionCall","src":"3123:24:87"},"nodeType":"YulExpressionStatement","src":"3123:24:87"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3176:3:87"},{"kind":"number","nodeType":"YulLiteral","src":"3181:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3172:3:87"},"nodeType":"YulFunctionCall","src":"3172:14:87"},{"name":"sqrtPriceX96After","nodeType":"YulIdentifier","src":"3188:17:87"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3165:6:87"},"nodeType":"YulFunctionCall","src":"3165:41:87"},"nodeType":"YulExpressionStatement","src":"3165:41:87"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3235:3:87"},{"kind":"number","nodeType":"YulLiteral","src":"3240:4:87","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3231:3:87"},"nodeType":"YulFunctionCall","src":"3231:14:87"},{"name":"tickAfter","nodeType":"YulIdentifier","src":"3247:9:87"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3224:6:87"},"nodeType":"YulFunctionCall","src":"3224:33:87"},"nodeType":"YulExpressionStatement","src":"3224:33:87"},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3282:3:87"},{"kind":"number","nodeType":"YulLiteral","src":"3287:2:87","type":"","value":"96"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3275:6:87"},"nodeType":"YulFunctionCall","src":"3275:15:87"},"nodeType":"YulExpressionStatement","src":"3275:15:87"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":16558,"isOffset":false,"isSlot":false,"src":"3135:11:87","valueSize":1},{"declaration":16601,"isOffset":false,"isSlot":false,"src":"3188:17:87","valueSize":1},{"declaration":16603,"isOffset":false,"isSlot":false,"src":"3247:9:87","valueSize":1}],"id":16621,"nodeType":"InlineAssembly","src":"3055:250:87"}]},"id":16623,"nodeType":"IfStatement","src":"2552:764:87","trueBody":{"id":16610,"nodeType":"Block","src":"2570:279:87","statements":[{"AST":{"nodeType":"YulBlock","src":"2594:244:87","statements":[{"nodeType":"YulVariableDeclaration","src":"2613:22:87","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2630:4:87","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2624:5:87"},"nodeType":"YulFunctionCall","src":"2624:11:87"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"2617:3:87","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2660:3:87"},{"name":"amountReceived","nodeType":"YulIdentifier","src":"2665:14:87"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2653:6:87"},"nodeType":"YulFunctionCall","src":"2653:27:87"},"nodeType":"YulExpressionStatement","src":"2653:27:87"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2709:3:87"},{"kind":"number","nodeType":"YulLiteral","src":"2714:4:87","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2705:3:87"},"nodeType":"YulFunctionCall","src":"2705:14:87"},{"name":"sqrtPriceX96After","nodeType":"YulIdentifier","src":"2721:17:87"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2698:6:87"},"nodeType":"YulFunctionCall","src":"2698:41:87"},"nodeType":"YulExpressionStatement","src":"2698:41:87"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2768:3:87"},{"kind":"number","nodeType":"YulLiteral","src":"2773:4:87","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2764:3:87"},"nodeType":"YulFunctionCall","src":"2764:14:87"},{"name":"tickAfter","nodeType":"YulIdentifier","src":"2780:9:87"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2757:6:87"},"nodeType":"YulFunctionCall","src":"2757:33:87"},"nodeType":"YulExpressionStatement","src":"2757:33:87"},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2815:3:87"},{"kind":"number","nodeType":"YulLiteral","src":"2820:2:87","type":"","value":"96"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2808:6:87"},"nodeType":"YulFunctionCall","src":"2808:15:87"},"nodeType":"YulExpressionStatement","src":"2808:15:87"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":16560,"isOffset":false,"isSlot":false,"src":"2665:14:87","valueSize":1},{"declaration":16601,"isOffset":false,"isSlot":false,"src":"2721:17:87","valueSize":1},{"declaration":16603,"isOffset":false,"isSlot":false,"src":"2780:9:87","valueSize":1}],"id":16609,"nodeType":"InlineAssembly","src":"2585:253:87"}]}}]},"documentation":{"id":16516,"nodeType":"StructuredDocumentation","src":"1647:35:87","text":"@inheritdoc IElixirSwapCallback"},"functionSelector":"d804d7a7","id":16625,"implemented":true,"kind":"function","modifiers":[],"name":"elixirSwapCallback","nodeType":"FunctionDefinition","overrides":{"id":16524,"nodeType":"OverrideSpecifier","overrides":[],"src":"1825:8:87"},"parameters":{"id":16523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16518,"mutability":"mutable","name":"amount0Delta","nodeType":"VariableDeclaration","scope":16625,"src":"1726:19:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":16517,"name":"int256","nodeType":"ElementaryTypeName","src":"1726:6:87","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":16520,"mutability":"mutable","name":"amount1Delta","nodeType":"VariableDeclaration","scope":16625,"src":"1756:19:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":16519,"name":"int256","nodeType":"ElementaryTypeName","src":"1756:6:87","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":16522,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":16625,"src":"1786:17:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16521,"name":"bytes","nodeType":"ElementaryTypeName","src":"1786:5:87","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1715:95:87"},"returnParameters":{"id":16525,"nodeType":"ParameterList","parameters":[],"src":"1834:0:87"},"scope":17178,"src":"1688:1635:87","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":16675,"nodeType":"Block","src":"3618:318:87","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16637,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16628,"src":"3633:6:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3633:13:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"3936","id":16639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3650:2:87","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"3633:19:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16662,"nodeType":"IfStatement","src":"3629:237:87","trueBody":{"id":16661,"nodeType":"Block","src":"3654:212:87","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16641,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16628,"src":"3673:6:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3673:13:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3638","id":16643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3689:2:87","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"68"},"src":"3673:18:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16649,"nodeType":"IfStatement","src":"3669:50:87","trueBody":{"expression":{"arguments":[{"hexValue":"556e6578706563746564206572726f72","id":16646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3700:18:87","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":16645,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3693:6:87","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":16647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3693:26:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16648,"nodeType":"ExpressionStatement","src":"3693:26:87"}},{"AST":{"nodeType":"YulBlock","src":"3743:61:87","statements":[{"nodeType":"YulAssignment","src":"3762:27:87","value":{"arguments":[{"name":"reason","nodeType":"YulIdentifier","src":"3776:6:87"},{"kind":"number","nodeType":"YulLiteral","src":"3784:4:87","type":"","value":"0x04"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3772:3:87"},"nodeType":"YulFunctionCall","src":"3772:17:87"},"variableNames":[{"name":"reason","nodeType":"YulIdentifier","src":"3762:6:87"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":16628,"isOffset":false,"isSlot":false,"src":"3762:6:87","valueSize":1},{"declaration":16628,"isOffset":false,"isSlot":false,"src":"3776:6:87","valueSize":1}],"id":16650,"nodeType":"InlineAssembly","src":"3734:70:87"},{"expression":{"arguments":[{"arguments":[{"id":16654,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16628,"src":"3836:6:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":16656,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3845:6:87","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":16655,"name":"string","nodeType":"ElementaryTypeName","src":"3845:6:87","typeDescriptions":{}}}],"id":16657,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3844:8:87","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":16652,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3825:3:87","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16653,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"3825:10:87","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":16658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3825:28:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":16651,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3818:6:87","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":16659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3818:36:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16660,"nodeType":"ExpressionStatement","src":"3818:36:87"}]}},{"expression":{"arguments":[{"id":16665,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16628,"src":"3894:6:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":16667,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3903:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16666,"name":"uint256","nodeType":"ElementaryTypeName","src":"3903:7:87","typeDescriptions":{}}},{"id":16669,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3912:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":16668,"name":"uint160","nodeType":"ElementaryTypeName","src":"3912:7:87","typeDescriptions":{}}},{"id":16671,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3921:5:87","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":16670,"name":"int24","nodeType":"ElementaryTypeName","src":"3921:5:87","typeDescriptions":{}}}],"id":16672,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3902:25:87","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":16663,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3883:3:87","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16664,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"3883:10:87","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":16673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3883:45:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint160_$_t_int24_$","typeString":"tuple(uint256,uint160,int24)"}},"functionReturnParameters":16636,"id":16674,"nodeType":"Return","src":"3876:52:87"}]},"documentation":{"id":16626,"nodeType":"StructuredDocumentation","src":"3331:69:87","text":"@dev Parses a revert reason that should contain the numeric quote"},"id":16676,"implemented":true,"kind":"function","modifiers":[],"name":"parseRevertReason","nodeType":"FunctionDefinition","parameters":{"id":16629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16628,"mutability":"mutable","name":"reason","nodeType":"VariableDeclaration","scope":16676,"src":"3433:19:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16627,"name":"bytes","nodeType":"ElementaryTypeName","src":"3433:5:87","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3432:21:87"},"returnParameters":{"id":16636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16631,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":16676,"src":"3517:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16630,"name":"uint256","nodeType":"ElementaryTypeName","src":"3517:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16633,"mutability":"mutable","name":"sqrtPriceX96After","nodeType":"VariableDeclaration","scope":16676,"src":"3546:25:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":16632,"name":"uint160","nodeType":"ElementaryTypeName","src":"3546:7:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":16635,"mutability":"mutable","name":"tickAfter","nodeType":"VariableDeclaration","scope":16676,"src":"3586:15:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":16634,"name":"int24","nodeType":"ElementaryTypeName","src":"3586:5:87","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"3502:110:87"},"scope":17178,"src":"3406:530:87","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":16729,"nodeType":"Block","src":"4261:368:87","statements":[{"assignments":[16694],"declarations":[{"constant":false,"id":16694,"mutability":"mutable","name":"tickBefore","nodeType":"VariableDeclaration","scope":16729,"src":"4272:16:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":16693,"name":"int24","nodeType":"ElementaryTypeName","src":"4272:5:87","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":16695,"nodeType":"VariableDeclarationStatement","src":"4272:16:87"},{"assignments":[16697],"declarations":[{"constant":false,"id":16697,"mutability":"mutable","name":"tickAfter","nodeType":"VariableDeclaration","scope":16729,"src":"4299:15:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":16696,"name":"int24","nodeType":"ElementaryTypeName","src":"4299:5:87","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":16698,"nodeType":"VariableDeclarationStatement","src":"4299:15:87"},{"expression":{"id":16704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":16699,"name":"tickBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16694,"src":"4328:10:87","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},null,null,null,null,null],"id":16700,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4325:24:87","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_int24_$__$__$__$__$__$","typeString":"tuple(,int24,,,,,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16701,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16680,"src":"4352:4:87","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":16702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":3680,"src":"4352:10:87","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":16703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4352:12:87","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":"4325:39:87","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16705,"nodeType":"ExpressionStatement","src":"4325:39:87"},{"expression":{"id":16713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":16706,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16685,"src":"4376:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16707,"name":"sqrtPriceX96After","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16687,"src":"4384:17:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":16708,"name":"tickAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16697,"src":"4403:9:87","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":16709,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4375:38:87","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint160_$_t_int24_$","typeString":"tuple(uint256,uint160,int24)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16711,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16678,"src":"4434:6:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16710,"name":"parseRevertReason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16676,"src":"4416:17:87","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":16712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4416:25:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint160_$_t_int24_$","typeString":"tuple(uint256,uint160,int24)"}},"src":"4375:66:87","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16714,"nodeType":"ExpressionStatement","src":"4375:66:87"},{"expression":{"id":16721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16715,"name":"initializedTicksCrossed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16689,"src":"4454:23:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16718,"name":"tickBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16694,"src":"4514:10:87","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":16719,"name":"tickAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16697,"src":"4526:9:87","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":16716,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16680,"src":"4480:4:87","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":16717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"countInitializedTicksCrossed","nodeType":"MemberAccess","referencedDeclaration":20012,"src":"4480:33:87","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IElixirPool_$3273_$_t_int24_$_t_int24_$returns$_t_uint32_$bound_to$_t_contract$_IElixirPool_$3273_$","typeString":"function (contract IElixirPool,int24,int24) view returns (uint32)"}},"id":16720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4480:56:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4454:82:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":16722,"nodeType":"ExpressionStatement","src":"4454:82:87"},{"expression":{"components":[{"id":16723,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16685,"src":"4557:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16724,"name":"sqrtPriceX96After","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16687,"src":"4565:17:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":16725,"name":"initializedTicksCrossed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16689,"src":"4584:23:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":16726,"name":"gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16682,"src":"4609:11:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":16727,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4556:65:87","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint160_$_t_uint32_$_t_uint256_$","typeString":"tuple(uint256,uint160,uint32,uint256)"}},"functionReturnParameters":16692,"id":16728,"nodeType":"Return","src":"4549:72:87"}]},"id":16730,"implemented":true,"kind":"function","modifiers":[],"name":"handleRevert","nodeType":"FunctionDefinition","parameters":{"id":16683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16678,"mutability":"mutable","name":"reason","nodeType":"VariableDeclaration","scope":16730,"src":"3976:19:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16677,"name":"bytes","nodeType":"ElementaryTypeName","src":"3976:5:87","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":16680,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":16730,"src":"4006:16:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"},"typeName":{"id":16679,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":3273,"src":"4006:11:87","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"visibility":"internal"},{"constant":false,"id":16682,"mutability":"mutable","name":"gasEstimate","nodeType":"VariableDeclaration","scope":16730,"src":"4033:19:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16681,"name":"uint256","nodeType":"ElementaryTypeName","src":"4033:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3965:94:87"},"returnParameters":{"id":16692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16685,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":16730,"src":"4123:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16684,"name":"uint256","nodeType":"ElementaryTypeName","src":"4123:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16687,"mutability":"mutable","name":"sqrtPriceX96After","nodeType":"VariableDeclaration","scope":16730,"src":"4152:25:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":16686,"name":"uint160","nodeType":"ElementaryTypeName","src":"4152:7:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":16689,"mutability":"mutable","name":"initializedTicksCrossed","nodeType":"VariableDeclaration","scope":16730,"src":"4192:30:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":16688,"name":"uint32","nodeType":"ElementaryTypeName","src":"4192:6:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":16691,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16730,"src":"4237:7:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16690,"name":"uint256","nodeType":"ElementaryTypeName","src":"4237:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4108:147:87"},"scope":17178,"src":"3944:685:87","stateMutability":"view","virtual":false,"visibility":"private"},{"baseFunctions":[15793],"body":{"id":16828,"nodeType":"Block","src":"4930:836:87","statements":[{"assignments":[16745],"declarations":[{"constant":false,"id":16745,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":16828,"src":"4941:15:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16744,"name":"bool","nodeType":"ElementaryTypeName","src":"4941:4:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":16751,"initialValue":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16746,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16732,"src":"4959:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$15779_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactInputSingleParams memory"}},"id":16747,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":15770,"src":"4959:14:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16748,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16732,"src":"4976:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$15779_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactInputSingleParams memory"}},"id":16749,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":15772,"src":"4976:15:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4959:32:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4941:50:87"},{"assignments":[16753],"declarations":[{"constant":false,"id":16753,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":16828,"src":"5002:16:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"},"typeName":{"id":16752,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":3273,"src":"5002:11:87","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"visibility":"internal"}],"id":16762,"initialValue":{"arguments":[{"expression":{"id":16755,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16732,"src":"5029:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$15779_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactInputSingleParams memory"}},"id":16756,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":15770,"src":"5029:14:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":16757,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16732,"src":"5045:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$15779_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactInputSingleParams memory"}},"id":16758,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":15772,"src":"5045:15:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":16759,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16732,"src":"5062:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$15779_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactInputSingleParams memory"}},"id":16760,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":15776,"src":"5062:10:87","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":16754,"name":"getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16515,"src":"5021:7:87","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint24_$returns$_t_contract$_IElixirPool_$3273_$","typeString":"function (address,address,uint24) view returns (contract IElixirPool)"}},"id":16761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5021:52:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"nodeType":"VariableDeclarationStatement","src":"5002:71:87"},{"assignments":[16764],"declarations":[{"constant":false,"id":16764,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":16828,"src":"5086:17:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16763,"name":"uint256","nodeType":"ElementaryTypeName","src":"5086:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16767,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16765,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"5106:7:87","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5106:9:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5086:29:87"},{"clauses":[{"block":{"id":16807,"nodeType":"Block","src":"5605:2:87","statements":[]},"errorName":"","id":16808,"nodeType":"TryCatchClause","src":"5605:2:87"},{"block":{"id":16825,"nodeType":"Block","src":"5636:123:87","statements":[{"expression":{"id":16817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16812,"name":"gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16742,"src":"5651:11:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16813,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16764,"src":"5665:9:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":16814,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"5677:7:87","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5677:9:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5665:21:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5651:35:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16818,"nodeType":"ExpressionStatement","src":"5651:35:87"},{"expression":{"arguments":[{"id":16820,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16810,"src":"5721:6:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":16821,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16753,"src":"5729:4:87","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},{"id":16822,"name":"gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16742,"src":"5735:11:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16819,"name":"handleRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16730,"src":"5708:12:87","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$_t_contract$_IElixirPool_$3273_$_t_uint256_$returns$_t_uint256_$_t_uint160_$_t_uint32_$_t_uint256_$","typeString":"function (bytes memory,contract IElixirPool,uint256) view returns (uint256,uint160,uint32,uint256)"}},"id":16823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5708:39:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint160_$_t_uint32_$_t_uint256_$","typeString":"tuple(uint256,uint160,uint32,uint256)"}},"functionReturnParameters":16743,"id":16824,"nodeType":"Return","src":"5701:46:87"}]},"errorName":"","id":16826,"nodeType":"TryCatchClause","parameters":{"id":16811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16810,"mutability":"mutable","name":"reason","nodeType":"VariableDeclaration","scope":16826,"src":"5615:19:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16809,"name":"bytes","nodeType":"ElementaryTypeName","src":"5615:5:87","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5614:21:87"},"src":"5608:151:87"}],"externalCall":{"arguments":[{"arguments":[{"id":16772,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5179:4:87","typeDescriptions":{"typeIdentifier":"t_contract$_ElixirQuoter_$17178","typeString":"contract ElixirQuoter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ElixirQuoter_$17178","typeString":"contract ElixirQuoter"}],"id":16771,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5171:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16770,"name":"address","nodeType":"ElementaryTypeName","src":"5171:7:87","typeDescriptions":{}}},"id":16773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5171:13:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16774,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16745,"src":"5253:10:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":16775,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16732,"src":"5282:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$15779_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactInputSingleParams memory"}},"id":16776,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":15774,"src":"5282:15:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5525,"src":"5282:24:87","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":16778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5282:26:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":16782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16779,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16732,"src":"5327:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$15779_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactInputSingleParams memory"}},"id":16780,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":15778,"src":"5327:24:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5355:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5327:29:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":16794,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16732,"src":"5476:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$15779_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactInputSingleParams memory"}},"id":16795,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":15778,"src":"5476:24:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":16796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5327:173:87","trueExpression":{"components":[{"condition":{"id":16783,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16745,"src":"5381:10:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":16791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16788,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"5424:8:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":16789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":7053,"src":"5424:23:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":16790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5450:1:87","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5424:27:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":16792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5381:70:87","trueExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":16787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16784,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"5394:8:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":16785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":7049,"src":"5394:23:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5420:1:87","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5394:27:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":16793,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5380:72:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"expression":{"id":16799,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16732,"src":"5536:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$15779_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactInputSingleParams memory"}},"id":16800,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":15770,"src":"5536:14:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":16801,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16732,"src":"5552:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$15779_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactInputSingleParams memory"}},"id":16802,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":15776,"src":"5552:10:87","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"expression":{"id":16803,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16732,"src":"5564:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$15779_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactInputSingleParams memory"}},"id":16804,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":15772,"src":"5564:15:87","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":16797,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5519:3:87","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16798,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"5519:16:87","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5519:61:87","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":16768,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16753,"src":"5143:4:87","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":16769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":3392,"src":"5143:9:87","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":16806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5143:452:87","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":16827,"nodeType":"TryStatement","src":"5126:633:87"}]},"functionSelector":"c6a5026a","id":16829,"implemented":true,"kind":"function","modifiers":[],"name":"quoteExactInputSingle","nodeType":"FunctionDefinition","overrides":{"id":16734,"nodeType":"OverrideSpecifier","overrides":[],"src":"4736:8:87"},"parameters":{"id":16733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16732,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":16829,"src":"4668:41:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$15779_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactInputSingleParams"},"typeName":{"id":16731,"name":"QuoteExactInputSingleParams","nodeType":"UserDefinedTypeName","referencedDeclaration":15779,"src":"4668:27:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$15779_storage_ptr","typeString":"struct IElixirQuoter.QuoteExactInputSingleParams"}},"visibility":"internal"}],"src":"4667:43:87"},"returnParameters":{"id":16743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16736,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":16829,"src":"4777:17:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16735,"name":"uint256","nodeType":"ElementaryTypeName","src":"4777:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16738,"mutability":"mutable","name":"sqrtPriceX96After","nodeType":"VariableDeclaration","scope":16829,"src":"4809:25:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":16737,"name":"uint160","nodeType":"ElementaryTypeName","src":"4809:7:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":16740,"mutability":"mutable","name":"initializedTicksCrossed","nodeType":"VariableDeclaration","scope":16829,"src":"4849:30:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":16739,"name":"uint32","nodeType":"ElementaryTypeName","src":"4849:6:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":16742,"mutability":"mutable","name":"gasEstimate","nodeType":"VariableDeclaration","scope":16829,"src":"4894:19:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16741,"name":"uint256","nodeType":"ElementaryTypeName","src":"4894:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4762:162:87"},"scope":17178,"src":"4637:1129:87","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[15768],"body":{"id":16943,"nodeType":"Block","src":"6081:1353:87","statements":[{"expression":{"id":16855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16847,"name":"sqrtPriceX96AfterList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16840,"src":"6092:21:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16851,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"6130:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"numPools","nodeType":"MemberAccess","referencedDeclaration":19574,"src":"6130:13:87","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":16853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6130:15:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6116:13:87","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":16848,"name":"uint160","nodeType":"ElementaryTypeName","src":"6120:7:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":16849,"nodeType":"ArrayTypeName","src":"6120:9:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}}},"id":16854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6116:30:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"src":"6092:54:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"id":16856,"nodeType":"ExpressionStatement","src":"6092:54:87"},{"expression":{"id":16865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16857,"name":"initializedTicksCrossedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16843,"src":"6157:27:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16861,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"6200:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"numPools","nodeType":"MemberAccess","referencedDeclaration":19574,"src":"6200:13:87","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":16863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6200:15:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16860,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6187:12:87","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":16858,"name":"uint32","nodeType":"ElementaryTypeName","src":"6191:6:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":16859,"nodeType":"ArrayTypeName","src":"6191:8:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}}},"id":16864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6187:29:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"src":"6157:59:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":16866,"nodeType":"ExpressionStatement","src":"6157:59:87"},{"assignments":[16868],"declarations":[{"constant":false,"id":16868,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":16943,"src":"6229:9:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16867,"name":"uint256","nodeType":"ElementaryTypeName","src":"6229:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16870,"initialValue":{"hexValue":"30","id":16869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6241:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6229:13:87"},{"body":{"id":16941,"nodeType":"Block","src":"6266:1161:87","statements":[{"assignments":[16873,16875,16877],"declarations":[{"constant":false,"id":16873,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":16941,"src":"6282:15:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16872,"name":"address","nodeType":"ElementaryTypeName","src":"6282:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16875,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":16941,"src":"6299:16:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16874,"name":"address","nodeType":"ElementaryTypeName","src":"6299:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16877,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":16941,"src":"6317:10:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":16876,"name":"uint24","nodeType":"ElementaryTypeName","src":"6317:6:87","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":16881,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16878,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"6331:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":19608,"src":"6331:20:87","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":16880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6331:22:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint24_$","typeString":"tuple(address,address,uint24)"}},"nodeType":"VariableDeclarationStatement","src":"6281:72:87"},{"assignments":[16883,16885,16887,16889],"declarations":[{"constant":false,"id":16883,"mutability":"mutable","name":"_amountOut","nodeType":"VariableDeclaration","scope":16941,"src":"6451:18:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16882,"name":"uint256","nodeType":"ElementaryTypeName","src":"6451:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16885,"mutability":"mutable","name":"_sqrtPriceX96After","nodeType":"VariableDeclaration","scope":16941,"src":"6471:26:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":16884,"name":"uint160","nodeType":"ElementaryTypeName","src":"6471:7:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":16887,"mutability":"mutable","name":"_initializedTicksCrossed","nodeType":"VariableDeclaration","scope":16941,"src":"6499:31:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":16886,"name":"uint32","nodeType":"ElementaryTypeName","src":"6499:6:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":16889,"mutability":"mutable","name":"_gasEstimate","nodeType":"VariableDeclaration","scope":16941,"src":"6532:20:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16888,"name":"uint256","nodeType":"ElementaryTypeName","src":"6532:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16899,"initialValue":{"arguments":[{"arguments":[{"id":16892,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16873,"src":"6681:7:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16893,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16875,"src":"6725:8:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16894,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16877,"src":"6765:3:87","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"id":16895,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16833,"src":"6805:8:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":16896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6859:1:87","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":16891,"name":"QuoteExactInputSingleParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15779,"src":"6617:27:87","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_QuoteExactInputSingleParams_$15779_storage_ptr_$","typeString":"type(struct IElixirQuoter.QuoteExactInputSingleParams storage pointer)"}},"id":16897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["tokenIn","tokenOut","fee","amountIn","sqrtPriceLimitX96"],"nodeType":"FunctionCall","src":"6617:267:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$15779_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactInputSingleParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$15779_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactInputSingleParams memory"}],"id":16890,"name":"quoteExactInputSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16829,"src":"6573:21:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_QuoteExactInputSingleParams_$15779_memory_ptr_$returns$_t_uint256_$_t_uint160_$_t_uint32_$_t_uint256_$","typeString":"function (struct IElixirQuoter.QuoteExactInputSingleParams memory) returns (uint256,uint160,uint32,uint256)"}},"id":16898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6573:330:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint160_$_t_uint32_$_t_uint256_$","typeString":"tuple(uint256,uint160,uint32,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6450:453:87"},{"expression":{"id":16904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16900,"name":"sqrtPriceX96AfterList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16840,"src":"6920:21:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"id":16902,"indexExpression":{"id":16901,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16868,"src":"6942:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6920:24:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16903,"name":"_sqrtPriceX96After","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16885,"src":"6947:18:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6920:45:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":16905,"nodeType":"ExpressionStatement","src":"6920:45:87"},{"expression":{"id":16910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16906,"name":"initializedTicksCrossedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16843,"src":"6980:27:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":16908,"indexExpression":{"id":16907,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16868,"src":"7008:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6980:30:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16909,"name":"_initializedTicksCrossed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16887,"src":"7013:24:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"6980:57:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":16911,"nodeType":"ExpressionStatement","src":"6980:57:87"},{"expression":{"id":16914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16912,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16833,"src":"7052:8:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16913,"name":"_amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16883,"src":"7063:10:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7052:21:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16915,"nodeType":"ExpressionStatement","src":"7052:21:87"},{"expression":{"id":16918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16916,"name":"gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16845,"src":"7088:11:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":16917,"name":"_gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16889,"src":"7103:12:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7088:27:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16919,"nodeType":"ExpressionStatement","src":"7088:27:87"},{"expression":{"id":16921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7130:3:87","subExpression":{"id":16920,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16868,"src":"7130:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16922,"nodeType":"ExpressionStatement","src":"7130:3:87"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16923,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"7210:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasMultiplePools","nodeType":"MemberAccess","referencedDeclaration":19556,"src":"7210:21:87","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":16925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7210:23:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":16939,"nodeType":"Block","src":"7299:117:87","statements":[{"expression":{"components":[{"id":16933,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16833,"src":"7326:8:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16934,"name":"sqrtPriceX96AfterList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16840,"src":"7336:21:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},{"id":16935,"name":"initializedTicksCrossedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16843,"src":"7359:27:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},{"id":16936,"name":"gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16845,"src":"7388:11:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":16937,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7325:75:87","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":16846,"id":16938,"nodeType":"Return","src":"7318:82:87"}]},"id":16940,"nodeType":"IfStatement","src":"7206:210:87","trueBody":{"id":16932,"nodeType":"Block","src":"7235:58:87","statements":[{"expression":{"id":16930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16926,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"7254:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16927,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"7261:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"skipToken","nodeType":"MemberAccess","referencedDeclaration":19641,"src":"7261:14:87","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":16929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7261:16:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"7254:23:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16931,"nodeType":"ExpressionStatement","src":"7254:23:87"}]}}]},"condition":{"hexValue":"74727565","id":16871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6260:4:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":16942,"nodeType":"WhileStatement","src":"6253:1174:87"}]},"functionSelector":"cdca1753","id":16944,"implemented":true,"kind":"function","modifiers":[],"name":"quoteExactInput","nodeType":"FunctionDefinition","overrides":{"id":16835,"nodeType":"OverrideSpecifier","overrides":[],"src":"5861:8:87"},"parameters":{"id":16834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16831,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":16944,"src":"5799:17:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16830,"name":"bytes","nodeType":"ElementaryTypeName","src":"5799:5:87","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":16833,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":16944,"src":"5818:16:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16832,"name":"uint256","nodeType":"ElementaryTypeName","src":"5818:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5798:37:87"},"returnParameters":{"id":16846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16837,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":16944,"src":"5902:17:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16836,"name":"uint256","nodeType":"ElementaryTypeName","src":"5902:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16840,"mutability":"mutable","name":"sqrtPriceX96AfterList","nodeType":"VariableDeclaration","scope":16944,"src":"5934:38:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[]"},"typeName":{"baseType":{"id":16838,"name":"uint160","nodeType":"ElementaryTypeName","src":"5934:7:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":16839,"nodeType":"ArrayTypeName","src":"5934:9:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"},{"constant":false,"id":16843,"mutability":"mutable","name":"initializedTicksCrossedList","nodeType":"VariableDeclaration","scope":16944,"src":"5987:43:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":16841,"name":"uint32","nodeType":"ElementaryTypeName","src":"5987:6:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":16842,"nodeType":"ArrayTypeName","src":"5987:8:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"},{"constant":false,"id":16845,"mutability":"mutable","name":"gasEstimate","nodeType":"VariableDeclaration","scope":16944,"src":"6045:19:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16844,"name":"uint256","nodeType":"ElementaryTypeName","src":"6045:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5887:188:87"},"scope":17178,"src":"5774:1660:87","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[15836],"body":{"id":17061,"nodeType":"Block","src":"7736:1109:87","statements":[{"assignments":[16959],"declarations":[{"constant":false,"id":16959,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":17061,"src":"7747:15:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16958,"name":"bool","nodeType":"ElementaryTypeName","src":"7747:4:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":16965,"initialValue":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16960,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16946,"src":"7765:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$15822_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactOutputSingleParams memory"}},"id":16961,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":15813,"src":"7765:14:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16962,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16946,"src":"7782:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$15822_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactOutputSingleParams memory"}},"id":16963,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":15815,"src":"7782:15:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7765:32:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"7747:50:87"},{"assignments":[16967],"declarations":[{"constant":false,"id":16967,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":17061,"src":"7808:16:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"},"typeName":{"id":16966,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":3273,"src":"7808:11:87","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"visibility":"internal"}],"id":16976,"initialValue":{"arguments":[{"expression":{"id":16969,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16946,"src":"7835:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$15822_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactOutputSingleParams memory"}},"id":16970,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":15813,"src":"7835:14:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":16971,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16946,"src":"7851:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$15822_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactOutputSingleParams memory"}},"id":16972,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":15815,"src":"7851:15:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":16973,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16946,"src":"7868:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$15822_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactOutputSingleParams memory"}},"id":16974,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":15819,"src":"7868:10:87","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":16968,"name":"getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16515,"src":"7827:7:87","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint24_$returns$_t_contract$_IElixirPool_$3273_$","typeString":"function (address,address,uint24) view returns (contract IElixirPool)"}},"id":16975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7827:52:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"nodeType":"VariableDeclarationStatement","src":"7808:71:87"},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":16980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16977,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16946,"src":"8006:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$15822_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactOutputSingleParams memory"}},"id":16978,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":15821,"src":"8006:24:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8034:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8006:29:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16986,"nodeType":"IfStatement","src":"8002:66:87","trueBody":{"expression":{"id":16984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16981,"name":"amountOutCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16478,"src":"8037:15:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":16982,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16946,"src":"8055:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$15822_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactOutputSingleParams memory"}},"id":16983,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":15817,"src":"8055:13:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8037:31:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16985,"nodeType":"ExpressionStatement","src":"8037:31:87"}},{"assignments":[16988],"declarations":[{"constant":false,"id":16988,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":17061,"src":"8079:17:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16987,"name":"uint256","nodeType":"ElementaryTypeName","src":"8079:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16991,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16989,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"8099:7:87","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8099:9:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8079:29:87"},{"clauses":[{"block":{"id":17032,"nodeType":"Block","src":"8597:2:87","statements":[]},"errorName":"","id":17033,"nodeType":"TryCatchClause","src":"8597:2:87"},{"block":{"id":17058,"nodeType":"Block","src":"8628:210:87","statements":[{"expression":{"id":17042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17037,"name":"gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16956,"src":"8643:11:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17038,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16988,"src":"8657:9:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":17039,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"8669:7:87","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":17040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8669:9:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8657:21:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8643:35:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17043,"nodeType":"ExpressionStatement","src":"8643:35:87"},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":17047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17044,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16946,"src":"8697:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$15822_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactOutputSingleParams memory"}},"id":17045,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":15821,"src":"8697:24:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":17046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8725:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8697:29:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17051,"nodeType":"IfStatement","src":"8693:57:87","trueBody":{"expression":{"id":17049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"8728:22:87","subExpression":{"id":17048,"name":"amountOutCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16478,"src":"8735:15:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17050,"nodeType":"ExpressionStatement","src":"8728:22:87"}},{"expression":{"arguments":[{"id":17053,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17035,"src":"8800:6:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":17054,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16967,"src":"8808:4:87","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},{"id":17055,"name":"gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16956,"src":"8814:11:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17052,"name":"handleRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16730,"src":"8787:12:87","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$_t_contract$_IElixirPool_$3273_$_t_uint256_$returns$_t_uint256_$_t_uint160_$_t_uint32_$_t_uint256_$","typeString":"function (bytes memory,contract IElixirPool,uint256) view returns (uint256,uint160,uint32,uint256)"}},"id":17056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8787:39:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint160_$_t_uint32_$_t_uint256_$","typeString":"tuple(uint256,uint160,uint32,uint256)"}},"functionReturnParameters":16957,"id":17057,"nodeType":"Return","src":"8780:46:87"}]},"errorName":"","id":17059,"nodeType":"TryCatchClause","parameters":{"id":17036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17035,"mutability":"mutable","name":"reason","nodeType":"VariableDeclaration","scope":17059,"src":"8607:19:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17034,"name":"bytes","nodeType":"ElementaryTypeName","src":"8607:5:87","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8606:21:87"},"src":"8600:238:87"}],"externalCall":{"arguments":[{"arguments":[{"id":16996,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8172:4:87","typeDescriptions":{"typeIdentifier":"t_contract$_ElixirQuoter_$17178","typeString":"contract ElixirQuoter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ElixirQuoter_$17178","typeString":"contract ElixirQuoter"}],"id":16995,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8164:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16994,"name":"address","nodeType":"ElementaryTypeName","src":"8164:7:87","typeDescriptions":{}}},"id":16997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8164:13:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16998,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16959,"src":"8246:10:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":17003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"8275:25:87","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":16999,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16946,"src":"8276:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$15822_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactOutputSingleParams memory"}},"id":17000,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":15817,"src":"8276:13:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":5525,"src":"8276:22:87","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":17002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8276:24:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":17007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17004,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16946,"src":"8319:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$15822_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactOutputSingleParams memory"}},"id":17005,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":15821,"src":"8319:24:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":17006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8347:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8319:29:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":17019,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16946,"src":"8468:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$15822_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactOutputSingleParams memory"}},"id":17020,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":15821,"src":"8468:24:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":17021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8319:173:87","trueExpression":{"components":[{"condition":{"id":17008,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16959,"src":"8373:10:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":17016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17013,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"8416:8:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":17014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":7053,"src":"8416:23:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":17015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8442:1:87","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8416:27:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":17017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8373:70:87","trueExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":17012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17009,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"8386:8:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":17010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":7049,"src":"8386:23:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":17011,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8412:1:87","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8386:27:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":17018,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8372:72:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"expression":{"id":17024,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16946,"src":"8528:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$15822_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactOutputSingleParams memory"}},"id":17025,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":15815,"src":"8528:15:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":17026,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16946,"src":"8545:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$15822_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactOutputSingleParams memory"}},"id":17027,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":15819,"src":"8545:10:87","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"expression":{"id":17028,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16946,"src":"8557:6:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$15822_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactOutputSingleParams memory"}},"id":17029,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":15813,"src":"8557:14:87","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":17022,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8511:3:87","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17023,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"8511:16:87","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8511:61:87","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":16992,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16967,"src":"8136:4:87","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":16993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":3392,"src":"8136:9:87","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":17031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8136:451:87","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":17060,"nodeType":"TryStatement","src":"8119:719:87"}]},"functionSelector":"bd21704a","id":17062,"implemented":true,"kind":"function","modifiers":[],"name":"quoteExactOutputSingle","nodeType":"FunctionDefinition","overrides":{"id":16948,"nodeType":"OverrideSpecifier","overrides":[],"src":"7543:8:87"},"parameters":{"id":16947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16946,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":17062,"src":"7474:42:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$15822_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactOutputSingleParams"},"typeName":{"id":16945,"name":"QuoteExactOutputSingleParams","nodeType":"UserDefinedTypeName","referencedDeclaration":15822,"src":"7474:28:87","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$15822_storage_ptr","typeString":"struct IElixirQuoter.QuoteExactOutputSingleParams"}},"visibility":"internal"}],"src":"7473:44:87"},"returnParameters":{"id":16957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16950,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":17062,"src":"7584:16:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16949,"name":"uint256","nodeType":"ElementaryTypeName","src":"7584:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16952,"mutability":"mutable","name":"sqrtPriceX96After","nodeType":"VariableDeclaration","scope":17062,"src":"7615:25:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":16951,"name":"uint160","nodeType":"ElementaryTypeName","src":"7615:7:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":16954,"mutability":"mutable","name":"initializedTicksCrossed","nodeType":"VariableDeclaration","scope":17062,"src":"7655:30:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":16953,"name":"uint32","nodeType":"ElementaryTypeName","src":"7655:6:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":16956,"mutability":"mutable","name":"gasEstimate","nodeType":"VariableDeclaration","scope":17062,"src":"7700:19:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16955,"name":"uint256","nodeType":"ElementaryTypeName","src":"7700:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7569:161:87"},"scope":17178,"src":"7442:1403:87","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[15811],"body":{"id":17176,"nodeType":"Block","src":"9161:1354:87","statements":[{"expression":{"id":17088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17080,"name":"sqrtPriceX96AfterList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17073,"src":"9172:21:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17084,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17064,"src":"9210:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":17085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"numPools","nodeType":"MemberAccess","referencedDeclaration":19574,"src":"9210:13:87","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":17086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9210:15:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17083,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9196:13:87","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":17081,"name":"uint160","nodeType":"ElementaryTypeName","src":"9200:7:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":17082,"nodeType":"ArrayTypeName","src":"9200:9:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}}},"id":17087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9196:30:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"src":"9172:54:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"id":17089,"nodeType":"ExpressionStatement","src":"9172:54:87"},{"expression":{"id":17098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17090,"name":"initializedTicksCrossedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17076,"src":"9237:27:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17094,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17064,"src":"9280:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":17095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"numPools","nodeType":"MemberAccess","referencedDeclaration":19574,"src":"9280:13:87","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":17096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9280:15:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17093,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9267:12:87","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":17091,"name":"uint32","nodeType":"ElementaryTypeName","src":"9271:6:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":17092,"nodeType":"ArrayTypeName","src":"9271:8:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}}},"id":17097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9267:29:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"src":"9237:59:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":17099,"nodeType":"ExpressionStatement","src":"9237:59:87"},{"assignments":[17101],"declarations":[{"constant":false,"id":17101,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":17176,"src":"9309:9:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17100,"name":"uint256","nodeType":"ElementaryTypeName","src":"9309:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17103,"initialValue":{"hexValue":"30","id":17102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9321:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9309:13:87"},{"body":{"id":17174,"nodeType":"Block","src":"9346:1162:87","statements":[{"assignments":[17106,17108,17110],"declarations":[{"constant":false,"id":17106,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":17174,"src":"9362:16:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17105,"name":"address","nodeType":"ElementaryTypeName","src":"9362:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17108,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":17174,"src":"9380:15:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17107,"name":"address","nodeType":"ElementaryTypeName","src":"9380:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17110,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":17174,"src":"9397:10:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":17109,"name":"uint24","nodeType":"ElementaryTypeName","src":"9397:6:87","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":17114,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17111,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17064,"src":"9411:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":17112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":19608,"src":"9411:20:87","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":17113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9411:22:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint24_$","typeString":"tuple(address,address,uint24)"}},"nodeType":"VariableDeclarationStatement","src":"9361:72:87"},{"assignments":[17116,17118,17120,17122],"declarations":[{"constant":false,"id":17116,"mutability":"mutable","name":"_amountIn","nodeType":"VariableDeclaration","scope":17174,"src":"9531:17:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17115,"name":"uint256","nodeType":"ElementaryTypeName","src":"9531:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17118,"mutability":"mutable","name":"_sqrtPriceX96After","nodeType":"VariableDeclaration","scope":17174,"src":"9550:26:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":17117,"name":"uint160","nodeType":"ElementaryTypeName","src":"9550:7:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":17120,"mutability":"mutable","name":"_initializedTicksCrossed","nodeType":"VariableDeclaration","scope":17174,"src":"9578:31:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":17119,"name":"uint32","nodeType":"ElementaryTypeName","src":"9578:6:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":17122,"mutability":"mutable","name":"_gasEstimate","nodeType":"VariableDeclaration","scope":17174,"src":"9611:20:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17121,"name":"uint256","nodeType":"ElementaryTypeName","src":"9611:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17132,"initialValue":{"arguments":[{"arguments":[{"id":17125,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17108,"src":"9762:7:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17126,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17106,"src":"9806:8:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17127,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17066,"src":"9849:9:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17128,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17110,"src":"9890:3:87","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"hexValue":"30","id":17129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9939:1:87","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":17124,"name":"QuoteExactOutputSingleParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15822,"src":"9697:28:87","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_QuoteExactOutputSingleParams_$15822_storage_ptr_$","typeString":"type(struct IElixirQuoter.QuoteExactOutputSingleParams storage pointer)"}},"id":17130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["tokenIn","tokenOut","amount","fee","sqrtPriceLimitX96"],"nodeType":"FunctionCall","src":"9697:267:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$15822_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactOutputSingleParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$15822_memory_ptr","typeString":"struct IElixirQuoter.QuoteExactOutputSingleParams memory"}],"id":17123,"name":"quoteExactOutputSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17062,"src":"9652:22:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_QuoteExactOutputSingleParams_$15822_memory_ptr_$returns$_t_uint256_$_t_uint160_$_t_uint32_$_t_uint256_$","typeString":"function (struct IElixirQuoter.QuoteExactOutputSingleParams memory) returns (uint256,uint160,uint32,uint256)"}},"id":17131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9652:331:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint160_$_t_uint32_$_t_uint256_$","typeString":"tuple(uint256,uint160,uint32,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"9530:453:87"},{"expression":{"id":17137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17133,"name":"sqrtPriceX96AfterList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17073,"src":"10000:21:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"id":17135,"indexExpression":{"id":17134,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17101,"src":"10022:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10000:24:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17136,"name":"_sqrtPriceX96After","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17118,"src":"10027:18:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"10000:45:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":17138,"nodeType":"ExpressionStatement","src":"10000:45:87"},{"expression":{"id":17143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17139,"name":"initializedTicksCrossedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17076,"src":"10060:27:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":17141,"indexExpression":{"id":17140,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17101,"src":"10088:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10060:30:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17142,"name":"_initializedTicksCrossed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17120,"src":"10093:24:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"10060:57:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":17144,"nodeType":"ExpressionStatement","src":"10060:57:87"},{"expression":{"id":17147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17145,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17066,"src":"10132:9:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17146,"name":"_amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17116,"src":"10144:9:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10132:21:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17148,"nodeType":"ExpressionStatement","src":"10132:21:87"},{"expression":{"id":17151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17149,"name":"gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17078,"src":"10168:11:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":17150,"name":"_gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17122,"src":"10183:12:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10168:27:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17152,"nodeType":"ExpressionStatement","src":"10168:27:87"},{"expression":{"id":17154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10210:3:87","subExpression":{"id":17153,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17101,"src":"10210:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17155,"nodeType":"ExpressionStatement","src":"10210:3:87"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17156,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17064,"src":"10290:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":17157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasMultiplePools","nodeType":"MemberAccess","referencedDeclaration":19556,"src":"10290:21:87","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":17158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10290:23:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17172,"nodeType":"Block","src":"10379:118:87","statements":[{"expression":{"components":[{"id":17166,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17066,"src":"10406:9:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17167,"name":"sqrtPriceX96AfterList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17073,"src":"10417:21:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},{"id":17168,"name":"initializedTicksCrossedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17076,"src":"10440:27:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},{"id":17169,"name":"gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17078,"src":"10469:11:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":17170,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10405:76:87","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":17079,"id":17171,"nodeType":"Return","src":"10398:83:87"}]},"id":17173,"nodeType":"IfStatement","src":"10286:211:87","trueBody":{"id":17165,"nodeType":"Block","src":"10315:58:87","statements":[{"expression":{"id":17163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17159,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17064,"src":"10334:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17160,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17064,"src":"10341:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":17161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"skipToken","nodeType":"MemberAccess","referencedDeclaration":19641,"src":"10341:14:87","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":17162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10341:16:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"10334:23:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":17164,"nodeType":"ExpressionStatement","src":"10334:23:87"}]}}]},"condition":{"hexValue":"74727565","id":17104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9340:4:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":17175,"nodeType":"WhileStatement","src":"9333:1175:87"}]},"functionSelector":"2f80bb1d","id":17177,"implemented":true,"kind":"function","modifiers":[],"name":"quoteExactOutput","nodeType":"FunctionDefinition","overrides":{"id":17068,"nodeType":"OverrideSpecifier","overrides":[],"src":"8942:8:87"},"parameters":{"id":17067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17064,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":17177,"src":"8879:17:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17063,"name":"bytes","nodeType":"ElementaryTypeName","src":"8879:5:87","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":17066,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":17177,"src":"8898:17:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17065,"name":"uint256","nodeType":"ElementaryTypeName","src":"8898:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8878:38:87"},"returnParameters":{"id":17079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17070,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":17177,"src":"8983:16:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17069,"name":"uint256","nodeType":"ElementaryTypeName","src":"8983:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17073,"mutability":"mutable","name":"sqrtPriceX96AfterList","nodeType":"VariableDeclaration","scope":17177,"src":"9014:38:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[]"},"typeName":{"baseType":{"id":17071,"name":"uint160","nodeType":"ElementaryTypeName","src":"9014:7:87","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":17072,"nodeType":"ArrayTypeName","src":"9014:9:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"},{"constant":false,"id":17076,"mutability":"mutable","name":"initializedTicksCrossedList","nodeType":"VariableDeclaration","scope":17177,"src":"9067:43:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":17074,"name":"uint32","nodeType":"ElementaryTypeName","src":"9067:6:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":17075,"nodeType":"ArrayTypeName","src":"9067:8:87","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"},{"constant":false,"id":17078,"mutability":"mutable","name":"gasEstimate","nodeType":"VariableDeclaration","scope":17177,"src":"9125:19:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17077,"name":"uint256","nodeType":"ElementaryTypeName","src":"9125:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8968:187:87"},"scope":17178,"src":"8853:1662:87","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":17179,"src":"957:9561:87"}],"src":"46:10474:87"},"id":87},"contracts/elixir-periphery/lens/TickLens.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/lens/TickLens.sol","exportedSymbols":{"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"ITickLens":[16390],"TickLens":[17314]},"id":17315,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17180,"literals":["solidity",">=","0.5",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"46:31:88"},{"id":17181,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"79:19:88"},{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"../../elixir-core/interfaces/IElixirPool.sol","id":17182,"nodeType":"ImportDirective","scope":17315,"sourceUnit":3274,"src":"102:54:88","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/ITickLens.sol","file":"../interfaces/ITickLens.sol","id":17183,"nodeType":"ImportDirective","scope":17315,"sourceUnit":16391,"src":"160:37:88","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17185,"name":"ITickLens","nodeType":"UserDefinedTypeName","referencedDeclaration":16390,"src":"253:9:88","typeDescriptions":{"typeIdentifier":"t_contract$_ITickLens_$16390","typeString":"contract ITickLens"}},"id":17186,"nodeType":"InheritanceSpecifier","src":"253:9:88"}],"contractDependencies":[16390],"contractKind":"contract","documentation":{"id":17184,"nodeType":"StructuredDocumentation","src":"201:31:88","text":"@title Tick Lens contract"},"fullyImplemented":true,"id":17314,"linearizedBaseContracts":[17314,16390],"name":"TickLens","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[16389],"body":{"id":17312,"nodeType":"Block","src":"481:1065:88","statements":[{"assignments":[17199],"declarations":[{"constant":false,"id":17199,"mutability":"mutable","name":"bitmap","nodeType":"VariableDeclaration","scope":17312,"src":"517:14:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17198,"name":"uint256","nodeType":"ElementaryTypeName","src":"517:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17206,"initialValue":{"arguments":[{"id":17204,"name":"tickBitmapIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17191,"src":"563:15:88","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int16","typeString":"int16"}],"expression":{"arguments":[{"id":17201,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17189,"src":"546:4:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17200,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"534:11:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":17202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"534:17:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":17203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickBitmap","nodeType":"MemberAccess","referencedDeclaration":3746,"src":"534:28:88","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_int16_$returns$_t_uint256_$","typeString":"function (int16) view external returns (uint256)"}},"id":17205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"534:45:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"517:62:88"},{"assignments":[17208],"declarations":[{"constant":false,"id":17208,"mutability":"mutable","name":"numberOfPopulatedTicks","nodeType":"VariableDeclaration","scope":17312,"src":"644:30:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17207,"name":"uint256","nodeType":"ElementaryTypeName","src":"644:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17209,"nodeType":"VariableDeclarationStatement","src":"644:30:88"},{"body":{"id":17232,"nodeType":"Block","src":"719:78:88","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17220,"name":"bitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17199,"src":"738:6:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":17221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"748:1:88","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":17222,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17211,"src":"753:1:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"748:6:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":17224,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"747:8:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"738:17:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":17226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"758:1:88","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"738:21:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17231,"nodeType":"IfStatement","src":"734:51:88","trueBody":{"expression":{"id":17229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"761:24:88","subExpression":{"id":17228,"name":"numberOfPopulatedTicks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17208,"src":"761:22:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17230,"nodeType":"ExpressionStatement","src":"761:24:88"}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17214,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17211,"src":"705:1:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"323536","id":17215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"709:3:88","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"705:7:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17233,"initializationExpression":{"assignments":[17211],"declarations":[{"constant":false,"id":17211,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":17233,"src":"690:9:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17210,"name":"uint256","nodeType":"ElementaryTypeName","src":"690:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17213,"initialValue":{"hexValue":"30","id":17212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"702:1:88","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"690:13:88"},"loopExpression":{"expression":{"id":17218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"714:3:88","subExpression":{"id":17217,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17211,"src":"714:1:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17219,"nodeType":"ExpressionStatement","src":"714:3:88"},"nodeType":"ForStatement","src":"685:112:88"},{"assignments":[17235],"declarations":[{"constant":false,"id":17235,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":17312,"src":"847:17:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":17234,"name":"int24","nodeType":"ElementaryTypeName","src":"847:5:88","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":17241,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":17237,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17189,"src":"879:4:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17236,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"867:11:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":17238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"867:17:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":17239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":3606,"src":"867:29:88","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_int24_$","typeString":"function () view external returns (int24)"}},"id":17240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"867:31:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"847:51:88"},{"expression":{"id":17248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17242,"name":"populatedTicks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17196,"src":"909:14:88","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PopulatedTick_$16378_memory_ptr_$dyn_memory_ptr","typeString":"struct ITickLens.PopulatedTick memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17246,"name":"numberOfPopulatedTicks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17208,"src":"946:22:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17245,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"926:19:88","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_PopulatedTick_$16378_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct ITickLens.PopulatedTick memory[] memory)"},"typeName":{"baseType":{"id":17243,"name":"PopulatedTick","nodeType":"UserDefinedTypeName","referencedDeclaration":16378,"src":"930:13:88","typeDescriptions":{"typeIdentifier":"t_struct$_PopulatedTick_$16378_storage_ptr","typeString":"struct ITickLens.PopulatedTick"}},"id":17244,"nodeType":"ArrayTypeName","src":"930:15:88","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PopulatedTick_$16378_storage_$dyn_storage_ptr","typeString":"struct ITickLens.PopulatedTick[]"}}},"id":17247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"926:43:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PopulatedTick_$16378_memory_ptr_$dyn_memory_ptr","typeString":"struct ITickLens.PopulatedTick memory[] memory"}},"src":"909:60:88","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PopulatedTick_$16378_memory_ptr_$dyn_memory_ptr","typeString":"struct ITickLens.PopulatedTick memory[] memory"}},"id":17249,"nodeType":"ExpressionStatement","src":"909:60:88"},{"body":{"id":17310,"nodeType":"Block","src":"1014:525:88","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17260,"name":"bitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17199,"src":"1033:6:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":17261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1043:1:88","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":17262,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17251,"src":"1048:1:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1043:6:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":17264,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1042:8:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1033:17:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":17266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1053:1:88","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1033:21:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17309,"nodeType":"IfStatement","src":"1029:499:88","trueBody":{"id":17308,"nodeType":"Block","src":"1056:472:88","statements":[{"assignments":[17269],"declarations":[{"constant":false,"id":17269,"mutability":"mutable","name":"populatedTick","nodeType":"VariableDeclaration","scope":17308,"src":"1075:19:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":17268,"name":"int24","nodeType":"ElementaryTypeName","src":"1075:5:88","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":17285,"initialValue":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":17284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":17281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":17275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":17272,"name":"tickBitmapIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17191,"src":"1105:15:88","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int16","typeString":"int16"}],"id":17271,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1099:5:88","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":17270,"name":"int24","nodeType":"ElementaryTypeName","src":"1099:5:88","typeDescriptions":{}}},"id":17273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1099:22:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":17274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1125:1:88","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1099:27:88","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":17276,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1098:29:88","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"id":17279,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17251,"src":"1136:1:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17278,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1130:5:88","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":17277,"name":"int24","nodeType":"ElementaryTypeName","src":"1130:5:88","typeDescriptions":{}}},"id":17280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1130:8:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1098:40:88","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":17282,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1097:42:88","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":17283,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17235,"src":"1142:11:88","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1097:56:88","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"1075:78:88"},{"assignments":[17287,17289,null,null,null,null,null,null,null],"declarations":[{"constant":false,"id":17287,"mutability":"mutable","name":"liquidityGross","nodeType":"VariableDeclaration","scope":17308,"src":"1173:22:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17286,"name":"uint128","nodeType":"ElementaryTypeName","src":"1173:7:88","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":17289,"mutability":"mutable","name":"liquidityNet","nodeType":"VariableDeclaration","scope":17308,"src":"1197:19:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":17288,"name":"int128","nodeType":"ElementaryTypeName","src":"1197:6:88","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},null,null,null,null,null,null,null],"id":17296,"initialValue":{"arguments":[{"id":17294,"name":"populatedTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17269,"src":"1258:13:88","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"arguments":[{"id":17291,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17189,"src":"1246:4:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17290,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1234:11:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":17292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1234:17:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":17293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ticks","nodeType":"MemberAccess","referencedDeclaration":3738,"src":"1234:23:88","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_$_t_uint192_$","typeString":"function (int24) view external returns (uint128,int128,uint256,uint256,int56,uint160,uint32,bool,uint192)"}},"id":17295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1234:38:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_int128_$_t_uint256_$_t_uint256_$_t_int56_$_t_uint160_$_t_uint32_$_t_bool_$_t_uint192_$","typeString":"tuple(uint128,int128,uint256,uint256,int56,uint160,uint32,bool,uint192)"}},"nodeType":"VariableDeclarationStatement","src":"1172:100:88"},{"expression":{"id":17306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17297,"name":"populatedTicks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17196,"src":"1291:14:88","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PopulatedTick_$16378_memory_ptr_$dyn_memory_ptr","typeString":"struct ITickLens.PopulatedTick memory[] memory"}},"id":17300,"indexExpression":{"id":17299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"1306:24:88","subExpression":{"id":17298,"name":"numberOfPopulatedTicks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17208,"src":"1308:22:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1291:40:88","typeDescriptions":{"typeIdentifier":"t_struct$_PopulatedTick_$16378_memory_ptr","typeString":"struct ITickLens.PopulatedTick memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17302,"name":"populatedTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17269,"src":"1377:13:88","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":17303,"name":"liquidityNet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17289,"src":"1427:12:88","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"id":17304,"name":"liquidityGross","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17287,"src":"1478:14:88","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":17301,"name":"PopulatedTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16378,"src":"1334:13:88","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PopulatedTick_$16378_storage_ptr_$","typeString":"type(struct ITickLens.PopulatedTick storage pointer)"}},"id":17305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["tick","liquidityNet","liquidityGross"],"nodeType":"FunctionCall","src":"1334:178:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PopulatedTick_$16378_memory_ptr","typeString":"struct ITickLens.PopulatedTick memory"}},"src":"1291:221:88","typeDescriptions":{"typeIdentifier":"t_struct$_PopulatedTick_$16378_memory_ptr","typeString":"struct ITickLens.PopulatedTick memory"}},"id":17307,"nodeType":"ExpressionStatement","src":"1291:221:88"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17254,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17251,"src":"1000:1:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"323536","id":17255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1004:3:88","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"1000:7:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17311,"initializationExpression":{"assignments":[17251],"declarations":[{"constant":false,"id":17251,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":17311,"src":"985:9:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17250,"name":"uint256","nodeType":"ElementaryTypeName","src":"985:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17253,"initialValue":{"hexValue":"30","id":17252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"997:1:88","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"985:13:88"},"loopExpression":{"expression":{"id":17258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1009:3:88","subExpression":{"id":17257,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17251,"src":"1009:1:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17259,"nodeType":"ExpressionStatement","src":"1009:3:88"},"nodeType":"ForStatement","src":"980:559:88"}]},"documentation":{"id":17187,"nodeType":"StructuredDocumentation","src":"270:25:88","text":"@inheritdoc ITickLens"},"functionSelector":"351fb478","id":17313,"implemented":true,"kind":"function","modifiers":[],"name":"getPopulatedTicksInWord","nodeType":"FunctionDefinition","overrides":{"id":17193,"nodeType":"OverrideSpecifier","overrides":[],"src":"410:8:88"},"parameters":{"id":17192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17189,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":17313,"src":"334:12:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17188,"name":"address","nodeType":"ElementaryTypeName","src":"334:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17191,"mutability":"mutable","name":"tickBitmapIndex","nodeType":"VariableDeclaration","scope":17313,"src":"348:21:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":17190,"name":"int16","nodeType":"ElementaryTypeName","src":"348:5:88","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"333:37:88"},"returnParameters":{"id":17197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17196,"mutability":"mutable","name":"populatedTicks","nodeType":"VariableDeclaration","scope":17313,"src":"437:37:88","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PopulatedTick_$16378_memory_ptr_$dyn_memory_ptr","typeString":"struct ITickLens.PopulatedTick[]"},"typeName":{"baseType":{"id":17194,"name":"PopulatedTick","nodeType":"UserDefinedTypeName","referencedDeclaration":16378,"src":"437:13:88","typeDescriptions":{"typeIdentifier":"t_struct$_PopulatedTick_$16378_storage_ptr","typeString":"struct ITickLens.PopulatedTick"}},"id":17195,"nodeType":"ArrayTypeName","src":"437:15:88","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PopulatedTick_$16378_storage_$dyn_storage_ptr","typeString":"struct ITickLens.PopulatedTick[]"}},"visibility":"internal"}],"src":"436:39:88"},"scope":17314,"src":"301:1245:88","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":17315,"src":"232:1317:88"}],"src":"46:1505:88"},"id":88},"contracts/elixir-periphery/libraries/BytesLib.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/BytesLib.sol","exportedSymbols":{"BytesLib":[17433]},"id":17434,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17316,"literals":["solidity",">=","0.5",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"351:31:89"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":17433,"linearizedBaseContracts":[17433],"name":"BytesLib","nodeType":"ContractDefinition","nodes":[{"body":{"id":17361,"nodeType":"Block","src":"550:2931:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17328,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17322,"src":"569:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3331","id":17329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"579:2:89","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"31"},"src":"569:12:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":17331,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17322,"src":"585:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"569:23:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"736c6963655f6f766572666c6f77","id":17333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"594:16:89","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":17327,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"561:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"561:50:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17335,"nodeType":"ExpressionStatement","src":"561:50:89"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17337,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17320,"src":"630:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":17338,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17322,"src":"639:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"630:16:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":17340,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17320,"src":"650:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"630:26:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"736c6963655f6f766572666c6f77","id":17342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"658:16:89","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":17336,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"622:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"622:53:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17344,"nodeType":"ExpressionStatement","src":"622:53:89"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17346,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17318,"src":"694:6:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":17347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"694:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17348,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17320,"src":"711:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":17349,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17322,"src":"720:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"711:16:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"694:33:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"736c6963655f6f75744f66426f756e6473","id":17352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"729:19:89","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":17345,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"686:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"686:63:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17354,"nodeType":"ExpressionStatement","src":"686:63:89"},{"assignments":[17356],"declarations":[{"constant":false,"id":17356,"mutability":"mutable","name":"tempBytes","nodeType":"VariableDeclaration","scope":17361,"src":"762:22:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17355,"name":"bytes","nodeType":"ElementaryTypeName","src":"762:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":17357,"nodeType":"VariableDeclarationStatement","src":"762:22:89"},{"AST":{"nodeType":"YulBlock","src":"806:2639:89","statements":[{"cases":[{"body":{"nodeType":"YulBlock","src":"868:2130:89","statements":[{"nodeType":"YulAssignment","src":"1039:24:89","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1058:4:89","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1052:5:89"},"nodeType":"YulFunctionCall","src":"1052:11:89"},"variableNames":[{"name":"tempBytes","nodeType":"YulIdentifier","src":"1039:9:89"}]},{"nodeType":"YulVariableDeclaration","src":"1733:33:89","value":{"arguments":[{"name":"_length","nodeType":"YulIdentifier","src":"1754:7:89"},{"kind":"number","nodeType":"YulLiteral","src":"1763:2:89","type":"","value":"31"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1750:3:89"},"nodeType":"YulFunctionCall","src":"1750:16:89"},"variables":[{"name":"lengthmod","nodeType":"YulTypedName","src":"1737:9:89","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2113:70:89","value":{"arguments":[{"arguments":[{"name":"tempBytes","nodeType":"YulIdentifier","src":"2131:9:89"},{"name":"lengthmod","nodeType":"YulIdentifier","src":"2142:9:89"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2127:3:89"},"nodeType":"YulFunctionCall","src":"2127:25:89"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2158:4:89","type":"","value":"0x20"},{"arguments":[{"name":"lengthmod","nodeType":"YulIdentifier","src":"2171:9:89"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2164:6:89"},"nodeType":"YulFunctionCall","src":"2164:17:89"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2154:3:89"},"nodeType":"YulFunctionCall","src":"2154:28:89"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2123:3:89"},"nodeType":"YulFunctionCall","src":"2123:60:89"},"variables":[{"name":"mc","nodeType":"YulTypedName","src":"2117:2:89","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2205:27:89","value":{"arguments":[{"name":"mc","nodeType":"YulIdentifier","src":"2220:2:89"},{"name":"_length","nodeType":"YulIdentifier","src":"2224:7:89"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2216:3:89"},"nodeType":"YulFunctionCall","src":"2216:16:89"},"variables":[{"name":"end","nodeType":"YulTypedName","src":"2209:3:89","type":""}]},{"body":{"nodeType":"YulBlock","src":"2655:71:89","statements":[{"expression":{"arguments":[{"name":"mc","nodeType":"YulIdentifier","src":"2689:2:89"},{"arguments":[{"name":"cc","nodeType":"YulIdentifier","src":"2699:2:89"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2693:5:89"},"nodeType":"YulFunctionCall","src":"2693:9:89"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2682:6:89"},"nodeType":"YulFunctionCall","src":"2682:21:89"},"nodeType":"YulExpressionStatement","src":"2682:21:89"}]},"condition":{"arguments":[{"name":"mc","nodeType":"YulIdentifier","src":"2531:2:89"},{"name":"end","nodeType":"YulIdentifier","src":"2535:3:89"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2528:2:89"},"nodeType":"YulFunctionCall","src":"2528:11:89"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2540:114:89","statements":[{"nodeType":"YulAssignment","src":"2567:19:89","value":{"arguments":[{"name":"mc","nodeType":"YulIdentifier","src":"2577:2:89"},{"kind":"number","nodeType":"YulLiteral","src":"2581:4:89","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2573:3:89"},"nodeType":"YulFunctionCall","src":"2573:13:89"},"variableNames":[{"name":"mc","nodeType":"YulIdentifier","src":"2567:2:89"}]},{"nodeType":"YulAssignment","src":"2612:19:89","value":{"arguments":[{"name":"cc","nodeType":"YulIdentifier","src":"2622:2:89"},{"kind":"number","nodeType":"YulLiteral","src":"2626:4:89","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2618:3:89"},"nodeType":"YulFunctionCall","src":"2618:13:89"},"variableNames":[{"name":"cc","nodeType":"YulIdentifier","src":"2612:2:89"}]}]},"pre":{"nodeType":"YulBlock","src":"2260:267:89","statements":[{"nodeType":"YulVariableDeclaration","src":"2424:80:89","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nodeType":"YulIdentifier","src":"2446:6:89"},{"name":"lengthmod","nodeType":"YulIdentifier","src":"2454:9:89"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2442:3:89"},"nodeType":"YulFunctionCall","src":"2442:22:89"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2470:4:89","type":"","value":"0x20"},{"arguments":[{"name":"lengthmod","nodeType":"YulIdentifier","src":"2483:9:89"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2476:6:89"},"nodeType":"YulFunctionCall","src":"2476:17:89"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2466:3:89"},"nodeType":"YulFunctionCall","src":"2466:28:89"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2438:3:89"},"nodeType":"YulFunctionCall","src":"2438:57:89"},{"name":"_start","nodeType":"YulIdentifier","src":"2497:6:89"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2434:3:89"},"nodeType":"YulFunctionCall","src":"2434:70:89"},"variables":[{"name":"cc","nodeType":"YulTypedName","src":"2428:2:89","type":""}]}]},"src":"2256:470:89"},{"expression":{"arguments":[{"name":"tempBytes","nodeType":"YulIdentifier","src":"2757:9:89"},{"name":"_length","nodeType":"YulIdentifier","src":"2768:7:89"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2750:6:89"},"nodeType":"YulFunctionCall","src":"2750:26:89"},"nodeType":"YulExpressionStatement","src":"2750:26:89"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2947:4:89","type":"","value":"0x40"},{"arguments":[{"arguments":[{"name":"mc","nodeType":"YulIdentifier","src":"2961:2:89"},{"kind":"number","nodeType":"YulLiteral","src":"2965:2:89","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2957:3:89"},"nodeType":"YulFunctionCall","src":"2957:11:89"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2974:2:89","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2970:3:89"},"nodeType":"YulFunctionCall","src":"2970:7:89"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2953:3:89"},"nodeType":"YulFunctionCall","src":"2953:25:89"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2940:6:89"},"nodeType":"YulFunctionCall","src":"2940:39:89"},"nodeType":"YulExpressionStatement","src":"2940:39:89"}]},"nodeType":"YulCase","src":"861:2137:89","value":{"kind":"number","nodeType":"YulLiteral","src":"866:1:89","type":"","value":"0"}},{"body":{"nodeType":"YulBlock","src":"3112:322:89","statements":[{"nodeType":"YulAssignment","src":"3135:24:89","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3154:4:89","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3148:5:89"},"nodeType":"YulFunctionCall","src":"3148:11:89"},"variableNames":[{"name":"tempBytes","nodeType":"YulIdentifier","src":"3135:9:89"}]},{"expression":{"arguments":[{"name":"tempBytes","nodeType":"YulIdentifier","src":"3344:9:89"},{"kind":"number","nodeType":"YulLiteral","src":"3355:1:89","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3337:6:89"},"nodeType":"YulFunctionCall","src":"3337:20:89"},"nodeType":"YulExpressionStatement","src":"3337:20:89"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3388:4:89","type":"","value":"0x40"},{"arguments":[{"name":"tempBytes","nodeType":"YulIdentifier","src":"3398:9:89"},{"kind":"number","nodeType":"YulLiteral","src":"3409:4:89","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3394:3:89"},"nodeType":"YulFunctionCall","src":"3394:20:89"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3381:6:89"},"nodeType":"YulFunctionCall","src":"3381:34:89"},"nodeType":"YulExpressionStatement","src":"3381:34:89"}]},"nodeType":"YulCase","src":"3104:330:89","value":"default"}],"expression":{"arguments":[{"name":"_length","nodeType":"YulIdentifier","src":"835:7:89"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"828:6:89"},"nodeType":"YulFunctionCall","src":"828:15:89"},"nodeType":"YulSwitch","src":"821:2613:89"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":17318,"isOffset":false,"isSlot":false,"src":"2446:6:89","valueSize":1},{"declaration":17322,"isOffset":false,"isSlot":false,"src":"1754:7:89","valueSize":1},{"declaration":17322,"isOffset":false,"isSlot":false,"src":"2224:7:89","valueSize":1},{"declaration":17322,"isOffset":false,"isSlot":false,"src":"2768:7:89","valueSize":1},{"declaration":17322,"isOffset":false,"isSlot":false,"src":"835:7:89","valueSize":1},{"declaration":17320,"isOffset":false,"isSlot":false,"src":"2497:6:89","valueSize":1},{"declaration":17356,"isOffset":false,"isSlot":false,"src":"1039:9:89","valueSize":1},{"declaration":17356,"isOffset":false,"isSlot":false,"src":"2131:9:89","valueSize":1},{"declaration":17356,"isOffset":false,"isSlot":false,"src":"2757:9:89","valueSize":1},{"declaration":17356,"isOffset":false,"isSlot":false,"src":"3135:9:89","valueSize":1},{"declaration":17356,"isOffset":false,"isSlot":false,"src":"3344:9:89","valueSize":1},{"declaration":17356,"isOffset":false,"isSlot":false,"src":"3398:9:89","valueSize":1}],"id":17358,"nodeType":"InlineAssembly","src":"797:2648:89"},{"expression":{"id":17359,"name":"tempBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17356,"src":"3464:9:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17326,"id":17360,"nodeType":"Return","src":"3457:16:89"}]},"id":17362,"implemented":true,"kind":"function","modifiers":[],"name":"slice","nodeType":"FunctionDefinition","parameters":{"id":17323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17318,"mutability":"mutable","name":"_bytes","nodeType":"VariableDeclaration","scope":17362,"src":"435:19:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17317,"name":"bytes","nodeType":"ElementaryTypeName","src":"435:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":17320,"mutability":"mutable","name":"_start","nodeType":"VariableDeclaration","scope":17362,"src":"465:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17319,"name":"uint256","nodeType":"ElementaryTypeName","src":"465:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17322,"mutability":"mutable","name":"_length","nodeType":"VariableDeclaration","scope":17362,"src":"490:15:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17321,"name":"uint256","nodeType":"ElementaryTypeName","src":"490:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"424:88:89"},"returnParameters":{"id":17326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17325,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17362,"src":"536:12:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17324,"name":"bytes","nodeType":"ElementaryTypeName","src":"536:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"535:14:89"},"scope":17433,"src":"410:3071:89","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":17396,"nodeType":"Block","src":"3577:338:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17372,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17366,"src":"3596:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3230","id":17373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3605:2:89","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"3596:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":17375,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17366,"src":"3611:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3596:21:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f416464726573735f6f766572666c6f77","id":17377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3619:20:89","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":17371,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3588:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3588:52:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17379,"nodeType":"ExpressionStatement","src":"3588:52:89"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17381,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17364,"src":"3659:6:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":17382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3659:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17383,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17366,"src":"3676:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3230","id":17384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3685:2:89","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"3676:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3659:28:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f416464726573735f6f75744f66426f756e6473","id":17387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3689:23:89","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":17380,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3651:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3651:62:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17389,"nodeType":"ExpressionStatement","src":"3651:62:89"},{"assignments":[17391],"declarations":[{"constant":false,"id":17391,"mutability":"mutable","name":"tempAddress","nodeType":"VariableDeclaration","scope":17396,"src":"3724:19:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17390,"name":"address","nodeType":"ElementaryTypeName","src":"3724:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17392,"nodeType":"VariableDeclarationStatement","src":"3724:19:89"},{"AST":{"nodeType":"YulBlock","src":"3765:112:89","statements":[{"nodeType":"YulAssignment","src":"3780:86:89","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nodeType":"YulIdentifier","src":"3813:6:89"},{"kind":"number","nodeType":"YulLiteral","src":"3821:4:89","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3809:3:89"},"nodeType":"YulFunctionCall","src":"3809:17:89"},{"name":"_start","nodeType":"YulIdentifier","src":"3828:6:89"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3805:3:89"},"nodeType":"YulFunctionCall","src":"3805:30:89"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3799:5:89"},"nodeType":"YulFunctionCall","src":"3799:37:89"},{"kind":"number","nodeType":"YulLiteral","src":"3838:27:89","type":"","value":"0x1000000000000000000000000"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3795:3:89"},"nodeType":"YulFunctionCall","src":"3795:71:89"},"variableNames":[{"name":"tempAddress","nodeType":"YulIdentifier","src":"3780:11:89"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":17364,"isOffset":false,"isSlot":false,"src":"3813:6:89","valueSize":1},{"declaration":17366,"isOffset":false,"isSlot":false,"src":"3828:6:89","valueSize":1},{"declaration":17391,"isOffset":false,"isSlot":false,"src":"3780:11:89","valueSize":1}],"id":17393,"nodeType":"InlineAssembly","src":"3756:121:89"},{"expression":{"id":17394,"name":"tempAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17391,"src":"3896:11:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17370,"id":17395,"nodeType":"Return","src":"3889:18:89"}]},"id":17397,"implemented":true,"kind":"function","modifiers":[],"name":"toAddress","nodeType":"FunctionDefinition","parameters":{"id":17367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17364,"mutability":"mutable","name":"_bytes","nodeType":"VariableDeclaration","scope":17397,"src":"3508:19:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17363,"name":"bytes","nodeType":"ElementaryTypeName","src":"3508:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":17366,"mutability":"mutable","name":"_start","nodeType":"VariableDeclaration","scope":17397,"src":"3529:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17365,"name":"uint256","nodeType":"ElementaryTypeName","src":"3529:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3507:37:89"},"returnParameters":{"id":17370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17369,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17397,"src":"3568:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17368,"name":"address","nodeType":"ElementaryTypeName","src":"3568:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3567:9:89"},"scope":17433,"src":"3489:426:89","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":17431,"nodeType":"Block","src":"4009:289:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17407,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17401,"src":"4028:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"33","id":17408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4037:1:89","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"4028:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":17410,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17401,"src":"4042:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4028:20:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e7432345f6f766572666c6f77","id":17412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4050:19:89","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":17406,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4020:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4020:50:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17414,"nodeType":"ExpressionStatement","src":"4020:50:89"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17416,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17399,"src":"4089:6:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":17417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4089:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17418,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17401,"src":"4106:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"33","id":17419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4115:1:89","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"4106:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4089:27:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e7432345f6f75744f66426f756e6473","id":17422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4118:22:89","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":17415,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4081:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4081:60:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17424,"nodeType":"ExpressionStatement","src":"4081:60:89"},{"assignments":[17426],"declarations":[{"constant":false,"id":17426,"mutability":"mutable","name":"tempUint","nodeType":"VariableDeclaration","scope":17431,"src":"4152:15:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":17425,"name":"uint24","nodeType":"ElementaryTypeName","src":"4152:6:89","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":17427,"nodeType":"VariableDeclarationStatement","src":"4152:15:89"},{"AST":{"nodeType":"YulBlock","src":"4189:74:89","statements":[{"nodeType":"YulAssignment","src":"4204:48:89","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nodeType":"YulIdentifier","src":"4230:6:89"},{"kind":"number","nodeType":"YulLiteral","src":"4238:3:89","type":"","value":"0x3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4226:3:89"},"nodeType":"YulFunctionCall","src":"4226:16:89"},{"name":"_start","nodeType":"YulIdentifier","src":"4244:6:89"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4222:3:89"},"nodeType":"YulFunctionCall","src":"4222:29:89"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4216:5:89"},"nodeType":"YulFunctionCall","src":"4216:36:89"},"variableNames":[{"name":"tempUint","nodeType":"YulIdentifier","src":"4204:8:89"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":17399,"isOffset":false,"isSlot":false,"src":"4230:6:89","valueSize":1},{"declaration":17401,"isOffset":false,"isSlot":false,"src":"4244:6:89","valueSize":1},{"declaration":17426,"isOffset":false,"isSlot":false,"src":"4204:8:89","valueSize":1}],"id":17428,"nodeType":"InlineAssembly","src":"4180:83:89"},{"expression":{"id":17429,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17426,"src":"4282:8:89","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":17405,"id":17430,"nodeType":"Return","src":"4275:15:89"}]},"id":17432,"implemented":true,"kind":"function","modifiers":[],"name":"toUint24","nodeType":"FunctionDefinition","parameters":{"id":17402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17399,"mutability":"mutable","name":"_bytes","nodeType":"VariableDeclaration","scope":17432,"src":"3941:19:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17398,"name":"bytes","nodeType":"ElementaryTypeName","src":"3941:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":17401,"mutability":"mutable","name":"_start","nodeType":"VariableDeclaration","scope":17432,"src":"3962:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17400,"name":"uint256","nodeType":"ElementaryTypeName","src":"3962:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3940:37:89"},"returnParameters":{"id":17405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17404,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17432,"src":"4001:6:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":17403,"name":"uint24","nodeType":"ElementaryTypeName","src":"4001:6:89","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"4000:8:89"},"scope":17433,"src":"3923:375:89","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":17434,"src":"386:3915:89"}],"src":"351:3952:89"},"id":89},"contracts/elixir-periphery/libraries/CallbackValidation.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/CallbackValidation.sol","exportedSymbols":{"CallbackValidation":[17495],"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"PoolAddress":[19734]},"id":17496,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17435,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:90"},{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"../../elixir-core/interfaces/IElixirPool.sol","id":17436,"nodeType":"ImportDirective","scope":17496,"sourceUnit":3274,"src":"73:54:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/PoolAddress.sol","file":"./PoolAddress.sol","id":17437,"nodeType":"ImportDirective","scope":17496,"sourceUnit":19735,"src":"129:27:90","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":17438,"nodeType":"StructuredDocumentation","src":"160:65:90","text":"@notice Provides validation for callbacks from Elixir Pools"},"fullyImplemented":true,"id":17495,"linearizedBaseContracts":[17495],"name":"CallbackValidation","nodeType":"ContractDefinition","nodes":[{"body":{"id":17462,"nodeType":"Block","src":"846:94:90","statements":[{"expression":{"arguments":[{"id":17453,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17441,"src":"879:7:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":17456,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17443,"src":"911:6:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17457,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17445,"src":"919:6:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17458,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17447,"src":"927:3:90","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":17454,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19734,"src":"888:11:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$19734_$","typeString":"type(library PoolAddress)"}},"id":17455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPoolKey","nodeType":"MemberAccess","referencedDeclaration":19686,"src":"888:22:90","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_uint24_$returns$_t_struct$_PoolKey_$19655_memory_ptr_$","typeString":"function (address,address,uint24) pure returns (struct PoolAddress.PoolKey memory)"}},"id":17459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"888:43:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"id":17452,"name":"verifyCallback","nodeType":"Identifier","overloadedDeclarations":[17463,17494],"referencedDeclaration":17494,"src":"864:14:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_struct$_PoolKey_$19655_memory_ptr_$returns$_t_contract$_IElixirPool_$3273_$","typeString":"function (address,struct PoolAddress.PoolKey memory) view returns (contract IElixirPool)"}},"id":17460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"864:68:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"functionReturnParameters":17451,"id":17461,"nodeType":"Return","src":"857:75:90"}]},"documentation":{"id":17439,"nodeType":"StructuredDocumentation","src":"259:412:90","text":"@notice Returns the address of a valid Elixir Pool\n @param factory The contract address of the Elixir 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 Elixir pool contract address"},"id":17463,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallback","nodeType":"FunctionDefinition","parameters":{"id":17448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17441,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":17463,"src":"711:15:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17440,"name":"address","nodeType":"ElementaryTypeName","src":"711:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17443,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":17463,"src":"737:14:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17442,"name":"address","nodeType":"ElementaryTypeName","src":"737:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17445,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":17463,"src":"762:14:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17444,"name":"address","nodeType":"ElementaryTypeName","src":"762:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17447,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":17463,"src":"787:10:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":17446,"name":"uint24","nodeType":"ElementaryTypeName","src":"787:6:90","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"700:104:90"},"returnParameters":{"id":17451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17450,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":17463,"src":"828:16:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"},"typeName":{"id":17449,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":3273,"src":"828:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"visibility":"internal"}],"src":"827:18:90"},"scope":17495,"src":"677:263:90","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":17493,"nodeType":"Block","src":"1343:130:90","statements":[{"expression":{"id":17481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17473,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17471,"src":"1354:4:90","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":17477,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17466,"src":"1400:7:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17478,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17468,"src":"1409:7:90","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":17475,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19734,"src":"1373:11:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$19734_$","typeString":"type(library PoolAddress)"}},"id":17476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":19733,"src":"1373:26:90","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$19655_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":17479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1373:44:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17474,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1361:11:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":17480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1361:57:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"src":"1354:64:90","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":17482,"nodeType":"ExpressionStatement","src":"1354:64:90"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17484,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1437:3:90","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1437:10:90","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":17488,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17471,"src":"1459:4:90","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}],"id":17487,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1451:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17486,"name":"address","nodeType":"ElementaryTypeName","src":"1451:7:90","typeDescriptions":{}}},"id":17489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1451:13:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1437:27:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":17483,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1429:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":17491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1429:36:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17492,"nodeType":"ExpressionStatement","src":"1429:36:90"}]},"documentation":{"id":17464,"nodeType":"StructuredDocumentation","src":"948:239:90","text":"@notice Returns the address of a valid Elixir Pool\n @param factory The contract address of the Elixir factory\n @param poolKey The identifying key of the Elixir pool\n @return pool The Elixir pool contract address"},"id":17494,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallback","nodeType":"FunctionDefinition","parameters":{"id":17469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17466,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":17494,"src":"1217:15:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17465,"name":"address","nodeType":"ElementaryTypeName","src":"1217:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17468,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":17494,"src":"1234:34:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":17467,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":19655,"src":"1234:19:90","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"src":"1216:53:90"},"returnParameters":{"id":17472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17471,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":17494,"src":"1320:16:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"},"typeName":{"id":17470,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":3273,"src":"1320:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"visibility":"internal"}],"src":"1319:18:90"},"scope":17495,"src":"1193:280:90","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":17496,"src":"225:1251:90"}],"src":"46:1432:90"},"id":90},"contracts/elixir-periphery/libraries/ChainId.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/ChainId.sol","exportedSymbols":{"ChainId":[17507]},"id":17508,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17497,"literals":["solidity",">=","0.7",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"46:31:91"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":17498,"nodeType":"StructuredDocumentation","src":"81:54:91","text":"@title Function for getting the current chain ID"},"fullyImplemented":true,"id":17507,"linearizedBaseContracts":[17507],"name":"ChainId","nodeType":"ContractDefinition","nodes":[{"body":{"id":17505,"nodeType":"Block","src":"299:73:91","statements":[{"AST":{"nodeType":"YulBlock","src":"319:46:91","statements":[{"nodeType":"YulAssignment","src":"334:20:91","value":{"arguments":[],"functionName":{"name":"chainid","nodeType":"YulIdentifier","src":"345:7:91"},"nodeType":"YulFunctionCall","src":"345:9:91"},"variableNames":[{"name":"chainId","nodeType":"YulIdentifier","src":"334:7:91"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":17502,"isOffset":false,"isSlot":false,"src":"334:7:91","valueSize":1}],"id":17504,"nodeType":"InlineAssembly","src":"310:55:91"}]},"documentation":{"id":17499,"nodeType":"StructuredDocumentation","src":"158:80:91","text":"@dev Gets the current chain ID\n @return chainId The current chain ID"},"id":17506,"implemented":true,"kind":"function","modifiers":[],"name":"get","nodeType":"FunctionDefinition","parameters":{"id":17500,"nodeType":"ParameterList","parameters":[],"src":"256:2:91"},"returnParameters":{"id":17503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17502,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":17506,"src":"282:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17501,"name":"uint256","nodeType":"ElementaryTypeName","src":"282:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"281:17:91"},"scope":17507,"src":"244:128:91","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":17508,"src":"135:240:91"}],"src":"46:331:91"},"id":91},"contracts/elixir-periphery/libraries/HexStrings.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/HexStrings.sol","exportedSymbols":{"HexStrings":[17642]},"id":17643,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":17509,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"33:23:92"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":17642,"linearizedBaseContracts":[17642],"name":"HexStrings","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":17512,"mutability":"constant","name":"ALPHABET","nodeType":"VariableDeclaration","scope":17642,"src":"86:55:92","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":17510,"name":"bytes16","nodeType":"ElementaryTypeName","src":"86:7:92","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":17511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"123:18:92","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"internal"},{"body":{"id":17587,"nodeType":"Block","src":"535:357:92","statements":[{"assignments":[17523],"declarations":[{"constant":false,"id":17523,"mutability":"mutable","name":"buffer","nodeType":"VariableDeclaration","scope":17587,"src":"546:19:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17522,"name":"bytes","nodeType":"ElementaryTypeName","src":"546:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":17532,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":17526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"578:1:92","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":17527,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17517,"src":"582:6:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"578:10:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":17529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"591:1:92","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"578:14:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17525,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"568:9:92","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":17524,"name":"bytes","nodeType":"ElementaryTypeName","src":"572:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":17531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"568:25:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"546:47:92"},{"expression":{"id":17537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17533,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17523,"src":"604:6:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":17535,"indexExpression":{"hexValue":"30","id":17534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"611:1:92","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"604:9:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":17536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"616:3:92","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"604:15:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":17538,"nodeType":"ExpressionStatement","src":"604:15:92"},{"expression":{"id":17543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17539,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17523,"src":"630:6:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":17541,"indexExpression":{"hexValue":"31","id":17540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"637:1:92","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"630:9:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":17542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"642:3:92","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"630:15:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":17544,"nodeType":"ExpressionStatement","src":"630:15:92"},{"body":{"id":17573,"nodeType":"Block","src":"701:86:92","statements":[{"expression":{"id":17567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17559,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17523,"src":"716:6:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":17561,"indexExpression":{"id":17560,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17546,"src":"723:1:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"716:9:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":17562,"name":"ALPHABET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17512,"src":"728:8:92","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":17566,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17563,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17515,"src":"737:5:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":17564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"745:3:92","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"737:11:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"728:21:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"716:33:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":17568,"nodeType":"ExpressionStatement","src":"716:33:92"},{"expression":{"id":17571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17569,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17515,"src":"764:5:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":17570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"774:1:92","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"764:11:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17572,"nodeType":"ExpressionStatement","src":"764:11:92"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17553,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17546,"src":"689:1:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":17554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"693:1:92","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"689:5:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17574,"initializationExpression":{"assignments":[17546],"declarations":[{"constant":false,"id":17546,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":17574,"src":"661:9:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17545,"name":"uint256","nodeType":"ElementaryTypeName","src":"661:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":17547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"673:1:92","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":17548,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17517,"src":"677:6:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"673:10:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":17550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"686:1:92","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"673:14:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"661:26:92"},"loopExpression":{"expression":{"id":17557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"696:3:92","subExpression":{"id":17556,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17546,"src":"698:1:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17558,"nodeType":"ExpressionStatement","src":"696:3:92"},"nodeType":"ForStatement","src":"656:131:92"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17576,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17515,"src":"805:5:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":17577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"814:1:92","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"805:10:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","id":17579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"817:34:92","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":17575,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"797:7:92","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"797:55:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17581,"nodeType":"ExpressionStatement","src":"797:55:92"},{"expression":{"arguments":[{"id":17584,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17523,"src":"877:6:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":17583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"870:6:92","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":17582,"name":"string","nodeType":"ElementaryTypeName","src":"870:6:92","typeDescriptions":{}}},"id":17585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"870:14:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":17521,"id":17586,"nodeType":"Return","src":"863:21:92"}]},"documentation":{"id":17513,"nodeType":"StructuredDocumentation","src":"150:289:92","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":17588,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nodeType":"FunctionDefinition","parameters":{"id":17518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17515,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":17588,"src":"466:13:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17514,"name":"uint256","nodeType":"ElementaryTypeName","src":"466:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17517,"mutability":"mutable","name":"length","nodeType":"VariableDeclaration","scope":17588,"src":"481:14:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17516,"name":"uint256","nodeType":"ElementaryTypeName","src":"481:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"465:31:92"},"returnParameters":{"id":17521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17520,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17588,"src":"520:13:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17519,"name":"string","nodeType":"ElementaryTypeName","src":"520:6:92","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"519:15:92"},"scope":17642,"src":"445:447:92","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":17640,"nodeType":"Block","src":"998:238:92","statements":[{"assignments":[17598],"declarations":[{"constant":false,"id":17598,"mutability":"mutable","name":"buffer","nodeType":"VariableDeclaration","scope":17640,"src":"1009:19:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17597,"name":"bytes","nodeType":"ElementaryTypeName","src":"1009:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":17605,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":17601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1041:1:92","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":17602,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17592,"src":"1045:6:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1041:10:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1031:9:92","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":17599,"name":"bytes","nodeType":"ElementaryTypeName","src":"1035:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":17604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1031:21:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1009:43:92"},{"body":{"id":17633,"nodeType":"Block","src":"1107:90:92","statements":[{"expression":{"id":17627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17617,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17598,"src":"1122:6:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":17621,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17618,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17607,"src":"1129:1:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":17619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1133:1:92","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1129:5:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1122:13:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":17622,"name":"ALPHABET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17512,"src":"1138:8:92","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":17626,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17623,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17590,"src":"1147:5:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":17624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1155:3:92","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"1147:11:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1138:21:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"1122:37:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":17628,"nodeType":"ExpressionStatement","src":"1122:37:92"},{"expression":{"id":17631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17629,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17590,"src":"1174:5:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":17630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1184:1:92","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1174:11:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17632,"nodeType":"ExpressionStatement","src":"1174:11:92"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17611,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17607,"src":"1095:1:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":17612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1099:1:92","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1095:5:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17634,"initializationExpression":{"assignments":[17607],"declarations":[{"constant":false,"id":17607,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":17634,"src":"1068:9:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17606,"name":"uint256","nodeType":"ElementaryTypeName","src":"1068:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17610,"initialValue":{"expression":{"id":17608,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17598,"src":"1080:6:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":17609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1080:13:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1068:25:92"},"loopExpression":{"expression":{"id":17615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"1102:3:92","subExpression":{"id":17614,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17607,"src":"1102:1:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17616,"nodeType":"ExpressionStatement","src":"1102:3:92"},"nodeType":"ForStatement","src":"1063:134:92"},{"expression":{"arguments":[{"id":17637,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17598,"src":"1221:6:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":17636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1214:6:92","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":17635,"name":"string","nodeType":"ElementaryTypeName","src":"1214:6:92","typeDescriptions":{}}},"id":17638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1214:14:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":17596,"id":17639,"nodeType":"Return","src":"1207:21:92"}]},"id":17641,"implemented":true,"kind":"function","modifiers":[],"name":"toHexStringNoPrefix","nodeType":"FunctionDefinition","parameters":{"id":17593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17590,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":17641,"src":"929:13:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17589,"name":"uint256","nodeType":"ElementaryTypeName","src":"929:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17592,"mutability":"mutable","name":"length","nodeType":"VariableDeclaration","scope":17641,"src":"944:14:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17591,"name":"uint256","nodeType":"ElementaryTypeName","src":"944:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"928:31:92"},"returnParameters":{"id":17596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17595,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17641,"src":"983:13:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17594,"name":"string","nodeType":"ElementaryTypeName","src":"983:6:92","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"982:15:92"},"scope":17642,"src":"900:336:92","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":17643,"src":"60:1179:92"}],"src":"33:1208:92"},"id":92},"contracts/elixir-periphery/libraries/LiquidityAmounts.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/LiquidityAmounts.sol","exportedSymbols":{"FixedPoint96":[4075],"FullMath":[4248],"LiquidityAmounts":[17982]},"id":17983,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17644,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:93"},{"absolutePath":"contracts/elixir-core/libraries/FullMath.sol","file":"../../elixir-core/libraries/FullMath.sol","id":17645,"nodeType":"ImportDirective","scope":17983,"sourceUnit":4249,"src":"74:50:93","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/FixedPoint96.sol","file":"../../elixir-core/libraries/FixedPoint96.sol","id":17646,"nodeType":"ImportDirective","scope":17983,"sourceUnit":4076,"src":"126:54:93","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":17647,"nodeType":"StructuredDocumentation","src":"184:133:93","text":"@title Liquidity amount functions\n @notice Provides functions for computing liquidity amounts from token amounts and prices"},"fullyImplemented":true,"id":17982,"linearizedBaseContracts":[17982],"name":"LiquidityAmounts","nodeType":"ContractDefinition","nodes":[{"body":{"id":17667,"nodeType":"Block","src":"564:49:93","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":17661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17656,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17653,"src":"584:1:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17659,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17650,"src":"596:1:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17658,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"588:7:93","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":17657,"name":"uint128","nodeType":"ElementaryTypeName","src":"588:7:93","typeDescriptions":{}}},"id":17660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"588:10:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"584:14:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":17662,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"583:16:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":17663,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17650,"src":"603:1:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"583:21:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":17655,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"575:7:93","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":17665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"575:30:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17666,"nodeType":"ExpressionStatement","src":"575:30:93"}]},"documentation":{"id":17648,"nodeType":"StructuredDocumentation","src":"349:146:93","text":"@notice Downcasts uint256 to uint128\n @param x The uint258 to be downcasted\n @return y The passed value, downcasted to uint128"},"id":17668,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nodeType":"FunctionDefinition","parameters":{"id":17651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17650,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":17668,"src":"520:9:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17649,"name":"uint256","nodeType":"ElementaryTypeName","src":"520:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"519:11:93"},"returnParameters":{"id":17654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17653,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":17668,"src":"553:9:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17652,"name":"uint128","nodeType":"ElementaryTypeName","src":"553:7:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"552:11:93"},"scope":17982,"src":"501:112:93","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":17713,"nodeType":"Block","src":"1260:312:93","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":17682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17680,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17671,"src":"1275:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":17681,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17673,"src":"1291:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1275:29:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17691,"nodeType":"IfStatement","src":"1271:98:93","trueBody":{"expression":{"id":17689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":17683,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17671,"src":"1307:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17684,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17673,"src":"1322:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":17685,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1306:30:93","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":17686,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17673,"src":"1340:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17687,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17671,"src":"1355:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":17688,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1339:30:93","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"1306:63:93","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17690,"nodeType":"ExpressionStatement","src":"1306:63:93"}},{"assignments":[17693],"declarations":[{"constant":false,"id":17693,"mutability":"mutable","name":"intermediate","nodeType":"VariableDeclaration","scope":17713,"src":"1380:20:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17692,"name":"uint256","nodeType":"ElementaryTypeName","src":"1380:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17701,"initialValue":{"arguments":[{"id":17696,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17671,"src":"1419:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17697,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17673,"src":"1434:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":17698,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4075,"src":"1449:12:93","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$4075_$","typeString":"type(library FixedPoint96)"}},"id":17699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":4074,"src":"1449:16:93","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":17694,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"1403:8:93","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":17695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"1403: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":17700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1403:63:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1380:86:93"},{"expression":{"arguments":[{"arguments":[{"id":17705,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17675,"src":"1510:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17706,"name":"intermediate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17693,"src":"1519:12:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":17709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17707,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17673,"src":"1533:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":17708,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17671,"src":"1549:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1533:29: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":17703,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"1494:8:93","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":17704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"1494: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":17710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1494:69:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17702,"name":"toUint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17668,"src":"1484:9:93","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint256) pure returns (uint128)"}},"id":17711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1484:80:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":17679,"id":17712,"nodeType":"Return","src":"1477:87:93"}]},"documentation":{"id":17669,"nodeType":"StructuredDocumentation","src":"621:462:93","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":17714,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityForAmount0","nodeType":"FunctionDefinition","parameters":{"id":17676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17671,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":17714,"src":"1131:21:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":17670,"name":"uint160","nodeType":"ElementaryTypeName","src":"1131:7:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":17673,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":17714,"src":"1163:21:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":17672,"name":"uint160","nodeType":"ElementaryTypeName","src":"1163:7:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":17675,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":17714,"src":"1195:15:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17674,"name":"uint256","nodeType":"ElementaryTypeName","src":"1195:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1120:97:93"},"returnParameters":{"id":17679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17678,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":17714,"src":"1241:17:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17677,"name":"uint128","nodeType":"ElementaryTypeName","src":"1241:7:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1240:19:93"},"scope":17982,"src":"1089:483:93","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":17750,"nodeType":"Block","src":"2190:219:93","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":17728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17726,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17717,"src":"2205:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":17727,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17719,"src":"2221:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2205:29:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17737,"nodeType":"IfStatement","src":"2201:98:93","trueBody":{"expression":{"id":17735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":17729,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17717,"src":"2237:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17730,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17719,"src":"2252:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":17731,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2236:30:93","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":17732,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17719,"src":"2270:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17733,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17717,"src":"2285:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":17734,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2269:30:93","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"2236:63:93","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17736,"nodeType":"ExpressionStatement","src":"2236:63:93"}},{"expression":{"arguments":[{"arguments":[{"id":17741,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17721,"src":"2343:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":17742,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4075,"src":"2352:12:93","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$4075_$","typeString":"type(library FixedPoint96)"}},"id":17743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":4074,"src":"2352:16:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":17746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17744,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17719,"src":"2370:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":17745,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17717,"src":"2386:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2370:29: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":17739,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"2327:8:93","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":17740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"2327: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":17747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2327:73:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17738,"name":"toUint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17668,"src":"2317:9:93","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint256) pure returns (uint128)"}},"id":17748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2317:84:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":17725,"id":17749,"nodeType":"Return","src":"2310:91:93"}]},"documentation":{"id":17715,"nodeType":"StructuredDocumentation","src":"1580:433:93","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":17751,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityForAmount1","nodeType":"FunctionDefinition","parameters":{"id":17722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17717,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":17751,"src":"2061:21:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":17716,"name":"uint160","nodeType":"ElementaryTypeName","src":"2061:7:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":17719,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":17751,"src":"2093:21:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":17718,"name":"uint160","nodeType":"ElementaryTypeName","src":"2093:7:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":17721,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":17751,"src":"2125:15:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17720,"name":"uint256","nodeType":"ElementaryTypeName","src":"2125:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2050:97:93"},"returnParameters":{"id":17725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17724,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":17751,"src":"2171:17:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17723,"name":"uint128","nodeType":"ElementaryTypeName","src":"2171:7:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2170:19:93"},"scope":17982,"src":"2019:390:93","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":17831,"nodeType":"Block","src":"3247:692:93","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":17769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17767,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17756,"src":"3262:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":17768,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17758,"src":"3278:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3262:29:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17778,"nodeType":"IfStatement","src":"3258:98:93","trueBody":{"expression":{"id":17776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":17770,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17756,"src":"3294:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17771,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17758,"src":"3309:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":17772,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3293:30:93","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":17773,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17758,"src":"3327:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17774,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17756,"src":"3342:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":17775,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3326:30:93","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"3293:63:93","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17777,"nodeType":"ExpressionStatement","src":"3293:63:93"}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":17781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17779,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17754,"src":"3373:12:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":17780,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17756,"src":"3389:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3373:29:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":17793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17791,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17754,"src":"3514:12:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":17792,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17758,"src":"3529:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3514:28:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17828,"nodeType":"Block","src":"3832:100:93","statements":[{"expression":{"id":17826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17820,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17765,"src":"3847:9:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17822,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17756,"src":"3882:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17823,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17758,"src":"3897:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17824,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17762,"src":"3912:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17821,"name":"getLiquidityForAmount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17751,"src":"3859:22:93","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":17825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3859:61:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3847:73:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":17827,"nodeType":"ExpressionStatement","src":"3847:73:93"}]},"id":17829,"nodeType":"IfStatement","src":"3510:422:93","trueBody":{"id":17819,"nodeType":"Block","src":"3544:282:93","statements":[{"assignments":[17795],"declarations":[{"constant":false,"id":17795,"mutability":"mutable","name":"liquidity0","nodeType":"VariableDeclaration","scope":17819,"src":"3559:18:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17794,"name":"uint128","nodeType":"ElementaryTypeName","src":"3559:7:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":17801,"initialValue":{"arguments":[{"id":17797,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17754,"src":"3603:12:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17798,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17758,"src":"3617:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17799,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17760,"src":"3632:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17796,"name":"getLiquidityForAmount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17714,"src":"3580:22:93","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":17800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3580:60:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"3559:81:93"},{"assignments":[17803],"declarations":[{"constant":false,"id":17803,"mutability":"mutable","name":"liquidity1","nodeType":"VariableDeclaration","scope":17819,"src":"3655:18:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17802,"name":"uint128","nodeType":"ElementaryTypeName","src":"3655:7:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":17809,"initialValue":{"arguments":[{"id":17805,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17756,"src":"3699:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17806,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17754,"src":"3714:12:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17807,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17762,"src":"3728:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17804,"name":"getLiquidityForAmount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17751,"src":"3676:22:93","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":17808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3676:60:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"3655:81:93"},{"expression":{"id":17817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17810,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17765,"src":"3753:9:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":17813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17811,"name":"liquidity0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17795,"src":"3765:10:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":17812,"name":"liquidity1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17803,"src":"3778:10:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3765:23:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":17815,"name":"liquidity1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17803,"src":"3804:10:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":17816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3765:49:93","trueExpression":{"id":17814,"name":"liquidity0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17795,"src":"3791:10:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3753:61:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":17818,"nodeType":"ExpressionStatement","src":"3753:61:93"}]}},"id":17830,"nodeType":"IfStatement","src":"3369:563:93","trueBody":{"id":17790,"nodeType":"Block","src":"3404:100:93","statements":[{"expression":{"id":17788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17782,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17765,"src":"3419:9:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17784,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17756,"src":"3454:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17785,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17758,"src":"3469:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17786,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17760,"src":"3484:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17783,"name":"getLiquidityForAmount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17714,"src":"3431:22:93","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":17787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3431:61:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3419:73:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":17789,"nodeType":"ExpressionStatement","src":"3419:73:93"}]}}]},"documentation":{"id":17752,"nodeType":"StructuredDocumentation","src":"2417:596:93","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":17832,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityForAmounts","nodeType":"FunctionDefinition","parameters":{"id":17763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17754,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":17832,"src":"3061:20:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":17753,"name":"uint160","nodeType":"ElementaryTypeName","src":"3061:7:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":17756,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":17832,"src":"3092:21:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":17755,"name":"uint160","nodeType":"ElementaryTypeName","src":"3092:7:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":17758,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":17832,"src":"3124:21:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":17757,"name":"uint160","nodeType":"ElementaryTypeName","src":"3124:7:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":17760,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":17832,"src":"3156:15:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17759,"name":"uint256","nodeType":"ElementaryTypeName","src":"3156:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17762,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":17832,"src":"3182:15:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17761,"name":"uint256","nodeType":"ElementaryTypeName","src":"3182:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3050:154:93"},"returnParameters":{"id":17766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17765,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":17832,"src":"3228:17:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17764,"name":"uint128","nodeType":"ElementaryTypeName","src":"3228:7:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3227:19:93"},"scope":17982,"src":"3019:920:93","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":17873,"nodeType":"Block","src":"4475:340:93","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":17846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17844,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17835,"src":"4490:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":17845,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17837,"src":"4506:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4490:29:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17855,"nodeType":"IfStatement","src":"4486:98:93","trueBody":{"expression":{"id":17853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":17847,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17835,"src":"4522:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17848,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17837,"src":"4537:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":17849,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4521:30:93","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":17850,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17837,"src":"4555:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17851,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17835,"src":"4570:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":17852,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4554:30:93","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"4521:63:93","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17854,"nodeType":"ExpressionStatement","src":"4521:63:93"}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":17860,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17839,"src":"4659:9:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":17859,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4651:7:93","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17858,"name":"uint256","nodeType":"ElementaryTypeName","src":"4651:7:93","typeDescriptions":{}}},"id":17861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4651:18:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"expression":{"id":17862,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4075,"src":"4673:12:93","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$4075_$","typeString":"type(library FixedPoint96)"}},"id":17863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"RESOLUTION","nodeType":"MemberAccess","referencedDeclaration":4071,"src":"4673:23:93","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4651:45:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":17867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17865,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17837,"src":"4715:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":17866,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17835,"src":"4731:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4715:29:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17868,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17837,"src":"4763:13:93","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":17856,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"4617:8:93","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":17857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"4617: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":17869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4617:174:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":17870,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17835,"src":"4794:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4617:190:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17843,"id":17872,"nodeType":"Return","src":"4597:210:93"}]},"documentation":{"id":17833,"nodeType":"StructuredDocumentation","src":"3947:351:93","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":17874,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount0ForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":17840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17835,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":17874,"src":"4346:21:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":17834,"name":"uint160","nodeType":"ElementaryTypeName","src":"4346:7:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":17837,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":17874,"src":"4378:21:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":17836,"name":"uint160","nodeType":"ElementaryTypeName","src":"4378:7:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":17839,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":17874,"src":"4410:17:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17838,"name":"uint128","nodeType":"ElementaryTypeName","src":"4410:7:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"4335:99:93"},"returnParameters":{"id":17843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17842,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":17874,"src":"4458:15:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17841,"name":"uint256","nodeType":"ElementaryTypeName","src":"4458:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4457:17:93"},"scope":17982,"src":"4304:511:93","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":17908,"nodeType":"Block","src":"5351:212:93","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":17888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17886,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17877,"src":"5366:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":17887,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17879,"src":"5382:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"5366:29:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17897,"nodeType":"IfStatement","src":"5362:98:93","trueBody":{"expression":{"id":17895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":17889,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17877,"src":"5398:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17890,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17879,"src":"5413:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":17891,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5397:30:93","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":17892,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17879,"src":"5431:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17893,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17877,"src":"5446:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":17894,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5430:30:93","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"5397:63:93","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17896,"nodeType":"ExpressionStatement","src":"5397:63:93"}},{"expression":{"arguments":[{"id":17900,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17881,"src":"5496:9:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":17903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17901,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17879,"src":"5507:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":17902,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17877,"src":"5523:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"5507:29:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":17904,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4075,"src":"5538:12:93","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$4075_$","typeString":"type(library FixedPoint96)"}},"id":17905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":4074,"src":"5538: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":17898,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"5480:8:93","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":17899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"5480: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":17906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5480:75:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17885,"id":17907,"nodeType":"Return","src":"5473:82:93"}]},"documentation":{"id":17875,"nodeType":"StructuredDocumentation","src":"4823:351:93","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":17909,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount1ForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":17882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17877,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":17909,"src":"5222:21:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":17876,"name":"uint160","nodeType":"ElementaryTypeName","src":"5222:7:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":17879,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":17909,"src":"5254:21:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":17878,"name":"uint160","nodeType":"ElementaryTypeName","src":"5254:7:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":17881,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":17909,"src":"5286:17:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17880,"name":"uint128","nodeType":"ElementaryTypeName","src":"5286:7:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5211:99:93"},"returnParameters":{"id":17885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17884,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":17909,"src":"5334:15:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17883,"name":"uint256","nodeType":"ElementaryTypeName","src":"5334:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5333:17:93"},"scope":17982,"src":"5180:383:93","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":17980,"nodeType":"Block","src":"6333:596:93","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":17927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17925,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17914,"src":"6348:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":17926,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17916,"src":"6364:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6348:29:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17936,"nodeType":"IfStatement","src":"6344:98:93","trueBody":{"expression":{"id":17934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":17928,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17914,"src":"6380:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17929,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17916,"src":"6395:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":17930,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6379:30:93","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":17931,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17916,"src":"6413:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17932,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17914,"src":"6428:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":17933,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6412:30:93","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"6379:63:93","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17935,"nodeType":"ExpressionStatement","src":"6379:63:93"}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":17939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17937,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17912,"src":"6459:12:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":17938,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17914,"src":"6475:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6459:29:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":17951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17949,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17912,"src":"6600:12:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":17950,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17916,"src":"6615:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6600:28:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17977,"nodeType":"Block","src":"6822:100:93","statements":[{"expression":{"id":17975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17969,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17923,"src":"6837:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17971,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17914,"src":"6870:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17972,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17916,"src":"6885:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17973,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17918,"src":"6900:9:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":17970,"name":"getAmount1ForLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17909,"src":"6847:22:93","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":17974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6847:63:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6837:73:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17976,"nodeType":"ExpressionStatement","src":"6837:73:93"}]},"id":17978,"nodeType":"IfStatement","src":"6596:326:93","trueBody":{"id":17968,"nodeType":"Block","src":"6630:186:93","statements":[{"expression":{"id":17958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17952,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17921,"src":"6645:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17954,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17912,"src":"6678:12:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17955,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17916,"src":"6692:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17956,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17918,"src":"6707:9:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":17953,"name":"getAmount0ForLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17874,"src":"6655:22:93","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":17957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6655:62:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6645:72:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17959,"nodeType":"ExpressionStatement","src":"6645:72:93"},{"expression":{"id":17966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17960,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17923,"src":"6732:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17962,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17914,"src":"6765:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17963,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17912,"src":"6780:12:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17964,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17918,"src":"6794:9:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":17961,"name":"getAmount1ForLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17909,"src":"6742:22:93","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":17965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6742:62:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6732:72:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17967,"nodeType":"ExpressionStatement","src":"6732:72:93"}]}},"id":17979,"nodeType":"IfStatement","src":"6455:467:93","trueBody":{"id":17948,"nodeType":"Block","src":"6490:100:93","statements":[{"expression":{"id":17946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17940,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17921,"src":"6505:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17942,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17914,"src":"6538:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17943,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17916,"src":"6553:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":17944,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17918,"src":"6568:9:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":17941,"name":"getAmount0ForLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17874,"src":"6515:22:93","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":17945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6515:63:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6505:73:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17947,"nodeType":"ExpressionStatement","src":"6505:73:93"}]}}]},"documentation":{"id":17910,"nodeType":"StructuredDocumentation","src":"5571:537:93","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":17981,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountsForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":17919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17912,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":17981,"src":"6156:20:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":17911,"name":"uint160","nodeType":"ElementaryTypeName","src":"6156:7:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":17914,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":17981,"src":"6187:21:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":17913,"name":"uint160","nodeType":"ElementaryTypeName","src":"6187:7:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":17916,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":17981,"src":"6219:21:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":17915,"name":"uint160","nodeType":"ElementaryTypeName","src":"6219:7:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":17918,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":17981,"src":"6251:17:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17917,"name":"uint128","nodeType":"ElementaryTypeName","src":"6251:7:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6145:130:93"},"returnParameters":{"id":17924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17921,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":17981,"src":"6299:15:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17920,"name":"uint256","nodeType":"ElementaryTypeName","src":"6299:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17923,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":17981,"src":"6316:15:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17922,"name":"uint256","nodeType":"ElementaryTypeName","src":"6316:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6298:34:93"},"scope":17982,"src":"6114:815:93","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":17983,"src":"317:6615:93"}],"src":"46:6888:93"},"id":93},"contracts/elixir-periphery/libraries/NFTSVG.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/NFTSVG.sol","exportedSymbols":{"Base64":[114],"BitMath":[4058],"NFTSVG":[18920],"Strings":[33664]},"id":18921,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17984,"literals":["solidity",">=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:24:94"},{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/Strings.sol","file":"openzeppelin-contracts-solc-0.7/utils/Strings.sol","id":17985,"nodeType":"ImportDirective","scope":18921,"sourceUnit":33665,"src":"74:59:94","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/BitMath.sol","file":"../../elixir-core/libraries/BitMath.sol","id":17986,"nodeType":"ImportDirective","scope":18921,"sourceUnit":4059,"src":"135:49:94","symbolAliases":[],"unitAlias":""},{"absolutePath":"base64-sol/base64.sol","file":"base64-sol/base64.sol","id":17987,"nodeType":"ImportDirective","scope":18921,"sourceUnit":115,"src":"186:31:94","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":17988,"nodeType":"StructuredDocumentation","src":"221:103:94","text":"@title NFTSVG\n @notice Provides a function for generating an SVG associated with a Elixir NFT"},"fullyImplemented":true,"id":18920,"linearizedBaseContracts":[18920],"name":"NFTSVG","nodeType":"ContractDefinition","nodes":[{"id":17991,"libraryName":{"id":17989,"name":"Strings","nodeType":"UserDefinedTypeName","referencedDeclaration":33664,"src":"352:7:94","typeDescriptions":{"typeIdentifier":"t_contract$_Strings_$33664","typeString":"library Strings"}},"nodeType":"UsingForDirective","src":"346:26:94","typeName":{"id":17990,"name":"uint256","nodeType":"ElementaryTypeName","src":"364:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":17994,"mutability":"constant","name":"curve1","nodeType":"VariableDeclaration","scope":18920,"src":"380:53:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17992,"name":"string","nodeType":"ElementaryTypeName","src":"380:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d31203143343120343120313035203130352031343520313435","id":17993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"405:28:94","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":17997,"mutability":"constant","name":"curve2","nodeType":"VariableDeclaration","scope":18920,"src":"440:52:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17995,"name":"string","nodeType":"ElementaryTypeName","src":"440:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d312031433333203439203937203131332031343520313435","id":17996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"465:27:94","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":18000,"mutability":"constant","name":"curve3","nodeType":"VariableDeclaration","scope":18920,"src":"499:52:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17998,"name":"string","nodeType":"ElementaryTypeName","src":"499:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d312031433333203537203839203131332031343520313435","id":17999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"524:27:94","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":18003,"mutability":"constant","name":"curve4","nodeType":"VariableDeclaration","scope":18920,"src":"558:52:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18001,"name":"string","nodeType":"ElementaryTypeName","src":"558:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d312031433235203635203831203132312031343520313435","id":18002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"583:27:94","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":18006,"mutability":"constant","name":"curve5","nodeType":"VariableDeclaration","scope":18920,"src":"617:52:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18004,"name":"string","nodeType":"ElementaryTypeName","src":"617:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d312031433137203733203733203132392031343520313435","id":18005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"642:27:94","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":18009,"mutability":"constant","name":"curve6","nodeType":"VariableDeclaration","scope":18920,"src":"676:51:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18007,"name":"string","nodeType":"ElementaryTypeName","src":"676:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d3120314339203831203635203133372031343520313435","id":18008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"701:26:94","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":18012,"mutability":"constant","name":"curve7","nodeType":"VariableDeclaration","scope":18920,"src":"734:53:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18010,"name":"string","nodeType":"ElementaryTypeName","src":"734:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d31203143312038392035372e35203134352031343520313435","id":18011,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"759:28:94","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":18015,"mutability":"constant","name":"curve8","nodeType":"VariableDeclaration","scope":18920,"src":"794:51:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18013,"name":"string","nodeType":"ElementaryTypeName","src":"794:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d3120314331203937203439203134352031343520313435","id":18014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"819:26:94","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":18058,"members":[{"constant":false,"id":18017,"mutability":"mutable","name":"quoteToken","nodeType":"VariableDeclaration","scope":18058,"src":"882:17:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":18016,"name":"string","nodeType":"ElementaryTypeName","src":"882:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18019,"mutability":"mutable","name":"baseToken","nodeType":"VariableDeclaration","scope":18058,"src":"910:16:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":18018,"name":"string","nodeType":"ElementaryTypeName","src":"910:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18021,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":18058,"src":"937:19:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18020,"name":"address","nodeType":"ElementaryTypeName","src":"937:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18023,"mutability":"mutable","name":"quoteTokenSymbol","nodeType":"VariableDeclaration","scope":18058,"src":"967:23:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":18022,"name":"string","nodeType":"ElementaryTypeName","src":"967:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18025,"mutability":"mutable","name":"baseTokenSymbol","nodeType":"VariableDeclaration","scope":18058,"src":"1001:22:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":18024,"name":"string","nodeType":"ElementaryTypeName","src":"1001:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18027,"mutability":"mutable","name":"feeTier","nodeType":"VariableDeclaration","scope":18058,"src":"1034:14:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":18026,"name":"string","nodeType":"ElementaryTypeName","src":"1034:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18029,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":18058,"src":"1059:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":18028,"name":"int24","nodeType":"ElementaryTypeName","src":"1059:5:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":18031,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":18058,"src":"1085:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":18030,"name":"int24","nodeType":"ElementaryTypeName","src":"1085:5:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":18033,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":18058,"src":"1111:17:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":18032,"name":"int24","nodeType":"ElementaryTypeName","src":"1111:5:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":18035,"mutability":"mutable","name":"overRange","nodeType":"VariableDeclaration","scope":18058,"src":"1139:14:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":18034,"name":"int8","nodeType":"ElementaryTypeName","src":"1139:4:94","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"},{"constant":false,"id":18037,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":18058,"src":"1164:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18036,"name":"uint256","nodeType":"ElementaryTypeName","src":"1164:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18039,"mutability":"mutable","name":"color0","nodeType":"VariableDeclaration","scope":18058,"src":"1190:13:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":18038,"name":"string","nodeType":"ElementaryTypeName","src":"1190:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18041,"mutability":"mutable","name":"color1","nodeType":"VariableDeclaration","scope":18058,"src":"1214:13:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":18040,"name":"string","nodeType":"ElementaryTypeName","src":"1214:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18043,"mutability":"mutable","name":"color2","nodeType":"VariableDeclaration","scope":18058,"src":"1238:13:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":18042,"name":"string","nodeType":"ElementaryTypeName","src":"1238:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18045,"mutability":"mutable","name":"color3","nodeType":"VariableDeclaration","scope":18058,"src":"1262:13:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":18044,"name":"string","nodeType":"ElementaryTypeName","src":"1262:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18047,"mutability":"mutable","name":"x1","nodeType":"VariableDeclaration","scope":18058,"src":"1286:9:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":18046,"name":"string","nodeType":"ElementaryTypeName","src":"1286:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18049,"mutability":"mutable","name":"y1","nodeType":"VariableDeclaration","scope":18058,"src":"1306:9:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":18048,"name":"string","nodeType":"ElementaryTypeName","src":"1306:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18051,"mutability":"mutable","name":"x2","nodeType":"VariableDeclaration","scope":18058,"src":"1326:9:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":18050,"name":"string","nodeType":"ElementaryTypeName","src":"1326:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18053,"mutability":"mutable","name":"y2","nodeType":"VariableDeclaration","scope":18058,"src":"1346:9:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":18052,"name":"string","nodeType":"ElementaryTypeName","src":"1346:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18055,"mutability":"mutable","name":"x3","nodeType":"VariableDeclaration","scope":18058,"src":"1366:9:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":18054,"name":"string","nodeType":"ElementaryTypeName","src":"1366:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18057,"mutability":"mutable","name":"y3","nodeType":"VariableDeclaration","scope":18058,"src":"1386:9:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":18056,"name":"string","nodeType":"ElementaryTypeName","src":"1386:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"SVGParams","nodeType":"StructDefinition","scope":18920,"src":"854:549:94","visibility":"public"},{"body":{"id":18120,"nodeType":"Block","src":"1499:1326:94","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":18070,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18060,"src":"1966:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}],"id":18069,"name":"generateSVGDefs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18239,"src":"1950:15:94","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_SVGParams_$18058_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function (struct NFTSVG.SVGParams memory) pure returns (string memory)"}},"id":18071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1950:23:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"expression":{"id":18073,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18060,"src":"2044:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18074,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"quoteToken","nodeType":"MemberAccess","referencedDeclaration":18017,"src":"2044:17:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":18075,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18060,"src":"2088:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18076,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"baseToken","nodeType":"MemberAccess","referencedDeclaration":18019,"src":"2088:16:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":18077,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18060,"src":"2131:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18078,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"quoteTokenSymbol","nodeType":"MemberAccess","referencedDeclaration":18023,"src":"2131:23:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":18079,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18060,"src":"2181:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18080,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"baseTokenSymbol","nodeType":"MemberAccess","referencedDeclaration":18025,"src":"2181:22:94","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":18072,"name":"generateSVGBorderText","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18283,"src":"1996:21:94","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":18081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1996:230:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"expression":{"id":18083,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18060,"src":"2271:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18084,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"quoteTokenSymbol","nodeType":"MemberAccess","referencedDeclaration":18023,"src":"2271:23:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":18085,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18060,"src":"2296:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18086,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"baseTokenSymbol","nodeType":"MemberAccess","referencedDeclaration":18025,"src":"2296:22:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":18087,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18060,"src":"2320:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeTier","nodeType":"MemberAccess","referencedDeclaration":18027,"src":"2320:14:94","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":18082,"name":"generateSVGCardMantle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18312,"src":"2249:21:94","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":18089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2249:86:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"expression":{"id":18091,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18060,"src":"2375:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18092,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":18029,"src":"2375:16:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":18093,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18060,"src":"2393:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18094,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":18031,"src":"2393:16:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":18095,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18060,"src":"2411:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18096,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":18033,"src":"2411:18:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":18097,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18060,"src":"2431:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18098,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"overRange","nodeType":"MemberAccess","referencedDeclaration":18035,"src":"2431:16:94","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":18090,"name":"generageSvgCurve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18375,"src":"2358:16:94","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":18099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2358:90:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":18101,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18060,"src":"2537:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18102,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":18037,"src":"2537:14:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":33663,"src":"2537:23:94","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":18104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2537:25:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":18105,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18060,"src":"2589:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18106,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":18029,"src":"2589:16:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":18107,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18060,"src":"2632:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18108,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":18031,"src":"2632:16:94","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":18100,"name":"generateSVGPositionDataAndLocationCurve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18690,"src":"2471:39:94","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":18109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2471:200:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"expression":{"id":18111,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18060,"src":"2717:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18112,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":18037,"src":"2717:14:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":18113,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18060,"src":"2733:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18114,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolAddress","nodeType":"MemberAccess","referencedDeclaration":18021,"src":"2733:18:94","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":18110,"name":"generateSVGRareSparkle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18878,"src":"2694:22:94","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_address_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,address) pure returns (string memory)"}},"id":18115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2694:58:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"3c2f7376673e","id":18116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2775:8:94","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":18067,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1911:3:94","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":18068,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1911:16:94","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":18117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1911:891:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":18066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1886:6:94","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":18065,"name":"string","nodeType":"ElementaryTypeName","src":"1886:6:94","typeDescriptions":{}}},"id":18118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1886:931:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":18064,"id":18119,"nodeType":"Return","src":"1866:951:94"}]},"id":18121,"implemented":true,"kind":"function","modifiers":[],"name":"generateSVG","nodeType":"FunctionDefinition","parameters":{"id":18061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18060,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":18121,"src":"1432:23:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams"},"typeName":{"id":18059,"name":"SVGParams","nodeType":"UserDefinedTypeName","referencedDeclaration":18058,"src":"1432:9:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_storage_ptr","typeString":"struct NFTSVG.SVGParams"}},"visibility":"internal"}],"src":"1431:25:94"},"returnParameters":{"id":18064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18063,"mutability":"mutable","name":"svg","nodeType":"VariableDeclaration","scope":18121,"src":"1480:17:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18062,"name":"string","nodeType":"ElementaryTypeName","src":"1480:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1479:19:94"},"scope":18920,"src":"1411:1414:94","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":18238,"nodeType":"Block","src":"2924:5335:94","statements":[{"expression":{"id":18236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18128,"name":"svg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18126,"src":"2935:3:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"3c7376672077696474683d2232393022206865696768743d22353030222076696577426f783d2230203020323930203530302220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722","id":18133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2997:88:94","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":18134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3104:46:94","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":18135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3169:8:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_c9d6f35adafbd6db05cf66701a579ef4e1499ac0364b80726ad93d0f9855ba3a","typeString":"literal_string \"<defs>\""},"value":"<defs>"},{"hexValue":"3c66696c7465722069643d226631223e3c6665496d61676520726573756c743d2270302220786c696e6b3a687265663d22646174613a696d6167652f7376672b786d6c3b6261736536342c","id":18136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3196:77:94","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":18143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3407:131:94","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":18144,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18123,"src":"3569:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18145,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"color0","nodeType":"MemberAccess","referencedDeclaration":18039,"src":"3569:13:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"272f3e3c2f7376673e","id":18146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3613:11:94","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":18141,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3360:3:94","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":18142,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3360:16:94","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":18147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3360:291:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":18140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3328:5:94","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":18139,"name":"bytes","nodeType":"ElementaryTypeName","src":"3328:5:94","typeDescriptions":{}}},"id":18148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3328:346:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":18137,"name":"Base64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"3292:6:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Base64_$114_$","typeString":"type(library Base64)"}},"id":18138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":52,"src":"3292:13:94","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function (bytes memory) pure returns (string memory)"}},"id":18149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3292:401:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"222f3e3c6665496d61676520726573756c743d2270312220786c696e6b3a687265663d22646174613a696d6167652f7376672b786d6c3b6261736536342c","id":18150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3712:64:94","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":18157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3910:101:94","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":18158,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18123,"src":"4042:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18159,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"x1","nodeType":"MemberAccess","referencedDeclaration":18047,"src":"4042:9:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"272063793d27","id":18160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4082:8:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_c122f56fb29fd1b2692bf38cf7def21d4f86567365fb92790a69e1dc6942704f","typeString":"literal_string \"' cy='\""},"value":"' cy='"},{"expression":{"id":18161,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18123,"src":"4121:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18162,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"y1","nodeType":"MemberAccess","referencedDeclaration":18049,"src":"4121:9:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"2720723d273132307078272066696c6c3d2723","id":18163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4161:21:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_ee35ad264095963cb3d9258d9ab9354d54cabfc55aaceacbd7ebd9fec3d8f96a","typeString":"literal_string \"' r='120px' fill='#\""},"value":"' r='120px' fill='#"},{"expression":{"id":18164,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18123,"src":"4213:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18165,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"color1","nodeType":"MemberAccess","referencedDeclaration":18041,"src":"4213:13:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"272f3e3c2f7376673e","id":18166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4257:11:94","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":18155,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3863:3:94","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":18156,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3863:16:94","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":18167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3863:432:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":18154,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3831:5:94","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":18153,"name":"bytes","nodeType":"ElementaryTypeName","src":"3831:5:94","typeDescriptions":{}}},"id":18168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3831:487:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":18151,"name":"Base64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"3795:6:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Base64_$114_$","typeString":"type(library Base64)"}},"id":18152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":52,"src":"3795:13:94","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function (bytes memory) pure returns (string memory)"}},"id":18169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3795:542:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"222f3e3c6665496d61676520726573756c743d2270322220786c696e6b3a687265663d22646174613a696d6167652f7376672b786d6c3b6261736536342c","id":18170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4356:64:94","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":18177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4554:101:94","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":18178,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18123,"src":"4686:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18179,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"x2","nodeType":"MemberAccess","referencedDeclaration":18051,"src":"4686:9:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"272063793d27","id":18180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4726:8:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_c122f56fb29fd1b2692bf38cf7def21d4f86567365fb92790a69e1dc6942704f","typeString":"literal_string \"' cy='\""},"value":"' cy='"},{"expression":{"id":18181,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18123,"src":"4765:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18182,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"y2","nodeType":"MemberAccess","referencedDeclaration":18053,"src":"4765:9:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"2720723d273132307078272066696c6c3d2723","id":18183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4805:21:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_ee35ad264095963cb3d9258d9ab9354d54cabfc55aaceacbd7ebd9fec3d8f96a","typeString":"literal_string \"' r='120px' fill='#\""},"value":"' r='120px' fill='#"},{"expression":{"id":18184,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18123,"src":"4857:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18185,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"color2","nodeType":"MemberAccess","referencedDeclaration":18043,"src":"4857:13:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"272f3e3c2f7376673e","id":18186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4901:11:94","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":18175,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4507:3:94","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":18176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"4507:16:94","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":18187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4507:432:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":18174,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4475:5:94","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":18173,"name":"bytes","nodeType":"ElementaryTypeName","src":"4475:5:94","typeDescriptions":{}}},"id":18188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4475:487:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":18171,"name":"Base64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"4439:6:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Base64_$114_$","typeString":"type(library Base64)"}},"id":18172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":52,"src":"4439:13:94","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function (bytes memory) pure returns (string memory)"}},"id":18189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4439:542:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"22202f3e","id":18190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5000:6:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_72725e47f491f4a2a7cef9977dd6b3ea1a81d838d9448981484a063dc011d6ba","typeString":"literal_string \"\" />\""},"value":"\" />"},{"hexValue":"3c6665496d61676520726573756c743d2270332220786c696e6b3a687265663d22646174613a696d6167652f7376672b786d6c3b6261736536342c","id":18191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5025:61:94","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":18198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5220:101:94","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":18199,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18123,"src":"5352:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18200,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"x3","nodeType":"MemberAccess","referencedDeclaration":18055,"src":"5352:9:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"272063793d27","id":18201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5392:8:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_c122f56fb29fd1b2692bf38cf7def21d4f86567365fb92790a69e1dc6942704f","typeString":"literal_string \"' cy='\""},"value":"' cy='"},{"expression":{"id":18202,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18123,"src":"5431:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18203,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"y3","nodeType":"MemberAccess","referencedDeclaration":18057,"src":"5431:9:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"2720723d273130307078272066696c6c3d2723","id":18204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5471:21:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_fa7e81ce29c44abe3185d042987960e602335452077f02be3f9233e7ae91d760","typeString":"literal_string \"' r='100px' fill='#\""},"value":"' r='100px' fill='#"},{"expression":{"id":18205,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18123,"src":"5523:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18206,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"color3","nodeType":"MemberAccess","referencedDeclaration":18045,"src":"5523:13:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"272f3e3c2f7376673e","id":18207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5567:11:94","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":18196,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5173:3:94","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":18197,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"5173:16:94","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":18208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5173:432:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":18195,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5141:5:94","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":18194,"name":"bytes","nodeType":"ElementaryTypeName","src":"5141:5:94","typeDescriptions":{}}},"id":18209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5141:487:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":18192,"name":"Base64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"5105:6:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Base64_$114_$","typeString":"type(library Base64)"}},"id":18193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":52,"src":"5105:13:94","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function (bytes memory) pure returns (string memory)"}},"id":18210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5105:542:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"22202f3e3c6665426c656e64206d6f64653d226f7665726c61792220696e3d2270302220696e323d22703122202f3e3c6665426c656e64206d6f64653d226578636c7573696f6e2220696e323d22703222202f3e3c6665426c656e64206d6f64653d226f7665726c61792220696e323d2270332220726573756c743d22626c656e644f757422202f3e3c6665476175737369616e426c757220","id":18211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5666:155:94","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":18212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5840:129:94","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":18213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5988:138:94","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":18214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6145:67:94","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":18215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6231:95:94","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":18216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6345:116:94","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":18217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6480:75:94","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":18218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6574:192:94","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":18219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6785:115:94","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":18220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6919:119:94","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":18221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7057:104:94","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":18222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7180:166:94","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":18223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7365:135:94","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":18224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7519:31:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_f091cfa977578cc3d31efb8591842fc4f1d1db02114f63fef964dafa0922c62d","typeString":"literal_string \"<g clip-path=\"url(#corners)\">\""},"value":"<g clip-path=\"url(#corners)\">"},{"hexValue":"3c726563742066696c6c3d22","id":18225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7569:14:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_84a823de185a2fe7015241c324f6c784eee47f2e7607badbd7abefa617433556","typeString":"literal_string \"<rect fill=\"\""},"value":"<rect fill=\""},{"expression":{"id":18226,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18123,"src":"7602:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":18227,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"color0","nodeType":"MemberAccess","referencedDeclaration":18039,"src":"7602:13:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"2220783d223070782220793d22307078222077696474683d22323930707822206865696768743d22353030707822202f3e","id":18228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7634:51:94","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":18229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7704:80:94","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":18230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7803:95:94","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":18231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7917:67:94","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":18232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8003:84:94","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":18233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8106:119:94","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":18131,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2962:3:94","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":18132,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2962:16:94","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":18234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2962:5278:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":18130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2941:6:94","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":18129,"name":"string","nodeType":"ElementaryTypeName","src":"2941:6:94","typeDescriptions":{}}},"id":18235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2941:5310:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2935:5316:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18237,"nodeType":"ExpressionStatement","src":"2935:5316:94"}]},"id":18239,"implemented":true,"kind":"function","modifiers":[],"name":"generateSVGDefs","nodeType":"FunctionDefinition","parameters":{"id":18124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18123,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":18239,"src":"2858:23:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_memory_ptr","typeString":"struct NFTSVG.SVGParams"},"typeName":{"id":18122,"name":"SVGParams","nodeType":"UserDefinedTypeName","referencedDeclaration":18058,"src":"2858:9:94","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$18058_storage_ptr","typeString":"struct NFTSVG.SVGParams"}},"visibility":"internal"}],"src":"2857:25:94"},"returnParameters":{"id":18127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18126,"mutability":"mutable","name":"svg","nodeType":"VariableDeclaration","scope":18239,"src":"2905:17:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18125,"name":"string","nodeType":"ElementaryTypeName","src":"2905:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2904:19:94"},"scope":18920,"src":"2833:5426:94","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":18282,"nodeType":"Block","src":"8496:1737:94","statements":[{"expression":{"id":18280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18252,"name":"svg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18250,"src":"8507:3:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"3c7465787420746578742d72656e646572696e673d226f7074696d697a655370656564223e","id":18257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8569:39:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_def1de1dcd58e9459a64156d5380ddffd45a29faa565a4062a201283a4b86c28","typeString":"literal_string \"<text text-rendering=\"optimizeSpeed\">\""},"value":"<text text-rendering=\"optimizeSpeed\">"},{"hexValue":"3c74657874506174682073746172744f66667365743d222d31303025222066696c6c3d2277686974652220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d73697a653d22313070782220786c696e6b3a687265663d2223746578742d706174682d61223e","id":18258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8627:129:94","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":18259,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18243,"src":"8775:9:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"20e280a220","id":18260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"unicodeString","lValueRequested":false,"nodeType":"Literal","src":"8803:14:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_e95eeea5856ede1036273fb77d6c19f7ed6ad714c1773e773c8cd40b496df17b","typeString":"literal_string hex\"20e280a220\""},"value":" • "},{"id":18261,"name":"baseTokenSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18247,"src":"8836:15:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"203c616e696d6174652061646469746976653d2273756d22206174747269627574654e616d653d2273746172744f6666736574222066726f6d3d2230252220746f3d22313030252220626567696e3d22307322206475723d223330732220726570656174436f756e743d22696e646566696e69746522202f3e","id":18262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8870:123:94","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":18263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9012:138:94","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":18264,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18243,"src":"9169:9:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"20e280a220","id":18265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"unicodeString","lValueRequested":false,"nodeType":"Literal","src":"9197:14:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_e95eeea5856ede1036273fb77d6c19f7ed6ad714c1773e773c8cd40b496df17b","typeString":"literal_string hex\"20e280a220\""},"value":" • "},{"id":18266,"name":"baseTokenSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18247,"src":"9230:15:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"203c616e696d6174652061646469746976653d2273756d22206174747269627574654e616d653d2273746172744f6666736574222066726f6d3d2230252220746f3d22313030252220626567696e3d22307322206475723d223330732220726570656174436f756e743d22696e646566696e69746522202f3e203c2f74657874506174683e","id":18267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9264:135:94","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":18268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9418:127:94","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":18269,"name":"quoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18241,"src":"9564:10:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"20e280a220","id":18270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"unicodeString","lValueRequested":false,"nodeType":"Literal","src":"9593:14:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_e95eeea5856ede1036273fb77d6c19f7ed6ad714c1773e773c8cd40b496df17b","typeString":"literal_string hex\"20e280a220\""},"value":" • "},{"id":18271,"name":"quoteTokenSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18245,"src":"9626:16:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"203c616e696d6174652061646469746976653d2273756d22206174747269627574654e616d653d2273746172744f6666736574222066726f6d3d2230252220746f3d22313030252220626567696e3d22307322206475723d2233307322","id":18272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9661:95:94","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":18273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9775:167:94","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":18274,"name":"quoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18241,"src":"9961:10:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"20e280a220","id":18275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"unicodeString","lValueRequested":false,"nodeType":"Literal","src":"9990:14:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_e95eeea5856ede1036273fb77d6c19f7ed6ad714c1773e773c8cd40b496df17b","typeString":"literal_string hex\"20e280a220\""},"value":" • "},{"id":18276,"name":"quoteTokenSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18245,"src":"10023:16:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"203c616e696d6174652061646469746976653d2273756d22206174747269627574654e616d653d2273746172744f6666736574222066726f6d3d2230252220746f3d22313030252220626567696e3d22307322206475723d223330732220726570656174436f756e743d22696e646566696e69746522202f3e3c2f74657874506174683e3c2f746578743e","id":18277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10058:141:94","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":18255,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8534:3:94","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":18256,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"8534:16:94","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":18278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8534:1680:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":18254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8513:6:94","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":18253,"name":"string","nodeType":"ElementaryTypeName","src":"8513:6:94","typeDescriptions":{}}},"id":18279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8513:1712:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"8507:1718:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18281,"nodeType":"ExpressionStatement","src":"8507:1718:94"}]},"id":18283,"implemented":true,"kind":"function","modifiers":[],"name":"generateSVGBorderText","nodeType":"FunctionDefinition","parameters":{"id":18248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18241,"mutability":"mutable","name":"quoteToken","nodeType":"VariableDeclaration","scope":18283,"src":"8308:24:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18240,"name":"string","nodeType":"ElementaryTypeName","src":"8308:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18243,"mutability":"mutable","name":"baseToken","nodeType":"VariableDeclaration","scope":18283,"src":"8343:23:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18242,"name":"string","nodeType":"ElementaryTypeName","src":"8343:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18245,"mutability":"mutable","name":"quoteTokenSymbol","nodeType":"VariableDeclaration","scope":18283,"src":"8377:30:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18244,"name":"string","nodeType":"ElementaryTypeName","src":"8377:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18247,"mutability":"mutable","name":"baseTokenSymbol","nodeType":"VariableDeclaration","scope":18283,"src":"8418:29:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18246,"name":"string","nodeType":"ElementaryTypeName","src":"8418:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8297:157:94"},"returnParameters":{"id":18251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18250,"mutability":"mutable","name":"svg","nodeType":"VariableDeclaration","scope":18283,"src":"8477:17:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18249,"name":"string","nodeType":"ElementaryTypeName","src":"8477:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8476:19:94"},"scope":18920,"src":"8267:1966:94","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":18311,"nodeType":"Block","src":"10433:743:94","statements":[{"expression":{"id":18309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18294,"name":"svg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18292,"src":"10444:3:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"3c67206d61736b3d2275726c2823666164652d73796d626f6c29223e3c726563742066696c6c3d226e6f6e652220783d223070782220793d22307078222077696474683d22323930707822206865696768743d22323030707822202f3e203c7465787420793d22373070782220783d2233327078222066696c6c3d2277686974652220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d7765696768743d223230302220666f6e742d73697a653d2233367078223e","id":18299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10506:209:94","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":18300,"name":"quoteTokenSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18285,"src":"10734:16:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"2f","id":18301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10769:3:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527","typeString":"literal_string \"/\""},"value":"/"},{"id":18302,"name":"baseTokenSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18287,"src":"10791:15:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"3c2f746578743e3c7465787420793d2231313570782220783d2233327078222066696c6c3d2277686974652220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d7765696768743d223230302220666f6e742d73697a653d2233367078223e","id":18303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10825:123:94","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":18304,"name":"feeTier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18289,"src":"10967:7:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"3c2f746578743e3c2f673e","id":18305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10993:13:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_0b7427e2f769aaaa13bde5b715b09255dc5398714a59a798afc7999c8e6ae7f0","typeString":"literal_string \"</text></g>\""},"value":"</text></g>"},{"hexValue":"3c7265637420783d2231362220793d223136222077696474683d2232353822206865696768743d22343638222072783d223236222072793d223236222066696c6c3d227267626128302c302c302c302922207374726f6b653d2272676261283235352c3235352c3235352c302e322922202f3e","id":18306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11025:117:94","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":18297,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10471:3:94","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":18298,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"10471:16:94","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":18307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10471:686:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":18296,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10450:6:94","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":18295,"name":"string","nodeType":"ElementaryTypeName","src":"10450:6:94","typeDescriptions":{}}},"id":18308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10450:718:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"10444:724:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18310,"nodeType":"ExpressionStatement","src":"10444:724:94"}]},"id":18312,"implemented":true,"kind":"function","modifiers":[],"name":"generateSVGCardMantle","nodeType":"FunctionDefinition","parameters":{"id":18290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18285,"mutability":"mutable","name":"quoteTokenSymbol","nodeType":"VariableDeclaration","scope":18312,"src":"10282:30:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18284,"name":"string","nodeType":"ElementaryTypeName","src":"10282:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18287,"mutability":"mutable","name":"baseTokenSymbol","nodeType":"VariableDeclaration","scope":18312,"src":"10323:29:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18286,"name":"string","nodeType":"ElementaryTypeName","src":"10323:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18289,"mutability":"mutable","name":"feeTier","nodeType":"VariableDeclaration","scope":18312,"src":"10363:21:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18288,"name":"string","nodeType":"ElementaryTypeName","src":"10363:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"10271:120:94"},"returnParameters":{"id":18293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18292,"mutability":"mutable","name":"svg","nodeType":"VariableDeclaration","scope":18312,"src":"10414:17:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18291,"name":"string","nodeType":"ElementaryTypeName","src":"10414:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"10413:19:94"},"scope":18920,"src":"10241:935:94","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":18374,"nodeType":"Block","src":"11363:1090:94","statements":[{"assignments":[18326],"declarations":[{"constant":false,"id":18326,"mutability":"mutable","name":"fade","nodeType":"VariableDeclaration","scope":18374,"src":"11374:18:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18325,"name":"string","nodeType":"ElementaryTypeName","src":"11374:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":18339,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int8","typeString":"int8"},"id":18329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18327,"name":"overRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18320,"src":"11395:9:94","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":18328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11408:1:94","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11395:14:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"condition":{"commonType":{"typeIdentifier":"t_int8","typeString":"int8"},"id":18334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18331,"name":"overRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18320,"src":"11425:9:94","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":18333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"11438:2:94","subExpression":{"hexValue":"31","id":18332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11439:1:94","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":"11425:15:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"236e6f6e65","id":18336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11458:7:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_de3d54d0009a30de6574658fe768c121745861e4ddbc47fa69ea53fecbbb0a0c","typeString":"literal_string \"#none\""},"value":"#none"},"id":18337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11425:40:94","trueExpression":{"hexValue":"23666164652d646f776e","id":18335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11443:12:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_2b01e6fb7a2c53cd6a7605ccb24831699c60989eff7007eb7c3036e4ed9f56e1","typeString":"literal_string \"#fade-down\""},"value":"#fade-down"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11395:70:94","trueExpression":{"hexValue":"23666164652d7570","id":18330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11412:10:94","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":"11374:91:94"},{"assignments":[18341],"declarations":[{"constant":false,"id":18341,"mutability":"mutable","name":"curve","nodeType":"VariableDeclaration","scope":18374,"src":"11476:19:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18340,"name":"string","nodeType":"ElementaryTypeName","src":"11476:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":18347,"initialValue":{"arguments":[{"id":18343,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18314,"src":"11507:9:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":18344,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18316,"src":"11518:9:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":18345,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18318,"src":"11529:11:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"id":18342,"name":"getCurve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18464,"src":"11498:8:94","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":18346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11498:43:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"11476:65:94"},{"expression":{"id":18372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18348,"name":"svg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18323,"src":"11552:3:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"3c67206d61736b3d2275726c28","id":18353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11614:15:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_073f6ea16f7ccb68c2d82384c98a49ffe08e4d0cca470dd7b597850d3360adf1","typeString":"literal_string \"<g mask=\"url(\""},"value":"<g mask=\"url("},{"id":18354,"name":"fade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18326,"src":"11648:4:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"2922","id":18355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11671:4:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_c4b4594b062b8dfb6eaf7db997d942d04b66dec75ec258222a814ab915492f07","typeString":"literal_string \")\"\""},"value":")\""},{"hexValue":"207374796c653d227472616e73666f726d3a7472616e736c61746528373270782c313839707829223e3c7265637420783d222d313670782220793d222d31367078222077696474683d22313830707822206865696768743d223138307078222066696c6c3d226e6f6e6522202f3e3c7061746820643d22","id":18356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11694:161:94","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":18357,"name":"curve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18341,"src":"11874:5:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"22207374726f6b653d227267626128302c302c302c302e332922207374726f6b652d77696474683d2233327078222066696c6c3d226e6f6e6522207374726f6b652d6c696e656361703d22726f756e6422202f3e","id":18358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11898:86:94","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":18359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12003:19:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_5d5b8544d6c3a0963cab785f7bfd6c7e8729a866fc2c71a9b519c74a2851ad8e","typeString":"literal_string \"</g><g mask=\"url(\""},"value":"</g><g mask=\"url("},{"id":18360,"name":"fade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18326,"src":"12041:4:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"2922","id":18361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12064:4:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_c4b4594b062b8dfb6eaf7db997d942d04b66dec75ec258222a814ab915492f07","typeString":"literal_string \")\"\""},"value":")\""},{"hexValue":"207374796c653d227472616e73666f726d3a7472616e736c61746528373270782c313839707829223e","id":18362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12087:43:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e24499475377ebfea88a8b66ad4852ff14fea8d70bdbc3a7eceb1a729240226","typeString":"literal_string \" style=\"transform:translate(72px,189px)\">\""},"value":" style=\"transform:translate(72px,189px)\">"},{"hexValue":"3c7265637420783d222d313670782220793d222d31367078222077696474683d22313830707822206865696768743d223138307078222066696c6c3d226e6f6e6522202f3e","id":18363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12149:71:94","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":18364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12239:11:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_8435fbe25d8e10dc1b7fa802b6ce492013481bf38ccb57fac98cd4034d9fca4a","typeString":"literal_string \"<path d=\"\""},"value":"<path d=\""},{"id":18365,"name":"curve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18341,"src":"12269:5:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"22207374726f6b653d2272676261283235352c3235352c3235352c3129222066696c6c3d226e6f6e6522207374726f6b652d6c696e656361703d22726f756e6422202f3e3c2f673e","id":18366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12293:74:94","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":18368,"name":"overRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18320,"src":"12409:9:94","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int8","typeString":"int8"}],"id":18367,"name":"generateSVGCurveCircle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18560,"src":"12386:22:94","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int8_$returns$_t_string_memory_ptr_$","typeString":"function (int8) pure returns (string memory)"}},"id":18369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12386:33:94","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":18351,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"11579:3:94","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":18352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"11579:16:94","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":18370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11579:855:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":18350,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11558:6:94","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":18349,"name":"string","nodeType":"ElementaryTypeName","src":"11558:6:94","typeDescriptions":{}}},"id":18371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11558:887:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"11552:893:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18373,"nodeType":"ExpressionStatement","src":"11552:893:94"}]},"id":18375,"implemented":true,"kind":"function","modifiers":[],"name":"generageSvgCurve","nodeType":"FunctionDefinition","parameters":{"id":18321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18314,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":18375,"src":"11220:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":18313,"name":"int24","nodeType":"ElementaryTypeName","src":"11220:5:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":18316,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":18375,"src":"11246:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":18315,"name":"int24","nodeType":"ElementaryTypeName","src":"11246:5:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":18318,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":18375,"src":"11272:17:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":18317,"name":"int24","nodeType":"ElementaryTypeName","src":"11272:5:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":18320,"mutability":"mutable","name":"overRange","nodeType":"VariableDeclaration","scope":18375,"src":"11300:14:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":18319,"name":"int8","nodeType":"ElementaryTypeName","src":"11300:4:94","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"11209:112:94"},"returnParameters":{"id":18324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18323,"mutability":"mutable","name":"svg","nodeType":"VariableDeclaration","scope":18375,"src":"11344:17:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18322,"name":"string","nodeType":"ElementaryTypeName","src":"11344:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"11343:19:94"},"scope":18920,"src":"11184:1269:94","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":18463,"nodeType":"Block","src":"12610:601:94","statements":[{"assignments":[18387],"declarations":[{"constant":false,"id":18387,"mutability":"mutable","name":"tickRange","nodeType":"VariableDeclaration","scope":18463,"src":"12621:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":18386,"name":"int24","nodeType":"ElementaryTypeName","src":"12621:5:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":18394,"initialValue":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18388,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18379,"src":"12640:9:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":18389,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18377,"src":"12652:9:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"12640:21:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":18391,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12639:23:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":18392,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18381,"src":"12665:11:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"12639:37:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"12621:55:94"},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18395,"name":"tickRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18387,"src":"12691:9:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"34","id":18396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12704:1:94","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12691:14:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18403,"name":"tickRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18387,"src":"12758:9:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"38","id":18404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12771:1:94","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12758:14:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18411,"name":"tickRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18387,"src":"12825:9:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"3136","id":18412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12838:2:94","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12825:15:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18419,"name":"tickRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18387,"src":"12893:9:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"3332","id":18420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12906:2:94","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12893:15:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18427,"name":"tickRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18387,"src":"12961:9:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"3634","id":18428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12974:2:94","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12961:15:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18435,"name":"tickRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18387,"src":"13029:9:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"313238","id":18436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13042:3:94","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"13029:16:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18443,"name":"tickRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18387,"src":"13098:9:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"323536","id":18444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13111:3:94","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"13098:16:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":18455,"nodeType":"Block","src":"13163:41:94","statements":[{"expression":{"id":18453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18451,"name":"curve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18384,"src":"13178:5:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18452,"name":"curve8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18015,"src":"13186:6:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"13178:14:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18454,"nodeType":"ExpressionStatement","src":"13178:14:94"}]},"id":18456,"nodeType":"IfStatement","src":"13094:110:94","trueBody":{"id":18450,"nodeType":"Block","src":"13116:41:94","statements":[{"expression":{"id":18448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18446,"name":"curve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18384,"src":"13131:5:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18447,"name":"curve7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18012,"src":"13139:6:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"13131:14:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18449,"nodeType":"ExpressionStatement","src":"13131:14:94"}]}},"id":18457,"nodeType":"IfStatement","src":"13025:179:94","trueBody":{"id":18442,"nodeType":"Block","src":"13047:41:94","statements":[{"expression":{"id":18440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18438,"name":"curve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18384,"src":"13062:5:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18439,"name":"curve6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18009,"src":"13070:6:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"13062:14:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18441,"nodeType":"ExpressionStatement","src":"13062:14:94"}]}},"id":18458,"nodeType":"IfStatement","src":"12957:247:94","trueBody":{"id":18434,"nodeType":"Block","src":"12978:41:94","statements":[{"expression":{"id":18432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18430,"name":"curve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18384,"src":"12993:5:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18431,"name":"curve5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18006,"src":"13001:6:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"12993:14:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18433,"nodeType":"ExpressionStatement","src":"12993:14:94"}]}},"id":18459,"nodeType":"IfStatement","src":"12889:315:94","trueBody":{"id":18426,"nodeType":"Block","src":"12910:41:94","statements":[{"expression":{"id":18424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18422,"name":"curve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18384,"src":"12925:5:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18423,"name":"curve4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18003,"src":"12933:6:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"12925:14:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18425,"nodeType":"ExpressionStatement","src":"12925:14:94"}]}},"id":18460,"nodeType":"IfStatement","src":"12821:383:94","trueBody":{"id":18418,"nodeType":"Block","src":"12842:41:94","statements":[{"expression":{"id":18416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18414,"name":"curve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18384,"src":"12857:5:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18415,"name":"curve3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18000,"src":"12865:6:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"12857:14:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18417,"nodeType":"ExpressionStatement","src":"12857:14:94"}]}},"id":18461,"nodeType":"IfStatement","src":"12754:450:94","trueBody":{"id":18410,"nodeType":"Block","src":"12774:41:94","statements":[{"expression":{"id":18408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18406,"name":"curve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18384,"src":"12789:5:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18407,"name":"curve2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"12797:6:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"12789:14:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18409,"nodeType":"ExpressionStatement","src":"12789:14:94"}]}},"id":18462,"nodeType":"IfStatement","src":"12687:517:94","trueBody":{"id":18402,"nodeType":"Block","src":"12707:41:94","statements":[{"expression":{"id":18400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18398,"name":"curve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18384,"src":"12722:5:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18399,"name":"curve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17994,"src":"12730:6:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"12722:14:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18401,"nodeType":"ExpressionStatement","src":"12722:14:94"}]}}]},"id":18464,"implemented":true,"kind":"function","modifiers":[],"name":"getCurve","nodeType":"FunctionDefinition","parameters":{"id":18382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18377,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":18464,"src":"12489:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":18376,"name":"int24","nodeType":"ElementaryTypeName","src":"12489:5:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":18379,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":18464,"src":"12515:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":18378,"name":"int24","nodeType":"ElementaryTypeName","src":"12515:5:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":18381,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":18464,"src":"12541:17:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":18380,"name":"int24","nodeType":"ElementaryTypeName","src":"12541:5:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"12478:87:94"},"returnParameters":{"id":18385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18384,"mutability":"mutable","name":"curve","nodeType":"VariableDeclaration","scope":18464,"src":"12589:19:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18383,"name":"string","nodeType":"ElementaryTypeName","src":"12589:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"12588:21:94"},"scope":18920,"src":"12461:750:94","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":18559,"nodeType":"Block","src":"13309:1268:94","statements":[{"assignments":[18472],"declarations":[{"constant":false,"id":18472,"mutability":"mutable","name":"curvex1","nodeType":"VariableDeclaration","scope":18559,"src":"13320:21:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18471,"name":"string","nodeType":"ElementaryTypeName","src":"13320:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":18474,"initialValue":{"hexValue":"3733","id":18473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13344:4:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_b2219b801710730437d0358146c829b62297a059eceaa0b40b27aea2daecf595","typeString":"literal_string \"73\""},"value":"73"},"nodeType":"VariableDeclarationStatement","src":"13320:28:94"},{"assignments":[18476],"declarations":[{"constant":false,"id":18476,"mutability":"mutable","name":"curvey1","nodeType":"VariableDeclaration","scope":18559,"src":"13359:21:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18475,"name":"string","nodeType":"ElementaryTypeName","src":"13359:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":18478,"initialValue":{"hexValue":"313930","id":18477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13383:5:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_e056e162080d5da78663154decfd308f0383b8d138d504e8a4cde93086ac2fef","typeString":"literal_string \"190\""},"value":"190"},"nodeType":"VariableDeclarationStatement","src":"13359:29:94"},{"assignments":[18480],"declarations":[{"constant":false,"id":18480,"mutability":"mutable","name":"curvex2","nodeType":"VariableDeclaration","scope":18559,"src":"13399:21:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18479,"name":"string","nodeType":"ElementaryTypeName","src":"13399:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":18482,"initialValue":{"hexValue":"323137","id":18481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13423:5:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_aaf3f8a03bf981e82bfa1e6e69fda395c89cda31e9dff74038d977f68cce1756","typeString":"literal_string \"217\""},"value":"217"},"nodeType":"VariableDeclarationStatement","src":"13399:29:94"},{"assignments":[18484],"declarations":[{"constant":false,"id":18484,"mutability":"mutable","name":"curvey2","nodeType":"VariableDeclaration","scope":18559,"src":"13439:21:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18483,"name":"string","nodeType":"ElementaryTypeName","src":"13439:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":18486,"initialValue":{"hexValue":"333334","id":18485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13463:5:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_f9bbcd66573bf3c1f4cc184d2152e0dd1704bf0095e444b842e9e57042cbafba","typeString":"literal_string \"334\""},"value":"334"},"nodeType":"VariableDeclarationStatement","src":"13439:29:94"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":18494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int8","typeString":"int8"},"id":18489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18487,"name":"overRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18466,"src":"13483:9:94","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":18488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13496:1:94","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13483:14:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_int8","typeString":"int8"},"id":18493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18490,"name":"overRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18466,"src":"13501:9:94","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":18492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"13514:2:94","subExpression":{"hexValue":"31","id":18491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13515:1:94","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":"13501:15:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13483:33:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":18557,"nodeType":"Block","src":"14098:472:94","statements":[{"expression":{"id":18555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18538,"name":"svg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18469,"src":"14113:3:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"3c636972636c652063783d22","id":18543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14183:14:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_0cfb64137c1b932845c13a5b9099e70707981c3c97fcffefd9a9dc3cb4822b2a","typeString":"literal_string \"<circle cx=\"\""},"value":"<circle cx=\""},{"id":18544,"name":"curvex1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18472,"src":"14220:7:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"7078222063793d22","id":18545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14250:10:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_04df0b57098eaa746dd457aea178f76fd2ba5ac64e69b33f7dbdf88159fd9066","typeString":"literal_string \"px\" cy=\"\""},"value":"px\" cy=\""},{"id":18546,"name":"curvey1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18476,"src":"14283:7:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"70782220723d22347078222066696c6c3d22776869746522202f3e","id":18547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14313:29:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_9688ea6eac52256e23e98de0d885a67cbdda4b4d8cf2999e296a56007ffef501","typeString":"literal_string \"px\" r=\"4px\" fill=\"white\" />\""},"value":"px\" r=\"4px\" fill=\"white\" />"},{"hexValue":"3c636972636c652063783d22","id":18548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14365:14:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_0cfb64137c1b932845c13a5b9099e70707981c3c97fcffefd9a9dc3cb4822b2a","typeString":"literal_string \"<circle cx=\"\""},"value":"<circle cx=\""},{"id":18549,"name":"curvex2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18480,"src":"14402:7:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"7078222063793d22","id":18550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14432:10:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_04df0b57098eaa746dd457aea178f76fd2ba5ac64e69b33f7dbdf88159fd9066","typeString":"literal_string \"px\" cy=\"\""},"value":"px\" cy=\""},{"id":18551,"name":"curvey2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18484,"src":"14465:7:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"70782220723d22347078222066696c6c3d22776869746522202f3e","id":18552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14495:29:94","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":18541,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14144:3:94","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":18542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"14144:16:94","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":18553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14144:399:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":18540,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14119:6:94","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":18539,"name":"string","nodeType":"ElementaryTypeName","src":"14119:6:94","typeDescriptions":{}}},"id":18554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14119:439:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"14113:445:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18556,"nodeType":"ExpressionStatement","src":"14113:445:94"}]},"id":18558,"nodeType":"IfStatement","src":"13479:1091:94","trueBody":{"id":18537,"nodeType":"Block","src":"13518:574:94","statements":[{"expression":{"id":18535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18495,"name":"svg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18469,"src":"13533:3:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"3c636972636c652063783d22","id":18500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13603:14:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_0cfb64137c1b932845c13a5b9099e70707981c3c97fcffefd9a9dc3cb4822b2a","typeString":"literal_string \"<circle cx=\"\""},"value":"<circle cx=\""},{"condition":{"commonType":{"typeIdentifier":"t_int8","typeString":"int8"},"id":18504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18501,"name":"overRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18466,"src":"13640:9:94","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":18503,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"13653:2:94","subExpression":{"hexValue":"31","id":18502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13654:1:94","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":"13640:15:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":18506,"name":"curvex2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18480,"src":"13668:7:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13640:35:94","trueExpression":{"id":18505,"name":"curvex1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18472,"src":"13658:7:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"7078222063793d22","id":18508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13698:10:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_04df0b57098eaa746dd457aea178f76fd2ba5ac64e69b33f7dbdf88159fd9066","typeString":"literal_string \"px\" cy=\"\""},"value":"px\" cy=\""},{"condition":{"commonType":{"typeIdentifier":"t_int8","typeString":"int8"},"id":18512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18509,"name":"overRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18466,"src":"13731:9:94","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":18511,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"13744:2:94","subExpression":{"hexValue":"31","id":18510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13745:1:94","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":"13731:15:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":18514,"name":"curvey2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18484,"src":"13759:7:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13731:35:94","trueExpression":{"id":18513,"name":"curvey1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18476,"src":"13749:7:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"70782220723d22347078222066696c6c3d22776869746522202f3e3c636972636c652063783d22","id":18516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13789:41:94","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":18520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18517,"name":"overRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18466,"src":"13853:9:94","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":18519,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"13866:2:94","subExpression":{"hexValue":"31","id":18518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13867:1:94","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":"13853:15:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":18522,"name":"curvex2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18480,"src":"13881:7:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13853:35:94","trueExpression":{"id":18521,"name":"curvex1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18472,"src":"13871:7:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"7078222063793d22","id":18524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13911:10:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_04df0b57098eaa746dd457aea178f76fd2ba5ac64e69b33f7dbdf88159fd9066","typeString":"literal_string \"px\" cy=\"\""},"value":"px\" cy=\""},{"condition":{"commonType":{"typeIdentifier":"t_int8","typeString":"int8"},"id":18528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18525,"name":"overRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18466,"src":"13944:9:94","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":18527,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"13957:2:94","subExpression":{"hexValue":"31","id":18526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13958:1:94","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":"13944:15:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":18530,"name":"curvey2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18484,"src":"13972:7:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13944:35:94","trueExpression":{"id":18529,"name":"curvey1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18476,"src":"13962:7:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"70782220723d2232347078222066696c6c3d226e6f6e6522207374726f6b653d22776869746522202f3e","id":18532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14002:44:94","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":18498,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13564:3:94","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":18499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"13564:16:94","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":18533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13564:501:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":18497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13539:6:94","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":18496,"name":"string","nodeType":"ElementaryTypeName","src":"13539:6:94","typeDescriptions":{}}},"id":18534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13539:541:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"13533:547:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18536,"nodeType":"ExpressionStatement","src":"13533:547:94"}]}}]},"id":18560,"implemented":true,"kind":"function","modifiers":[],"name":"generateSVGCurveCircle","nodeType":"FunctionDefinition","parameters":{"id":18467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18466,"mutability":"mutable","name":"overRange","nodeType":"VariableDeclaration","scope":18560,"src":"13251:14:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":18465,"name":"int8","nodeType":"ElementaryTypeName","src":"13251:4:94","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"13250:16:94"},"returnParameters":{"id":18470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18469,"mutability":"mutable","name":"svg","nodeType":"VariableDeclaration","scope":18560,"src":"13290:17:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18468,"name":"string","nodeType":"ElementaryTypeName","src":"13290:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"13289:19:94"},"scope":18920,"src":"13219:1358:94","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":18689,"nodeType":"Block","src":"14766:2412:94","statements":[{"assignments":[18572],"declarations":[{"constant":false,"id":18572,"mutability":"mutable","name":"tickLowerStr","nodeType":"VariableDeclaration","scope":18689,"src":"14777:26:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18571,"name":"string","nodeType":"ElementaryTypeName","src":"14777:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":18576,"initialValue":{"arguments":[{"id":18574,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18564,"src":"14819:9:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":18573,"name":"tickToString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18732,"src":"14806:12:94","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_string_memory_ptr_$","typeString":"function (int24) pure returns (string memory)"}},"id":18575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14806:23:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"14777:52:94"},{"assignments":[18578],"declarations":[{"constant":false,"id":18578,"mutability":"mutable","name":"tickUpperStr","nodeType":"VariableDeclaration","scope":18689,"src":"14840:26:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18577,"name":"string","nodeType":"ElementaryTypeName","src":"14840:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":18582,"initialValue":{"arguments":[{"id":18580,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18566,"src":"14882:9:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":18579,"name":"tickToString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18732,"src":"14869:12:94","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_string_memory_ptr_$","typeString":"function (int24) pure returns (string memory)"}},"id":18581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14869:23:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"14840:52:94"},{"assignments":[18584],"declarations":[{"constant":false,"id":18584,"mutability":"mutable","name":"str1length","nodeType":"VariableDeclaration","scope":18689,"src":"14903:18:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18583,"name":"uint256","nodeType":"ElementaryTypeName","src":"14903:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18592,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":18587,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18562,"src":"14930:7:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":18586,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14924:5:94","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":18585,"name":"bytes","nodeType":"ElementaryTypeName","src":"14924:5:94","typeDescriptions":{}}},"id":18588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14924:14:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":18589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"14924:21:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"34","id":18590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14948:1:94","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"14924:25:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14903:46:94"},{"assignments":[18594],"declarations":[{"constant":false,"id":18594,"mutability":"mutable","name":"str2length","nodeType":"VariableDeclaration","scope":18689,"src":"14960:18:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18593,"name":"uint256","nodeType":"ElementaryTypeName","src":"14960:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18602,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":18597,"name":"tickLowerStr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18572,"src":"14987:12:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":18596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14981:5:94","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":18595,"name":"bytes","nodeType":"ElementaryTypeName","src":"14981:5:94","typeDescriptions":{}}},"id":18598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14981:19:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":18599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"14981:26:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3130","id":18600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15010:2:94","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"14981:31:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14960:52:94"},{"assignments":[18604],"declarations":[{"constant":false,"id":18604,"mutability":"mutable","name":"str3length","nodeType":"VariableDeclaration","scope":18689,"src":"15023:18:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18603,"name":"uint256","nodeType":"ElementaryTypeName","src":"15023:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18612,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":18607,"name":"tickUpperStr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18578,"src":"15050:12:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":18606,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15044:5:94","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":18605,"name":"bytes","nodeType":"ElementaryTypeName","src":"15044:5:94","typeDescriptions":{}}},"id":18608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15044:19:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":18609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"15044:26:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3130","id":18610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15073:2:94","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"15044:31:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15023:52:94"},{"assignments":[18614,18616],"declarations":[{"constant":false,"id":18614,"mutability":"mutable","name":"xCoord","nodeType":"VariableDeclaration","scope":18689,"src":"15087:20:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18613,"name":"string","nodeType":"ElementaryTypeName","src":"15087:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18616,"mutability":"mutable","name":"yCoord","nodeType":"VariableDeclaration","scope":18689,"src":"15109:20:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18615,"name":"string","nodeType":"ElementaryTypeName","src":"15109:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":18621,"initialValue":{"arguments":[{"id":18618,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18564,"src":"15147:9:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":18619,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18566,"src":"15158:9:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"id":18617,"name":"rangeLocation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18843,"src":"15133:13:94","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":18620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15133:35:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_string_memory_ptr_$_t_string_memory_ptr_$","typeString":"tuple(string memory,string memory)"}},"nodeType":"VariableDeclarationStatement","src":"15086:82:94"},{"expression":{"id":18687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18622,"name":"svg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18569,"src":"15179:3:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"203c67207374796c653d227472616e73666f726d3a7472616e736c61746528323970782c20333834707829223e","id":18627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15241:47:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_a1d35662f193c8dca60ea626415bf453b6eb6f19f995eb4e725506bddb1c9b3c","typeString":"literal_string \" <g style=\"transform:translate(29px, 384px)\">\""},"value":" <g style=\"transform:translate(29px, 384px)\">"},{"hexValue":"3c726563742077696474683d22","id":18628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15307:15:94","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":18636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"37","id":18631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15349:1:94","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":18634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18632,"name":"str1length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18584,"src":"15354:10:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"34","id":18633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15367:1:94","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"15354:14:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":18635,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15353:16:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15349:20:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18630,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15341:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":18629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15341:7:94","typeDescriptions":{}}},"id":18637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15341:29:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":33663,"src":"15341:38:94","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":18639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15341:40:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"707822206865696768743d2232367078222072783d22387078222072793d22387078222066696c6c3d227267626128302c302c302c302e362922202f3e","id":18640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15400:63:94","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":18641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15482:145:94","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":18642,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18562,"src":"15646:7:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"3c2f746578743e3c2f673e","id":18643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15672:13:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_0b7427e2f769aaaa13bde5b715b09255dc5398714a59a798afc7999c8e6ae7f0","typeString":"literal_string \"</text></g>\""},"value":"</text></g>"},{"hexValue":"203c67207374796c653d227472616e73666f726d3a7472616e736c61746528323970782c20343134707829223e","id":18644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15704:47:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_fab582159965dc3537eef15a4898cfd495cdf6178ad5c39fe4f14de95021bcdd","typeString":"literal_string \" <g style=\"transform:translate(29px, 414px)\">\""},"value":" <g style=\"transform:translate(29px, 414px)\">"},{"hexValue":"3c726563742077696474683d22","id":18645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15770:15:94","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":18653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"37","id":18648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15812:1:94","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":18651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18649,"name":"str2length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18594,"src":"15817:10:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"34","id":18650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15830:1:94","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"15817:14:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":18652,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15816:16:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15812:20:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18647,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15804:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":18646,"name":"uint256","nodeType":"ElementaryTypeName","src":"15804:7:94","typeDescriptions":{}}},"id":18654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15804:29:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":33663,"src":"15804:38:94","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":18656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15804:40:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"707822206865696768743d2232367078222072783d22387078222072793d22387078222066696c6c3d227267626128302c302c302c302e362922202f3e","id":18657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15863:63:94","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":18658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15945:151:94","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":18659,"name":"tickLowerStr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18572,"src":"16115:12:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"3c2f746578743e3c2f673e","id":18660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16146:13:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_0b7427e2f769aaaa13bde5b715b09255dc5398714a59a798afc7999c8e6ae7f0","typeString":"literal_string \"</text></g>\""},"value":"</text></g>"},{"hexValue":"203c67207374796c653d227472616e73666f726d3a7472616e736c61746528323970782c20343434707829223e","id":18661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16178:47:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_220105d546304f5c5e6ab619f93ed0540d9e75da2d2186101f3be7105ff28a8a","typeString":"literal_string \" <g style=\"transform:translate(29px, 444px)\">\""},"value":" <g style=\"transform:translate(29px, 444px)\">"},{"hexValue":"3c726563742077696474683d22","id":18662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16244:15:94","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":18670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"37","id":18665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16286:1:94","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":18668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18666,"name":"str3length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18604,"src":"16291:10:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"34","id":18667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16304:1:94","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"16291:14:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":18669,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16290:16:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16286:20:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18664,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16278:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":18663,"name":"uint256","nodeType":"ElementaryTypeName","src":"16278:7:94","typeDescriptions":{}}},"id":18671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16278:29:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":33663,"src":"16278:38:94","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":18673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16278:40:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"707822206865696768743d2232367078222072783d22387078222072793d22387078222066696c6c3d227267626128302c302c302c302e362922202f3e","id":18674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16337:63:94","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":18675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16419:151:94","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":18676,"name":"tickUpperStr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18578,"src":"16589:12:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"3c2f746578743e3c2f673e3c67207374796c653d227472616e73666f726d3a7472616e736c6174652832323670782c20343333707829223e","id":18677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16620:78:94","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":18678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16717:98:94","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":18679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16834:102:94","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":18680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16955:39:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_2f31b113ee3d3056d0911a5e394047e1383278908d2c52df748865318956703e","typeString":"literal_string \"<circle style=\"transform:translate3d(\""},"value":"<circle style=\"transform:translate3d("},{"id":18681,"name":"xCoord","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18614,"src":"17013:6:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"70782c20","id":18682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17038:6:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_b6aaa2c0b71922b19b9b8b146cc93d2f4e231e6b961d744f30cad118bc857ef8","typeString":"literal_string \"px, \""},"value":"px, "},{"id":18683,"name":"yCoord","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18616,"src":"17063:6:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"70782c2030707829222063783d22307078222063793d223070782220723d22347078222066696c6c3d227768697465222f3e3c2f673e","id":18684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17088:56:94","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":18625,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15206:3:94","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":18626,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"15206:16:94","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":18685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15206:1953:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":18624,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15185:6:94","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":18623,"name":"string","nodeType":"ElementaryTypeName","src":"15185:6:94","typeDescriptions":{}}},"id":18686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15185:1985:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"15179:1991:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18688,"nodeType":"ExpressionStatement","src":"15179:1991:94"}]},"id":18690,"implemented":true,"kind":"function","modifiers":[],"name":"generateSVGPositionDataAndLocationCurve","nodeType":"FunctionDefinition","parameters":{"id":18567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18562,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":18690,"src":"14644:21:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18561,"name":"string","nodeType":"ElementaryTypeName","src":"14644:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18564,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":18690,"src":"14676:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":18563,"name":"int24","nodeType":"ElementaryTypeName","src":"14676:5:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":18566,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":18690,"src":"14702:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":18565,"name":"int24","nodeType":"ElementaryTypeName","src":"14702:5:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"14633:91:94"},"returnParameters":{"id":18570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18569,"mutability":"mutable","name":"svg","nodeType":"VariableDeclaration","scope":18690,"src":"14747:17:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18568,"name":"string","nodeType":"ElementaryTypeName","src":"14747:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"14746:19:94"},"scope":18920,"src":"14585:2593:94","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":18731,"nodeType":"Block","src":"17257:208:94","statements":[{"assignments":[18698],"declarations":[{"constant":false,"id":18698,"mutability":"mutable","name":"sign","nodeType":"VariableDeclaration","scope":18731,"src":"17268:18:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18697,"name":"string","nodeType":"ElementaryTypeName","src":"17268:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":18700,"initialValue":{"hexValue":"","id":18699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17289:2:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"nodeType":"VariableDeclarationStatement","src":"17268:23:94"},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18701,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18692,"src":"17306:4:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":18702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17313:1:94","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17306:8:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18716,"nodeType":"IfStatement","src":"17302:82:94","trueBody":{"id":18715,"nodeType":"Block","src":"17316:68:94","statements":[{"expression":{"id":18709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18704,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18692,"src":"17331:4:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18705,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18692,"src":"17338:4:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":18707,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"17345:2:94","subExpression":{"hexValue":"31","id":18706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17346:1:94","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":"17338:9:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"17331:16:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":18710,"nodeType":"ExpressionStatement","src":"17331:16:94"},{"expression":{"id":18713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18711,"name":"sign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18698,"src":"17362:4:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"2d","id":18712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17369:3:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"src":"17362:10:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18714,"nodeType":"ExpressionStatement","src":"17362:10:94"}]}},{"expression":{"arguments":[{"arguments":[{"id":18721,"name":"sign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18698,"src":"17425:4:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":18724,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18692,"src":"17439:4:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":18723,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17431:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":18722,"name":"uint256","nodeType":"ElementaryTypeName","src":"17431:7:94","typeDescriptions":{}}},"id":18725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17431:13:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":33663,"src":"17431:22:94","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":18727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17431:24:94","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":18719,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"17408:3:94","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":18720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"17408:16:94","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":18728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17408:48:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":18718,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17401:6:94","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":18717,"name":"string","nodeType":"ElementaryTypeName","src":"17401:6:94","typeDescriptions":{}}},"id":18729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17401:56:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":18696,"id":18730,"nodeType":"Return","src":"17394:63:94"}]},"id":18732,"implemented":true,"kind":"function","modifiers":[],"name":"tickToString","nodeType":"FunctionDefinition","parameters":{"id":18693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18692,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":18732,"src":"17208:10:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":18691,"name":"int24","nodeType":"ElementaryTypeName","src":"17208:5:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"17207:12:94"},"returnParameters":{"id":18696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18695,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18732,"src":"17242:13:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18694,"name":"string","nodeType":"ElementaryTypeName","src":"17242:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17241:15:94"},"scope":18920,"src":"17186:279:94","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":18842,"nodeType":"Block","src":"17583:794:94","statements":[{"assignments":[18744],"declarations":[{"constant":false,"id":18744,"mutability":"mutable","name":"midPoint","nodeType":"VariableDeclaration","scope":18842,"src":"17594:14:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":18743,"name":"int24","nodeType":"ElementaryTypeName","src":"17594:5:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":18751,"initialValue":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18745,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18734,"src":"17612:9:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":18746,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18736,"src":"17624:9:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"17612:21:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":18748,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17611:23:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":18749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17637:1:94","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"17611:27:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"17594:44:94"},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18752,"name":"midPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18744,"src":"17653:8:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":18754,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"17664:8:94","subExpression":{"hexValue":"3132355f303030","id":18753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17665:7:94","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":"17653:19:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18761,"name":"midPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18744,"src":"17728:8:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":18763,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"17739:7:94","subExpression":{"hexValue":"37355f303030","id":18762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17740:6:94","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":"17728:18:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18770,"name":"midPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18744,"src":"17805:8:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":18772,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"17816:7:94","subExpression":{"hexValue":"32355f303030","id":18771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17817:6:94","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":"17805:18:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18779,"name":"midPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18744,"src":"17883:8:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":18781,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"17894:6:94","subExpression":{"hexValue":"355f303030","id":18780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17895:5:94","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":"17883:17:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18788,"name":"midPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18744,"src":"17958:8:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":18789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17969:1:94","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17958:12:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18796,"name":"midPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18744,"src":"18028:8:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"355f303030","id":18797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18039:5:94","typeDescriptions":{"typeIdentifier":"t_rational_5000_by_1","typeString":"int_const 5000"},"value":"5_000"},"src":"18028:16:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18804,"name":"midPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18744,"src":"18102:8:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32355f303030","id":18805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18113:6:94","typeDescriptions":{"typeIdentifier":"t_rational_25000_by_1","typeString":"int_const 25000"},"value":"25_000"},"src":"18102:17:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18812,"name":"midPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18744,"src":"18177:8:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"37355f303030","id":18813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18188:6:94","typeDescriptions":{"typeIdentifier":"t_rational_75000_by_1","typeString":"int_const 75000"},"value":"75_000"},"src":"18177:17:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":18822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18820,"name":"midPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18744,"src":"18252:8:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3132355f303030","id":18821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18263:7:94","typeDescriptions":{"typeIdentifier":"t_rational_125000_by_1","typeString":"int_const 125000"},"value":"125_000"},"src":"18252:18:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":18832,"nodeType":"Block","src":"18324:46:94","statements":[{"expression":{"components":[{"hexValue":"3234","id":18828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18347:4:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_6585423cb6456b1d4957f6454d2f004f0c4f58d53a00082412d5c2ef4b1b31fd","typeString":"literal_string \"24\""},"value":"24"},{"hexValue":"3237","id":18829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18353:4:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_58a280f74f57bf051c40f060139dc747e015be52f68c57e2c4ab2e4bd4146f43","typeString":"literal_string \"27\""},"value":"27"}],"id":18830,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"18346:12:94","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_6585423cb6456b1d4957f6454d2f004f0c4f58d53a00082412d5c2ef4b1b31fd_$_t_stringliteral_58a280f74f57bf051c40f060139dc747e015be52f68c57e2c4ab2e4bd4146f43_$","typeString":"tuple(literal_string \"24\",literal_string \"27\")"}},"functionReturnParameters":18742,"id":18831,"nodeType":"Return","src":"18339:19:94"}]},"id":18833,"nodeType":"IfStatement","src":"18248:122:94","trueBody":{"id":18827,"nodeType":"Block","src":"18272:46:94","statements":[{"expression":{"components":[{"hexValue":"3231","id":18823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18295:4:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_f4c2b5de886427473655d4c904c743576dc2d53249b7535d96c06cc97ae7216b","typeString":"literal_string \"21\""},"value":"21"},{"hexValue":"3237","id":18824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18301:4:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_58a280f74f57bf051c40f060139dc747e015be52f68c57e2c4ab2e4bd4146f43","typeString":"literal_string \"27\""},"value":"27"}],"id":18825,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"18294:12:94","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_f4c2b5de886427473655d4c904c743576dc2d53249b7535d96c06cc97ae7216b_$_t_stringliteral_58a280f74f57bf051c40f060139dc747e015be52f68c57e2c4ab2e4bd4146f43_$","typeString":"tuple(literal_string \"21\",literal_string \"27\")"}},"functionReturnParameters":18742,"id":18826,"nodeType":"Return","src":"18287:19:94"}]}},"id":18834,"nodeType":"IfStatement","src":"18173:197:94","trueBody":{"id":18819,"nodeType":"Block","src":"18196:46:94","statements":[{"expression":{"components":[{"hexValue":"3138","id":18815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18219:4:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_8fef2229291b68be841adf029e58b87f39ba144b2d3b0af1760243d0a9bc6a1c","typeString":"literal_string \"18\""},"value":"18"},{"hexValue":"3236","id":18816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18225:4:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_9cce9eb03c9f29c6481fca9f0f942b15bef0bbbc47fda0ddb44df157019835d9","typeString":"literal_string \"26\""},"value":"26"}],"id":18817,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"18218:12:94","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_8fef2229291b68be841adf029e58b87f39ba144b2d3b0af1760243d0a9bc6a1c_$_t_stringliteral_9cce9eb03c9f29c6481fca9f0f942b15bef0bbbc47fda0ddb44df157019835d9_$","typeString":"tuple(literal_string \"18\",literal_string \"26\")"}},"functionReturnParameters":18742,"id":18818,"nodeType":"Return","src":"18211:19:94"}]}},"id":18835,"nodeType":"IfStatement","src":"18098:272:94","trueBody":{"id":18811,"nodeType":"Block","src":"18121:46:94","statements":[{"expression":{"components":[{"hexValue":"3135","id":18807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18144:4:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_1d3be50b2bb17407dd170f1d5da128d1def30c6b1598d6a629e79b4775265526","typeString":"literal_string \"15\""},"value":"15"},{"hexValue":"3235","id":18808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18150:4:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_81e080ffc23e8b8d44dd829bc823229e92b893eb1d8f624419d3f5682eb97fc3","typeString":"literal_string \"25\""},"value":"25"}],"id":18809,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"18143:12:94","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_1d3be50b2bb17407dd170f1d5da128d1def30c6b1598d6a629e79b4775265526_$_t_stringliteral_81e080ffc23e8b8d44dd829bc823229e92b893eb1d8f624419d3f5682eb97fc3_$","typeString":"tuple(literal_string \"15\",literal_string \"25\")"}},"functionReturnParameters":18742,"id":18810,"nodeType":"Return","src":"18136:19:94"}]}},"id":18836,"nodeType":"IfStatement","src":"18024:346:94","trueBody":{"id":18803,"nodeType":"Block","src":"18046:46:94","statements":[{"expression":{"components":[{"hexValue":"3133","id":18799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18069:4:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_789bcdf275fa270780a52ae3b79bb1ce0fda7e0aaad87b57b74bb99ac290714a","typeString":"literal_string \"13\""},"value":"13"},{"hexValue":"3233","id":18800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18075:4:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_1572b593c53d839d80004aa4b8c51211864104f06ace9e22be9c4365b50655ea","typeString":"literal_string \"23\""},"value":"23"}],"id":18801,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"18068:12:94","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_789bcdf275fa270780a52ae3b79bb1ce0fda7e0aaad87b57b74bb99ac290714a_$_t_stringliteral_1572b593c53d839d80004aa4b8c51211864104f06ace9e22be9c4365b50655ea_$","typeString":"tuple(literal_string \"13\",literal_string \"23\")"}},"functionReturnParameters":18742,"id":18802,"nodeType":"Return","src":"18061:19:94"}]}},"id":18837,"nodeType":"IfStatement","src":"17954:416:94","trueBody":{"id":18795,"nodeType":"Block","src":"17972:46:94","statements":[{"expression":{"components":[{"hexValue":"3131","id":18791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17995:4:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_7880aec93413f117ef14bd4e6d130875ab2c7d7d55a064fac3c2f7bd51516380","typeString":"literal_string \"11\""},"value":"11"},{"hexValue":"3231","id":18792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18001:4:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_f4c2b5de886427473655d4c904c743576dc2d53249b7535d96c06cc97ae7216b","typeString":"literal_string \"21\""},"value":"21"}],"id":18793,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17994:12:94","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_7880aec93413f117ef14bd4e6d130875ab2c7d7d55a064fac3c2f7bd51516380_$_t_stringliteral_f4c2b5de886427473655d4c904c743576dc2d53249b7535d96c06cc97ae7216b_$","typeString":"tuple(literal_string \"11\",literal_string \"21\")"}},"functionReturnParameters":18742,"id":18794,"nodeType":"Return","src":"17987:19:94"}]}},"id":18838,"nodeType":"IfStatement","src":"17879:491:94","trueBody":{"id":18787,"nodeType":"Block","src":"17902:46:94","statements":[{"expression":{"components":[{"hexValue":"3130","id":18783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17925:4:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_1a192fabce13988b84994d4296e6cdc418d55e2f1d7f942188d4040b94fc57ac","typeString":"literal_string \"10\""},"value":"10"},{"hexValue":"3138","id":18784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17931:4:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_8fef2229291b68be841adf029e58b87f39ba144b2d3b0af1760243d0a9bc6a1c","typeString":"literal_string \"18\""},"value":"18"}],"id":18785,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17924:12:94","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_1a192fabce13988b84994d4296e6cdc418d55e2f1d7f942188d4040b94fc57ac_$_t_stringliteral_8fef2229291b68be841adf029e58b87f39ba144b2d3b0af1760243d0a9bc6a1c_$","typeString":"tuple(literal_string \"10\",literal_string \"18\")"}},"functionReturnParameters":18742,"id":18786,"nodeType":"Return","src":"17917:19:94"}]}},"id":18839,"nodeType":"IfStatement","src":"17801:569:94","trueBody":{"id":18778,"nodeType":"Block","src":"17825:48:94","statements":[{"expression":{"components":[{"hexValue":"38","id":18774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17848:3:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10","typeString":"literal_string \"8\""},"value":"8"},{"hexValue":"31342e3235","id":18775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17853:7:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_8fe7b983c83186f2bb4fe7874403b14e48744b4c5f28219cbc58c32323190062","typeString":"literal_string \"14.25\""},"value":"14.25"}],"id":18776,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17847:14:94","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_e4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10_$_t_stringliteral_8fe7b983c83186f2bb4fe7874403b14e48744b4c5f28219cbc58c32323190062_$","typeString":"tuple(literal_string \"8\",literal_string \"14.25\")"}},"functionReturnParameters":18742,"id":18777,"nodeType":"Return","src":"17840:21:94"}]}},"id":18840,"nodeType":"IfStatement","src":"17724:646:94","trueBody":{"id":18769,"nodeType":"Block","src":"17748:47:94","statements":[{"expression":{"components":[{"hexValue":"38","id":18765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17771:3:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10","typeString":"literal_string \"8\""},"value":"8"},{"hexValue":"31302e35","id":18766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17776:6:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_da3d464687fba60756c7debf376611beed660b85b1a8cc9153373d2756ff3096","typeString":"literal_string \"10.5\""},"value":"10.5"}],"id":18767,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17770:13:94","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_e4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10_$_t_stringliteral_da3d464687fba60756c7debf376611beed660b85b1a8cc9153373d2756ff3096_$","typeString":"tuple(literal_string \"8\",literal_string \"10.5\")"}},"functionReturnParameters":18742,"id":18768,"nodeType":"Return","src":"17763:20:94"}]}},"id":18841,"nodeType":"IfStatement","src":"17649:721:94","trueBody":{"id":18760,"nodeType":"Block","src":"17674:44:94","statements":[{"expression":{"components":[{"hexValue":"38","id":18756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17697:3:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10","typeString":"literal_string \"8\""},"value":"8"},{"hexValue":"37","id":18757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17702:3:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_52f1a9b320cab38e5da8a8f97989383aab0a49165fc91c737310e4f7e9821021","typeString":"literal_string \"7\""},"value":"7"}],"id":18758,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17696:10:94","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_e4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10_$_t_stringliteral_52f1a9b320cab38e5da8a8f97989383aab0a49165fc91c737310e4f7e9821021_$","typeString":"tuple(literal_string \"8\",literal_string \"7\")"}},"functionReturnParameters":18742,"id":18759,"nodeType":"Return","src":"17689:17:94"}]}}]},"id":18843,"implemented":true,"kind":"function","modifiers":[],"name":"rangeLocation","nodeType":"FunctionDefinition","parameters":{"id":18737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18734,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":18843,"src":"17496:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":18733,"name":"int24","nodeType":"ElementaryTypeName","src":"17496:5:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":18736,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":18843,"src":"17513:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":18735,"name":"int24","nodeType":"ElementaryTypeName","src":"17513:5:94","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"17495:34:94"},"returnParameters":{"id":18742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18739,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18843,"src":"17553:13:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18738,"name":"string","nodeType":"ElementaryTypeName","src":"17553:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18741,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18843,"src":"17568:13:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18740,"name":"string","nodeType":"ElementaryTypeName","src":"17568:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17552:30:94"},"scope":18920,"src":"17473:904:94","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":18877,"nodeType":"Block","src":"18496:965:94","statements":[{"condition":{"arguments":[{"id":18853,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18845,"src":"18518:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":18854,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18847,"src":"18527:11:94","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":18852,"name":"isRare","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18919,"src":"18511:6:94","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_address_$returns$_t_bool_$","typeString":"function (uint256,address) pure returns (bool)"}},"id":18855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18511:28:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":18875,"nodeType":"Block","src":"19419:35:94","statements":[{"expression":{"id":18873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18871,"name":"svg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18850,"src":"19434:3:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"","id":18872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19440:2:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"src":"19434:8:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18874,"nodeType":"ExpressionStatement","src":"19434:8:94"}]},"id":18876,"nodeType":"IfStatement","src":"18507:947:94","trueBody":{"id":18870,"nodeType":"Block","src":"18541:872:94","statements":[{"expression":{"id":18868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18856,"name":"svg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18850,"src":"18556:3:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"3c67207374796c653d227472616e73666f726d3a7472616e736c6174652832323670782c20333932707829223e3c726563742077696474683d223336707822206865696768743d2233367078222072783d22387078222072793d22387078222066696c6c3d226e6f6e6522207374726f6b653d2272676261283235352c3235352c3235352c302e322922202f3e","id":18861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18626:143:94","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":18862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18792:117:94","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":18863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18932:115:94","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":18864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19070:140:94","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":18865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19233:134:94","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":18859,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"18587:3:94","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":18860,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"18587:16:94","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":18866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18587:799:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":18858,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18562:6:94","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":18857,"name":"string","nodeType":"ElementaryTypeName","src":"18562:6:94","typeDescriptions":{}}},"id":18867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18562:839:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"18556:845:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":18869,"nodeType":"ExpressionStatement","src":"18556:845:94"}]}}]},"id":18878,"implemented":true,"kind":"function","modifiers":[],"name":"generateSVGRareSparkle","nodeType":"FunctionDefinition","parameters":{"id":18848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18845,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":18878,"src":"18417:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18844,"name":"uint256","nodeType":"ElementaryTypeName","src":"18417:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18847,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":18878,"src":"18434:19:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18846,"name":"address","nodeType":"ElementaryTypeName","src":"18434:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18416:38:94"},"returnParameters":{"id":18851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18850,"mutability":"mutable","name":"svg","nodeType":"VariableDeclaration","scope":18878,"src":"18477:17:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18849,"name":"string","nodeType":"ElementaryTypeName","src":"18477:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"18476:19:94"},"scope":18920,"src":"18385:1076:94","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":18918,"nodeType":"Block","src":"19552:176:94","statements":[{"assignments":[18888],"declarations":[{"constant":false,"id":18888,"mutability":"mutable","name":"h","nodeType":"VariableDeclaration","scope":18918,"src":"19563:9:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":18887,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19563:7:94","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":18896,"initialValue":{"arguments":[{"arguments":[{"id":18892,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18880,"src":"19602:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":18893,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18882,"src":"19611:11:94","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":18890,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"19585:3:94","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":18891,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"19585:16:94","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":18894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19585:38:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":18889,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"19575:9:94","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":18895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19575:49:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"19563:61:94"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":18899,"name":"h","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18888,"src":"19650:1:94","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":18898,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19642:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":18897,"name":"uint256","nodeType":"ElementaryTypeName","src":"19642:7:94","typeDescriptions":{}}},"id":18900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19642:10:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":18903,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19660:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":18902,"name":"uint256","nodeType":"ElementaryTypeName","src":"19660:7:94","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":18901,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"19655:4:94","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":18904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19655:13:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":18905,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"19655:17:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":18913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":18906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19676:1:94","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":18912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":18909,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18880,"src":"19707:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18907,"name":"BitMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4058,"src":"19680:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BitMath_$4058_$","typeString":"type(library BitMath)"}},"id":18908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mostSignificantBit","nodeType":"MemberAccess","referencedDeclaration":3896,"src":"19680:26:94","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) pure returns (uint8)"}},"id":18910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19680:35:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":18911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19718:1:94","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19680:39:94","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19676:43:94","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":18914,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19675:45:94","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19655:65:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19642:78:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":18886,"id":18917,"nodeType":"Return","src":"19635:85:94"}]},"id":18919,"implemented":true,"kind":"function","modifiers":[],"name":"isRare","nodeType":"FunctionDefinition","parameters":{"id":18883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18880,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":18919,"src":"19485:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18879,"name":"uint256","nodeType":"ElementaryTypeName","src":"19485:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18882,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":18919,"src":"19502:19:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18881,"name":"address","nodeType":"ElementaryTypeName","src":"19502:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19484:38:94"},"returnParameters":{"id":18886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18885,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18919,"src":"19546:4:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18884,"name":"bool","nodeType":"ElementaryTypeName","src":"19546:4:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"19545:6:94"},"scope":18920,"src":"19469:259:94","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":18921,"src":"324:19407:94"}],"src":"46:19687:94"},"id":94},"contracts/elixir-periphery/libraries/OracleLibrary.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/OracleLibrary.sol","exportedSymbols":{"FullMath":[4248],"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"OracleLibrary":[19509],"TickMath":[7567]},"id":19510,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18922,"literals":["solidity",">=","0.5",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"46:31:95"},{"absolutePath":"contracts/elixir-core/libraries/FullMath.sol","file":"../../elixir-core/libraries/FullMath.sol","id":18923,"nodeType":"ImportDirective","scope":19510,"sourceUnit":4249,"src":"81:50:95","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/TickMath.sol","file":"../../elixir-core/libraries/TickMath.sol","id":18924,"nodeType":"ImportDirective","scope":19510,"sourceUnit":7568,"src":"133:50:95","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"../../elixir-core/interfaces/IElixirPool.sol","id":18925,"nodeType":"ImportDirective","scope":19510,"sourceUnit":3274,"src":"185:54:95","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":18926,"nodeType":"StructuredDocumentation","src":"243:96:95","text":"@title Oracle library\n @notice Provides functions to integrate with elixir pool oracle"},"fullyImplemented":true,"id":19509,"linearizedBaseContracts":[19509],"name":"OracleLibrary","nodeType":"ContractDefinition","nodes":[{"body":{"id":19054,"nodeType":"Block","src":"1032:1089:95","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":18941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18939,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18931,"src":"1051:10:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":18940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1065:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1051:15:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4250","id":18942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1068:4:95","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":18938,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1043:7:95","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":18943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1043:30:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18944,"nodeType":"ExpressionStatement","src":"1043:30:95"},{"assignments":[18949],"declarations":[{"constant":false,"id":18949,"mutability":"mutable","name":"secondsAgos","nodeType":"VariableDeclaration","scope":19054,"src":"1086:27:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":18947,"name":"uint32","nodeType":"ElementaryTypeName","src":"1086:6:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":18948,"nodeType":"ArrayTypeName","src":"1086:8:95","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"}],"id":18955,"initialValue":{"arguments":[{"hexValue":"32","id":18953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1129:1:95","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":18952,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1116:12:95","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":18950,"name":"uint32","nodeType":"ElementaryTypeName","src":"1120:6:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":18951,"nodeType":"ArrayTypeName","src":"1120:8:95","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}}},"id":18954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1116:15:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"1086:45:95"},{"expression":{"id":18960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18956,"name":"secondsAgos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18949,"src":"1142:11:95","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":18958,"indexExpression":{"hexValue":"30","id":18957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1154:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1142:14:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18959,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18931,"src":"1159:10:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1142:27:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":18961,"nodeType":"ExpressionStatement","src":"1142:27:95"},{"expression":{"id":18966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18962,"name":"secondsAgos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18949,"src":"1180:11:95","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":18964,"indexExpression":{"hexValue":"31","id":18963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1192:1:95","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1180:14:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":18965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1197:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1180:18:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":18967,"nodeType":"ExpressionStatement","src":"1180:18:95"},{"assignments":[18972,18975,null],"declarations":[{"constant":false,"id":18972,"mutability":"mutable","name":"tickCumulatives","nodeType":"VariableDeclaration","scope":19054,"src":"1212:30:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[]"},"typeName":{"baseType":{"id":18970,"name":"int56","nodeType":"ElementaryTypeName","src":"1212:5:95","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":18971,"nodeType":"ArrayTypeName","src":"1212:7:95","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_storage_ptr","typeString":"int56[]"}},"visibility":"internal"},{"constant":false,"id":18975,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128s","nodeType":"VariableDeclaration","scope":19054,"src":"1244:51:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[]"},"typeName":{"baseType":{"id":18973,"name":"uint160","nodeType":"ElementaryTypeName","src":"1244:7:95","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":18974,"nodeType":"ArrayTypeName","src":"1244:9:95","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"},null],"id":18982,"initialValue":{"arguments":[{"id":18980,"name":"secondsAgos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18949,"src":"1340:11:95","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":18977,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18929,"src":"1326:4:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18976,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1314:11:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":18978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1314:17:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":18979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observe","nodeType":"MemberAccess","referencedDeclaration":3430,"src":"1314:25:95","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_$_t_array$_t_uint192_$dyn_memory_ptr_$","typeString":"function (uint32[] memory) view external returns (int56[] memory,uint160[] memory,uint192[] memory)"}},"id":18981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1314:38:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_int56_$dyn_memory_ptr_$_t_array$_t_uint160_$dyn_memory_ptr_$_t_array$_t_uint192_$dyn_memory_ptr_$","typeString":"tuple(int56[] memory,uint160[] memory,uint192[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"1211:141:95"},{"assignments":[18984],"declarations":[{"constant":false,"id":18984,"mutability":"mutable","name":"tickCumulativesDelta","nodeType":"VariableDeclaration","scope":19054,"src":"1365:26:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":18983,"name":"int56","nodeType":"ElementaryTypeName","src":"1365:5:95","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"id":18992,"initialValue":{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":18991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":18985,"name":"tickCumulatives","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18972,"src":"1394:15:95","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[] memory"}},"id":18987,"indexExpression":{"hexValue":"31","id":18986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1410:1:95","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1394:18:95","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"id":18988,"name":"tickCumulatives","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18972,"src":"1415:15:95","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[] memory"}},"id":18990,"indexExpression":{"hexValue":"30","id":18989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1431:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1415:18:95","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"1394:39:95","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"VariableDeclarationStatement","src":"1365:68:95"},{"assignments":[18994],"declarations":[{"constant":false,"id":18994,"mutability":"mutable","name":"secondsPerLiquidityCumulativesDelta","nodeType":"VariableDeclaration","scope":19054,"src":"1444:43:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":18993,"name":"uint160","nodeType":"ElementaryTypeName","src":"1444:7:95","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":19002,"initialValue":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":19001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":18995,"name":"secondsPerLiquidityCumulativeX128s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18975,"src":"1503:34:95","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"id":18997,"indexExpression":{"hexValue":"31","id":18996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1538:1:95","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1503:37:95","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"id":18998,"name":"secondsPerLiquidityCumulativeX128s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18975,"src":"1543:34:95","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"id":19000,"indexExpression":{"hexValue":"30","id":18999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1578:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1543:37:95","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1503:77:95","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"1444:136:95"},{"expression":{"id":19010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19003,"name":"arithmeticMeanTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18934,"src":"1593:18:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":19008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19006,"name":"tickCumulativesDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18984,"src":"1620:20:95","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":19007,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18931,"src":"1643:10:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1620:33:95","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int56","typeString":"int56"}],"id":19005,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1614:5:95","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":19004,"name":"int24","nodeType":"ElementaryTypeName","src":"1614:5:95","typeDescriptions":{}}},"id":19009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1614:40:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1593:61:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":19011,"nodeType":"ExpressionStatement","src":"1593:61:95"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":19021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":19014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19012,"name":"tickCumulativesDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18984,"src":"1715:20:95","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":19013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1738:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1715:24:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":19019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":19017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19015,"name":"tickCumulativesDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18984,"src":"1744:20:95","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":19016,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18931,"src":"1767:10:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1744:33:95","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":19018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1781:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1744:38:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":19020,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1743:40:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1715:68:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19025,"nodeType":"IfStatement","src":"1711:94:95","trueBody":{"expression":{"id":19023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"1785:20:95","subExpression":{"id":19022,"name":"arithmeticMeanTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18934,"src":"1785:18:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":19024,"nodeType":"ExpressionStatement","src":"1785:20:95"}},{"assignments":[19027],"declarations":[{"constant":false,"id":19027,"mutability":"mutable","name":"secondsAgoX160","nodeType":"VariableDeclaration","scope":19054,"src":"1936:22:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":19026,"name":"uint192","nodeType":"ElementaryTypeName","src":"1936:7:95","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"id":19038,"initialValue":{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":19037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":19030,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18931,"src":"1969:10:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":19029,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1961:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":19028,"name":"uint192","nodeType":"ElementaryTypeName","src":"1961:7:95","typeDescriptions":{}}},"id":19031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1961:19:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"arguments":[{"id":19034,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1988:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":19033,"name":"uint160","nodeType":"ElementaryTypeName","src":"1988:7:95","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":19032,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1983:4:95","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":19035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1983:13:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":19036,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"1983:17:95","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1961:39:95","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"VariableDeclarationStatement","src":"1936:64:95"},{"expression":{"id":19052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19039,"name":"harmonicMeanLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18936,"src":"2011:21:95","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":19050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19042,"name":"secondsAgoX160","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19027,"src":"2043:14:95","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":19048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":19045,"name":"secondsPerLiquidityCumulativesDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18994,"src":"2069:35:95","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":19044,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2061:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":19043,"name":"uint192","nodeType":"ElementaryTypeName","src":"2061:7:95","typeDescriptions":{}}},"id":19046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2061:44:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":19047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2109:2:95","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"2061:50:95","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":19049,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2060:52:95","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"2043:69:95","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint192","typeString":"uint192"}],"id":19041,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2035:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":19040,"name":"uint128","nodeType":"ElementaryTypeName","src":"2035:7:95","typeDescriptions":{}}},"id":19051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2035:78:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2011:102:95","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":19053,"nodeType":"ExpressionStatement","src":"2011:102:95"}]},"documentation":{"id":18927,"nodeType":"StructuredDocumentation","src":"368:496:95","text":"@notice Calculates time-weighted means of tick and liquidity for a given Elixir 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":19055,"implemented":true,"kind":"function","modifiers":[],"name":"consult","nodeType":"FunctionDefinition","parameters":{"id":18932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18929,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":19055,"src":"887:12:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18928,"name":"address","nodeType":"ElementaryTypeName","src":"887:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18931,"mutability":"mutable","name":"secondsAgo","nodeType":"VariableDeclaration","scope":19055,"src":"901:17:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":18930,"name":"uint32","nodeType":"ElementaryTypeName","src":"901:6:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"886:33:95"},"returnParameters":{"id":18937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18934,"mutability":"mutable","name":"arithmeticMeanTick","nodeType":"VariableDeclaration","scope":19055,"src":"970:24:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":18933,"name":"int24","nodeType":"ElementaryTypeName","src":"970:5:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":18936,"mutability":"mutable","name":"harmonicMeanLiquidity","nodeType":"VariableDeclaration","scope":19055,"src":"996:29:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":18935,"name":"uint128","nodeType":"ElementaryTypeName","src":"996:7:95","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"969:57:95"},"scope":19509,"src":"870:1251:95","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":19152,"nodeType":"Block","src":"2815:793:95","statements":[{"assignments":[19070],"declarations":[{"constant":false,"id":19070,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":19152,"src":"2826:20:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":19069,"name":"uint160","nodeType":"ElementaryTypeName","src":"2826:7:95","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":19075,"initialValue":{"arguments":[{"id":19073,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19058,"src":"2877:4:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":19071,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"2849:8:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":19072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":7427,"src":"2849:27:95","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":19074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2849:33:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"2826:56:95"},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":19082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19076,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19070,"src":"3004:12:95","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":19079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3025:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":19078,"name":"uint128","nodeType":"ElementaryTypeName","src":"3025:7:95","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":19077,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3020:4:95","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":19080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3020:13:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":19081,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"3020:17:95","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3004:33:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":19150,"nodeType":"Block","src":"3315:286:95","statements":[{"assignments":[19117],"declarations":[{"constant":false,"id":19117,"mutability":"mutable","name":"ratioX128","nodeType":"VariableDeclaration","scope":19150,"src":"3330:17:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19116,"name":"uint256","nodeType":"ElementaryTypeName","src":"3330:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19126,"initialValue":{"arguments":[{"id":19120,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19070,"src":"3366:12:95","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":19121,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19070,"src":"3380:12:95","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"commonType":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"id":19124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":19122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3394:1:95","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":19123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3399:2:95","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"3394:7:95","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":19118,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"3350:8:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":19119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"3350:15:95","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":19125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3350:52:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3330:72:95"},{"expression":{"id":19148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19127,"name":"quoteAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19067,"src":"3417:11:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19128,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19062,"src":"3431:9:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":19129,"name":"quoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19064,"src":"3443:10:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3431:22:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"id":19143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":19141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3557:1:95","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":19142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3562:3:95","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3557:8:95","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}},{"id":19144,"name":"baseAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19060,"src":"3567:10:95","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":19145,"name":"ratioX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19117,"src":"3579:9:95","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":19139,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"3541:8:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":19140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"3541:15:95","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":19146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3541:48:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3431:158:95","trueExpression":{"arguments":[{"id":19133,"name":"ratioX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19117,"src":"3489:9:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19134,"name":"baseAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19060,"src":"3500:10:95","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"id":19137,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":19135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3512:1:95","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":19136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3517:3:95","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3512:8:95","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":19131,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"3473:8:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":19132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"3473:15:95","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":19138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3473:48:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3417:172:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19149,"nodeType":"ExpressionStatement","src":"3417:172:95"}]},"id":19151,"nodeType":"IfStatement","src":"3000:601:95","trueBody":{"id":19115,"nodeType":"Block","src":"3039:270:95","statements":[{"assignments":[19084],"declarations":[{"constant":false,"id":19084,"mutability":"mutable","name":"ratioX192","nodeType":"VariableDeclaration","scope":19115,"src":"3054:17:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19083,"name":"uint256","nodeType":"ElementaryTypeName","src":"3054:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19091,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":19087,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19070,"src":"3082:12:95","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":19086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3074:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":19085,"name":"uint256","nodeType":"ElementaryTypeName","src":"3074:7:95","typeDescriptions":{}}},"id":19088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3074:21:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":19089,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19070,"src":"3098:12:95","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3074:36:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3054:56:95"},{"expression":{"id":19113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19092,"name":"quoteAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19067,"src":"3125:11:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19093,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19062,"src":"3139:9:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":19094,"name":"quoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19064,"src":"3151:10:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3139:22:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_rational_6277101735386680763835789423207666416102355444464034512896_by_1","typeString":"int_const 6277...(50 digits omitted)...2896"},"id":19108,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":19106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3265:1:95","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313932","id":19107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3270:3:95","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},"src":"3265:8:95","typeDescriptions":{"typeIdentifier":"t_rational_6277101735386680763835789423207666416102355444464034512896_by_1","typeString":"int_const 6277...(50 digits omitted)...2896"}},{"id":19109,"name":"baseAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19060,"src":"3275:10:95","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":19110,"name":"ratioX192","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19084,"src":"3287:9:95","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":19104,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"3249:8:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":19105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"3249:15:95","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":19111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3249:48:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3139:158:95","trueExpression":{"arguments":[{"id":19098,"name":"ratioX192","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19084,"src":"3197:9:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19099,"name":"baseAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19060,"src":"3208:10:95","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"commonType":{"typeIdentifier":"t_rational_6277101735386680763835789423207666416102355444464034512896_by_1","typeString":"int_const 6277...(50 digits omitted)...2896"},"id":19102,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":19100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3220:1:95","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313932","id":19101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3225:3:95","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},"src":"3220:8:95","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":19096,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"3181:8:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":19097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"3181:15:95","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":19103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3181:48:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3125:172:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19114,"nodeType":"ExpressionStatement","src":"3125:172:95"}]}}]},"documentation":{"id":19056,"nodeType":"StructuredDocumentation","src":"2129:498:95","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":19153,"implemented":true,"kind":"function","modifiers":[],"name":"getQuoteAtTick","nodeType":"FunctionDefinition","parameters":{"id":19065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19058,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":19153,"src":"2667:10:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":19057,"name":"int24","nodeType":"ElementaryTypeName","src":"2667:5:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":19060,"mutability":"mutable","name":"baseAmount","nodeType":"VariableDeclaration","scope":19153,"src":"2688:18:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":19059,"name":"uint128","nodeType":"ElementaryTypeName","src":"2688:7:95","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":19062,"mutability":"mutable","name":"baseToken","nodeType":"VariableDeclaration","scope":19153,"src":"2717:17:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19061,"name":"address","nodeType":"ElementaryTypeName","src":"2717:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19064,"mutability":"mutable","name":"quoteToken","nodeType":"VariableDeclaration","scope":19153,"src":"2745:18:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19063,"name":"address","nodeType":"ElementaryTypeName","src":"2745:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2656:114:95"},"returnParameters":{"id":19068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19067,"mutability":"mutable","name":"quoteAmount","nodeType":"VariableDeclaration","scope":19153,"src":"2794:19:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19066,"name":"uint256","nodeType":"ElementaryTypeName","src":"2794:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2793:21:95"},"scope":19509,"src":"2633:975:95","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19218,"nodeType":"Block","src":"3981:692:95","statements":[{"assignments":[null,null,19162,19164,null,null,null],"declarations":[null,null,{"constant":false,"id":19162,"mutability":"mutable","name":"observationIndex","nodeType":"VariableDeclaration","scope":19218,"src":"3997:23:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19161,"name":"uint16","nodeType":"ElementaryTypeName","src":"3997:6:95","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":19164,"mutability":"mutable","name":"observationCardinality","nodeType":"VariableDeclaration","scope":19218,"src":"4022:29:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19163,"name":"uint16","nodeType":"ElementaryTypeName","src":"4022:6:95","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},null,null,null],"id":19170,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":19166,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19156,"src":"4073:4:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19165,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"4061:11:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":19167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4061:17:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":19168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":3680,"src":"4061:23:95","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":19169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4061:25:95","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":"3992:94:95"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":19174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19172,"name":"observationCardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19164,"src":"4105:22:95","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":19173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4130:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4105:26:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e49","id":19175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4133:4:95","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":19171,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4097:7:95","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4097:41:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19177,"nodeType":"ExpressionStatement","src":"4097:41:95"},{"assignments":[19179,null,null,19181,null],"declarations":[{"constant":false,"id":19179,"mutability":"mutable","name":"observationTimestamp","nodeType":"VariableDeclaration","scope":19218,"src":"4152:27:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":19178,"name":"uint32","nodeType":"ElementaryTypeName","src":"4152:6:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},null,null,{"constant":false,"id":19181,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":19218,"src":"4185:16:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19180,"name":"bool","nodeType":"ElementaryTypeName","src":"4185:4:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":19193,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":19191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":19188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19186,"name":"observationIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19162,"src":"4251:16:95","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":19187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4270:1:95","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4251:20:95","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":19189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4250:22:95","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":19190,"name":"observationCardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19164,"src":"4275:22:95","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"4250:47:95","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"arguments":[{"id":19183,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19156,"src":"4231:4:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19182,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"4219:11:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":19184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4219:17:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":19185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observations","nodeType":"MemberAccess","referencedDeclaration":3778,"src":"4219:30:95","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$_t_uint192_$","typeString":"function (uint256) view external returns (uint32,int56,uint160,bool,uint192)"}},"id":19192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4219:79:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$_t_uint192_$","typeString":"tuple(uint32,int56,uint160,bool,uint192)"}},"nodeType":"VariableDeclarationStatement","src":"4151:147:95"},{"condition":{"id":19195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4487:12:95","subExpression":{"id":19194,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19181,"src":"4488:11:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19207,"nodeType":"IfStatement","src":"4483:111:95","trueBody":{"id":19206,"nodeType":"Block","src":"4501:93:95","statements":[{"expression":{"id":19204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":19196,"name":"observationTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19179,"src":"4517:20:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},null,null,null,null],"id":19197,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4516:30:95","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$__$__$__$__$","typeString":"tuple(uint32,,,,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":19202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4580: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"}],"expression":{"arguments":[{"id":19199,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19156,"src":"4561:4:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19198,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"4549:11:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":19200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4549:17:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":19201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observations","nodeType":"MemberAccess","referencedDeclaration":3778,"src":"4549:30:95","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$_t_uint192_$","typeString":"function (uint256) view external returns (uint32,int56,uint160,bool,uint192)"}},"id":19203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4549:33:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$_t_uint192_$","typeString":"tuple(uint32,int56,uint160,bool,uint192)"}},"src":"4516:66:95","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19205,"nodeType":"ExpressionStatement","src":"4516:66:95"}]}},{"expression":{"id":19216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19208,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19159,"src":"4606:10:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":19215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":19211,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4626:5:95","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":19212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"4626:15:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19210,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4619:6:95","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":19209,"name":"uint32","nodeType":"ElementaryTypeName","src":"4619:6:95","typeDescriptions":{}}},"id":19213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4619:23:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":19214,"name":"observationTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19179,"src":"4645:20:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4619:46:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4606:59:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":19217,"nodeType":"ExpressionStatement","src":"4606:59:95"}]},"documentation":{"id":19154,"nodeType":"StructuredDocumentation","src":"3616:263:95","text":"@notice Given a pool, it returns the number of seconds ago of the oldest stored observation\n @param pool Address of Elixir pool that we want to observe\n @return secondsAgo The number of seconds ago of the oldest observation stored for the pool"},"id":19219,"implemented":true,"kind":"function","modifiers":[],"name":"getOldestObservationSecondsAgo","nodeType":"FunctionDefinition","parameters":{"id":19157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19156,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":19219,"src":"3925:12:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19155,"name":"address","nodeType":"ElementaryTypeName","src":"3925:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3924:14:95"},"returnParameters":{"id":19160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19159,"mutability":"mutable","name":"secondsAgo","nodeType":"VariableDeclaration","scope":19219,"src":"3962:17:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":19158,"name":"uint32","nodeType":"ElementaryTypeName","src":"3962:6:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"3961:19:95"},"scope":19509,"src":"3885:788:95","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":19361,"nodeType":"Block","src":"4995:1700:95","statements":[{"assignments":[null,19230,19232,19234,null,null,null],"declarations":[null,{"constant":false,"id":19230,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":19361,"src":"5009:10:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":19229,"name":"int24","nodeType":"ElementaryTypeName","src":"5009:5:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":19232,"mutability":"mutable","name":"observationIndex","nodeType":"VariableDeclaration","scope":19361,"src":"5021:23:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19231,"name":"uint16","nodeType":"ElementaryTypeName","src":"5021:6:95","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":19234,"mutability":"mutable","name":"observationCardinality","nodeType":"VariableDeclaration","scope":19361,"src":"5046:29:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19233,"name":"uint16","nodeType":"ElementaryTypeName","src":"5046:6:95","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},null,null,null],"id":19240,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":19236,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19222,"src":"5097:4:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19235,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"5085:11:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":19237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5085:17:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":19238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":3680,"src":"5085:23:95","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":19239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5085:25:95","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":"5006:104:95"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":19244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19242,"name":"observationCardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19234,"src":"5215:22:95","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":19243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5240:1:95","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5215:26:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e454f","id":19245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5243:5:95","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":19241,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5207:7:95","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5207:42:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19247,"nodeType":"ExpressionStatement","src":"5207:42:95"},{"assignments":[19249,19251,19253,null,null],"declarations":[{"constant":false,"id":19249,"mutability":"mutable","name":"observationTimestamp","nodeType":"VariableDeclaration","scope":19361,"src":"5572:27:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":19248,"name":"uint32","nodeType":"ElementaryTypeName","src":"5572:6:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":19251,"mutability":"mutable","name":"tickCumulative","nodeType":"VariableDeclaration","scope":19361,"src":"5601:20:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":19250,"name":"int56","nodeType":"ElementaryTypeName","src":"5601:5:95","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":19253,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128","nodeType":"VariableDeclaration","scope":19361,"src":"5623:41:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":19252,"name":"uint160","nodeType":"ElementaryTypeName","src":"5623:7:95","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},null,null],"id":19260,"initialValue":{"arguments":[{"id":19258,"name":"observationIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19232,"src":"5716:16:95","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"arguments":[{"id":19255,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19222,"src":"5697:4:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19254,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"5685:11:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":19256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5685:17:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":19257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observations","nodeType":"MemberAccess","referencedDeclaration":3778,"src":"5685:30:95","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$_t_uint192_$","typeString":"function (uint256) view external returns (uint32,int56,uint160,bool,uint192)"}},"id":19259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5685:48:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$_t_uint192_$","typeString":"tuple(uint32,int56,uint160,bool,uint192)"}},"nodeType":"VariableDeclarationStatement","src":"5571:162:95"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":19267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19261,"name":"observationTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19249,"src":"5748:20:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"expression":{"id":19264,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5779:5:95","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":19265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"5779:15:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19263,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5772:6:95","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":19262,"name":"uint32","nodeType":"ElementaryTypeName","src":"5772:6:95","typeDescriptions":{}}},"id":19266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5772:23:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"5748:47:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19277,"nodeType":"IfStatement","src":"5744:124:95","trueBody":{"id":19276,"nodeType":"Block","src":"5797:71:95","statements":[{"expression":{"components":[{"id":19268,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19230,"src":"5820:4:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":19270,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19222,"src":"5838:4:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19269,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"5826:11:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":19271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5826:17:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":19272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":3714,"src":"5826:27:95","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint128_$","typeString":"function () view external returns (uint128)"}},"id":19273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5826:29:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":19274,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5819:37:95","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int24_$_t_uint128_$","typeString":"tuple(int24,uint128)"}},"functionReturnParameters":19228,"id":19275,"nodeType":"Return","src":"5812:44:95"}]}},{"assignments":[19279],"declarations":[{"constant":false,"id":19279,"mutability":"mutable","name":"prevIndex","nodeType":"VariableDeclaration","scope":19361,"src":"5880:17:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19278,"name":"uint256","nodeType":"ElementaryTypeName","src":"5880:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19291,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":19282,"name":"observationIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19232,"src":"5909:16:95","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":19281,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5901:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":19280,"name":"uint256","nodeType":"ElementaryTypeName","src":"5901:7:95","typeDescriptions":{}}},"id":19283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5901:25:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":19284,"name":"observationCardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19234,"src":"5929:22:95","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"5901:50:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":19286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5954:1:95","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5901:54:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19288,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5900:56:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":19289,"name":"observationCardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19234,"src":"5959:22:95","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"5900:81:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5880:101:95"},{"assignments":[19293,19295,19297,19299,null],"declarations":[{"constant":false,"id":19293,"mutability":"mutable","name":"prevObservationTimestamp","nodeType":"VariableDeclaration","scope":19361,"src":"6007:31:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":19292,"name":"uint32","nodeType":"ElementaryTypeName","src":"6007:6:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":19295,"mutability":"mutable","name":"prevTickCumulative","nodeType":"VariableDeclaration","scope":19361,"src":"6053:24:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":19294,"name":"int56","nodeType":"ElementaryTypeName","src":"6053:5:95","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":19297,"mutability":"mutable","name":"prevSecondsPerLiquidityCumulativeX128","nodeType":"VariableDeclaration","scope":19361,"src":"6092:45:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":19296,"name":"uint160","nodeType":"ElementaryTypeName","src":"6092:7:95","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":19299,"mutability":"mutable","name":"prevInitialized","nodeType":"VariableDeclaration","scope":19361,"src":"6152:20:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19298,"name":"bool","nodeType":"ElementaryTypeName","src":"6152:4:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":19306,"initialValue":{"arguments":[{"id":19304,"name":"prevIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19279,"src":"6218:9:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":19301,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19222,"src":"6199:4:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19300,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"6187:11:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":19302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6187:17:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":19303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observations","nodeType":"MemberAccess","referencedDeclaration":3778,"src":"6187:30:95","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$_t_uint192_$","typeString":"function (uint256) view external returns (uint32,int56,uint160,bool,uint192)"}},"id":19305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6187:41:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$_t_uint192_$","typeString":"tuple(uint32,int56,uint160,bool,uint192)"}},"nodeType":"VariableDeclarationStatement","src":"5992:236:95"},{"expression":{"arguments":[{"id":19308,"name":"prevInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19299,"src":"6249:15:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f4e49","id":19309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6266:5:95","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":19307,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6241:7:95","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6241:31:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19311,"nodeType":"ExpressionStatement","src":"6241:31:95"},{"assignments":[19313],"declarations":[{"constant":false,"id":19313,"mutability":"mutable","name":"delta","nodeType":"VariableDeclaration","scope":19361,"src":"6285:12:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":19312,"name":"uint32","nodeType":"ElementaryTypeName","src":"6285:6:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":19317,"initialValue":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":19316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19314,"name":"observationTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19249,"src":"6300:20:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":19315,"name":"prevObservationTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19293,"src":"6323:24:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"6300:47:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"6285:62:95"},{"expression":{"id":19328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19318,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19230,"src":"6358:4:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":19326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":19323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19321,"name":"tickCumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19251,"src":"6372:14:95","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":19322,"name":"prevTickCumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19295,"src":"6389:18:95","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"6372:35:95","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}}],"id":19324,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6371:37:95","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":19325,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19313,"src":"6411:5:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"6371:45:95","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int56","typeString":"int56"}],"id":19320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6365:5:95","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":19319,"name":"int24","nodeType":"ElementaryTypeName","src":"6365:5:95","typeDescriptions":{}}},"id":19327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6365:52:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"6358:59:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":19329,"nodeType":"ExpressionStatement","src":"6358:59:95"},{"assignments":[19331],"declarations":[{"constant":false,"id":19331,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":19361,"src":"6428:17:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":19330,"name":"uint128","nodeType":"ElementaryTypeName","src":"6428:7:95","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":19356,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":19354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":19343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":19336,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19313,"src":"6496:5:95","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":19335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6488:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":19334,"name":"uint192","nodeType":"ElementaryTypeName","src":"6488:7:95","typeDescriptions":{}}},"id":19337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6488:14:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"arguments":[{"id":19340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6510:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":19339,"name":"uint160","nodeType":"ElementaryTypeName","src":"6510:7:95","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":19338,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6505:4:95","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":19341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6505:13:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":19342,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"6505:17:95","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6488:34:95","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":19344,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6487:36:95","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":19352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":19349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19347,"name":"secondsPerLiquidityCumulativeX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19253,"src":"6556:33:95","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":19348,"name":"prevSecondsPerLiquidityCumulativeX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19297,"src":"6592:37:95","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6556:73:95","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":19346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6548:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":19345,"name":"uint192","nodeType":"ElementaryTypeName","src":"6548:7:95","typeDescriptions":{}}},"id":19350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6548:82:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":19351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6634:2:95","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"6548:88:95","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":19353,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6547:90:95","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"6487:150:95","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint192","typeString":"uint192"}],"id":19333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6461:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":19332,"name":"uint128","nodeType":"ElementaryTypeName","src":"6461:7:95","typeDescriptions":{}}},"id":19355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6461:191:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"6428:224:95"},{"expression":{"components":[{"id":19357,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19230,"src":"6671:4:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":19358,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19331,"src":"6677:9:95","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":19359,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6670:17:95","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int24_$_t_uint128_$","typeString":"tuple(int24,uint128)"}},"functionReturnParameters":19228,"id":19360,"nodeType":"Return","src":"6663:24:95"}]},"documentation":{"id":19220,"nodeType":"StructuredDocumentation","src":"4681:213:95","text":"@notice Given a pool, it returns the tick value as of the start of the current block\n @param pool Address of Elixir pool\n @return The tick that the pool was in at the start of the current block"},"id":19362,"implemented":true,"kind":"function","modifiers":[],"name":"getBlockStartingTickAndLiquidity","nodeType":"FunctionDefinition","parameters":{"id":19223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19222,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":19362,"src":"4942:12:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19221,"name":"address","nodeType":"ElementaryTypeName","src":"4942:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4941:14:95"},"returnParameters":{"id":19228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19225,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19362,"src":"4979:5:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":19224,"name":"int24","nodeType":"ElementaryTypeName","src":"4979:5:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":19227,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19362,"src":"4986:7:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":19226,"name":"uint128","nodeType":"ElementaryTypeName","src":"4986:7:95","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"4978:16:95"},"scope":19509,"src":"4900:1795:95","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"OracleLibrary.WeightedTickData","id":19367,"members":[{"constant":false,"id":19364,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":19367,"src":"6815:10:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":19363,"name":"int24","nodeType":"ElementaryTypeName","src":"6815:5:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":19366,"mutability":"mutable","name":"weight","nodeType":"VariableDeclaration","scope":19367,"src":"6836:14:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":19365,"name":"uint128","nodeType":"ElementaryTypeName","src":"6836:7:95","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"WeightedTickData","nodeType":"StructDefinition","scope":19509,"src":"6780:78:95","visibility":"public"},{"body":{"id":19445,"nodeType":"Block","src":"7627:741:95","statements":[{"assignments":[19377],"declarations":[{"constant":false,"id":19377,"mutability":"mutable","name":"numerator","nodeType":"VariableDeclaration","scope":19445,"src":"7715:16:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":19376,"name":"int256","nodeType":"ElementaryTypeName","src":"7715:6:95","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":19378,"nodeType":"VariableDeclarationStatement","src":"7715:16:95"},{"assignments":[19380],"declarations":[{"constant":false,"id":19380,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","scope":19445,"src":"7791:19:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19379,"name":"uint256","nodeType":"ElementaryTypeName","src":"7791:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19381,"nodeType":"VariableDeclarationStatement","src":"7791:19:95"},{"body":{"id":19414,"nodeType":"Block","src":"7978:157:95","statements":[{"expression":{"id":19405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19392,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19377,"src":"7993:9:95","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":19404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":19393,"name":"weightedTickData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19371,"src":"8006:16:95","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WeightedTickData_$19367_memory_ptr_$dyn_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData memory[] memory"}},"id":19395,"indexExpression":{"id":19394,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19383,"src":"8023:1:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8006:19:95","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedTickData_$19367_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData memory"}},"id":19396,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":19364,"src":"8006:24:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"expression":{"baseExpression":{"id":19399,"name":"weightedTickData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19371,"src":"8040:16:95","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WeightedTickData_$19367_memory_ptr_$dyn_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData memory[] memory"}},"id":19401,"indexExpression":{"id":19400,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19383,"src":"8057:1:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8040:19:95","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedTickData_$19367_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData memory"}},"id":19402,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"weight","nodeType":"MemberAccess","referencedDeclaration":19366,"src":"8040:26:95","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":19398,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8033:6:95","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":19397,"name":"int256","nodeType":"ElementaryTypeName","src":"8033:6:95","typeDescriptions":{}}},"id":19403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8033:34:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"8006:61:95","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7993:74:95","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":19406,"nodeType":"ExpressionStatement","src":"7993:74:95"},{"expression":{"id":19412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19407,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19380,"src":"8082:11:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"id":19408,"name":"weightedTickData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19371,"src":"8097:16:95","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WeightedTickData_$19367_memory_ptr_$dyn_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData memory[] memory"}},"id":19410,"indexExpression":{"id":19409,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19383,"src":"8114:1:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8097:19:95","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedTickData_$19367_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData memory"}},"id":19411,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"weight","nodeType":"MemberAccess","referencedDeclaration":19366,"src":"8097:26:95","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"8082:41:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19413,"nodeType":"ExpressionStatement","src":"8082:41:95"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19385,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19383,"src":"7944:1:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":19386,"name":"weightedTickData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19371,"src":"7948:16:95","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WeightedTickData_$19367_memory_ptr_$dyn_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData memory[] memory"}},"id":19387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7948:23:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7944:27:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19415,"initializationExpression":{"assignments":[19383],"declarations":[{"constant":false,"id":19383,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":19415,"src":"7933:9:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19382,"name":"uint256","nodeType":"ElementaryTypeName","src":"7933:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19384,"nodeType":"VariableDeclarationStatement","src":"7933:9:95"},"loopExpression":{"expression":{"id":19390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7973:3:95","subExpression":{"id":19389,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19383,"src":"7973:1:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19391,"nodeType":"ExpressionStatement","src":"7973:3:95"},"nodeType":"ForStatement","src":"7928:207:95"},{"expression":{"id":19426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19416,"name":"weightedArithmeticMeanTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19374,"src":"8147:26:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":19424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19419,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19377,"src":"8182:9:95","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":19422,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19380,"src":"8201:11:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8194:6:95","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":19420,"name":"int256","nodeType":"ElementaryTypeName","src":"8194:6:95","typeDescriptions":{}}},"id":19423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8194:19:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"8182:31:95","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":19418,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8176:5:95","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":19417,"name":"int24","nodeType":"ElementaryTypeName","src":"8176:5:95","typeDescriptions":{}}},"id":19425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8176:38:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"8147:67:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":19427,"nodeType":"ExpressionStatement","src":"8147:67:95"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":19440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":19430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19428,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19377,"src":"8275:9:95","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":19429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8287:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8275:13:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":19438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":19436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19431,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19377,"src":"8293:9:95","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"arguments":[{"id":19434,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19380,"src":"8312:11:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8305:6:95","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":19432,"name":"int256","nodeType":"ElementaryTypeName","src":"8305:6:95","typeDescriptions":{}}},"id":19435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8305:19:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"8293:31:95","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":19437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8328:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8293:36:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":19439,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8292:38:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8275:55:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19444,"nodeType":"IfStatement","src":"8271:89:95","trueBody":{"expression":{"id":19442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"8332:28:95","subExpression":{"id":19441,"name":"weightedArithmeticMeanTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19374,"src":"8332:26:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":19443,"nodeType":"ExpressionStatement","src":"8332:28:95"}}]},"documentation":{"id":19368,"nodeType":"StructuredDocumentation","src":"6866:583:95","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":19446,"implemented":true,"kind":"function","modifiers":[],"name":"getWeightedArithmeticMeanTick","nodeType":"FunctionDefinition","parameters":{"id":19372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19371,"mutability":"mutable","name":"weightedTickData","nodeType":"VariableDeclaration","scope":19446,"src":"7494:42:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WeightedTickData_$19367_memory_ptr_$dyn_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData[]"},"typeName":{"baseType":{"id":19369,"name":"WeightedTickData","nodeType":"UserDefinedTypeName","referencedDeclaration":19367,"src":"7494:16:95","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedTickData_$19367_storage_ptr","typeString":"struct OracleLibrary.WeightedTickData"}},"id":19370,"nodeType":"ArrayTypeName","src":"7494:18:95","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WeightedTickData_$19367_storage_$dyn_storage_ptr","typeString":"struct OracleLibrary.WeightedTickData[]"}},"visibility":"internal"}],"src":"7493:44:95"},"returnParameters":{"id":19375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19374,"mutability":"mutable","name":"weightedArithmeticMeanTick","nodeType":"VariableDeclaration","scope":19446,"src":"7588:32:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":19373,"name":"int24","nodeType":"ElementaryTypeName","src":"7588:5:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"7587:34:95"},"scope":19509,"src":"7455:913:95","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19507,"nodeType":"Block","src":"9045:416:95","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19459,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19450,"src":"9064:6:95","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":19460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9064:13:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":19461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9080:1:95","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9064:17:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":19463,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19453,"src":"9085:5:95","typeDescriptions":{"typeIdentifier":"t_array$_t_int24_$dyn_memory_ptr","typeString":"int24[] memory"}},"id":19464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9085:12:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9064:33:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"444c","id":19466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9099:4:95","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":19458,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9056:7:95","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9056:48:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19468,"nodeType":"ExpressionStatement","src":"9056:48:95"},{"body":{"id":19505,"nodeType":"Block","src":"9159:295:95","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":19480,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19450,"src":"9353:6:95","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":19484,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19481,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19470,"src":"9360:1:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":19482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9364:1:95","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9360:5:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9353:13:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":19485,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19450,"src":"9369:6:95","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":19487,"indexExpression":{"id":19486,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19470,"src":"9376:1:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9369:9:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9353:25:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":19502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19496,"name":"syntheticTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19456,"src":"9413:13:95","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"baseExpression":{"id":19497,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19453,"src":"9430:5:95","typeDescriptions":{"typeIdentifier":"t_array$_t_int24_$dyn_memory_ptr","typeString":"int24[] memory"}},"id":19501,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19498,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19470,"src":"9436:1:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":19499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:95","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9436:5:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9430:12:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"9413:29:95","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":19503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9353:89:95","trueExpression":{"id":19495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19489,"name":"syntheticTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19456,"src":"9381:13:95","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"id":19490,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19453,"src":"9398:5:95","typeDescriptions":{"typeIdentifier":"t_array$_t_int24_$dyn_memory_ptr","typeString":"int24[] memory"}},"id":19494,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19491,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19470,"src":"9404:1:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":19492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9408:1:95","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9404:5:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9398:12:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"9381:29:95","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":19504,"nodeType":"ExpressionStatement","src":"9353:89:95"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19473,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19470,"src":"9135:1:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":19474,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19453,"src":"9140:5:95","typeDescriptions":{"typeIdentifier":"t_array$_t_int24_$dyn_memory_ptr","typeString":"int24[] memory"}},"id":19475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9140:12:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9135:17:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19506,"initializationExpression":{"assignments":[19470],"declarations":[{"constant":false,"id":19470,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":19506,"src":"9120:9:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19469,"name":"uint256","nodeType":"ElementaryTypeName","src":"9120:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19472,"initialValue":{"hexValue":"31","id":19471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9132:1:95","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"9120:13:95"},"loopExpression":{"expression":{"id":19478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9154:3:95","subExpression":{"id":19477,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19470,"src":"9154:1:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19479,"nodeType":"ExpressionStatement","src":"9154:3:95"},"nodeType":"ForStatement","src":"9115:339:95"}]},"documentation":{"id":19447,"nodeType":"StructuredDocumentation","src":"8376:514:95","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":19508,"implemented":true,"kind":"function","modifiers":[],"name":"getChainedPrice","nodeType":"FunctionDefinition","parameters":{"id":19454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19450,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":19508,"src":"8921:23:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":19448,"name":"address","nodeType":"ElementaryTypeName","src":"8921:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19449,"nodeType":"ArrayTypeName","src":"8921:9:95","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":19453,"mutability":"mutable","name":"ticks","nodeType":"VariableDeclaration","scope":19508,"src":"8946:20:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int24_$dyn_memory_ptr","typeString":"int24[]"},"typeName":{"baseType":{"id":19451,"name":"int24","nodeType":"ElementaryTypeName","src":"8946:5:95","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":19452,"nodeType":"ArrayTypeName","src":"8946:7:95","typeDescriptions":{"typeIdentifier":"t_array$_t_int24_$dyn_storage_ptr","typeString":"int24[]"}},"visibility":"internal"}],"src":"8920:47:95"},"returnParameters":{"id":19457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19456,"mutability":"mutable","name":"syntheticTick","nodeType":"VariableDeclaration","scope":19508,"src":"9018:20:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":19455,"name":"int256","nodeType":"ElementaryTypeName","src":"9018:6:95","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9017:22:95"},"scope":19509,"src":"8896:565:95","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":19510,"src":"339:9125:95"}],"src":"46:9420:95"},"id":95},"contracts/elixir-periphery/libraries/Path.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/Path.sol","exportedSymbols":{"BytesLib":[17433],"Path":[19642]},"id":19643,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19511,"literals":["solidity",">=","0.6",".0"],"nodeType":"PragmaDirective","src":"46:24:96"},{"absolutePath":"contracts/elixir-periphery/libraries/BytesLib.sol","file":"./BytesLib.sol","id":19512,"nodeType":"ImportDirective","scope":19643,"sourceUnit":17434,"src":"74:24:96","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":19513,"nodeType":"StructuredDocumentation","src":"102:68:96","text":"@title Functions for manipulating path data for multihop swaps"},"fullyImplemented":true,"id":19642,"linearizedBaseContracts":[19642],"name":"Path","nodeType":"ContractDefinition","nodes":[{"id":19516,"libraryName":{"id":19514,"name":"BytesLib","nodeType":"UserDefinedTypeName","referencedDeclaration":17433,"src":"196:8:96","typeDescriptions":{"typeIdentifier":"t_contract$_BytesLib_$17433","typeString":"library BytesLib"}},"nodeType":"UsingForDirective","src":"190:25:96","typeName":{"id":19515,"name":"bytes","nodeType":"ElementaryTypeName","src":"209:5:96","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"constant":true,"documentation":{"id":19517,"nodeType":"StructuredDocumentation","src":"223:48:96","text":"@dev The length of the bytes encoded address"},"id":19520,"mutability":"constant","name":"ADDR_SIZE","nodeType":"VariableDeclaration","scope":19642,"src":"277:39:96","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19518,"name":"uint256","nodeType":"ElementaryTypeName","src":"277:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3230","id":19519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"314:2:96","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"constant":true,"documentation":{"id":19521,"nodeType":"StructuredDocumentation","src":"323:44:96","text":"@dev The length of the bytes encoded fee"},"id":19524,"mutability":"constant","name":"FEE_SIZE","nodeType":"VariableDeclaration","scope":19642,"src":"373:37:96","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19522,"name":"uint256","nodeType":"ElementaryTypeName","src":"373:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":19523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"409:1:96","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"private"},{"constant":true,"documentation":{"id":19525,"nodeType":"StructuredDocumentation","src":"419:58:96","text":"@dev The offset of a single token address and pool fee"},"id":19530,"mutability":"constant","name":"NEXT_OFFSET","nodeType":"VariableDeclaration","scope":19642,"src":"483:59:96","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19526,"name":"uint256","nodeType":"ElementaryTypeName","src":"483:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19529,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":19527,"name":"ADDR_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19520,"src":"522:9:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":19528,"name":"FEE_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19524,"src":"534:8:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"522:20:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":true,"documentation":{"id":19531,"nodeType":"StructuredDocumentation","src":"549:42:96","text":"@dev The offset of an encoded pool key"},"id":19536,"mutability":"constant","name":"POP_OFFSET","nodeType":"VariableDeclaration","scope":19642,"src":"597:61:96","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19532,"name":"uint256","nodeType":"ElementaryTypeName","src":"597:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19535,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":19533,"name":"NEXT_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19530,"src":"635:11:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":19534,"name":"ADDR_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19520,"src":"649:9:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"635:23:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":true,"documentation":{"id":19537,"nodeType":"StructuredDocumentation","src":"665:72:96","text":"@dev The minimum length of an encoding that contains 2 or more pools"},"id":19542,"mutability":"constant","name":"MULTIPLE_POOLS_MIN_LENGTH","nodeType":"VariableDeclaration","scope":19642,"src":"743:77:96","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19538,"name":"uint256","nodeType":"ElementaryTypeName","src":"743:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19541,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":19539,"name":"POP_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19536,"src":"796:10:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":19540,"name":"NEXT_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19530,"src":"809:11:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"796:24:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":19555,"nodeType":"Block","src":"1090:66:96","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19550,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19545,"src":"1108:4:96","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":19551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1108:11:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":19552,"name":"MULTIPLE_POOLS_MIN_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19542,"src":"1123:25:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1108:40:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":19549,"id":19554,"nodeType":"Return","src":"1101:47:96"}]},"documentation":{"id":19543,"nodeType":"StructuredDocumentation","src":"829:181:96","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":19556,"implemented":true,"kind":"function","modifiers":[],"name":"hasMultiplePools","nodeType":"FunctionDefinition","parameters":{"id":19546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19545,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":19556,"src":"1042:17:96","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":19544,"name":"bytes","nodeType":"ElementaryTypeName","src":"1042:5:96","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1041:19:96"},"returnParameters":{"id":19549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19548,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19556,"src":"1084:4:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19547,"name":"bool","nodeType":"ElementaryTypeName","src":"1084:4:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1083:6:96"},"scope":19642,"src":"1016:140:96","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19573,"nodeType":"Block","src":"1382:169:96","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19564,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19559,"src":"1504:4:96","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":19565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1504:11:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":19566,"name":"ADDR_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19520,"src":"1518:9:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1504:23:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19568,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1503:25:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":19569,"name":"NEXT_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19530,"src":"1531:11:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1503:39:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19571,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1502:41:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19563,"id":19572,"nodeType":"Return","src":"1495:48:96"}]},"documentation":{"id":19557,"nodeType":"StructuredDocumentation","src":"1164:143:96","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":19574,"implemented":true,"kind":"function","modifiers":[],"name":"numPools","nodeType":"FunctionDefinition","parameters":{"id":19560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19559,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":19574,"src":"1331:17:96","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":19558,"name":"bytes","nodeType":"ElementaryTypeName","src":"1331:5:96","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1330:19:96"},"returnParameters":{"id":19563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19562,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19574,"src":"1373:7:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19561,"name":"uint256","nodeType":"ElementaryTypeName","src":"1373:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1372:9:96"},"scope":19642,"src":"1313:238:96","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19607,"nodeType":"Block","src":"2013:133:96","statements":[{"expression":{"id":19591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19586,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19580,"src":"2024:6:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":19589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2048:1:96","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":19587,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19577,"src":"2033:4:96","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":19588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":17397,"src":"2033:14:96","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":19590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2033:17:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2024:26:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19592,"nodeType":"ExpressionStatement","src":"2024:26:96"},{"expression":{"id":19598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19593,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19584,"src":"2061:3:96","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":19596,"name":"ADDR_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19520,"src":"2081:9:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":19594,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19577,"src":"2067:4:96","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":19595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toUint24","nodeType":"MemberAccess","referencedDeclaration":17432,"src":"2067:13:96","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":19597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2067:24:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"2061:30:96","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":19599,"nodeType":"ExpressionStatement","src":"2061:30:96"},{"expression":{"id":19605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19600,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19582,"src":"2102:6:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":19603,"name":"NEXT_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19530,"src":"2126:11:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":19601,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19577,"src":"2111:4:96","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":19602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":17397,"src":"2111:14:96","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":19604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2111:27:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2102:36:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19606,"nodeType":"ExpressionStatement","src":"2102:36:96"}]},"documentation":{"id":19575,"nodeType":"StructuredDocumentation","src":"1559:255:96","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":19608,"implemented":true,"kind":"function","modifiers":[],"name":"decodeFirstPool","nodeType":"FunctionDefinition","parameters":{"id":19578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19577,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":19608,"src":"1845:17:96","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":19576,"name":"bytes","nodeType":"ElementaryTypeName","src":"1845:5:96","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1844:19:96"},"returnParameters":{"id":19585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19580,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":19608,"src":"1928:14:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19579,"name":"address","nodeType":"ElementaryTypeName","src":"1928:7:96","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19582,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":19608,"src":"1957:14:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19581,"name":"address","nodeType":"ElementaryTypeName","src":"1957:7:96","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19584,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":19608,"src":"1986:10:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":19583,"name":"uint24","nodeType":"ElementaryTypeName","src":"1986:6:96","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"1913:94:96"},"scope":19642,"src":"1820:326:96","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19622,"nodeType":"Block","src":"2455:51:96","statements":[{"expression":{"arguments":[{"hexValue":"30","id":19618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2484:1:96","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":19619,"name":"POP_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19536,"src":"2487:10:96","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":19616,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19611,"src":"2473:4:96","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":19617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slice","nodeType":"MemberAccess","referencedDeclaration":17362,"src":"2473:10:96","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":19620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2473:25:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":19615,"id":19621,"nodeType":"Return","src":"2466:32:96"}]},"documentation":{"id":19609,"nodeType":"StructuredDocumentation","src":"2154:217:96","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":19623,"implemented":true,"kind":"function","modifiers":[],"name":"getFirstPool","nodeType":"FunctionDefinition","parameters":{"id":19612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19611,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":19623,"src":"2399:17:96","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":19610,"name":"bytes","nodeType":"ElementaryTypeName","src":"2399:5:96","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2398:19:96"},"returnParameters":{"id":19615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19614,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19623,"src":"2441:12:96","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":19613,"name":"bytes","nodeType":"ElementaryTypeName","src":"2441:5:96","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2440:14:96"},"scope":19642,"src":"2377:129:96","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19640,"nodeType":"Block","src":"2775:76:96","statements":[{"expression":{"arguments":[{"id":19633,"name":"NEXT_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19530,"src":"2804:11:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19634,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19626,"src":"2817:4:96","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":19635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2817:11:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":19636,"name":"NEXT_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19530,"src":"2831:11:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2817:25:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":19631,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19626,"src":"2793:4:96","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":19632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slice","nodeType":"MemberAccess","referencedDeclaration":17362,"src":"2793:10:96","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":19638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2793:50:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":19630,"id":19639,"nodeType":"Return","src":"2786:57:96"}]},"documentation":{"id":19624,"nodeType":"StructuredDocumentation","src":"2514:180:96","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":19641,"implemented":true,"kind":"function","modifiers":[],"name":"skipToken","nodeType":"FunctionDefinition","parameters":{"id":19627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19626,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":19641,"src":"2719:17:96","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":19625,"name":"bytes","nodeType":"ElementaryTypeName","src":"2719:5:96","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2718:19:96"},"returnParameters":{"id":19630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19629,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19641,"src":"2761:12:96","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":19628,"name":"bytes","nodeType":"ElementaryTypeName","src":"2761:5:96","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2760:14:96"},"scope":19642,"src":"2700:151:96","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":19643,"src":"170:2684:96"}],"src":"46:2810:96"},"id":96},"contracts/elixir-periphery/libraries/PoolAddress.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/PoolAddress.sol","exportedSymbols":{"PoolAddress":[19734]},"id":19735,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19644,"literals":["solidity",">=","0.5",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"46:31:97"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":19645,"nodeType":"StructuredDocumentation","src":"81:97:97","text":"@title Provides functions for deriving a pool address from the factory, tokens, and the fee"},"fullyImplemented":true,"id":19734,"linearizedBaseContracts":[19734],"name":"PoolAddress","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":19648,"mutability":"constant","name":"POOL_INIT_CODE_HASH","nodeType":"VariableDeclaration","scope":19734,"src":"610:114:97","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19646,"name":"bytes32","nodeType":"ElementaryTypeName","src":"610:7:97","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834316137323366396536343537383330623162376134346466343433356661623838353831643037333232363839346233333133313831356464363734633232","id":19647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"658:66:97","typeDescriptions":{"typeIdentifier":"t_rational_29695646916129568393154105068765944002345636477166660713121215575815742770210_by_1","typeString":"int_const 2969...(69 digits omitted)...0210"},"value":"0x41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c22"},"visibility":"internal"},{"canonicalName":"PoolAddress.PoolKey","id":19655,"members":[{"constant":false,"id":19650,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":19655,"src":"808:14:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19649,"name":"address","nodeType":"ElementaryTypeName","src":"808:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19652,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":19655,"src":"833:14:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19651,"name":"address","nodeType":"ElementaryTypeName","src":"833:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19654,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":19655,"src":"858:10:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":19653,"name":"uint24","nodeType":"ElementaryTypeName","src":"858:6:97","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"name":"PoolKey","nodeType":"StructDefinition","scope":19734,"src":"782:94:97","visibility":"public"},{"body":{"id":19685,"nodeType":"Block","src":"1352:144:97","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19667,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19658,"src":"1367:6:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":19668,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19660,"src":"1376:6:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1367:15:97","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19678,"nodeType":"IfStatement","src":"1363:56:97","trueBody":{"expression":{"id":19676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":19670,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19658,"src":"1385:6:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19671,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19660,"src":"1393:6:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":19672,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1384:16:97","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":19673,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19660,"src":"1404:6:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19674,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19658,"src":"1412:6:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":19675,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1403:16:97","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"src":"1384:35:97","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19677,"nodeType":"ExpressionStatement","src":"1384:35:97"}},{"expression":{"arguments":[{"id":19680,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19658,"src":"1454:6:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19681,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19660,"src":"1470:6:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19682,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19662,"src":"1483:3:97","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":19679,"name":"PoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19655,"src":"1437:7:97","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolKey_$19655_storage_ptr_$","typeString":"type(struct PoolAddress.PoolKey storage pointer)"}},"id":19683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee"],"nodeType":"FunctionCall","src":"1437:51:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"functionReturnParameters":19666,"id":19684,"nodeType":"Return","src":"1430:58:97"}]},"documentation":{"id":19656,"nodeType":"StructuredDocumentation","src":"884:325:97","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":19686,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolKey","nodeType":"FunctionDefinition","parameters":{"id":19663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19658,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":19686,"src":"1245:14:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19657,"name":"address","nodeType":"ElementaryTypeName","src":"1245:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19660,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":19686,"src":"1270:14:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19659,"name":"address","nodeType":"ElementaryTypeName","src":"1270:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19662,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":19686,"src":"1295:10:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":19661,"name":"uint24","nodeType":"ElementaryTypeName","src":"1295:6:97","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"1234:78:97"},"returnParameters":{"id":19666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19665,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19686,"src":"1336:14:97","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":19664,"name":"PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":19655,"src":"1336:7:97","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"src":"1335:16:97"},"scope":19734,"src":"1215:281:97","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":19732,"nodeType":"Block","src":"1847:428:97","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19697,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19691,"src":"1866:3:97","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":19698,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":19650,"src":"1866:10:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":19699,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19691,"src":"1879:3:97","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":19700,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":19652,"src":"1879:10:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1866:23:97","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":19696,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1858:7:97","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":19702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1858:32:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19703,"nodeType":"ExpressionStatement","src":"1858:32:97"},{"expression":{"id":19730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19704,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19694,"src":"1901:4:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"ff","id":19712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"2031:7:97","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9","typeString":"literal_string hex\"ff\""}},{"id":19713,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19689,"src":"2065:7:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"expression":{"id":19717,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19691,"src":"2120:3:97","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":19718,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":19650,"src":"2120:10:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":19719,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19691,"src":"2132:3:97","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":19720,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":19652,"src":"2132:10:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":19721,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19691,"src":"2144:3:97","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":19722,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":19654,"src":"2144:7:97","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":19715,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2109:3:97","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":19716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2109:10:97","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":19723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2109:43:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":19714,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2099:9:97","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":19724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2099:54:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19725,"name":"POOL_INIT_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19648,"src":"2180:19:97","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":19710,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1988:3:97","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":19711,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1988:16:97","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":19726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1988:234:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":19709,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1956:9:97","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":19727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1956:285:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":19708,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1930:7:97","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":19707,"name":"uint256","nodeType":"ElementaryTypeName","src":"1930:7:97","typeDescriptions":{}}},"id":19728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1930:326:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19706,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1908:7:97","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19705,"name":"address","nodeType":"ElementaryTypeName","src":"1908:7:97","typeDescriptions":{}}},"id":19729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1908:359:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1901:366:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19731,"nodeType":"ExpressionStatement","src":"1901:366:97"}]},"documentation":{"id":19687,"nodeType":"StructuredDocumentation","src":"1504:239:97","text":"@notice Deterministically computes the pool address given the factory and PoolKey\n @param factory The Elixir factory contract address\n @param key The PoolKey\n @return pool The contract address of the elixir pool"},"id":19733,"implemented":true,"kind":"function","modifiers":[],"name":"computeAddress","nodeType":"FunctionDefinition","parameters":{"id":19692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19689,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":19733,"src":"1773:15:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19688,"name":"address","nodeType":"ElementaryTypeName","src":"1773:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19691,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":19733,"src":"1790:18:97","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":19690,"name":"PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":19655,"src":"1790:7:97","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"src":"1772:37:97"},"returnParameters":{"id":19695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19694,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":19733,"src":"1833:12:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19693,"name":"address","nodeType":"ElementaryTypeName","src":"1833:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1832:14:97"},"scope":19734,"src":"1749:526:97","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":19735,"src":"178:2100:97"}],"src":"46:2234:97"},"id":97},"contracts/elixir-periphery/libraries/PoolTicksCounter.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/PoolTicksCounter.sol","exportedSymbols":{"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"PoolTicksCounter":[20042]},"id":20043,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19736,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"46:31:98"},{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"../../elixir-core/interfaces/IElixirPool.sol","id":19737,"nodeType":"ImportDirective","scope":20043,"sourceUnit":3274,"src":"81:54:98","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":20042,"linearizedBaseContracts":[20042],"name":"PoolTicksCounter","nodeType":"ContractDefinition","nodes":[{"body":{"id":20011,"nodeType":"Block","src":"822:3197:98","statements":[{"assignments":[19750],"declarations":[{"constant":false,"id":19750,"mutability":"mutable","name":"wordPosLower","nodeType":"VariableDeclaration","scope":20011,"src":"833:18:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":19749,"name":"int16","nodeType":"ElementaryTypeName","src":"833:5:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"id":19751,"nodeType":"VariableDeclarationStatement","src":"833:18:98"},{"assignments":[19753],"declarations":[{"constant":false,"id":19753,"mutability":"mutable","name":"wordPosHigher","nodeType":"VariableDeclaration","scope":20011,"src":"862:19:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":19752,"name":"int16","nodeType":"ElementaryTypeName","src":"862:5:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"id":19754,"nodeType":"VariableDeclarationStatement","src":"862:19:98"},{"assignments":[19756],"declarations":[{"constant":false,"id":19756,"mutability":"mutable","name":"bitPosLower","nodeType":"VariableDeclaration","scope":20011,"src":"892:17:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19755,"name":"uint8","nodeType":"ElementaryTypeName","src":"892:5:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":19757,"nodeType":"VariableDeclarationStatement","src":"892:17:98"},{"assignments":[19759],"declarations":[{"constant":false,"id":19759,"mutability":"mutable","name":"bitPosHigher","nodeType":"VariableDeclaration","scope":20011,"src":"920:18:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19758,"name":"uint8","nodeType":"ElementaryTypeName","src":"920:5:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":19760,"nodeType":"VariableDeclarationStatement","src":"920:18:98"},{"assignments":[19762],"declarations":[{"constant":false,"id":19762,"mutability":"mutable","name":"tickBeforeInitialized","nodeType":"VariableDeclaration","scope":20011,"src":"949:26:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19761,"name":"bool","nodeType":"ElementaryTypeName","src":"949:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":19763,"nodeType":"VariableDeclarationStatement","src":"949:26:98"},{"assignments":[19765],"declarations":[{"constant":false,"id":19765,"mutability":"mutable","name":"tickAfterInitialized","nodeType":"VariableDeclaration","scope":20011,"src":"986:25:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19764,"name":"bool","nodeType":"ElementaryTypeName","src":"986:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":19766,"nodeType":"VariableDeclarationStatement","src":"986:25:98"},{"id":19932,"nodeType":"Block","src":"1024:1922:98","statements":[{"assignments":[19768],"declarations":[{"constant":false,"id":19768,"mutability":"mutable","name":"wordPos","nodeType":"VariableDeclaration","scope":19932,"src":"1143:13:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":19767,"name":"int16","nodeType":"ElementaryTypeName","src":"1143:5:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"id":19780,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":19778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":19775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19771,"name":"tickBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19742,"src":"1166:10:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19772,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19740,"src":"1179:4:98","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":19773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":3606,"src":"1179:16:98","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_int24_$","typeString":"function () view external returns (int24)"}},"id":19774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1179:18:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1166:31:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":19776,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1165:33:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":19777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1202:1:98","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1165:38:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":19770,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1159:5:98","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":19769,"name":"int16","nodeType":"ElementaryTypeName","src":"1159:5:98","typeDescriptions":{}}},"id":19779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1159:45:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"VariableDeclarationStatement","src":"1143:61:98"},{"assignments":[19782],"declarations":[{"constant":false,"id":19782,"mutability":"mutable","name":"bitPos","nodeType":"VariableDeclaration","scope":19932,"src":"1219:12:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19781,"name":"uint8","nodeType":"ElementaryTypeName","src":"1219:5:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":19794,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":19792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":19789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19785,"name":"tickBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19742,"src":"1241:10:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19786,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19740,"src":"1254:4:98","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":19787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":3606,"src":"1254:16:98","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_int24_$","typeString":"function () view external returns (int24)"}},"id":19788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1254:18:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1241:31:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":19790,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1240:33:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"323536","id":19791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1276:3:98","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"1240:39:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":19784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1234:5:98","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":19783,"name":"uint8","nodeType":"ElementaryTypeName","src":"1234:5:98","typeDescriptions":{}}},"id":19793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1234:46:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"1219:61:98"},{"assignments":[19796],"declarations":[{"constant":false,"id":19796,"mutability":"mutable","name":"wordPosAfter","nodeType":"VariableDeclaration","scope":19932,"src":"1297:18:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":19795,"name":"int16","nodeType":"ElementaryTypeName","src":"1297:5:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"id":19808,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":19806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":19803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19799,"name":"tickAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19744,"src":"1325:9:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19800,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19740,"src":"1337:4:98","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":19801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":3606,"src":"1337:16:98","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_int24_$","typeString":"function () view external returns (int24)"}},"id":19802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1337:18:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1325:30:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":19804,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1324:32:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":19805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1360:1:98","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1324:37:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":19798,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1318:5:98","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":19797,"name":"int16","nodeType":"ElementaryTypeName","src":"1318:5:98","typeDescriptions":{}}},"id":19807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1318:44:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"VariableDeclarationStatement","src":"1297:65:98"},{"assignments":[19810],"declarations":[{"constant":false,"id":19810,"mutability":"mutable","name":"bitPosAfter","nodeType":"VariableDeclaration","scope":19932,"src":"1377:17:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19809,"name":"uint8","nodeType":"ElementaryTypeName","src":"1377:5:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":19822,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":19820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":19817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19813,"name":"tickAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19744,"src":"1404:9:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19814,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19740,"src":"1416:4:98","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":19815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":3606,"src":"1416:16:98","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_int24_$","typeString":"function () view external returns (int24)"}},"id":19816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1416:18:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1404:30:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":19818,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1403:32:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"323536","id":19819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1438:3:98","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"1403:38:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":19812,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1397:5:98","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":19811,"name":"uint8","nodeType":"ElementaryTypeName","src":"1397:5:98","typeDescriptions":{}}},"id":19821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1397:45:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"1377:65:98"},{"expression":{"id":19852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19823,"name":"tickAfterInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19765,"src":"1828:20:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":19851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":19846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":19826,"name":"wordPosAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19796,"src":"1886:12:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int16","typeString":"int16"}],"expression":{"id":19824,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19740,"src":"1870:4:98","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":19825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickBitmap","nodeType":"MemberAccess","referencedDeclaration":3746,"src":"1870:15:98","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_int16_$returns$_t_uint256_$","typeString":"function (int16) view external returns (uint256)"}},"id":19827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1870:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":19828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1903:1:98","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":19829,"name":"bitPosAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19810,"src":"1908:11:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1903:16:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19831,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1902:18:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1870:50:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19833,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1869:52:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":19834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1924:1:98","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1869:56:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":19836,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1868:58:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":19844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":19841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19837,"name":"tickAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19744,"src":"1949:9:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19838,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19740,"src":"1961:4:98","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":19839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":3606,"src":"1961:16:98","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_int24_$","typeString":"function () view external returns (int24)"}},"id":19840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1961:18:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1949:30:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":19842,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1948:32:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":19843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1984:1:98","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1948:37:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":19845,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1947:39:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1868:118:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":19849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19847,"name":"tickBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19742,"src":"2008:10:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":19848,"name":"tickAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19744,"src":"2021:9:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2008:22:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":19850,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2007:24:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1868:163:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1828:203:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19853,"nodeType":"ExpressionStatement","src":"1828:203:98"},{"expression":{"id":19883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19854,"name":"tickBeforeInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19762,"src":"2259:21:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":19882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":19877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":19857,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19768,"src":"2318:7:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int16","typeString":"int16"}],"expression":{"id":19855,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19740,"src":"2302:4:98","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":19856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickBitmap","nodeType":"MemberAccess","referencedDeclaration":3746,"src":"2302:15:98","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_int16_$returns$_t_uint256_$","typeString":"function (int16) view external returns (uint256)"}},"id":19858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2302:24:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":19859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2330:1:98","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":19860,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19782,"src":"2335:6:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2330:11:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19862,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2329:13:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2302:40:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19864,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2301:42:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":19865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2346:1:98","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2301:46:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":19867,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2300:48:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":19875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":19872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19868,"name":"tickBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19742,"src":"2371:10:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19869,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19740,"src":"2384:4:98","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":19870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":3606,"src":"2384:16:98","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_int24_$","typeString":"function () view external returns (int24)"}},"id":19871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2384:18:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2371:31:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":19873,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2370:33:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":19874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2407:1:98","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2370:38:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":19876,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2369:40:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2300:109:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":19880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19878,"name":"tickBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19742,"src":"2431:10:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":19879,"name":"tickAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19744,"src":"2444:9:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2431:22:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":19881,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2430:24:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2300:154:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2259:195:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19884,"nodeType":"ExpressionStatement","src":"2259:195:98"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":19896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int16","typeString":"int16"},"id":19887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19885,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19768,"src":"2475:7:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":19886,"name":"wordPosAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19796,"src":"2485:12:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"2475:22:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":19894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int16","typeString":"int16"},"id":19890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19888,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19768,"src":"2502:7:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":19889,"name":"wordPosAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19796,"src":"2513:12:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"2502:23:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":19893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19891,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19782,"src":"2529:6:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":19892,"name":"bitPosAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19810,"src":"2539:11:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2529:21:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2502:48:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":19895,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2501:50:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2475:76:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":19930,"nodeType":"Block","src":"2747:188:98","statements":[{"expression":{"id":19916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19914,"name":"wordPosLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19750,"src":"2766:12:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19915,"name":"wordPosAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19796,"src":"2781:12:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"2766:27:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":19917,"nodeType":"ExpressionStatement","src":"2766:27:98"},{"expression":{"id":19920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19918,"name":"bitPosLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19756,"src":"2812:11:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19919,"name":"bitPosAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19810,"src":"2826:11:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2812:25:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":19921,"nodeType":"ExpressionStatement","src":"2812:25:98"},{"expression":{"id":19924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19922,"name":"wordPosHigher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19753,"src":"2856:13:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19923,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19768,"src":"2872:7:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"2856:23:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":19925,"nodeType":"ExpressionStatement","src":"2856:23:98"},{"expression":{"id":19928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19926,"name":"bitPosHigher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19759,"src":"2898:12:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19927,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19782,"src":"2913:6:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2898:21:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":19929,"nodeType":"ExpressionStatement","src":"2898:21:98"}]},"id":19931,"nodeType":"IfStatement","src":"2471:464:98","trueBody":{"id":19913,"nodeType":"Block","src":"2553:188:98","statements":[{"expression":{"id":19899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19897,"name":"wordPosLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19750,"src":"2572:12:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19898,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19768,"src":"2587:7:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"2572:22:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":19900,"nodeType":"ExpressionStatement","src":"2572:22:98"},{"expression":{"id":19903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19901,"name":"bitPosLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19756,"src":"2613:11:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19902,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19782,"src":"2627:6:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2613:20:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":19904,"nodeType":"ExpressionStatement","src":"2613:20:98"},{"expression":{"id":19907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19905,"name":"wordPosHigher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19753,"src":"2652:13:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19906,"name":"wordPosAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19796,"src":"2668:12:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"2652:28:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":19908,"nodeType":"ExpressionStatement","src":"2652:28:98"},{"expression":{"id":19911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19909,"name":"bitPosHigher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19759,"src":"2699:12:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19910,"name":"bitPosAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19810,"src":"2714:11:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2699:26:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":19912,"nodeType":"ExpressionStatement","src":"2699:26:98"}]}}]},{"assignments":[19934],"declarations":[{"constant":false,"id":19934,"mutability":"mutable","name":"mask","nodeType":"VariableDeclaration","scope":20011,"src":"3139:12:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19933,"name":"uint256","nodeType":"ElementaryTypeName","src":"3139:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19942,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":19937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3159:7:98","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":19936,"name":"uint256","nodeType":"ElementaryTypeName","src":"3159:7:98","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":19935,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3154:4:98","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":19938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3154:13:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":19939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"3154:17:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":19940,"name":"bitPosLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19756,"src":"3175:11:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3154:32:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3139:47:98"},{"body":{"id":19993,"nodeType":"Block","src":"3235:547:98","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int16","typeString":"int16"},"id":19948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19946,"name":"wordPosLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19750,"src":"3370:12:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":19947,"name":"wordPosHigher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19753,"src":"3386:13:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"3370:29:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19966,"nodeType":"IfStatement","src":"3366:127:98","trueBody":{"id":19965,"nodeType":"Block","src":"3401:92:98","statements":[{"expression":{"id":19963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19949,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19934,"src":"3420:4:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19950,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19934,"src":"3427:4:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":19953,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3440:7:98","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":19952,"name":"uint256","nodeType":"ElementaryTypeName","src":"3440:7:98","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":19951,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3435:4:98","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":19954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3435:13:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":19955,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"3435:17:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":19958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323535","id":19956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3457:3:98","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":19957,"name":"bitPosHigher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19759,"src":"3463:12:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3457:18:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":19959,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3456:20:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3435:41:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19961,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3434:43:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3427:50:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3420:57:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19964,"nodeType":"ExpressionStatement","src":"3420:57:98"}]}},{"assignments":[19968],"declarations":[{"constant":false,"id":19968,"mutability":"mutable","name":"masked","nodeType":"VariableDeclaration","scope":19993,"src":"3509:14:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19967,"name":"uint256","nodeType":"ElementaryTypeName","src":"3509:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19975,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":19971,"name":"wordPosLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19750,"src":"3542:12:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int16","typeString":"int16"}],"expression":{"id":19969,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19740,"src":"3526:4:98","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":19970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickBitmap","nodeType":"MemberAccess","referencedDeclaration":3746,"src":"3526:15:98","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_int16_$returns$_t_uint256_$","typeString":"function (int16) view external returns (uint256)"}},"id":19972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3526:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":19973,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19934,"src":"3558:4:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3526:36:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3509:53:98"},{"expression":{"id":19980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19976,"name":"initializedTicksCrossed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19747,"src":"3577:23:98","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":19978,"name":"masked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19968,"src":"3617:6:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19977,"name":"countOneBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20041,"src":"3604:12:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint16_$","typeString":"function (uint256) pure returns (uint16)"}},"id":19979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3604:20:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"3577:47:98","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":19981,"nodeType":"ExpressionStatement","src":"3577:47:98"},{"expression":{"id":19983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3639:14:98","subExpression":{"id":19982,"name":"wordPosLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19750,"src":"3639:12:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":19984,"nodeType":"ExpressionStatement","src":"3639:14:98"},{"expression":{"id":19991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19985,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19934,"src":"3746:4:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":19988,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3758:7:98","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":19987,"name":"uint256","nodeType":"ElementaryTypeName","src":"3758:7:98","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":19986,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3753:4:98","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":19989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3753:13:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":19990,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"3753:17:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3746:24:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19992,"nodeType":"ExpressionStatement","src":"3746:24:98"}]},"condition":{"commonType":{"typeIdentifier":"t_int16","typeString":"int16"},"id":19945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19943,"name":"wordPosLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19750,"src":"3204:12:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":19944,"name":"wordPosHigher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19753,"src":"3220:13:98","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"3204:29:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19994,"nodeType":"WhileStatement","src":"3197:585:98"},{"condition":{"id":19995,"name":"tickAfterInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19765,"src":"3798:20:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20001,"nodeType":"IfStatement","src":"3794:81:98","trueBody":{"id":20000,"nodeType":"Block","src":"3820:55:98","statements":[{"expression":{"id":19998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19996,"name":"initializedTicksCrossed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19747,"src":"3835:23:98","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":19997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3862:1:98","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3835:28:98","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":19999,"nodeType":"ExpressionStatement","src":"3835:28:98"}]}},{"condition":{"id":20002,"name":"tickBeforeInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19762,"src":"3891:21:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20008,"nodeType":"IfStatement","src":"3887:82:98","trueBody":{"id":20007,"nodeType":"Block","src":"3914:55:98","statements":[{"expression":{"id":20005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20003,"name":"initializedTicksCrossed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19747,"src":"3929:23:98","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":20004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3956:1:98","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3929:28:98","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":20006,"nodeType":"ExpressionStatement","src":"3929:28:98"}]}},{"expression":{"id":20009,"name":"initializedTicksCrossed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19747,"src":"3988:23:98","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":19748,"id":20010,"nodeType":"Return","src":"3981:30:98"}]},"documentation":{"id":19738,"nodeType":"StructuredDocumentation","src":"171:465:98","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":20012,"implemented":true,"kind":"function","modifiers":[],"name":"countInitializedTicksCrossed","nodeType":"FunctionDefinition","parameters":{"id":19745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19740,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":20012,"src":"690:16:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"},"typeName":{"id":19739,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":3273,"src":"690:11:98","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"visibility":"internal"},{"constant":false,"id":19742,"mutability":"mutable","name":"tickBefore","nodeType":"VariableDeclaration","scope":20012,"src":"717:16:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":19741,"name":"int24","nodeType":"ElementaryTypeName","src":"717:5:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":19744,"mutability":"mutable","name":"tickAfter","nodeType":"VariableDeclaration","scope":20012,"src":"744:15:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":19743,"name":"int24","nodeType":"ElementaryTypeName","src":"744:5:98","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"679:87:98"},"returnParameters":{"id":19748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19747,"mutability":"mutable","name":"initializedTicksCrossed","nodeType":"VariableDeclaration","scope":20012,"src":"790:30:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":19746,"name":"uint32","nodeType":"ElementaryTypeName","src":"790:6:98","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"789:32:98"},"scope":20042,"src":"642:3377:98","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":20040,"nodeType":"Block","src":"4090:141:98","statements":[{"assignments":[20020],"declarations":[{"constant":false,"id":20020,"mutability":"mutable","name":"bits","nodeType":"VariableDeclaration","scope":20040,"src":"4101:11:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":20019,"name":"uint16","nodeType":"ElementaryTypeName","src":"4101:6:98","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":20022,"initialValue":{"hexValue":"30","id":20021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4115:1:98","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4101:15:98"},{"body":{"id":20036,"nodeType":"Block","src":"4142:60:98","statements":[{"expression":{"id":20027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4157:6:98","subExpression":{"id":20026,"name":"bits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20020,"src":"4157:4:98","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":20028,"nodeType":"ExpressionStatement","src":"4157:6:98"},{"expression":{"id":20034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20029,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20014,"src":"4178:1:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"&=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20030,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20014,"src":"4184:1:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":20031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4188:1:98","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4184:5:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20033,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4183:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4178:12:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20035,"nodeType":"ExpressionStatement","src":"4178:12:98"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20023,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20014,"src":"4134:1:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":20024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4139:1:98","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4134:6:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20037,"nodeType":"WhileStatement","src":"4127:75:98"},{"expression":{"id":20038,"name":"bits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20020,"src":"4219:4:98","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":20018,"id":20039,"nodeType":"Return","src":"4212:11:98"}]},"id":20041,"implemented":true,"kind":"function","modifiers":[],"name":"countOneBits","nodeType":"FunctionDefinition","parameters":{"id":20015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20014,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":20041,"src":"4049:9:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20013,"name":"uint256","nodeType":"ElementaryTypeName","src":"4049:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4048:11:98"},"returnParameters":{"id":20018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20017,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20041,"src":"4082:6:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":20016,"name":"uint16","nodeType":"ElementaryTypeName","src":"4082:6:98","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"4081:8:98"},"scope":20042,"src":"4027:204:98","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":20043,"src":"139:4095:98"}],"src":"46:4190:98"},"id":98},"contracts/elixir-periphery/libraries/PositionKey.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/PositionKey.sol","exportedSymbols":{"PositionKey":[20067]},"id":20068,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":20044,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:99"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":20067,"linearizedBaseContracts":[20067],"name":"PositionKey","nodeType":"ContractDefinition","nodes":[{"body":{"id":20065,"nodeType":"Block","src":"299:82:99","statements":[{"expression":{"arguments":[{"arguments":[{"id":20059,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20047,"src":"344:5:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20060,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20049,"src":"351:9:99","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":20061,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20051,"src":"362:9:99","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":20057,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"327:3:99","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":20058,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"327:16:99","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":20062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"327:45:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":20056,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"317:9:99","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":20063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"317:56:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":20055,"id":20064,"nodeType":"Return","src":"310:63:99"}]},"documentation":{"id":20045,"nodeType":"StructuredDocumentation","src":"101:60:99","text":"@dev Returns the key of the position in the core library"},"id":20066,"implemented":true,"kind":"function","modifiers":[],"name":"compute","nodeType":"FunctionDefinition","parameters":{"id":20052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20047,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":20066,"src":"194:13:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20046,"name":"address","nodeType":"ElementaryTypeName","src":"194:7:99","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20049,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":20066,"src":"218:15:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":20048,"name":"int24","nodeType":"ElementaryTypeName","src":"218:5:99","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":20051,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":20066,"src":"244:15:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":20050,"name":"int24","nodeType":"ElementaryTypeName","src":"244:5:99","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"183:83:99"},"returnParameters":{"id":20055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20054,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20066,"src":"290:7:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20053,"name":"bytes32","nodeType":"ElementaryTypeName","src":"290:7:99","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"289:9:99"},"scope":20067,"src":"167:214:99","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":20068,"src":"74:310:99"}],"src":"46:340:99"},"id":99},"contracts/elixir-periphery/libraries/PositionValue.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/PositionValue.sol","exportedSymbols":{"FixedPoint128":[4065],"FixedPoint96":[4075],"FullMath":[4248],"IERC165":[30378],"IERC721":[32130],"IERC721Enumerable":[32161],"IERC721Metadata":[32188],"IERC721Permit":[15699],"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"INonfungiblePositionManager":[16094],"IPeripheryImmutableState":[16125],"IPeripheryPayments":[16151],"IPoolInitializer":[16203],"LiquidityAmounts":[17982],"LiquidityMath":[4300],"LowGasSafeMath":[4430],"PoolAddress":[19734],"PositionKey":[20067],"PositionValue":[20411],"SafeCast":[5526],"Tick":[6776],"TickMath":[7567]},"id":20412,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":20069,"literals":["solidity",">=","0.6",".8","<","0.8",".0"],"nodeType":"PragmaDirective","src":"46:31:100"},{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"../../elixir-core/interfaces/IElixirPool.sol","id":20070,"nodeType":"ImportDirective","scope":20412,"sourceUnit":3274,"src":"81:54:100","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/FixedPoint128.sol","file":"../../elixir-core/libraries/FixedPoint128.sol","id":20071,"nodeType":"ImportDirective","scope":20412,"sourceUnit":4066,"src":"137:55:100","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/TickMath.sol","file":"../../elixir-core/libraries/TickMath.sol","id":20072,"nodeType":"ImportDirective","scope":20412,"sourceUnit":7568,"src":"194:50:100","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/Tick.sol","file":"../../elixir-core/libraries/Tick.sol","id":20073,"nodeType":"ImportDirective","scope":20412,"sourceUnit":6777,"src":"246:46:100","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol","file":"../interfaces/INonfungiblePositionManager.sol","id":20074,"nodeType":"ImportDirective","scope":20412,"sourceUnit":16095,"src":"294:55:100","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/LiquidityAmounts.sol","file":"./LiquidityAmounts.sol","id":20075,"nodeType":"ImportDirective","scope":20412,"sourceUnit":17983,"src":"351:32:100","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/PoolAddress.sol","file":"./PoolAddress.sol","id":20076,"nodeType":"ImportDirective","scope":20412,"sourceUnit":19735,"src":"385:27:100","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/libraries/PositionKey.sol","file":"./PositionKey.sol","id":20077,"nodeType":"ImportDirective","scope":20412,"sourceUnit":20068,"src":"414:27:100","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":20078,"nodeType":"StructuredDocumentation","src":"445:75:100","text":"@title Returns information about the token value held in a Elixir NFT"},"fullyImplemented":true,"id":20411,"linearizedBaseContracts":[20411],"name":"PositionValue","nodeType":"ContractDefinition","nodes":[{"body":{"id":20119,"nodeType":"Block","src":"1319:287:100","statements":[{"assignments":[20093,20095],"declarations":[{"constant":false,"id":20093,"mutability":"mutable","name":"amount0Principal","nodeType":"VariableDeclaration","scope":20119,"src":"1331:24:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20092,"name":"uint256","nodeType":"ElementaryTypeName","src":"1331:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20095,"mutability":"mutable","name":"amount1Principal","nodeType":"VariableDeclaration","scope":20119,"src":"1357:24:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20094,"name":"uint256","nodeType":"ElementaryTypeName","src":"1357:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20101,"initialValue":{"arguments":[{"id":20097,"name":"positionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20081,"src":"1395:15:100","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},{"id":20098,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20083,"src":"1412:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20099,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20085,"src":"1421:12:100","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":20096,"name":"principal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20160,"src":"1385:9:100","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_INonfungiblePositionManager_$16094_$_t_uint256_$_t_uint160_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract INonfungiblePositionManager,uint256,uint160) view returns (uint256,uint256)"}},"id":20100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1385:49:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1330:104:100"},{"assignments":[20103,20105],"declarations":[{"constant":false,"id":20103,"mutability":"mutable","name":"amount0Fee","nodeType":"VariableDeclaration","scope":20119,"src":"1446:18:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20102,"name":"uint256","nodeType":"ElementaryTypeName","src":"1446:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20105,"mutability":"mutable","name":"amount1Fee","nodeType":"VariableDeclaration","scope":20119,"src":"1466:18:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20104,"name":"uint256","nodeType":"ElementaryTypeName","src":"1466:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20110,"initialValue":{"arguments":[{"id":20107,"name":"positionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20081,"src":"1493:15:100","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},{"id":20108,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20083,"src":"1510:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20106,"name":"fees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20235,"src":"1488:4:100","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_INonfungiblePositionManager_$16094_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract INonfungiblePositionManager,uint256) view returns (uint256,uint256)"}},"id":20109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1488:30:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1445:73:100"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20111,"name":"amount0Principal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20093,"src":"1537:16:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":20112,"name":"amount0Fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20103,"src":"1556:10:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1537:29:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20114,"name":"amount1Principal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20095,"src":"1568:16:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":20115,"name":"amount1Fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20105,"src":"1587:10:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1568:29:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20117,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1536:62:100","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":20091,"id":20118,"nodeType":"Return","src":"1529:69:100"}]},"documentation":{"id":20079,"nodeType":"StructuredDocumentation","src":"549:574:100","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 Elixir 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":20120,"implemented":true,"kind":"function","modifiers":[],"name":"total","nodeType":"FunctionDefinition","parameters":{"id":20086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20081,"mutability":"mutable","name":"positionManager","nodeType":"VariableDeclaration","scope":20120,"src":"1154:43:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":20080,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":16094,"src":"1154:27:100","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":20083,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":20120,"src":"1208:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20082,"name":"uint256","nodeType":"ElementaryTypeName","src":"1208:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20085,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":20120,"src":"1234:20:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20084,"name":"uint160","nodeType":"ElementaryTypeName","src":"1234:7:100","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1143:118:100"},"returnParameters":{"id":20091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20088,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":20120,"src":"1285:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20087,"name":"uint256","nodeType":"ElementaryTypeName","src":"1285:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20090,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":20120,"src":"1302:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20089,"name":"uint256","nodeType":"ElementaryTypeName","src":"1302:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1284:34:100"},"scope":20411,"src":"1129:477:100","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":20159,"nodeType":"Block","src":"2329:387:100","statements":[{"assignments":[null,null,null,null,null,20135,20137,20139,null,null,null,null],"declarations":[null,null,null,null,null,{"constant":false,"id":20135,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":20159,"src":"2351:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":20134,"name":"int24","nodeType":"ElementaryTypeName","src":"2351:5:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":20137,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":20159,"src":"2368:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":20136,"name":"int24","nodeType":"ElementaryTypeName","src":"2368:5:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":20139,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":20159,"src":"2385:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":20138,"name":"uint128","nodeType":"ElementaryTypeName","src":"2385:7:100","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},null,null,null,null],"id":20144,"initialValue":{"arguments":[{"id":20142,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20125,"src":"2440:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":20140,"name":"positionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20123,"src":"2414:15:100","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"id":20141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"positions","nodeType":"MemberAccess","referencedDeclaration":15945,"src":"2414:25:100","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":20143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2414:34:100","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":"2340:108:100"},{"expression":{"arguments":[{"id":20147,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20127,"src":"2539:12:100","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":20150,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20135,"src":"2598:9:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":20148,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"2570:8:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":20149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":7427,"src":"2570:27:100","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":20151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2570:38:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":20154,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20137,"src":"2655:9:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":20152,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"2627:8:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$7567_$","typeString":"type(library TickMath)"}},"id":20153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":7427,"src":"2627:27:100","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":20155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2627:38:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20156,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20139,"src":"2684:9:100","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":20145,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17982,"src":"2481:16:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$17982_$","typeString":"type(library LiquidityAmounts)"}},"id":20146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsForLiquidity","nodeType":"MemberAccess","referencedDeclaration":17981,"src":"2481:39:100","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":20157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2481:227:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":20133,"id":20158,"nodeType":"Return","src":"2461:247:100"}]},"documentation":{"id":20121,"nodeType":"StructuredDocumentation","src":"1614:515:100","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 Elixir 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":20160,"implemented":true,"kind":"function","modifiers":[],"name":"principal","nodeType":"FunctionDefinition","parameters":{"id":20128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20123,"mutability":"mutable","name":"positionManager","nodeType":"VariableDeclaration","scope":20160,"src":"2164:43:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":20122,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":16094,"src":"2164:27:100","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":20125,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":20160,"src":"2218:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20124,"name":"uint256","nodeType":"ElementaryTypeName","src":"2218:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20127,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":20160,"src":"2244:20:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20126,"name":"uint160","nodeType":"ElementaryTypeName","src":"2244:7:100","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"2153:118:100"},"returnParameters":{"id":20133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20130,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":20160,"src":"2295:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20129,"name":"uint256","nodeType":"ElementaryTypeName","src":"2295:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20132,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":20160,"src":"2312:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20131,"name":"uint256","nodeType":"ElementaryTypeName","src":"2312:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2294:34:100"},"scope":20411,"src":"2135:581:100","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"PositionValue.FeeParams","id":20181,"members":[{"constant":false,"id":20162,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":20181,"src":"2752:14:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20161,"name":"address","nodeType":"ElementaryTypeName","src":"2752:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20164,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":20181,"src":"2777:14:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20163,"name":"address","nodeType":"ElementaryTypeName","src":"2777:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20166,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":20181,"src":"2802:10:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":20165,"name":"uint24","nodeType":"ElementaryTypeName","src":"2802:6:100","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":20168,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":20181,"src":"2823:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":20167,"name":"int24","nodeType":"ElementaryTypeName","src":"2823:5:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":20170,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":20181,"src":"2849:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":20169,"name":"int24","nodeType":"ElementaryTypeName","src":"2849:5:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":20172,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":20181,"src":"2875:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":20171,"name":"uint128","nodeType":"ElementaryTypeName","src":"2875:7:100","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":20174,"mutability":"mutable","name":"positionFeeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":20181,"src":"2903:40:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20173,"name":"uint256","nodeType":"ElementaryTypeName","src":"2903:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20176,"mutability":"mutable","name":"positionFeeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":20181,"src":"2954:40:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20175,"name":"uint256","nodeType":"ElementaryTypeName","src":"2954:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20178,"mutability":"mutable","name":"tokensOwed0","nodeType":"VariableDeclaration","scope":20181,"src":"3005:19:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20177,"name":"uint256","nodeType":"ElementaryTypeName","src":"3005:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20180,"mutability":"mutable","name":"tokensOwed1","nodeType":"VariableDeclaration","scope":20181,"src":"3035:19:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20179,"name":"uint256","nodeType":"ElementaryTypeName","src":"3035:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"FeeParams","nodeType":"StructDefinition","scope":20411,"src":"2724:338:100","visibility":"public"},{"body":{"id":20234,"nodeType":"Block","src":"3576:1092:100","statements":[{"assignments":[null,null,20194,20196,20198,20200,20202,20204,20206,20208,20210,20212],"declarations":[null,null,{"constant":false,"id":20194,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":20234,"src":"3632:14:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20193,"name":"address","nodeType":"ElementaryTypeName","src":"3632:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20196,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":20234,"src":"3661:14:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20195,"name":"address","nodeType":"ElementaryTypeName","src":"3661:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20198,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":20234,"src":"3690:10:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":20197,"name":"uint24","nodeType":"ElementaryTypeName","src":"3690:6:100","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":20200,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":20234,"src":"3715:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":20199,"name":"int24","nodeType":"ElementaryTypeName","src":"3715:5:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":20202,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":20234,"src":"3745:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":20201,"name":"int24","nodeType":"ElementaryTypeName","src":"3745:5:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":20204,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":20234,"src":"3775:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":20203,"name":"uint128","nodeType":"ElementaryTypeName","src":"3775:7:100","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":20206,"mutability":"mutable","name":"positionFeeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":20234,"src":"3807:40:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20205,"name":"uint256","nodeType":"ElementaryTypeName","src":"3807:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20208,"mutability":"mutable","name":"positionFeeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":20234,"src":"3862:40:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20207,"name":"uint256","nodeType":"ElementaryTypeName","src":"3862:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20210,"mutability":"mutable","name":"tokensOwed0","nodeType":"VariableDeclaration","scope":20234,"src":"3917:19:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20209,"name":"uint256","nodeType":"ElementaryTypeName","src":"3917:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20212,"mutability":"mutable","name":"tokensOwed1","nodeType":"VariableDeclaration","scope":20234,"src":"3951:19:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20211,"name":"uint256","nodeType":"ElementaryTypeName","src":"3951:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20217,"initialValue":{"arguments":[{"id":20215,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20186,"src":"4010:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":20213,"name":"positionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20184,"src":"3984:15:100","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"id":20214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"positions","nodeType":"MemberAccess","referencedDeclaration":15945,"src":"3984:25:100","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":20216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3984:34:100","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":"3587:431:100"},{"expression":{"arguments":[{"id":20219,"name":"positionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20184,"src":"4075:15:100","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},{"arguments":[{"id":20221,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20194,"src":"4150:6:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20222,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20196,"src":"4187:6:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20223,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20198,"src":"4221:3:100","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"id":20224,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20200,"src":"4258:9:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":20225,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20202,"src":"4301:9:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":20226,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20204,"src":"4344:9:100","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":20227,"name":"positionFeeGrowthInside0LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20206,"src":"4410:32:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20228,"name":"positionFeeGrowthInside1LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20208,"src":"4499:32:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20229,"name":"tokensOwed0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20210,"src":"4567:11:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20230,"name":"tokensOwed1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20212,"src":"4614:11:100","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":20220,"name":"FeeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20181,"src":"4109:9:100","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_FeeParams_$20181_storage_ptr_$","typeString":"type(struct PositionValue.FeeParams storage pointer)"}},"id":20231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee","tickLower","tickUpper","liquidity","positionFeeGrowthInside0LastX128","positionFeeGrowthInside1LastX128","tokensOwed0","tokensOwed1"],"nodeType":"FunctionCall","src":"4109:536:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$20181_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},{"typeIdentifier":"t_struct$_FeeParams_$20181_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}],"id":20218,"name":"_fees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20309,"src":"4051:5:100","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_INonfungiblePositionManager_$16094_$_t_struct$_FeeParams_$20181_memory_ptr_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract INonfungiblePositionManager,struct PositionValue.FeeParams memory) view returns (uint256,uint256)"}},"id":20232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4051:609:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":20192,"id":20233,"nodeType":"Return","src":"4031:629:100"}]},"documentation":{"id":20182,"nodeType":"StructuredDocumentation","src":"3070:335:100","text":"@notice Calculates the total fees owed to the token owner\n @param positionManager The Elixir 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":20235,"implemented":true,"kind":"function","modifiers":[],"name":"fees","nodeType":"FunctionDefinition","parameters":{"id":20187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20184,"mutability":"mutable","name":"positionManager","nodeType":"VariableDeclaration","scope":20235,"src":"3425:43:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":20183,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":16094,"src":"3425:27:100","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":20186,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":20235,"src":"3470:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20185,"name":"uint256","nodeType":"ElementaryTypeName","src":"3470:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3424:62:100"},"returnParameters":{"id":20192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20189,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":20235,"src":"3537:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20188,"name":"uint256","nodeType":"ElementaryTypeName","src":"3537:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20191,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":20235,"src":"3554:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20190,"name":"uint256","nodeType":"ElementaryTypeName","src":"3554:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3536:34:100"},"scope":20411,"src":"3411:1257:100","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":20308,"nodeType":"Block","src":"4852:1054:100","statements":[{"assignments":[20247,20249],"declarations":[{"constant":false,"id":20247,"mutability":"mutable","name":"poolFeeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":20308,"src":"4864:36:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20246,"name":"uint256","nodeType":"ElementaryTypeName","src":"4864:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20249,"mutability":"mutable","name":"poolFeeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":20308,"src":"4902:36:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20248,"name":"uint256","nodeType":"ElementaryTypeName","src":"4902:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20273,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20254,"name":"positionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20237,"src":"5080:15:100","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"id":20255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"factory","nodeType":"MemberAccess","referencedDeclaration":16118,"src":"5080:23:100","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":20256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5080:25:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"id":20259,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20239,"src":"5161:9:100","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$20181_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":20260,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":20162,"src":"5161:16:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":20261,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20239,"src":"5187:9:100","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$20181_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":20262,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":20164,"src":"5187:16:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":20263,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20239,"src":"5210:9:100","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$20181_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":20264,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":20166,"src":"5210:13:100","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":20257,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19734,"src":"5132:11:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$19734_$","typeString":"type(library PoolAddress)"}},"id":20258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PoolKey","nodeType":"MemberAccess","referencedDeclaration":19655,"src":"5132:19:100","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolKey_$19655_storage_ptr_$","typeString":"type(struct PoolAddress.PoolKey storage pointer)"}},"id":20265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee"],"nodeType":"FunctionCall","src":"5132:93:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":20252,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19734,"src":"5027:11:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$19734_$","typeString":"type(library PoolAddress)"}},"id":20253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":19733,"src":"5027:26:100","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$19655_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":20266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5027:221:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20251,"name":"IElixirPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"4993:11:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IElixirPool_$3273_$","typeString":"type(contract IElixirPool)"}},"id":20267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4993:274:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},{"expression":{"id":20268,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20239,"src":"5286:9:100","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$20181_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":20269,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":20168,"src":"5286:19:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":20270,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20239,"src":"5324:9:100","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$20181_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":20271,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":20170,"src":"5324:19:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"id":20250,"name":"_getFeeGrowthInside","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20410,"src":"4955:19:100","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IElixirPool_$3273_$_t_int24_$_t_int24_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract IElixirPool,int24,int24) view returns (uint256,uint256)"}},"id":20272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4955:403:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4863:495:100"},{"expression":{"id":20289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20274,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20242,"src":"5371:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20277,"name":"poolFeeGrowthInside0LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20247,"src":"5428:28:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":20278,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20239,"src":"5459:9:100","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$20181_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":20279,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"positionFeeGrowthInside0LastX128","nodeType":"MemberAccess","referencedDeclaration":20174,"src":"5459:42:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5428:73:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":20281,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20239,"src":"5520:9:100","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$20181_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":20282,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":20172,"src":"5520:19:100","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":20283,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4065,"src":"5558:13:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$4065_$","typeString":"type(library FixedPoint128)"}},"id":20284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":4064,"src":"5558:18:100","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":20275,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"5394:8:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":20276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"5394:15:100","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":20285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5394:197:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":20286,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20239,"src":"5607:9:100","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$20181_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":20287,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed0","nodeType":"MemberAccess","referencedDeclaration":20178,"src":"5607:21:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5394:234:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5371:257:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20290,"nodeType":"ExpressionStatement","src":"5371:257:100"},{"expression":{"id":20306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20291,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20244,"src":"5641:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20294,"name":"poolFeeGrowthInside1LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20249,"src":"5698:28:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":20295,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20239,"src":"5729:9:100","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$20181_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":20296,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"positionFeeGrowthInside1LastX128","nodeType":"MemberAccess","referencedDeclaration":20176,"src":"5729:42:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5698:73:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":20298,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20239,"src":"5790:9:100","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$20181_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":20299,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":20172,"src":"5790:19:100","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":20300,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4065,"src":"5828:13:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$4065_$","typeString":"type(library FixedPoint128)"}},"id":20301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":4064,"src":"5828:18:100","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":20292,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"5664:8:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":20293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"5664:15:100","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":20302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5664:197:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":20303,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20239,"src":"5877:9:100","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$20181_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":20304,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed1","nodeType":"MemberAccess","referencedDeclaration":20180,"src":"5877:21:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5664:234:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5641:257:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20307,"nodeType":"ExpressionStatement","src":"5641:257:100"}]},"id":20309,"implemented":true,"kind":"function","modifiers":[],"name":"_fees","nodeType":"FunctionDefinition","parameters":{"id":20240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20237,"mutability":"mutable","name":"positionManager","nodeType":"VariableDeclaration","scope":20309,"src":"4691:43:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":20236,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":16094,"src":"4691:27:100","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":20239,"mutability":"mutable","name":"feeParams","nodeType":"VariableDeclaration","scope":20309,"src":"4736:26:100","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$20181_memory_ptr","typeString":"struct PositionValue.FeeParams"},"typeName":{"id":20238,"name":"FeeParams","nodeType":"UserDefinedTypeName","referencedDeclaration":20181,"src":"4736:9:100","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$20181_storage_ptr","typeString":"struct PositionValue.FeeParams"}},"visibility":"internal"}],"src":"4690:73:100"},"returnParameters":{"id":20245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20242,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":20309,"src":"4813:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20241,"name":"uint256","nodeType":"ElementaryTypeName","src":"4813:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20244,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":20309,"src":"4830:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20243,"name":"uint256","nodeType":"ElementaryTypeName","src":"4830:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4812:34:100"},"scope":20411,"src":"4676:1230:100","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":20409,"nodeType":"Block","src":"6111:1175:100","statements":[{"assignments":[null,20323,null,null,null,null,null],"declarations":[null,{"constant":false,"id":20323,"mutability":"mutable","name":"tickCurrent","nodeType":"VariableDeclaration","scope":20409,"src":"6125:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":20322,"name":"int24","nodeType":"ElementaryTypeName","src":"6125:5:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},null,null,null,null,null],"id":20327,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20324,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20311,"src":"6156:4:100","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":20325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":3680,"src":"6156:10:100","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":20326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6156:12:100","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":"6122:46:100"},{"assignments":[null,null,20329,20331,null,null,null,null,null],"declarations":[null,null,{"constant":false,"id":20329,"mutability":"mutable","name":"lowerFeeGrowthOutside0X128","nodeType":"VariableDeclaration","scope":20409,"src":"6184:34:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20328,"name":"uint256","nodeType":"ElementaryTypeName","src":"6184:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20331,"mutability":"mutable","name":"lowerFeeGrowthOutside1X128","nodeType":"VariableDeclaration","scope":20409,"src":"6220:34:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20330,"name":"uint256","nodeType":"ElementaryTypeName","src":"6220:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null,null,null,null,null],"id":20336,"initialValue":{"arguments":[{"id":20334,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20313,"src":"6279:9:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":20332,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20311,"src":"6268:4:100","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":20333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ticks","nodeType":"MemberAccess","referencedDeclaration":3738,"src":"6268:10:100","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_$_t_uint192_$","typeString":"function (int24) view external returns (uint128,int128,uint256,uint256,int56,uint160,uint32,bool,uint192)"}},"id":20335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6268:21:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_int128_$_t_uint256_$_t_uint256_$_t_int56_$_t_uint160_$_t_uint32_$_t_bool_$_t_uint192_$","typeString":"tuple(uint128,int128,uint256,uint256,int56,uint160,uint32,bool,uint192)"}},"nodeType":"VariableDeclarationStatement","src":"6179:110:100"},{"assignments":[null,null,20338,20340,null,null,null,null,null],"declarations":[null,null,{"constant":false,"id":20338,"mutability":"mutable","name":"upperFeeGrowthOutside0X128","nodeType":"VariableDeclaration","scope":20409,"src":"6305:34:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20337,"name":"uint256","nodeType":"ElementaryTypeName","src":"6305:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20340,"mutability":"mutable","name":"upperFeeGrowthOutside1X128","nodeType":"VariableDeclaration","scope":20409,"src":"6341:34:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20339,"name":"uint256","nodeType":"ElementaryTypeName","src":"6341:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null,null,null,null,null],"id":20345,"initialValue":{"arguments":[{"id":20343,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20315,"src":"6400:9:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":20341,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20311,"src":"6389:4:100","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":20342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ticks","nodeType":"MemberAccess","referencedDeclaration":3738,"src":"6389:10:100","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_$_t_uint192_$","typeString":"function (int24) view external returns (uint128,int128,uint256,uint256,int56,uint160,uint32,bool,uint192)"}},"id":20344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6389:21:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_int128_$_t_uint256_$_t_uint256_$_t_int56_$_t_uint160_$_t_uint32_$_t_bool_$_t_uint192_$","typeString":"tuple(uint128,int128,uint256,uint256,int56,uint160,uint32,bool,uint192)"}},"nodeType":"VariableDeclarationStatement","src":"6300:110:100"},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":20348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20346,"name":"tickCurrent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20323,"src":"6427:11:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":20347,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20313,"src":"6441:9:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"6427:23:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":20364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20362,"name":"tickCurrent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20323,"src":"6660:11:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":20363,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20315,"src":"6674:9:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"6660:23:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":20406,"nodeType":"Block","src":"7081:198:100","statements":[{"expression":{"id":20398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20394,"name":"feeGrowthInside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20318,"src":"7096:20:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20395,"name":"upperFeeGrowthOutside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20338,"src":"7119:26:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20396,"name":"lowerFeeGrowthOutside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20329,"src":"7148:26:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7119:55:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7096:78:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20399,"nodeType":"ExpressionStatement","src":"7096:78:100"},{"expression":{"id":20404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20400,"name":"feeGrowthInside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20320,"src":"7189:20:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20401,"name":"upperFeeGrowthOutside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20340,"src":"7212:26:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20402,"name":"lowerFeeGrowthOutside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20331,"src":"7241:26:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7212:55:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7189:78:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20405,"nodeType":"ExpressionStatement","src":"7189:78:100"}]},"id":20407,"nodeType":"IfStatement","src":"6656:623:100","trueBody":{"id":20393,"nodeType":"Block","src":"6685:390:100","statements":[{"assignments":[20366],"declarations":[{"constant":false,"id":20366,"mutability":"mutable","name":"feeGrowthGlobal0X128","nodeType":"VariableDeclaration","scope":20393,"src":"6700:28:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20365,"name":"uint256","nodeType":"ElementaryTypeName","src":"6700:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20370,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20367,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20311,"src":"6731:4:100","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":20368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthGlobal0X128","nodeType":"MemberAccess","referencedDeclaration":3694,"src":"6731:25:100","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":20369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6731:27:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6700:58:100"},{"assignments":[20372],"declarations":[{"constant":false,"id":20372,"mutability":"mutable","name":"feeGrowthGlobal1X128","nodeType":"VariableDeclaration","scope":20393,"src":"6773:28:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20371,"name":"uint256","nodeType":"ElementaryTypeName","src":"6773:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20376,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20373,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20311,"src":"6804:4:100","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":20374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthGlobal1X128","nodeType":"MemberAccess","referencedDeclaration":3700,"src":"6804:25:100","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":20375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6804:27:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6773:58:100"},{"expression":{"id":20383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20377,"name":"feeGrowthInside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20318,"src":"6846:20:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20378,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20366,"src":"6869:20:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20379,"name":"lowerFeeGrowthOutside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20329,"src":"6892:26:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6869:49:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20381,"name":"upperFeeGrowthOutside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20338,"src":"6921:26:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6869:78:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6846:101:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20384,"nodeType":"ExpressionStatement","src":"6846:101:100"},{"expression":{"id":20391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20385,"name":"feeGrowthInside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20320,"src":"6962:20:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20386,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20372,"src":"6985:20:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20387,"name":"lowerFeeGrowthOutside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20331,"src":"7008:26:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6985:49:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20389,"name":"upperFeeGrowthOutside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20340,"src":"7037:26:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6985:78:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6962:101:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20392,"nodeType":"ExpressionStatement","src":"6962:101:100"}]}},"id":20408,"nodeType":"IfStatement","src":"6423:856:100","trueBody":{"id":20361,"nodeType":"Block","src":"6452:198:100","statements":[{"expression":{"id":20353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20349,"name":"feeGrowthInside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20318,"src":"6467:20:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20350,"name":"lowerFeeGrowthOutside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20329,"src":"6490:26:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20351,"name":"upperFeeGrowthOutside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20338,"src":"6519:26:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6490:55:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6467:78:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20354,"nodeType":"ExpressionStatement","src":"6467:78:100"},{"expression":{"id":20359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20355,"name":"feeGrowthInside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20320,"src":"6560:20:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20356,"name":"lowerFeeGrowthOutside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20331,"src":"6583:26:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20357,"name":"upperFeeGrowthOutside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20340,"src":"6612:26:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6583:55:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6560:78:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20360,"nodeType":"ExpressionStatement","src":"6560:78:100"}]}}]},"id":20410,"implemented":true,"kind":"function","modifiers":[],"name":"_getFeeGrowthInside","nodeType":"FunctionDefinition","parameters":{"id":20316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20311,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":20410,"src":"5953:16:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"},"typeName":{"id":20310,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":3273,"src":"5953:11:100","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"visibility":"internal"},{"constant":false,"id":20313,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":20410,"src":"5980:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":20312,"name":"int24","nodeType":"ElementaryTypeName","src":"5980:5:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":20315,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":20410,"src":"6006:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":20314,"name":"int24","nodeType":"ElementaryTypeName","src":"6006:5:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"5942:86:100"},"returnParameters":{"id":20321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20318,"mutability":"mutable","name":"feeGrowthInside0X128","nodeType":"VariableDeclaration","scope":20410,"src":"6051:28:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20317,"name":"uint256","nodeType":"ElementaryTypeName","src":"6051:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20320,"mutability":"mutable","name":"feeGrowthInside1X128","nodeType":"VariableDeclaration","scope":20410,"src":"6081:28:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20319,"name":"uint256","nodeType":"ElementaryTypeName","src":"6081:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6050:60:100"},"scope":20411,"src":"5914:1372:100","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":20412,"src":"520:6769:100"}],"src":"46:7245:100"},"id":100},"contracts/elixir-periphery/libraries/SqrtPriceMathPartial.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/SqrtPriceMathPartial.sol","exportedSymbols":{"FixedPoint96":[4075],"FullMath":[4248],"SqrtPriceMathPartial":[20536],"UnsafeMath":[7634]},"id":20537,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":20413,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:101"},{"absolutePath":"contracts/elixir-core/libraries/FullMath.sol","file":"../../elixir-core/libraries/FullMath.sol","id":20414,"nodeType":"ImportDirective","scope":20537,"sourceUnit":4249,"src":"74:50:101","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/UnsafeMath.sol","file":"../../elixir-core/libraries/UnsafeMath.sol","id":20415,"nodeType":"ImportDirective","scope":20537,"sourceUnit":7635,"src":"126:52:101","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-core/libraries/FixedPoint96.sol","file":"../../elixir-core/libraries/FixedPoint96.sol","id":20416,"nodeType":"ImportDirective","scope":20537,"sourceUnit":4076,"src":"180:54:101","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":20417,"nodeType":"StructuredDocumentation","src":"238:208:101","text":"@title Functions based on Q64.96 sqrt price and liquidity\n @notice Exposes two functions from elixir-core SqrtPriceMath\n that use square root of price as a Q64.96 and liquidity to compute deltas"},"fullyImplemented":true,"id":20536,"linearizedBaseContracts":[20536],"name":"SqrtPriceMathPartial","nodeType":"ContractDefinition","nodes":[{"body":{"id":20486,"nodeType":"Block","src":"1219:612:101","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":20433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20431,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20420,"src":"1234:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":20432,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20422,"src":"1250:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1234:29:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20442,"nodeType":"IfStatement","src":"1230:98:101","trueBody":{"expression":{"id":20440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":20434,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20420,"src":"1266:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20435,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20422,"src":"1281:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":20436,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1265:30:101","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":20437,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20422,"src":"1299:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20438,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20420,"src":"1314:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":20439,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1298:30:101","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"1265:63:101","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20441,"nodeType":"ExpressionStatement","src":"1265:63:101"}},{"assignments":[20444],"declarations":[{"constant":false,"id":20444,"mutability":"mutable","name":"numerator1","nodeType":"VariableDeclaration","scope":20486,"src":"1341:18:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20443,"name":"uint256","nodeType":"ElementaryTypeName","src":"1341:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20452,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":20447,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20424,"src":"1370:9:101","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":20446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1362:7:101","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":20445,"name":"uint256","nodeType":"ElementaryTypeName","src":"1362:7:101","typeDescriptions":{}}},"id":20448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1362:18:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"expression":{"id":20449,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4075,"src":"1384:12:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$4075_$","typeString":"type(library FixedPoint96)"}},"id":20450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"RESOLUTION","nodeType":"MemberAccess","referencedDeclaration":4071,"src":"1384:23:101","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1362:45:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1341:66:101"},{"assignments":[20454],"declarations":[{"constant":false,"id":20454,"mutability":"mutable","name":"numerator2","nodeType":"VariableDeclaration","scope":20486,"src":"1418:18:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20453,"name":"uint256","nodeType":"ElementaryTypeName","src":"1418:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20458,"initialValue":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":20457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20455,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20422,"src":"1439:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20456,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20420,"src":"1455:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1439:29:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"1418:50:101"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":20462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20460,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20420,"src":"1489:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":20461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1505:1:101","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1489:17:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":20459,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1481:7:101","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":20463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1481:26:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20464,"nodeType":"ExpressionStatement","src":"1481:26:101"},{"expression":{"condition":{"id":20465,"name":"roundUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20426,"src":"1540:7:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":20478,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20444,"src":"1769:10:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20479,"name":"numerator2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20454,"src":"1781:10:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20480,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20422,"src":"1793:13:101","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":20476,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"1753:8:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":20477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"1753:15:101","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":20481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1753:54:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":20482,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20420,"src":"1810:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1753:70:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1540:283:101","trueExpression":{"arguments":[{"arguments":[{"id":20470,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20444,"src":"1640:10:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20471,"name":"numerator2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20454,"src":"1652:10:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20472,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20422,"src":"1664:13:101","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":20468,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"1614:8:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":20469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":4247,"src":"1614:25:101","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":20473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1614:64:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20474,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20420,"src":"1701:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":20466,"name":"UnsafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7634,"src":"1567:10:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UnsafeMath_$7634_$","typeString":"type(library UnsafeMath)"}},"id":20467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divRoundingUp","nodeType":"MemberAccess","referencedDeclaration":7633,"src":"1567:24:101","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":20475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1567:166:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20430,"id":20485,"nodeType":"Return","src":"1520:303:101"}]},"documentation":{"id":20418,"nodeType":"StructuredDocumentation","src":"482:544:101","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":20487,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount0Delta","nodeType":"FunctionDefinition","parameters":{"id":20427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20420,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":20487,"src":"1067:21:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20419,"name":"uint160","nodeType":"ElementaryTypeName","src":"1067:7:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20422,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":20487,"src":"1099:21:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20421,"name":"uint160","nodeType":"ElementaryTypeName","src":"1099:7:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20424,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":20487,"src":"1131:17:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":20423,"name":"uint128","nodeType":"ElementaryTypeName","src":"1131:7:101","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":20426,"mutability":"mutable","name":"roundUp","nodeType":"VariableDeclaration","scope":20487,"src":"1159:12:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20425,"name":"bool","nodeType":"ElementaryTypeName","src":"1159:4:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1056:122:101"},"returnParameters":{"id":20430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20429,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":20487,"src":"1202:15:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20428,"name":"uint256","nodeType":"ElementaryTypeName","src":"1202:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1201:17:101"},"scope":20536,"src":"1032:799:101","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":20534,"nodeType":"Block","src":"2482:357:101","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":20503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20501,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20490,"src":"2497:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":20502,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20492,"src":"2513:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2497:29:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20512,"nodeType":"IfStatement","src":"2493:98:101","trueBody":{"expression":{"id":20510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":20504,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20490,"src":"2529:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20505,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20492,"src":"2544:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":20506,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2528:30:101","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":20507,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20492,"src":"2562:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20508,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20490,"src":"2577:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":20509,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2561:30:101","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"2528:63:101","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20511,"nodeType":"ExpressionStatement","src":"2528:63:101"}},{"expression":{"condition":{"id":20513,"name":"roundUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20496,"src":"2624:7:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":20525,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20494,"src":"2772:9:101","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":20528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20526,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20492,"src":"2783:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20527,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20490,"src":"2799:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2783:29:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":20529,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4075,"src":"2814:12:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$4075_$","typeString":"type(library FixedPoint96)"}},"id":20530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":4074,"src":"2814:16:101","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":20523,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"2756:8:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":20524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":4204,"src":"2756:15:101","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":20531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2756:75:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2624:207:101","trueExpression":{"arguments":[{"id":20516,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20494,"src":"2677:9:101","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":20519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20517,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20492,"src":"2688:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20518,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20490,"src":"2704:13:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2688:29:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":20520,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4075,"src":"2719:12:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$4075_$","typeString":"type(library FixedPoint96)"}},"id":20521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":4074,"src":"2719:16:101","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":20514,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"2651:8:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$4248_$","typeString":"type(library FullMath)"}},"id":20515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":4247,"src":"2651:25:101","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":20522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2651:85:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20500,"id":20533,"nodeType":"Return","src":"2604:227:101"}]},"documentation":{"id":20488,"nodeType":"StructuredDocumentation","src":"1839:450:101","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":20535,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount1Delta","nodeType":"FunctionDefinition","parameters":{"id":20497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20490,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":20535,"src":"2330:21:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20489,"name":"uint160","nodeType":"ElementaryTypeName","src":"2330:7:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20492,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":20535,"src":"2362:21:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20491,"name":"uint160","nodeType":"ElementaryTypeName","src":"2362:7:101","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20494,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":20535,"src":"2394:17:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":20493,"name":"uint128","nodeType":"ElementaryTypeName","src":"2394:7:101","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":20496,"mutability":"mutable","name":"roundUp","nodeType":"VariableDeclaration","scope":20535,"src":"2422:12:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20495,"name":"bool","nodeType":"ElementaryTypeName","src":"2422:4:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2319:122:101"},"returnParameters":{"id":20500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20499,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":20535,"src":"2465:15:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20498,"name":"uint256","nodeType":"ElementaryTypeName","src":"2465:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2464:17:101"},"scope":20536,"src":"2295:544:101","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":20537,"src":"446:2396:101"}],"src":"46:2798:101"},"id":101},"contracts/elixir-periphery/libraries/TokenRatioSortOrder.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/TokenRatioSortOrder.sol","exportedSymbols":{"TokenRatioSortOrder":[20560]},"id":20561,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":20538,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"33:23:102"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":20560,"linearizedBaseContracts":[20560],"name":"TokenRatioSortOrder","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":20541,"mutability":"constant","name":"NUMERATOR_MOST","nodeType":"VariableDeclaration","scope":20560,"src":"95:36:102","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":20539,"name":"int256","nodeType":"ElementaryTypeName","src":"95:6:102","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"333030","id":20540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"128:3:102","typeDescriptions":{"typeIdentifier":"t_rational_300_by_1","typeString":"int_const 300"},"value":"300"},"visibility":"internal"},{"constant":true,"id":20544,"mutability":"constant","name":"NUMERATOR_MORE","nodeType":"VariableDeclaration","scope":20560,"src":"138:36:102","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":20542,"name":"int256","nodeType":"ElementaryTypeName","src":"138:6:102","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"323030","id":20543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"171:3:102","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},"visibility":"internal"},{"constant":true,"id":20547,"mutability":"constant","name":"NUMERATOR","nodeType":"VariableDeclaration","scope":20560,"src":"181:31:102","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":20545,"name":"int256","nodeType":"ElementaryTypeName","src":"181:6:102","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313030","id":20546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"209:3:102","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"visibility":"internal"},{"constant":true,"id":20551,"mutability":"constant","name":"DENOMINATOR_MOST","nodeType":"VariableDeclaration","scope":20560,"src":"221:39:102","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":20548,"name":"int256","nodeType":"ElementaryTypeName","src":"221:6:102","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"id":20550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"256:4:102","subExpression":{"hexValue":"333030","id":20549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"257:3:102","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":20555,"mutability":"constant","name":"DENOMINATOR_MORE","nodeType":"VariableDeclaration","scope":20560,"src":"267:39:102","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":20552,"name":"int256","nodeType":"ElementaryTypeName","src":"267:6:102","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"id":20554,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"302:4:102","subExpression":{"hexValue":"323030","id":20553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"303:3:102","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":20559,"mutability":"constant","name":"DENOMINATOR","nodeType":"VariableDeclaration","scope":20560,"src":"313:34:102","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":20556,"name":"int256","nodeType":"ElementaryTypeName","src":"313:6:102","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"id":20558,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"343:4:102","subExpression":{"hexValue":"313030","id":20557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"344:3:102","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":20561,"src":"60:291:102"}],"src":"33:320:102"},"id":102},"contracts/elixir-periphery/libraries/TransferHelper.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/libraries/TransferHelper.sol","exportedSymbols":{"IERC20":[31070],"TransferHelper":[20731]},"id":20732,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":20562,"literals":["solidity",">=","0.6",".0"],"nodeType":"PragmaDirective","src":"46:24:103"},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","file":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","id":20563,"nodeType":"ImportDirective","scope":20732,"sourceUnit":31071,"src":"74:64:103","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":20731,"linearizedBaseContracts":[20731],"name":"TransferHelper","nodeType":"ContractDefinition","nodes":[{"body":{"id":20611,"nodeType":"Block","src":"715:233:103","statements":[{"assignments":[20576,20578],"declarations":[{"constant":false,"id":20576,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":20611,"src":"727:12:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20575,"name":"bool","nodeType":"ElementaryTypeName","src":"727:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":20578,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":20611,"src":"741:17:103","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":20577,"name":"bytes","nodeType":"ElementaryTypeName","src":"741:5:103","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":20591,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"id":20583,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31070,"src":"809:6:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$31070_$","typeString":"type(contract IERC20)"}},"id":20584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":31051,"src":"809:19:103","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":20585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"809:28:103","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":20586,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20568,"src":"839:4:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20587,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20570,"src":"845:2:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20588,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20572,"src":"849:5:103","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":20581,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"786:3:103","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":20582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"786:22:103","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":20589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"786:69:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":20579,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20566,"src":"775:5:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":20580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"775:10:103","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":20590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"775:81:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"726:130:103"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20593,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20576,"src":"875:7:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20594,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20578,"src":"887:4:103","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":20595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"887:11:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":20596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"902:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"887:16:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":20600,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20578,"src":"918:4:103","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":20602,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"925:4:103","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":20601,"name":"bool","nodeType":"ElementaryTypeName","src":"925:4:103","typeDescriptions":{}}}],"id":20603,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"924:6:103","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":20598,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"907:3:103","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":20599,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"907:10:103","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":20604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"907:24:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"887:44:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":20606,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"886:46:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"875:57:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"535446","id":20608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"934:5:103","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":20592,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"867:7:103","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"867:73:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20610,"nodeType":"ExpressionStatement","src":"867:73:103"}]},"documentation":{"id":20564,"nodeType":"StructuredDocumentation","src":"172:403:103","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":20612,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":20573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20566,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":20612,"src":"617:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20565,"name":"address","nodeType":"ElementaryTypeName","src":"617:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20568,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":20612,"src":"641:12:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20567,"name":"address","nodeType":"ElementaryTypeName","src":"641:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20570,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":20612,"src":"664:10:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20569,"name":"address","nodeType":"ElementaryTypeName","src":"664:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20572,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":20612,"src":"685:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20571,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"606:99:103"},"returnParameters":{"id":20574,"nodeType":"ParameterList","parameters":[],"src":"715:0:103"},"scope":20731,"src":"581:367:103","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":20657,"nodeType":"Block","src":"1354:209:103","statements":[{"assignments":[20623,20625],"declarations":[{"constant":false,"id":20623,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":20657,"src":"1366:12:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20622,"name":"bool","nodeType":"ElementaryTypeName","src":"1366:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":20625,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":20657,"src":"1380:17:103","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":20624,"name":"bytes","nodeType":"ElementaryTypeName","src":"1380:5:103","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":20637,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"id":20630,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31070,"src":"1435:6:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$31070_$","typeString":"type(contract IERC20)"}},"id":20631,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":31019,"src":"1435:15:103","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20.transfer(address,uint256) returns (bool)"}},"id":20632,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1435:24:103","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":20633,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20617,"src":"1461:2:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20634,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20619,"src":"1465:5:103","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":20628,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1412:3:103","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":20629,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1412:22:103","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":20635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1412:59:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":20626,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20615,"src":"1401:5:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":20627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"1401:10:103","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":20636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1401:71:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1365:107:103"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20639,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20623,"src":"1491:7:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20640,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20625,"src":"1503:4:103","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":20641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1503:11:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":20642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1518:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1503:16:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":20646,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20625,"src":"1534:4:103","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":20648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1541:4:103","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":20647,"name":"bool","nodeType":"ElementaryTypeName","src":"1541:4:103","typeDescriptions":{}}}],"id":20649,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1540:6:103","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":20644,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1523:3:103","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":20645,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1523:10:103","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":20650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1523:24:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1503:44:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":20652,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1502:46:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1491:57:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5354","id":20654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1550:4:103","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":20638,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1483:7:103","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1483:72:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20656,"nodeType":"ExpressionStatement","src":"1483:72:103"}]},"documentation":{"id":20613,"nodeType":"StructuredDocumentation","src":"956:285:103","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":20658,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nodeType":"FunctionDefinition","parameters":{"id":20620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20615,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":20658,"src":"1279:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20614,"name":"address","nodeType":"ElementaryTypeName","src":"1279:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20617,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":20658,"src":"1303:10:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20616,"name":"address","nodeType":"ElementaryTypeName","src":"1303:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20619,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":20658,"src":"1324:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20618,"name":"uint256","nodeType":"ElementaryTypeName","src":"1324:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1268:76:103"},"returnParameters":{"id":20621,"nodeType":"ParameterList","parameters":[],"src":"1354:0:103"},"scope":20731,"src":"1247:316:103","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":20703,"nodeType":"Block","src":"2029:208:103","statements":[{"assignments":[20669,20671],"declarations":[{"constant":false,"id":20669,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":20703,"src":"2041:12:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20668,"name":"bool","nodeType":"ElementaryTypeName","src":"2041:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":20671,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":20703,"src":"2055:17:103","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":20670,"name":"bytes","nodeType":"ElementaryTypeName","src":"2055:5:103","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":20683,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"id":20676,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31070,"src":"2110:6:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$31070_$","typeString":"type(contract IERC20)"}},"id":20677,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":31039,"src":"2110:14:103","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20.approve(address,uint256) returns (bool)"}},"id":20678,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"2110:23:103","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":20679,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20663,"src":"2135:2:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20680,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20665,"src":"2139:5:103","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":20674,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2087:3:103","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":20675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2087:22:103","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":20681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2087:58:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":20672,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20661,"src":"2076:5:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":20673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2076:10:103","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":20682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2076:70:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2040:106:103"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20685,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20669,"src":"2165:7:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20686,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20671,"src":"2177:4:103","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":20687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2177:11:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":20688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2192:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2177:16:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":20692,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20671,"src":"2208:4:103","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":20694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2215:4:103","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":20693,"name":"bool","nodeType":"ElementaryTypeName","src":"2215:4:103","typeDescriptions":{}}}],"id":20695,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2214:6:103","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":20690,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2197:3:103","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":20691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2197:10:103","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":20696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2197:24:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2177:44:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":20698,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2176:46:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2165:57:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5341","id":20700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2224:4:103","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":20684,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2157:7:103","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2157:72:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20702,"nodeType":"ExpressionStatement","src":"2157:72:103"}]},"documentation":{"id":20659,"nodeType":"StructuredDocumentation","src":"1571:346:103","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":20704,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nodeType":"FunctionDefinition","parameters":{"id":20666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20661,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":20704,"src":"1954:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20660,"name":"address","nodeType":"ElementaryTypeName","src":"1954:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20663,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":20704,"src":"1978:10:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20662,"name":"address","nodeType":"ElementaryTypeName","src":"1978:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20665,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":20704,"src":"1999:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20664,"name":"uint256","nodeType":"ElementaryTypeName","src":"1999:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1943:76:103"},"returnParameters":{"id":20667,"nodeType":"ParameterList","parameters":[],"src":"2029:0:103"},"scope":20731,"src":"1923:314:103","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":20729,"nodeType":"Block","src":"2494:107:103","statements":[{"assignments":[20713,null],"declarations":[{"constant":false,"id":20713,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":20729,"src":"2506:12:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20712,"name":"bool","nodeType":"ElementaryTypeName","src":"2506:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":20723,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":20720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2556:1:103","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":20719,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2546:9:103","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":20718,"name":"bytes","nodeType":"ElementaryTypeName","src":"2550:5:103","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":20721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2546:12:103","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":20714,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"2524:2:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":20715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2524:7:103","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":20717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":20716,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20709,"src":"2539:5:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2524:21:103","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":20722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2524:35:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2505:54:103"},{"expression":{"arguments":[{"id":20725,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20713,"src":"2578:7:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"535445","id":20726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2587:5:103","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":20724,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2570:7:103","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2570:23:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20728,"nodeType":"ExpressionStatement","src":"2570:23:103"}]},"documentation":{"id":20705,"nodeType":"StructuredDocumentation","src":"2245:182:103","text":"@notice Transfers ETH 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":20730,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferETH","nodeType":"FunctionDefinition","parameters":{"id":20710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20707,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":20730,"src":"2458:10:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20706,"name":"address","nodeType":"ElementaryTypeName","src":"2458:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20709,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":20730,"src":"2470:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20708,"name":"uint256","nodeType":"ElementaryTypeName","src":"2470:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2457:27:103"},"returnParameters":{"id":20711,"nodeType":"ParameterList","parameters":[],"src":"2494:0:103"},"scope":20731,"src":"2433:168:103","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":20732,"src":"142:2462:103"}],"src":"46:2560:103"},"id":103},"contracts/elixir-periphery/test/Base64Test.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/test/Base64Test.sol","exportedSymbols":{"Base64":[114],"Base64Test":[20772]},"id":20773,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":20733,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:104"},{"absolutePath":"base64-sol/base64.sol","file":"base64-sol/base64.sol","id":20734,"nodeType":"ImportDirective","scope":20773,"sourceUnit":115,"src":"67:31:104","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":20772,"linearizedBaseContracts":[20772],"name":"Base64Test","nodeType":"ContractDefinition","nodes":[{"body":{"id":20746,"nodeType":"Block","src":"202:45:104","statements":[{"expression":{"arguments":[{"id":20743,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20736,"src":"234:4:104","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":20741,"name":"Base64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"220:6:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Base64_$114_$","typeString":"type(library Base64)"}},"id":20742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":52,"src":"220:13:104","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function (bytes memory) pure returns (string memory)"}},"id":20744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"220:19:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":20740,"id":20745,"nodeType":"Return","src":"213:26:104"}]},"functionSelector":"12496a1b","id":20747,"implemented":true,"kind":"function","modifiers":[],"name":"encode","nodeType":"FunctionDefinition","parameters":{"id":20737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20736,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":20747,"src":"145:17:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":20735,"name":"bytes","nodeType":"ElementaryTypeName","src":"145:5:104","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"144:19:104"},"returnParameters":{"id":20740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20739,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20747,"src":"187:13:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20738,"name":"string","nodeType":"ElementaryTypeName","src":"187:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"186:15:104"},"scope":20772,"src":"129:118:104","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":20770,"nodeType":"Block","src":"334:117:104","statements":[{"assignments":[20755],"declarations":[{"constant":false,"id":20755,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":20770,"src":"345:17:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20754,"name":"uint256","nodeType":"ElementaryTypeName","src":"345:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20758,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":20756,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"365:7:104","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"365:9:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"345:29:104"},{"expression":{"arguments":[{"id":20762,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20749,"src":"399:4:104","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":20759,"name":"Base64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"385:6:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Base64_$114_$","typeString":"type(library Base64)"}},"id":20761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":52,"src":"385:13:104","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function (bytes memory) pure returns (string memory)"}},"id":20763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"385:19:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":20764,"nodeType":"ExpressionStatement","src":"385:19:104"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20765,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20755,"src":"422:9:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":20766,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"434:7:104","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"434:9:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"422:21:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20753,"id":20769,"nodeType":"Return","src":"415:28:104"}]},"functionSelector":"74b86d1e","id":20771,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfEncode","nodeType":"FunctionDefinition","parameters":{"id":20750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20749,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":20771,"src":"283:17:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":20748,"name":"bytes","nodeType":"ElementaryTypeName","src":"283:5:104","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"282:19:104"},"returnParameters":{"id":20753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20752,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20771,"src":"325:7:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20751,"name":"uint256","nodeType":"ElementaryTypeName","src":"325:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"324:9:104"},"scope":20772,"src":"255:196:104","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":20773,"src":"102:352:104"}],"src":"40:416:104"},"id":104},"contracts/elixir-periphery/test/LiquidityAmountsTest.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/test/LiquidityAmountsTest.sol","exportedSymbols":{"FixedPoint96":[4075],"FullMath":[4248],"LiquidityAmounts":[17982],"LiquidityAmountsTest":[21090]},"id":21091,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":20774,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:105"},{"absolutePath":"contracts/elixir-periphery/libraries/LiquidityAmounts.sol","file":"../libraries/LiquidityAmounts.sol","id":20775,"nodeType":"ImportDirective","scope":21091,"sourceUnit":17983,"src":"67:43:105","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":21090,"linearizedBaseContracts":[21090],"name":"LiquidityAmountsTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":20793,"nodeType":"Block","src":"322:104:105","statements":[{"expression":{"arguments":[{"id":20788,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20777,"src":"380:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20789,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20779,"src":"395:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20790,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20781,"src":"410:7:105","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":20786,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17982,"src":"340:16:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$17982_$","typeString":"type(library LiquidityAmounts)"}},"id":20787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityForAmount0","nodeType":"MemberAccess","referencedDeclaration":17714,"src":"340:39:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":20791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"340:78:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":20785,"id":20792,"nodeType":"Return","src":"333:85:105"}]},"functionSelector":"67df6e89","id":20794,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityForAmount0","nodeType":"FunctionDefinition","parameters":{"id":20782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20777,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":20794,"src":"193:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20776,"name":"uint160","nodeType":"ElementaryTypeName","src":"193:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20779,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":20794,"src":"225:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20778,"name":"uint160","nodeType":"ElementaryTypeName","src":"225:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20781,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":20794,"src":"257:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20780,"name":"uint256","nodeType":"ElementaryTypeName","src":"257:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"182:97:105"},"returnParameters":{"id":20785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20784,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":20794,"src":"303:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":20783,"name":"uint128","nodeType":"ElementaryTypeName","src":"303:7:105","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"302:19:105"},"scope":21090,"src":"151:275:105","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":20823,"nodeType":"Block","src":"607:176:105","statements":[{"assignments":[20806],"declarations":[{"constant":false,"id":20806,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":20823,"src":"618:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20805,"name":"uint256","nodeType":"ElementaryTypeName","src":"618:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20809,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":20807,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"638:7:105","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"638:9:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"618:29:105"},{"expression":{"arguments":[{"id":20813,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20796,"src":"698:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20814,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20798,"src":"713:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20815,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20800,"src":"728:7:105","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":20810,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17982,"src":"658:16:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$17982_$","typeString":"type(library LiquidityAmounts)"}},"id":20812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityForAmount0","nodeType":"MemberAccess","referencedDeclaration":17714,"src":"658:39:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":20816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"658:78:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":20817,"nodeType":"ExpressionStatement","src":"658:78:105"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20818,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20806,"src":"754:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":20819,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"766:7:105","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"766:9:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"754:21:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20804,"id":20822,"nodeType":"Return","src":"747:28:105"}]},"functionSelector":"d2246209","id":20824,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetLiquidityForAmount0","nodeType":"FunctionDefinition","parameters":{"id":20801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20796,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":20824,"src":"488:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20795,"name":"uint160","nodeType":"ElementaryTypeName","src":"488:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20798,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":20824,"src":"520:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20797,"name":"uint160","nodeType":"ElementaryTypeName","src":"520:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20800,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":20824,"src":"552:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20799,"name":"uint256","nodeType":"ElementaryTypeName","src":"552:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"477:97:105"},"returnParameters":{"id":20804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20803,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20824,"src":"598:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20802,"name":"uint256","nodeType":"ElementaryTypeName","src":"598:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"597:9:105"},"scope":21090,"src":"434:349:105","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":20842,"nodeType":"Block","src":"962:104:105","statements":[{"expression":{"arguments":[{"id":20837,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20826,"src":"1020:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20838,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20828,"src":"1035:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20839,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20830,"src":"1050:7:105","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":20835,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17982,"src":"980:16:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$17982_$","typeString":"type(library LiquidityAmounts)"}},"id":20836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityForAmount1","nodeType":"MemberAccess","referencedDeclaration":17751,"src":"980:39:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":20840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"980:78:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":20834,"id":20841,"nodeType":"Return","src":"973:85:105"}]},"functionSelector":"08c0f795","id":20843,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityForAmount1","nodeType":"FunctionDefinition","parameters":{"id":20831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20826,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":20843,"src":"833:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20825,"name":"uint160","nodeType":"ElementaryTypeName","src":"833:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20828,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":20843,"src":"865:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20827,"name":"uint160","nodeType":"ElementaryTypeName","src":"865:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20830,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":20843,"src":"897:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20829,"name":"uint256","nodeType":"ElementaryTypeName","src":"897:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"822:97:105"},"returnParameters":{"id":20834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20833,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":20843,"src":"943:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":20832,"name":"uint128","nodeType":"ElementaryTypeName","src":"943:7:105","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"942:19:105"},"scope":21090,"src":"791:275:105","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":20872,"nodeType":"Block","src":"1247:176:105","statements":[{"assignments":[20855],"declarations":[{"constant":false,"id":20855,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":20872,"src":"1258:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20854,"name":"uint256","nodeType":"ElementaryTypeName","src":"1258:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20858,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":20856,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1278:7:105","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1278:9:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1258:29:105"},{"expression":{"arguments":[{"id":20862,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20845,"src":"1338:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20863,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20847,"src":"1353:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20864,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20849,"src":"1368:7:105","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":20859,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17982,"src":"1298:16:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$17982_$","typeString":"type(library LiquidityAmounts)"}},"id":20861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityForAmount1","nodeType":"MemberAccess","referencedDeclaration":17751,"src":"1298:39:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":20865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1298:78:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":20866,"nodeType":"ExpressionStatement","src":"1298:78:105"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20867,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20855,"src":"1394:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":20868,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1406:7:105","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1406:9:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1394:21:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20853,"id":20871,"nodeType":"Return","src":"1387:28:105"}]},"functionSelector":"cb1b9496","id":20873,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetLiquidityForAmount1","nodeType":"FunctionDefinition","parameters":{"id":20850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20845,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":20873,"src":"1128:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20844,"name":"uint160","nodeType":"ElementaryTypeName","src":"1128:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20847,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":20873,"src":"1160:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20846,"name":"uint160","nodeType":"ElementaryTypeName","src":"1160:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20849,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":20873,"src":"1192:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20848,"name":"uint256","nodeType":"ElementaryTypeName","src":"1192:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1117:97:105"},"returnParameters":{"id":20853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20852,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20873,"src":"1238:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20851,"name":"uint256","nodeType":"ElementaryTypeName","src":"1238:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1237:9:105"},"scope":21090,"src":"1074:349:105","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":20897,"nodeType":"Block","src":"1659:127:105","statements":[{"expression":{"arguments":[{"id":20890,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20875,"src":"1717:12:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20891,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20877,"src":"1731:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20892,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20879,"src":"1746:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20893,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20881,"src":"1761:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20894,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20883,"src":"1770:7:105","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":20888,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17982,"src":"1677:16:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$17982_$","typeString":"type(library LiquidityAmounts)"}},"id":20889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityForAmounts","nodeType":"MemberAccess","referencedDeclaration":17832,"src":"1677:39:105","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":20895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1677:101:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":20887,"id":20896,"nodeType":"Return","src":"1670:108:105"}]},"functionSelector":"6098fd4a","id":20898,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityForAmounts","nodeType":"FunctionDefinition","parameters":{"id":20884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20875,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":20898,"src":"1473:20:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20874,"name":"uint160","nodeType":"ElementaryTypeName","src":"1473:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20877,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":20898,"src":"1504:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20876,"name":"uint160","nodeType":"ElementaryTypeName","src":"1504:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20879,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":20898,"src":"1536:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20878,"name":"uint160","nodeType":"ElementaryTypeName","src":"1536:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20881,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":20898,"src":"1568:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20880,"name":"uint256","nodeType":"ElementaryTypeName","src":"1568:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20883,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":20898,"src":"1594:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20882,"name":"uint256","nodeType":"ElementaryTypeName","src":"1594:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1462:154:105"},"returnParameters":{"id":20887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20886,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":20898,"src":"1640:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":20885,"name":"uint128","nodeType":"ElementaryTypeName","src":"1640:7:105","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1639:19:105"},"scope":21090,"src":"1431:355:105","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":20933,"nodeType":"Block","src":"2024:199:105","statements":[{"assignments":[20914],"declarations":[{"constant":false,"id":20914,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":20933,"src":"2035:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20913,"name":"uint256","nodeType":"ElementaryTypeName","src":"2035:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20917,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":20915,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"2055:7:105","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2055:9:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2035:29:105"},{"expression":{"arguments":[{"id":20921,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20900,"src":"2115:12:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20922,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20902,"src":"2129:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20923,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20904,"src":"2144:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20924,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20906,"src":"2159:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20925,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20908,"src":"2168:7:105","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":20918,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17982,"src":"2075:16:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$17982_$","typeString":"type(library LiquidityAmounts)"}},"id":20920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityForAmounts","nodeType":"MemberAccess","referencedDeclaration":17832,"src":"2075:39:105","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":20926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2075:101:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":20927,"nodeType":"ExpressionStatement","src":"2075:101:105"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20928,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20914,"src":"2194:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":20929,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"2206:7:105","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2206:9:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2194:21:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20912,"id":20932,"nodeType":"Return","src":"2187:28:105"}]},"functionSelector":"f7212103","id":20934,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetLiquidityForAmounts","nodeType":"FunctionDefinition","parameters":{"id":20909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20900,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":20934,"src":"1848:20:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20899,"name":"uint160","nodeType":"ElementaryTypeName","src":"1848:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20902,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":20934,"src":"1879:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20901,"name":"uint160","nodeType":"ElementaryTypeName","src":"1879:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20904,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":20934,"src":"1911:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20903,"name":"uint160","nodeType":"ElementaryTypeName","src":"1911:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20906,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":20934,"src":"1943:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20905,"name":"uint256","nodeType":"ElementaryTypeName","src":"1943:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20908,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":20934,"src":"1969:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20907,"name":"uint256","nodeType":"ElementaryTypeName","src":"1969:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1837:154:105"},"returnParameters":{"id":20912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20911,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20934,"src":"2015:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20910,"name":"uint256","nodeType":"ElementaryTypeName","src":"2015:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2014:9:105"},"scope":21090,"src":"1794:429:105","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":20952,"nodeType":"Block","src":"2402:106:105","statements":[{"expression":{"arguments":[{"id":20947,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20936,"src":"2460:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20948,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20938,"src":"2475:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20949,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20940,"src":"2490:9:105","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":20945,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17982,"src":"2420:16:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$17982_$","typeString":"type(library LiquidityAmounts)"}},"id":20946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0ForLiquidity","nodeType":"MemberAccess","referencedDeclaration":17874,"src":"2420:39:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":20950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2420:80:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20944,"id":20951,"nodeType":"Return","src":"2413:87:105"}]},"functionSelector":"6ac69a8e","id":20953,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount0ForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":20941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20936,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":20953,"src":"2273:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20935,"name":"uint160","nodeType":"ElementaryTypeName","src":"2273:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20938,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":20953,"src":"2305:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20937,"name":"uint160","nodeType":"ElementaryTypeName","src":"2305:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20940,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":20953,"src":"2337:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":20939,"name":"uint128","nodeType":"ElementaryTypeName","src":"2337:7:105","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2262:99:105"},"returnParameters":{"id":20944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20943,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":20953,"src":"2385:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20942,"name":"uint256","nodeType":"ElementaryTypeName","src":"2385:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2384:17:105"},"scope":21090,"src":"2231:277:105","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":20982,"nodeType":"Block","src":"2691:178:105","statements":[{"assignments":[20965],"declarations":[{"constant":false,"id":20965,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":20982,"src":"2702:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20964,"name":"uint256","nodeType":"ElementaryTypeName","src":"2702:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20968,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":20966,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"2722:7:105","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2722:9:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2702:29:105"},{"expression":{"arguments":[{"id":20972,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20955,"src":"2782:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20973,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20957,"src":"2797:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20974,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20959,"src":"2812:9:105","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":20969,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17982,"src":"2742:16:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$17982_$","typeString":"type(library LiquidityAmounts)"}},"id":20971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0ForLiquidity","nodeType":"MemberAccess","referencedDeclaration":17874,"src":"2742:39:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":20975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2742:80:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20976,"nodeType":"ExpressionStatement","src":"2742:80:105"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20977,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20965,"src":"2840:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":20978,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"2852:7:105","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2852:9:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2840:21:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20963,"id":20981,"nodeType":"Return","src":"2833:28:105"}]},"functionSelector":"29098462","id":20983,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetAmount0ForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":20960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20955,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":20983,"src":"2570:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20954,"name":"uint160","nodeType":"ElementaryTypeName","src":"2570:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20957,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":20983,"src":"2602:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20956,"name":"uint160","nodeType":"ElementaryTypeName","src":"2602:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20959,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":20983,"src":"2634:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":20958,"name":"uint128","nodeType":"ElementaryTypeName","src":"2634:7:105","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2559:99:105"},"returnParameters":{"id":20963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20962,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20983,"src":"2682:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20961,"name":"uint256","nodeType":"ElementaryTypeName","src":"2682:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2681:9:105"},"scope":21090,"src":"2516:353:105","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":21001,"nodeType":"Block","src":"3048:106:105","statements":[{"expression":{"arguments":[{"id":20996,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20985,"src":"3106:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20997,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20987,"src":"3121:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":20998,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20989,"src":"3136:9:105","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":20994,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17982,"src":"3066:16:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$17982_$","typeString":"type(library LiquidityAmounts)"}},"id":20995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount1ForLiquidity","nodeType":"MemberAccess","referencedDeclaration":17909,"src":"3066:39:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":20999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3066:80:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20993,"id":21000,"nodeType":"Return","src":"3059:87:105"}]},"functionSelector":"29e24cb7","id":21002,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount1ForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":20990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20985,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":21002,"src":"2919:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20984,"name":"uint160","nodeType":"ElementaryTypeName","src":"2919:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20987,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":21002,"src":"2951:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":20986,"name":"uint160","nodeType":"ElementaryTypeName","src":"2951:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":20989,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":21002,"src":"2983:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":20988,"name":"uint128","nodeType":"ElementaryTypeName","src":"2983:7:105","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2908:99:105"},"returnParameters":{"id":20993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20992,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":21002,"src":"3031:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20991,"name":"uint256","nodeType":"ElementaryTypeName","src":"3031:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3030:17:105"},"scope":21090,"src":"2877:277:105","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":21031,"nodeType":"Block","src":"3337:178:105","statements":[{"assignments":[21014],"declarations":[{"constant":false,"id":21014,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":21031,"src":"3348:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21013,"name":"uint256","nodeType":"ElementaryTypeName","src":"3348:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21017,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":21015,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"3368:7:105","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3368:9:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3348:29:105"},{"expression":{"arguments":[{"id":21021,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21004,"src":"3428:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":21022,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21006,"src":"3443:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":21023,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21008,"src":"3458:9:105","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":21018,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17982,"src":"3388:16:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$17982_$","typeString":"type(library LiquidityAmounts)"}},"id":21020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityForAmount1","nodeType":"MemberAccess","referencedDeclaration":17751,"src":"3388:39:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":21024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3388:80:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":21025,"nodeType":"ExpressionStatement","src":"3388:80:105"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21026,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21014,"src":"3486:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":21027,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"3498:7:105","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3498:9:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3486:21:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21012,"id":21030,"nodeType":"Return","src":"3479:28:105"}]},"functionSelector":"bf1d2c71","id":21032,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetAmount1ForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":21009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21004,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":21032,"src":"3216:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":21003,"name":"uint160","nodeType":"ElementaryTypeName","src":"3216:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":21006,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":21032,"src":"3248:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":21005,"name":"uint160","nodeType":"ElementaryTypeName","src":"3248:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":21008,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":21032,"src":"3280:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":21007,"name":"uint128","nodeType":"ElementaryTypeName","src":"3280:7:105","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3205:99:105"},"returnParameters":{"id":21012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21011,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21032,"src":"3328:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21010,"name":"uint256","nodeType":"ElementaryTypeName","src":"3328:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3327:9:105"},"scope":21090,"src":"3162:353:105","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":21055,"nodeType":"Block","src":"3742:120:105","statements":[{"expression":{"arguments":[{"id":21049,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21034,"src":"3800:12:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":21050,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21036,"src":"3814:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":21051,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21038,"src":"3829:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":21052,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21040,"src":"3844:9:105","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":21047,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17982,"src":"3760:16:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$17982_$","typeString":"type(library LiquidityAmounts)"}},"id":21048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsForLiquidity","nodeType":"MemberAccess","referencedDeclaration":17981,"src":"3760:39:105","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":21053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3760:94:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":21046,"id":21054,"nodeType":"Return","src":"3753:101:105"}]},"functionSelector":"c72e160b","id":21056,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountsForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":21041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21034,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":21056,"src":"3565:20:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":21033,"name":"uint160","nodeType":"ElementaryTypeName","src":"3565:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":21036,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":21056,"src":"3596:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":21035,"name":"uint160","nodeType":"ElementaryTypeName","src":"3596:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":21038,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":21056,"src":"3628:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":21037,"name":"uint160","nodeType":"ElementaryTypeName","src":"3628:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":21040,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":21056,"src":"3660:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":21039,"name":"uint128","nodeType":"ElementaryTypeName","src":"3660:7:105","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3554:130:105"},"returnParameters":{"id":21046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21043,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":21056,"src":"3708:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21042,"name":"uint256","nodeType":"ElementaryTypeName","src":"3708:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21045,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":21056,"src":"3725:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21044,"name":"uint256","nodeType":"ElementaryTypeName","src":"3725:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3707:34:105"},"scope":21090,"src":"3523:339:105","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":21088,"nodeType":"Block","src":"4076:192:105","statements":[{"assignments":[21070],"declarations":[{"constant":false,"id":21070,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":21088,"src":"4087:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21069,"name":"uint256","nodeType":"ElementaryTypeName","src":"4087:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21073,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":21071,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"4107:7:105","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4107:9:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4087:29:105"},{"expression":{"arguments":[{"id":21077,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21058,"src":"4167:12:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":21078,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21060,"src":"4181:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":21079,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21062,"src":"4196:13:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":21080,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21064,"src":"4211:9:105","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":21074,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17982,"src":"4127:16:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$17982_$","typeString":"type(library LiquidityAmounts)"}},"id":21076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsForLiquidity","nodeType":"MemberAccess","referencedDeclaration":17981,"src":"4127:39:105","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":21081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4127:94:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":21082,"nodeType":"ExpressionStatement","src":"4127:94:105"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21083,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21070,"src":"4239:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":21084,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"4251:7:105","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4251:9:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4239:21:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21068,"id":21087,"nodeType":"Return","src":"4232:28:105"}]},"functionSelector":"e26274bd","id":21089,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetAmountsForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":21065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21058,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":21089,"src":"3924:20:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":21057,"name":"uint160","nodeType":"ElementaryTypeName","src":"3924:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":21060,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":21089,"src":"3955:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":21059,"name":"uint160","nodeType":"ElementaryTypeName","src":"3955:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":21062,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":21089,"src":"3987:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":21061,"name":"uint160","nodeType":"ElementaryTypeName","src":"3987:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":21064,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":21089,"src":"4019:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":21063,"name":"uint128","nodeType":"ElementaryTypeName","src":"4019:7:105","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3913:130:105"},"returnParameters":{"id":21068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21067,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21089,"src":"4067:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21066,"name":"uint256","nodeType":"ElementaryTypeName","src":"4067:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4066:9:105"},"scope":21090,"src":"3870:398:105","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":21091,"src":"114:4157:105"}],"src":"40:4233:105"},"id":105},"contracts/elixir-periphery/test/MockObservations.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/test/MockObservations.sol","exportedSymbols":{"MockObservations":[21283],"Oracle":[5283]},"id":21284,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":21092,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:106"},{"absolutePath":"contracts/elixir-core/libraries/Oracle.sol","file":"../../elixir-core/libraries/Oracle.sol","id":21093,"nodeType":"ImportDirective","scope":21284,"sourceUnit":5284,"src":"67:48:106","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":21283,"linearizedBaseContracts":[21283],"name":"MockObservations","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":21097,"mutability":"mutable","name":"oracleObservations","nodeType":"VariableDeclaration","scope":21283,"src":"152:49:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$4_storage","typeString":"struct Oracle.Observation[4]"},"typeName":{"baseType":{"id":21094,"name":"Oracle.Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"152:18:106","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"id":21096,"length":{"hexValue":"34","id":21095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"171:1:106","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"152:21:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$4_storage_ptr","typeString":"struct Oracle.Observation[4]"}},"visibility":"internal"},{"constant":false,"id":21099,"mutability":"mutable","name":"slot0Tick","nodeType":"VariableDeclaration","scope":21283,"src":"210:15:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":21098,"name":"int24","nodeType":"ElementaryTypeName","src":"210:5:106","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":21101,"mutability":"mutable","name":"slot0ObservationCardinality","nodeType":"VariableDeclaration","scope":21283,"src":"232:43:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":21100,"name":"uint16","nodeType":"ElementaryTypeName","src":"232:6:106","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":21103,"mutability":"mutable","name":"slot0ObservationIndex","nodeType":"VariableDeclaration","scope":21283,"src":"282:37:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":21102,"name":"uint16","nodeType":"ElementaryTypeName","src":"282:6:106","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"functionSelector":"1a686502","id":21105,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":21283,"src":"326:24:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":21104,"name":"uint128","nodeType":"ElementaryTypeName","src":"326:7:106","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"public"},{"constant":false,"id":21107,"mutability":"mutable","name":"lastObservationCurrentTimestamp","nodeType":"VariableDeclaration","scope":21283,"src":"359:45:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21106,"name":"bool","nodeType":"ElementaryTypeName","src":"359:4:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"body":{"id":21196,"nodeType":"Block","src":"858:829:106","statements":[{"body":{"id":21174,"nodeType":"Block","src":"923:501:106","statements":[{"expression":{"id":21172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":21151,"name":"oracleObservations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21097,"src":"938:18:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$4_storage","typeString":"struct Oracle.Observation storage ref[4] storage ref"}},"id":21153,"indexExpression":{"id":21152,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21141,"src":"957:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"938:21:106","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage","typeString":"struct Oracle.Observation storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":21156,"name":"_blockTimestamps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21111,"src":"1016:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$4_memory_ptr","typeString":"uint32[4] memory"}},"id":21158,"indexExpression":{"id":21157,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21141,"src":"1033:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1016:19:106","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"baseExpression":{"id":21159,"name":"_tickCumulatives","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21115,"src":"1070:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$4_memory_ptr","typeString":"int56[4] memory"}},"id":21161,"indexExpression":{"id":21160,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21141,"src":"1087:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1070:19:106","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"baseExpression":{"id":21162,"name":"_secondsPerLiquidityCumulativeX128s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21119,"src":"1143:35:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint128_$4_memory_ptr","typeString":"uint128[4] memory"}},"id":21164,"indexExpression":{"id":21163,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21141,"src":"1201:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1143:78:106","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"baseExpression":{"id":21165,"name":"_initializeds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21123,"src":"1253:13:106","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$4_memory_ptr","typeString":"bool[4] memory"}},"id":21167,"indexExpression":{"id":21166,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21141,"src":"1267:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1253:16:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"baseExpression":{"id":21168,"name":"_rewardPerLiquidityCumulativeX64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21127,"src":"1321:32:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$4_memory_ptr","typeString":"uint192[4] memory"}},"id":21170,"indexExpression":{"id":21169,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21141,"src":"1376:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1321:75:106","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_int56","typeString":"int56"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint192","typeString":"uint192"}],"expression":{"id":21154,"name":"Oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5283,"src":"962:6:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Oracle_$5283_$","typeString":"type(library Oracle)"}},"id":21155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Observation","nodeType":"MemberAccess","referencedDeclaration":4444,"src":"962:18:106","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Observation_$4444_storage_ptr_$","typeString":"type(struct Oracle.Observation storage pointer)"}},"id":21171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["blockTimestamp","tickCumulative","secondsPerLiquidityCumulativeX128","initialized","rewardPerLiquidityCumulativeX64"],"nodeType":"FunctionCall","src":"962:450:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"src":"938:474:106","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage","typeString":"struct Oracle.Observation storage ref"}},"id":21173,"nodeType":"ExpressionStatement","src":"938:474:106"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21144,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21141,"src":"889:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":21145,"name":"_blockTimestamps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21111,"src":"893:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$4_memory_ptr","typeString":"uint32[4] memory"}},"id":21146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"893:23:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"889:27:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21175,"initializationExpression":{"assignments":[21141],"declarations":[{"constant":false,"id":21141,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":21175,"src":"874:9:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21140,"name":"uint256","nodeType":"ElementaryTypeName","src":"874:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21143,"initialValue":{"hexValue":"30","id":21142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"886:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"874:13:106"},"loopExpression":{"expression":{"id":21149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"918:3:106","subExpression":{"id":21148,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21141,"src":"918:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21150,"nodeType":"ExpressionStatement","src":"918:3:106"},"nodeType":"ForStatement","src":"869:555:106"},{"expression":{"id":21178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21176,"name":"slot0Tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21099,"src":"1436:9:106","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21177,"name":"_tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21129,"src":"1448:5:106","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1436:17:106","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":21179,"nodeType":"ExpressionStatement","src":"1436:17:106"},{"expression":{"id":21182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21180,"name":"slot0ObservationCardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21101,"src":"1464:27:106","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21181,"name":"_observationCardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21131,"src":"1494:23:106","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"1464:53:106","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":21183,"nodeType":"ExpressionStatement","src":"1464:53:106"},{"expression":{"id":21186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21184,"name":"slot0ObservationIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21103,"src":"1528:21:106","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21185,"name":"_observationIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21133,"src":"1552:17:106","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"1528:41:106","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":21187,"nodeType":"ExpressionStatement","src":"1528:41:106"},{"expression":{"id":21190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21188,"name":"lastObservationCurrentTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21107,"src":"1580:31:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21189,"name":"_lastObservationCurrentTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21135,"src":"1614:32:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1580:66:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21191,"nodeType":"ExpressionStatement","src":"1580:66:106"},{"expression":{"id":21194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21192,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21105,"src":"1657:9:106","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21193,"name":"_liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21137,"src":"1669:10:106","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"1657:22:106","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":21195,"nodeType":"ExpressionStatement","src":"1657:22:106"}]},"id":21197,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":21138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21111,"mutability":"mutable","name":"_blockTimestamps","nodeType":"VariableDeclaration","scope":21197,"src":"435:33:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$4_memory_ptr","typeString":"uint32[4]"},"typeName":{"baseType":{"id":21108,"name":"uint32","nodeType":"ElementaryTypeName","src":"435:6:106","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":21110,"length":{"hexValue":"34","id":21109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"442:1:106","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"435:9:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$4_storage_ptr","typeString":"uint32[4]"}},"visibility":"internal"},{"constant":false,"id":21115,"mutability":"mutable","name":"_tickCumulatives","nodeType":"VariableDeclaration","scope":21197,"src":"479:32:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$4_memory_ptr","typeString":"int56[4]"},"typeName":{"baseType":{"id":21112,"name":"int56","nodeType":"ElementaryTypeName","src":"479:5:106","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":21114,"length":{"hexValue":"34","id":21113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"485:1:106","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"479:8:106","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$4_storage_ptr","typeString":"int56[4]"}},"visibility":"internal"},{"constant":false,"id":21119,"mutability":"mutable","name":"_secondsPerLiquidityCumulativeX128s","nodeType":"VariableDeclaration","scope":21197,"src":"522:53:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint128_$4_memory_ptr","typeString":"uint128[4]"},"typeName":{"baseType":{"id":21116,"name":"uint128","nodeType":"ElementaryTypeName","src":"522:7:106","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":21118,"length":{"hexValue":"34","id":21117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"530:1:106","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"522:10:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint128_$4_storage_ptr","typeString":"uint128[4]"}},"visibility":"internal"},{"constant":false,"id":21123,"mutability":"mutable","name":"_initializeds","nodeType":"VariableDeclaration","scope":21197,"src":"586:28:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$4_memory_ptr","typeString":"bool[4]"},"typeName":{"baseType":{"id":21120,"name":"bool","nodeType":"ElementaryTypeName","src":"586:4:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21122,"length":{"hexValue":"34","id":21121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"591:1:106","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"586:7:106","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$4_storage_ptr","typeString":"bool[4]"}},"visibility":"internal"},{"constant":false,"id":21127,"mutability":"mutable","name":"_rewardPerLiquidityCumulativeX64","nodeType":"VariableDeclaration","scope":21197,"src":"625:50:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$4_memory_ptr","typeString":"uint192[4]"},"typeName":{"baseType":{"id":21124,"name":"uint192","nodeType":"ElementaryTypeName","src":"625:7:106","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"id":21126,"length":{"hexValue":"34","id":21125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"633:1:106","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"625:10:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint192_$4_storage_ptr","typeString":"uint192[4]"}},"visibility":"internal"},{"constant":false,"id":21129,"mutability":"mutable","name":"_tick","nodeType":"VariableDeclaration","scope":21197,"src":"686:11:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":21128,"name":"int24","nodeType":"ElementaryTypeName","src":"686:5:106","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":21131,"mutability":"mutable","name":"_observationCardinality","nodeType":"VariableDeclaration","scope":21197,"src":"708:30:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":21130,"name":"uint16","nodeType":"ElementaryTypeName","src":"708:6:106","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":21133,"mutability":"mutable","name":"_observationIndex","nodeType":"VariableDeclaration","scope":21197,"src":"749:24:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":21132,"name":"uint16","nodeType":"ElementaryTypeName","src":"749:6:106","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":21135,"mutability":"mutable","name":"_lastObservationCurrentTimestamp","nodeType":"VariableDeclaration","scope":21197,"src":"784:37:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21134,"name":"bool","nodeType":"ElementaryTypeName","src":"784:4:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":21137,"mutability":"mutable","name":"_liquidity","nodeType":"VariableDeclaration","scope":21197,"src":"832:18:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":21136,"name":"uint128","nodeType":"ElementaryTypeName","src":"832:7:106","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"424:433:106"},"returnParameters":{"id":21139,"nodeType":"ParameterList","parameters":[],"src":"858:0:106"},"scope":21283,"src":"413:1274:106","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":21223,"nodeType":"Block","src":"1820:207:106","statements":[{"expression":{"components":[{"hexValue":"30","id":21214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1853:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":21215,"name":"slot0Tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21099,"src":"1869:9:106","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":21216,"name":"slot0ObservationIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21103,"src":"1893:21:106","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":21217,"name":"slot0ObservationCardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21101,"src":"1929:27:106","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"hexValue":"30","id":21218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1971:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":21219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1987:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"66616c7365","id":21220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2003:5:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":21221,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1838:181:106","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_int24_$_t_uint16_$_t_uint16_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_bool_$","typeString":"tuple(int_const 0,int24,uint16,uint16,int_const 0,int_const 0,bool)"}},"functionReturnParameters":21213,"id":21222,"nodeType":"Return","src":"1831:188:106"}]},"functionSelector":"3850c7bd","id":21224,"implemented":true,"kind":"function","modifiers":[],"name":"slot0","nodeType":"FunctionDefinition","parameters":{"id":21198,"nodeType":"ParameterList","parameters":[],"src":"1709:2:106"},"returnParameters":{"id":21213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21200,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21224,"src":"1762:7:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":21199,"name":"uint160","nodeType":"ElementaryTypeName","src":"1762:7:106","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":21202,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21224,"src":"1771:5:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":21201,"name":"int24","nodeType":"ElementaryTypeName","src":"1771:5:106","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":21204,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21224,"src":"1778:6:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":21203,"name":"uint16","nodeType":"ElementaryTypeName","src":"1778:6:106","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":21206,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21224,"src":"1786:6:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":21205,"name":"uint16","nodeType":"ElementaryTypeName","src":"1786:6:106","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":21208,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21224,"src":"1794:6:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":21207,"name":"uint16","nodeType":"ElementaryTypeName","src":"1794:6:106","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":21210,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21224,"src":"1802:5:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":21209,"name":"uint8","nodeType":"ElementaryTypeName","src":"1802:5:106","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":21212,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21224,"src":"1809:4:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21211,"name":"bool","nodeType":"ElementaryTypeName","src":"1809:4:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1761:53:106"},"scope":21283,"src":"1695:332:106","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":21281,"nodeType":"Block","src":"2150:622:106","statements":[{"assignments":[21242],"declarations":[{"constant":false,"id":21242,"mutability":"mutable","name":"observation","nodeType":"VariableDeclaration","scope":21281,"src":"2161:37:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation"},"typeName":{"id":21241,"name":"Oracle.Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4444,"src":"2161:18:106","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage_ptr","typeString":"struct Oracle.Observation"}},"visibility":"internal"}],"id":21246,"initialValue":{"baseExpression":{"id":21243,"name":"oracleObservations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21097,"src":"2201:18:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$4_storage","typeString":"struct Oracle.Observation storage ref[4] storage ref"}},"id":21245,"indexExpression":{"id":21244,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21226,"src":"2220:5:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2201:25:106","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage","typeString":"struct Oracle.Observation storage ref"}},"nodeType":"VariableDeclarationStatement","src":"2161:65:106"},{"condition":{"id":21247,"name":"lastObservationCurrentTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21107,"src":"2241:31:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21268,"nodeType":"IfStatement","src":"2237:261:106","trueBody":{"id":21267,"nodeType":"Block","src":"2274:224:106","statements":[{"expression":{"id":21265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":21248,"name":"observation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21242,"src":"2289:11:106","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":21250,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":4435,"src":"2289:26:106","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":21264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":21253,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2342:5:106","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":21254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"2342:15:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21252,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2335:6:106","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":21251,"name":"uint32","nodeType":"ElementaryTypeName","src":"2335:6:106","typeDescriptions":{}}},"id":21255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2335:23:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":21262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":21256,"name":"oracleObservations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21097,"src":"2379:18:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4444_storage_$4_storage","typeString":"struct Oracle.Observation storage ref[4] storage ref"}},"id":21258,"indexExpression":{"id":21257,"name":"slot0ObservationIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21103,"src":"2398:21:106","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2379:41:106","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_storage","typeString":"struct Oracle.Observation storage ref"}},"id":21259,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":4435,"src":"2379:56:106","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":21260,"name":"observation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21242,"src":"2459:11:106","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":21261,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":4435,"src":"2459:26:106","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2379:106:106","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":21263,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2378:108:106","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2335:151:106","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2289:197:106","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":21266,"nodeType":"ExpressionStatement","src":"2289:197:106"}]}},{"expression":{"components":[{"expression":{"id":21269,"name":"observation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21242,"src":"2530:11:106","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":21270,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":4435,"src":"2530:26:106","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":21271,"name":"observation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21242,"src":"2571:11:106","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":21272,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickCumulative","nodeType":"MemberAccess","referencedDeclaration":4437,"src":"2571:26:106","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},{"expression":{"id":21273,"name":"observation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21242,"src":"2612:11:106","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":21274,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsPerLiquidityCumulativeX128","nodeType":"MemberAccess","referencedDeclaration":4439,"src":"2612:45:106","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":21275,"name":"observation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21242,"src":"2672:11:106","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":21276,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialized","nodeType":"MemberAccess","referencedDeclaration":4441,"src":"2672:23:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":21277,"name":"observation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21242,"src":"2710:11:106","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4444_memory_ptr","typeString":"struct Oracle.Observation memory"}},"id":21278,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rewardPerLiquidityCumulativeX64","nodeType":"MemberAccess","referencedDeclaration":4443,"src":"2710:43:106","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":21279,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2515:249:106","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$_t_uint192_$","typeString":"tuple(uint32,int56,uint160,bool,uint192)"}},"functionReturnParameters":21238,"id":21280,"nodeType":"Return","src":"2508:256:106"}]},"functionSelector":"252c09d7","id":21282,"implemented":true,"kind":"function","modifiers":[],"name":"observations","nodeType":"FunctionDefinition","parameters":{"id":21227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21226,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":21282,"src":"2067:13:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21225,"name":"uint256","nodeType":"ElementaryTypeName","src":"2067:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2056:31:106"},"returnParameters":{"id":21238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21229,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21282,"src":"2111:6:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":21228,"name":"uint32","nodeType":"ElementaryTypeName","src":"2111:6:106","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":21231,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21282,"src":"2119:5:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":21230,"name":"int56","nodeType":"ElementaryTypeName","src":"2119:5:106","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":21233,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21282,"src":"2126:7:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":21232,"name":"uint160","nodeType":"ElementaryTypeName","src":"2126:7:106","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":21235,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21282,"src":"2135:4:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21234,"name":"bool","nodeType":"ElementaryTypeName","src":"2135:4:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":21237,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21282,"src":"2141:7:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":21236,"name":"uint192","nodeType":"ElementaryTypeName","src":"2141:7:106","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"2110:39:106"},"scope":21283,"src":"2035:737:106","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":21284,"src":"119:2656:106"}],"src":"40:2737:106"},"id":106},"contracts/elixir-periphery/test/MockTimeSwapRouter.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/test/MockTimeSwapRouter.sol","exportedSymbols":{"BytesLib":[17433],"CallbackValidation":[17495],"IERC20":[31070],"IERC20Permit":[30309],"IERC20PermitAllowed":[16428],"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"IElixirSwapCallback":[3315],"IMulticall":[15852],"IPeripheryImmutableState":[16125],"IPeripheryPayments":[16151],"IPeripheryPaymentsWithFee":[16184],"ISelfPermit":[16271],"ISwapRouter":[16367],"IWETH9":[16445],"LowGasSafeMath":[4430],"MockTimeSwapRouter":[21322],"Multicall":[14924],"Path":[19642],"PeripheryImmutableState":[14955],"PeripheryPayments":[15172],"PeripheryPaymentsWithFee":[15353],"PeripheryValidation":[15380],"PoolAddress":[19734],"SafeCast":[5526],"SelfPermit":[15639],"SwapRouter":[14422],"TickMath":[7567],"TransferHelper":[20731]},"id":21323,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":21285,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:107"},{"id":21286,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"65:19:107"},{"absolutePath":"contracts/elixir-periphery/SwapRouter.sol","file":"../SwapRouter.sol","id":21287,"nodeType":"ImportDirective","scope":21323,"sourceUnit":14423,"src":"88:27:107","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":21288,"name":"SwapRouter","nodeType":"UserDefinedTypeName","referencedDeclaration":14422,"src":"150:10:107","typeDescriptions":{"typeIdentifier":"t_contract$_SwapRouter_$14422","typeString":"contract SwapRouter"}},"id":21289,"nodeType":"InheritanceSpecifier","src":"150:10:107"}],"contractDependencies":[3315,14422,14924,14955,15172,15353,15380,15639,15852,16125,16151,16184,16271,16367],"contractKind":"contract","fullyImplemented":true,"id":21322,"linearizedBaseContracts":[21322,14422,15639,16271,14924,15852,15353,16184,15172,15380,14955,16125,16151,16367,3315],"name":"MockTimeSwapRouter","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":21291,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":21322,"src":"168:12:107","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21290,"name":"uint256","nodeType":"ElementaryTypeName","src":"168:7:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"body":{"id":21302,"nodeType":"Block","src":"289:2:107","statements":[]},"id":21303,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":21298,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21293,"src":"271:8:107","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21299,"name":"_WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21295,"src":"281:6:107","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":21300,"modifierName":{"id":21297,"name":"SwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14422,"src":"260:10:107","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapRouter_$14422_$","typeString":"type(contract SwapRouter)"}},"nodeType":"ModifierInvocation","src":"260:28:107"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":21296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21293,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":21303,"src":"211:16:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21292,"name":"address","nodeType":"ElementaryTypeName","src":"211:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21295,"mutability":"mutable","name":"_WETH9","nodeType":"VariableDeclaration","scope":21303,"src":"238:14:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21294,"name":"address","nodeType":"ElementaryTypeName","src":"238:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"200:59:107"},"returnParameters":{"id":21301,"nodeType":"ParameterList","parameters":[],"src":"289:0:107"},"scope":21322,"src":"189:102:107","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":21310,"nodeType":"Block","src":"358:30:107","statements":[{"expression":{"id":21308,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21291,"src":"376:4:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21307,"id":21309,"nodeType":"Return","src":"369:11:107"}]},"id":21311,"implemented":true,"kind":"function","modifiers":[],"name":"_blockTimestamp","nodeType":"FunctionDefinition","parameters":{"id":21304,"nodeType":"ParameterList","parameters":[],"src":"323:2:107"},"returnParameters":{"id":21307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21306,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21311,"src":"349:7:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21305,"name":"uint256","nodeType":"ElementaryTypeName","src":"349:7:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"348:9:107"},"scope":21322,"src":"299:89:107","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":21320,"nodeType":"Block","src":"437:31:107","statements":[{"expression":{"id":21318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21316,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21291,"src":"448:4:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21317,"name":"_time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21313,"src":"455:5:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"448:12:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21319,"nodeType":"ExpressionStatement","src":"448:12:107"}]},"functionSelector":"3beb26c4","id":21321,"implemented":true,"kind":"function","modifiers":[],"name":"setTime","nodeType":"FunctionDefinition","parameters":{"id":21314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21313,"mutability":"mutable","name":"_time","nodeType":"VariableDeclaration","scope":21321,"src":"413:13:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21312,"name":"uint256","nodeType":"ElementaryTypeName","src":"413:7:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"412:15:107"},"returnParameters":{"id":21315,"nodeType":"ParameterList","parameters":[],"src":"437:0:107"},"scope":21322,"src":"396:72:107","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":21323,"src":"119:352:107"}],"src":"40:433:107"},"id":107},"contracts/elixir-periphery/test/NonfungiblePositionManagerPositionsGasTest.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/test/NonfungiblePositionManagerPositionsGasTest.sol","exportedSymbols":{"IERC165":[30378],"IERC721":[32130],"IERC721Enumerable":[32161],"IERC721Metadata":[32188],"IERC721Permit":[15699],"INonfungiblePositionManager":[16094],"IPeripheryImmutableState":[16125],"IPeripheryPayments":[16151],"IPoolInitializer":[16203],"NonfungiblePositionManagerPositionsGasTest":[21362],"PoolAddress":[19734]},"id":21363,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":21324,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:108"},{"absolutePath":"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol","file":"../interfaces/INonfungiblePositionManager.sol","id":21325,"nodeType":"ImportDirective","scope":21363,"sourceUnit":16095,"src":"67:55:108","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":21362,"linearizedBaseContracts":[21362],"name":"NonfungiblePositionManagerPositionsGasTest","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":21327,"mutability":"immutable","name":"nonfungiblePositionManager","nodeType":"VariableDeclaration","scope":21362,"src":"185:64:108","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":21326,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":16094,"src":"185:27:108","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"body":{"id":21336,"nodeType":"Block","src":"327:75:108","statements":[{"expression":{"id":21334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21332,"name":"nonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21327,"src":"338:26:108","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21333,"name":"_nonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21329,"src":"367:27:108","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"src":"338:56:108","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"id":21335,"nodeType":"ExpressionStatement","src":"338:56:108"}]},"id":21337,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":21330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21329,"mutability":"mutable","name":"_nonfungiblePositionManager","nodeType":"VariableDeclaration","scope":21337,"src":"270:55:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":21328,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":16094,"src":"270:27:108","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"}],"src":"269:57:108"},"returnParameters":{"id":21331,"nodeType":"ParameterList","parameters":[],"src":"327:0:108"},"scope":21362,"src":"258:144:108","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":21360,"nodeType":"Block","src":"490:143:108","statements":[{"assignments":[21345],"declarations":[{"constant":false,"id":21345,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":21360,"src":"501:17:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21344,"name":"uint256","nodeType":"ElementaryTypeName","src":"501:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21348,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":21346,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"521:7:108","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"521:9:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"501:29:108"},{"expression":{"arguments":[{"id":21352,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21339,"src":"578:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21349,"name":"nonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21327,"src":"541:26:108","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"id":21351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"positions","nodeType":"MemberAccess","referencedDeclaration":15945,"src":"541:36:108","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":21353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"541:45:108","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":21354,"nodeType":"ExpressionStatement","src":"541:45:108"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21355,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21345,"src":"604:9:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":21356,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"616:7:108","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"616:9:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"604:21:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21343,"id":21359,"nodeType":"Return","src":"597:28:108"}]},"functionSelector":"994ea42c","id":21361,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfPositions","nodeType":"FunctionDefinition","parameters":{"id":21340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21339,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":21361,"src":"441:15:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21338,"name":"uint256","nodeType":"ElementaryTypeName","src":"441:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"440:17:108"},"returnParameters":{"id":21343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21342,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21361,"src":"481:7:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21341,"name":"uint256","nodeType":"ElementaryTypeName","src":"481:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"480:9:108"},"scope":21362,"src":"410:223:108","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":21363,"src":"126:510:108"}],"src":"40:598:108"},"id":108},"contracts/elixir-periphery/test/OracleTest.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/test/OracleTest.sol","exportedSymbols":{"FullMath":[4248],"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"OracleLibrary":[19509],"OracleTest":[21541],"TickMath":[7567]},"id":21542,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":21364,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:109"},{"id":21365,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"65:19:109"},{"absolutePath":"contracts/elixir-periphery/libraries/OracleLibrary.sol","file":"../libraries/OracleLibrary.sol","id":21366,"nodeType":"ImportDirective","scope":21542,"sourceUnit":19510,"src":"88:40:109","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":21541,"linearizedBaseContracts":[21541],"name":"OracleTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":21383,"nodeType":"Block","src":"319:65:109","statements":[{"expression":{"arguments":[{"id":21379,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21368,"src":"359:4:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21380,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21370,"src":"365:10:109","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":21377,"name":"OracleLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19509,"src":"337:13:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleLibrary_$19509_$","typeString":"type(library OracleLibrary)"}},"id":21378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"consult","nodeType":"MemberAccess","referencedDeclaration":19055,"src":"337:21:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint32_$returns$_t_int24_$_t_uint128_$","typeString":"function (address,uint32) view returns (int24,uint128)"}},"id":21381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"337:39:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int24_$_t_uint128_$","typeString":"tuple(int24,uint128)"}},"functionReturnParameters":21376,"id":21382,"nodeType":"Return","src":"330:46:109"}]},"functionSelector":"82413489","id":21384,"implemented":true,"kind":"function","modifiers":[],"name":"consult","nodeType":"FunctionDefinition","parameters":{"id":21371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21368,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":21384,"src":"176:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21367,"name":"address","nodeType":"ElementaryTypeName","src":"176:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21370,"mutability":"mutable","name":"secondsAgo","nodeType":"VariableDeclaration","scope":21384,"src":"190:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":21369,"name":"uint32","nodeType":"ElementaryTypeName","src":"190:6:109","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"175:33:109"},"returnParameters":{"id":21376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21373,"mutability":"mutable","name":"arithmeticMeanTick","nodeType":"VariableDeclaration","scope":21384,"src":"257:24:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":21372,"name":"int24","nodeType":"ElementaryTypeName","src":"257:5:109","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":21375,"mutability":"mutable","name":"harmonicMeanLiquidity","nodeType":"VariableDeclaration","scope":21384,"src":"283:29:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":21374,"name":"uint128","nodeType":"ElementaryTypeName","src":"283:7:109","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"256:57:109"},"scope":21541,"src":"159:225:109","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":21407,"nodeType":"Block","src":"572:102:109","statements":[{"expression":{"id":21405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21397,"name":"quoteAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21395,"src":"583:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":21400,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21386,"src":"626:4:109","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":21401,"name":"baseAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21388,"src":"632:10:109","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":21402,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21390,"src":"644:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21403,"name":"quoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21392,"src":"655:10:109","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":21398,"name":"OracleLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19509,"src":"597:13:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleLibrary_$19509_$","typeString":"type(library OracleLibrary)"}},"id":21399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getQuoteAtTick","nodeType":"MemberAccess","referencedDeclaration":19153,"src":"597:28:109","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":21404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"597:69:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"583:83:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21406,"nodeType":"ExpressionStatement","src":"583:83:109"}]},"functionSelector":"43c57a27","id":21408,"implemented":true,"kind":"function","modifiers":[],"name":"getQuoteAtTick","nodeType":"FunctionDefinition","parameters":{"id":21393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21386,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":21408,"src":"426:10:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":21385,"name":"int24","nodeType":"ElementaryTypeName","src":"426:5:109","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":21388,"mutability":"mutable","name":"baseAmount","nodeType":"VariableDeclaration","scope":21408,"src":"447:18:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":21387,"name":"uint128","nodeType":"ElementaryTypeName","src":"447:7:109","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":21390,"mutability":"mutable","name":"baseToken","nodeType":"VariableDeclaration","scope":21408,"src":"476:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21389,"name":"address","nodeType":"ElementaryTypeName","src":"476:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21392,"mutability":"mutable","name":"quoteToken","nodeType":"VariableDeclaration","scope":21408,"src":"504:18:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21391,"name":"address","nodeType":"ElementaryTypeName","src":"504:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"415:114:109"},"returnParameters":{"id":21396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21395,"mutability":"mutable","name":"quoteAmount","nodeType":"VariableDeclaration","scope":21408,"src":"551:19:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21394,"name":"uint256","nodeType":"ElementaryTypeName","src":"551:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"550:21:109"},"scope":21541,"src":"392:282:109","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":21434,"nodeType":"Block","src":"800:133:109","statements":[{"assignments":[21418],"declarations":[{"constant":false,"id":21418,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":21434,"src":"811:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21417,"name":"uint256","nodeType":"ElementaryTypeName","src":"811:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21421,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":21419,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"831:7:109","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"831:9:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"811:29:109"},{"expression":{"arguments":[{"id":21425,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21410,"src":"873:4:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21426,"name":"period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21412,"src":"879:6:109","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":21422,"name":"OracleLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19509,"src":"851:13:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleLibrary_$19509_$","typeString":"type(library OracleLibrary)"}},"id":21424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"consult","nodeType":"MemberAccess","referencedDeclaration":19055,"src":"851:21:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint32_$returns$_t_int24_$_t_uint128_$","typeString":"function (address,uint32) view returns (int24,uint128)"}},"id":21427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"851:35:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int24_$_t_uint128_$","typeString":"tuple(int24,uint128)"}},"id":21428,"nodeType":"ExpressionStatement","src":"851:35:109"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21429,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21418,"src":"904:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":21430,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"916:7:109","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"916:9:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"904:21:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21416,"id":21433,"nodeType":"Return","src":"897:28:109"}]},"functionSelector":"bbe8f419","id":21435,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfConsult","nodeType":"FunctionDefinition","parameters":{"id":21413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21410,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":21435,"src":"741:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21409,"name":"address","nodeType":"ElementaryTypeName","src":"741:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21412,"mutability":"mutable","name":"period","nodeType":"VariableDeclaration","scope":21435,"src":"755:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":21411,"name":"uint32","nodeType":"ElementaryTypeName","src":"755:6:109","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"740:29:109"},"returnParameters":{"id":21416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21415,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21435,"src":"791:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21414,"name":"uint256","nodeType":"ElementaryTypeName","src":"791:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"790:9:109"},"scope":21541,"src":"712:221:109","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":21467,"nodeType":"Block","src":"1121:167:109","statements":[{"assignments":[21449],"declarations":[{"constant":false,"id":21449,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":21467,"src":"1132:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21448,"name":"uint256","nodeType":"ElementaryTypeName","src":"1132:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21452,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":21450,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1152:7:109","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1152:9:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1132:29:109"},{"expression":{"arguments":[{"id":21456,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21437,"src":"1201:4:109","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":21457,"name":"baseAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21439,"src":"1207:10:109","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":21458,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21441,"src":"1219:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21459,"name":"quoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21443,"src":"1230:10:109","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":21453,"name":"OracleLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19509,"src":"1172:13:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleLibrary_$19509_$","typeString":"type(library OracleLibrary)"}},"id":21455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getQuoteAtTick","nodeType":"MemberAccess","referencedDeclaration":19153,"src":"1172:28:109","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":21460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1172:69:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21461,"nodeType":"ExpressionStatement","src":"1172:69:109"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21462,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21449,"src":"1259:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":21463,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1271:7:109","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1271:9:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1259:21:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21447,"id":21466,"nodeType":"Return","src":"1252:28:109"}]},"functionSelector":"6a816ff9","id":21468,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetQuoteAtTick","nodeType":"FunctionDefinition","parameters":{"id":21444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21437,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":21468,"src":"987:10:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":21436,"name":"int24","nodeType":"ElementaryTypeName","src":"987:5:109","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":21439,"mutability":"mutable","name":"baseAmount","nodeType":"VariableDeclaration","scope":21468,"src":"1008:18:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":21438,"name":"uint128","nodeType":"ElementaryTypeName","src":"1008:7:109","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":21441,"mutability":"mutable","name":"baseToken","nodeType":"VariableDeclaration","scope":21468,"src":"1037:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21440,"name":"address","nodeType":"ElementaryTypeName","src":"1037:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21443,"mutability":"mutable","name":"quoteToken","nodeType":"VariableDeclaration","scope":21468,"src":"1065:18:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21442,"name":"address","nodeType":"ElementaryTypeName","src":"1065:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"976:114:109"},"returnParameters":{"id":21447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21446,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21468,"src":"1112:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21445,"name":"uint256","nodeType":"ElementaryTypeName","src":"1112:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1111:9:109"},"scope":21541,"src":"941:347:109","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":21492,"nodeType":"Block","src":"1447:135:109","statements":[{"expression":{"id":21482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21477,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21473,"src":"1458:10:109","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":21480,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21470,"src":"1516:4:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21478,"name":"OracleLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19509,"src":"1471:13:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleLibrary_$19509_$","typeString":"type(library OracleLibrary)"}},"id":21479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getOldestObservationSecondsAgo","nodeType":"MemberAccess","referencedDeclaration":19219,"src":"1471:44:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint32_$","typeString":"function (address) view returns (uint32)"}},"id":21481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1471:50:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1458:63:109","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":21483,"nodeType":"ExpressionStatement","src":"1458:63:109"},{"expression":{"id":21490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21484,"name":"currentTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21475,"src":"1532:16:109","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":21487,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1558:5:109","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":21488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"1558:15:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21486,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1551:6:109","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":21485,"name":"uint32","nodeType":"ElementaryTypeName","src":"1551:6:109","typeDescriptions":{}}},"id":21489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1551:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1532:42:109","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":21491,"nodeType":"ExpressionStatement","src":"1532:42:109"}]},"functionSelector":"e6c4fbe0","id":21493,"implemented":true,"kind":"function","modifiers":[],"name":"getOldestObservationSecondsAgo","nodeType":"FunctionDefinition","parameters":{"id":21471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21470,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":21493,"src":"1336:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21469,"name":"address","nodeType":"ElementaryTypeName","src":"1336:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1335:14:109"},"returnParameters":{"id":21476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21473,"mutability":"mutable","name":"secondsAgo","nodeType":"VariableDeclaration","scope":21493,"src":"1398:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":21472,"name":"uint32","nodeType":"ElementaryTypeName","src":"1398:6:109","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":21475,"mutability":"mutable","name":"currentTimestamp","nodeType":"VariableDeclaration","scope":21493,"src":"1417:23:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":21474,"name":"uint32","nodeType":"ElementaryTypeName","src":"1417:6:109","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1397:44:109"},"scope":21541,"src":"1296:286:109","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":21507,"nodeType":"Block","src":"1683:78:109","statements":[{"expression":{"arguments":[{"id":21504,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21495,"src":"1748:4:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21502,"name":"OracleLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19509,"src":"1701:13:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleLibrary_$19509_$","typeString":"type(library OracleLibrary)"}},"id":21503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getBlockStartingTickAndLiquidity","nodeType":"MemberAccess","referencedDeclaration":19362,"src":"1701:46:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_int24_$_t_uint128_$","typeString":"function (address) view returns (int24,uint128)"}},"id":21505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1701:52:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int24_$_t_uint128_$","typeString":"tuple(int24,uint128)"}},"functionReturnParameters":21501,"id":21506,"nodeType":"Return","src":"1694:59:109"}]},"functionSelector":"333b19a8","id":21508,"implemented":true,"kind":"function","modifiers":[],"name":"getBlockStartingTickAndLiquidity","nodeType":"FunctionDefinition","parameters":{"id":21496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21495,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":21508,"src":"1632:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21494,"name":"address","nodeType":"ElementaryTypeName","src":"1632:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1631:14:109"},"returnParameters":{"id":21501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21498,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21508,"src":"1667:5:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":21497,"name":"int24","nodeType":"ElementaryTypeName","src":"1667:5:109","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":21500,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21508,"src":"1674:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":21499,"name":"uint128","nodeType":"ElementaryTypeName","src":"1674:7:109","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1666:16:109"},"scope":21541,"src":"1590:171:109","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":21521,"nodeType":"Block","src":"1949:83:109","statements":[{"expression":{"arguments":[{"id":21518,"name":"observations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21511,"src":"2011:12:109","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WeightedTickData_$19367_memory_ptr_$dyn_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_WeightedTickData_$19367_memory_ptr_$dyn_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData memory[] memory"}],"expression":{"id":21516,"name":"OracleLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19509,"src":"1967:13:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleLibrary_$19509_$","typeString":"type(library OracleLibrary)"}},"id":21517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getWeightedArithmeticMeanTick","nodeType":"MemberAccess","referencedDeclaration":19446,"src":"1967:43:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_WeightedTickData_$19367_memory_ptr_$dyn_memory_ptr_$returns$_t_int24_$","typeString":"function (struct OracleLibrary.WeightedTickData memory[] memory) pure returns (int24)"}},"id":21519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1967:57:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"functionReturnParameters":21515,"id":21520,"nodeType":"Return","src":"1960:64:109"}]},"functionSelector":"ab34b0fc","id":21522,"implemented":true,"kind":"function","modifiers":[],"name":"getWeightedArithmeticMeanTick","nodeType":"FunctionDefinition","parameters":{"id":21512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21511,"mutability":"mutable","name":"observations","nodeType":"VariableDeclaration","scope":21522,"src":"1808:52:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WeightedTickData_$19367_memory_ptr_$dyn_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData[]"},"typeName":{"baseType":{"id":21509,"name":"OracleLibrary.WeightedTickData","nodeType":"UserDefinedTypeName","referencedDeclaration":19367,"src":"1808:30:109","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedTickData_$19367_storage_ptr","typeString":"struct OracleLibrary.WeightedTickData"}},"id":21510,"nodeType":"ArrayTypeName","src":"1808:32:109","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WeightedTickData_$19367_storage_$dyn_storage_ptr","typeString":"struct OracleLibrary.WeightedTickData[]"}},"visibility":"internal"}],"src":"1807:54:109"},"returnParameters":{"id":21515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21514,"mutability":"mutable","name":"arithmeticMeanWeightedTick","nodeType":"VariableDeclaration","scope":21522,"src":"1910:32:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":21513,"name":"int24","nodeType":"ElementaryTypeName","src":"1910:5:109","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1909:34:109"},"scope":21541,"src":"1769:263:109","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":21539,"nodeType":"Block","src":"2155:70:109","statements":[{"expression":{"arguments":[{"id":21535,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21525,"src":"2203:6:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"id":21536,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21528,"src":"2211:5:109","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":21533,"name":"OracleLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19509,"src":"2173:13:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleLibrary_$19509_$","typeString":"type(library OracleLibrary)"}},"id":21534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getChainedPrice","nodeType":"MemberAccess","referencedDeclaration":19508,"src":"2173:29:109","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":21537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2173:44:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":21532,"id":21538,"nodeType":"Return","src":"2166:51:109"}]},"functionSelector":"7059b38a","id":21540,"implemented":true,"kind":"function","modifiers":[],"name":"getChainedPrice","nodeType":"FunctionDefinition","parameters":{"id":21529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21525,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":21540,"src":"2065:23:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":21523,"name":"address","nodeType":"ElementaryTypeName","src":"2065:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":21524,"nodeType":"ArrayTypeName","src":"2065:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":21528,"mutability":"mutable","name":"ticks","nodeType":"VariableDeclaration","scope":21540,"src":"2090:20:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int24_$dyn_memory_ptr","typeString":"int24[]"},"typeName":{"baseType":{"id":21526,"name":"int24","nodeType":"ElementaryTypeName","src":"2090:5:109","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":21527,"nodeType":"ArrayTypeName","src":"2090:7:109","typeDescriptions":{"typeIdentifier":"t_array$_t_int24_$dyn_storage_ptr","typeString":"int24[]"}},"visibility":"internal"}],"src":"2064:47:109"},"returnParameters":{"id":21532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21531,"mutability":"mutable","name":"syntheticTick","nodeType":"VariableDeclaration","scope":21540,"src":"2133:20:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":21530,"name":"int256","nodeType":"ElementaryTypeName","src":"2133:6:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2132:22:109"},"scope":21541,"src":"2040:185:109","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":21542,"src":"132:2096:109"}],"src":"40:2190:109"},"id":109},"contracts/elixir-periphery/test/PathTest.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/test/PathTest.sol","exportedSymbols":{"BytesLib":[17433],"Path":[19642],"PathTest":[21625]},"id":21626,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":21543,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:110"},{"absolutePath":"contracts/elixir-periphery/libraries/Path.sol","file":"../libraries/Path.sol","id":21544,"nodeType":"ImportDirective","scope":21626,"sourceUnit":19643,"src":"67:31:110","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":21625,"linearizedBaseContracts":[21625],"name":"PathTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":21556,"nodeType":"Block","src":"199:53:110","statements":[{"expression":{"arguments":[{"id":21553,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21546,"src":"239:4:110","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":21551,"name":"Path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19642,"src":"217:4:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Path_$19642_$","typeString":"type(library Path)"}},"id":21552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasMultiplePools","nodeType":"MemberAccess","referencedDeclaration":19556,"src":"217:21:110","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory) pure returns (bool)"}},"id":21554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"217:27:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":21550,"id":21555,"nodeType":"Return","src":"210:34:110"}]},"functionSelector":"9dc1c391","id":21557,"implemented":true,"kind":"function","modifiers":[],"name":"hasMultiplePools","nodeType":"FunctionDefinition","parameters":{"id":21547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21546,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":21557,"src":"153:17:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21545,"name":"bytes","nodeType":"ElementaryTypeName","src":"153:5:110","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"152:19:110"},"returnParameters":{"id":21550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21549,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21557,"src":"193:4:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21548,"name":"bool","nodeType":"ElementaryTypeName","src":"193:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"192:6:110"},"scope":21625,"src":"127:125:110","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":21573,"nodeType":"Block","src":"451:52:110","statements":[{"expression":{"arguments":[{"id":21570,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21559,"src":"490:4:110","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":21568,"name":"Path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19642,"src":"469:4:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Path_$19642_$","typeString":"type(library Path)"}},"id":21569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":19608,"src":"469:20:110","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":21571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"469:26:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint24_$","typeString":"tuple(address,address,uint24)"}},"functionReturnParameters":21567,"id":21572,"nodeType":"Return","src":"462:33:110"}]},"functionSelector":"eadc682a","id":21574,"implemented":true,"kind":"function","modifiers":[],"name":"decodeFirstPool","nodeType":"FunctionDefinition","parameters":{"id":21560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21559,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":21574,"src":"285:17:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21558,"name":"bytes","nodeType":"ElementaryTypeName","src":"285:5:110","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"284:19:110"},"returnParameters":{"id":21567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21562,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":21574,"src":"366:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21561,"name":"address","nodeType":"ElementaryTypeName","src":"366:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21564,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":21574,"src":"395:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21563,"name":"address","nodeType":"ElementaryTypeName","src":"395:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21566,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":21574,"src":"424:10:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":21565,"name":"uint24","nodeType":"ElementaryTypeName","src":"424:6:110","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"351:94:110"},"scope":21625,"src":"260:243:110","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":21586,"nodeType":"Block","src":"587:49:110","statements":[{"expression":{"arguments":[{"id":21583,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21576,"src":"623:4:110","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":21581,"name":"Path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19642,"src":"605:4:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Path_$19642_$","typeString":"type(library Path)"}},"id":21582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getFirstPool","nodeType":"MemberAccess","referencedDeclaration":19623,"src":"605:17:110","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":21584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"605:23:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":21580,"id":21585,"nodeType":"Return","src":"598:30:110"}]},"functionSelector":"7db6e246","id":21587,"implemented":true,"kind":"function","modifiers":[],"name":"getFirstPool","nodeType":"FunctionDefinition","parameters":{"id":21577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21576,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":21587,"src":"533:17:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21575,"name":"bytes","nodeType":"ElementaryTypeName","src":"533:5:110","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"532:19:110"},"returnParameters":{"id":21580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21579,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21587,"src":"573:12:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21578,"name":"bytes","nodeType":"ElementaryTypeName","src":"573:5:110","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"572:14:110"},"scope":21625,"src":"511:125:110","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":21599,"nodeType":"Block","src":"717:46:110","statements":[{"expression":{"arguments":[{"id":21596,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21589,"src":"750:4:110","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":21594,"name":"Path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19642,"src":"735:4:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Path_$19642_$","typeString":"type(library Path)"}},"id":21595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"skipToken","nodeType":"MemberAccess","referencedDeclaration":19641,"src":"735:14:110","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":21597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"735:20:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":21593,"id":21598,"nodeType":"Return","src":"728:27:110"}]},"functionSelector":"bf8b627b","id":21600,"implemented":true,"kind":"function","modifiers":[],"name":"skipToken","nodeType":"FunctionDefinition","parameters":{"id":21590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21589,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":21600,"src":"663:17:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21588,"name":"bytes","nodeType":"ElementaryTypeName","src":"663:5:110","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"662:19:110"},"returnParameters":{"id":21593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21592,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21600,"src":"703:12:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21591,"name":"bytes","nodeType":"ElementaryTypeName","src":"703:5:110","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"702:14:110"},"scope":21625,"src":"644:119:110","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":21623,"nodeType":"Block","src":"875:124:110","statements":[{"assignments":[21608],"declarations":[{"constant":false,"id":21608,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":21623,"src":"886:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21607,"name":"uint256","nodeType":"ElementaryTypeName","src":"886:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21611,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":21609,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"906:7:110","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"906:9:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"886:29:110"},{"expression":{"arguments":[{"id":21615,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21602,"src":"947:4:110","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":21612,"name":"Path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19642,"src":"926:4:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Path_$19642_$","typeString":"type(library Path)"}},"id":21614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":19608,"src":"926:20:110","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":21616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"926:26:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint24_$","typeString":"tuple(address,address,uint24)"}},"id":21617,"nodeType":"ExpressionStatement","src":"926:26:110"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21618,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21608,"src":"970:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":21619,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"982:7:110","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"982:9:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"970:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21606,"id":21622,"nodeType":"Return","src":"963:28:110"}]},"functionSelector":"d7c9ca0c","id":21624,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfDecodeFirstPool","nodeType":"FunctionDefinition","parameters":{"id":21603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21602,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":21624,"src":"826:17:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":21601,"name":"bytes","nodeType":"ElementaryTypeName","src":"826:5:110","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"825:19:110"},"returnParameters":{"id":21606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21605,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21624,"src":"866:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21604,"name":"uint256","nodeType":"ElementaryTypeName","src":"866:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"865:9:110"},"scope":21625,"src":"789:210:110","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":21626,"src":"102:900:110"}],"src":"40:964:110"},"id":110},"contracts/elixir-periphery/test/PeripheryImmutableStateTest.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/test/PeripheryImmutableStateTest.sol","exportedSymbols":{"IPeripheryImmutableState":[16125],"PeripheryImmutableState":[14955],"PeripheryImmutableStateTest":[21643]},"id":21644,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":21627,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"46:23:111"},{"absolutePath":"contracts/elixir-periphery/base/PeripheryImmutableState.sol","file":"../base/PeripheryImmutableState.sol","id":21628,"nodeType":"ImportDirective","scope":21644,"sourceUnit":14956,"src":"73:45:111","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":21629,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":14955,"src":"162:23:111","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$14955","typeString":"contract PeripheryImmutableState"}},"id":21630,"nodeType":"InheritanceSpecifier","src":"162:23:111"}],"contractDependencies":[14955,16125],"contractKind":"contract","fullyImplemented":true,"id":21643,"linearizedBaseContracts":[21643,14955,16125],"name":"PeripheryImmutableStateTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":21641,"nodeType":"Block","src":"281:2:111","statements":[]},"id":21642,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":21637,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21632,"src":"263:8:111","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21638,"name":"_WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21634,"src":"273:6:111","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":21639,"modifierName":{"id":21636,"name":"PeripheryImmutableState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14955,"src":"239:23:111","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PeripheryImmutableState_$14955_$","typeString":"type(contract PeripheryImmutableState)"}},"nodeType":"ModifierInvocation","src":"239:41:111"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":21635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21632,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":21642,"src":"205:16:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21631,"name":"address","nodeType":"ElementaryTypeName","src":"205:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21634,"mutability":"mutable","name":"_WETH9","nodeType":"VariableDeclaration","scope":21642,"src":"223:14:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21633,"name":"address","nodeType":"ElementaryTypeName","src":"223:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"204:34:111"},"returnParameters":{"id":21640,"nodeType":"ParameterList","parameters":[],"src":"281:0:111"},"scope":21643,"src":"193:90:111","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":21644,"src":"122:164:111"}],"src":"46:242:111"},"id":111},"contracts/elixir-periphery/test/PoolAddressTest.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/test/PoolAddressTest.sol","exportedSymbols":{"PoolAddress":[19734],"PoolAddressTest":[21717]},"id":21718,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":21645,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:112"},{"absolutePath":"contracts/elixir-periphery/libraries/PoolAddress.sol","file":"../libraries/PoolAddress.sol","id":21646,"nodeType":"ImportDirective","scope":21718,"sourceUnit":19735,"src":"67:38:112","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":21717,"linearizedBaseContracts":[21717],"name":"PoolAddressTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":21654,"nodeType":"Block","src":"204:57:112","statements":[{"expression":{"expression":{"id":21651,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19734,"src":"222:11:112","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$19734_$","typeString":"type(library PoolAddress)"}},"id":21652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"POOL_INIT_CODE_HASH","nodeType":"MemberAccess","referencedDeclaration":19648,"src":"222:31:112","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":21650,"id":21653,"nodeType":"Return","src":"215:38:112"}]},"functionSelector":"dc6fd8ab","id":21655,"implemented":true,"kind":"function","modifiers":[],"name":"POOL_INIT_CODE_HASH","nodeType":"FunctionDefinition","parameters":{"id":21647,"nodeType":"ParameterList","parameters":[],"src":"169:2:112"},"returnParameters":{"id":21650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21649,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21655,"src":"195:7:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21648,"name":"bytes32","nodeType":"ElementaryTypeName","src":"195:7:112","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"194:9:112"},"scope":21717,"src":"141:120:112","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":21679,"nodeType":"Block","src":"429:126:112","statements":[{"expression":{"arguments":[{"id":21670,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21657,"src":"474:7:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":21673,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21659,"src":"512:6:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21674,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21661,"src":"528:6:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21675,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21663,"src":"541:3:112","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":21671,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19734,"src":"483:11:112","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$19734_$","typeString":"type(library PoolAddress)"}},"id":21672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PoolKey","nodeType":"MemberAccess","referencedDeclaration":19655,"src":"483:19:112","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolKey_$19655_storage_ptr_$","typeString":"type(struct PoolAddress.PoolKey storage pointer)"}},"id":21676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee"],"nodeType":"FunctionCall","src":"483:63:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":21668,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19734,"src":"447:11:112","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$19734_$","typeString":"type(library PoolAddress)"}},"id":21669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":19733,"src":"447:26:112","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$19655_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":21677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"447:100:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":21667,"id":21678,"nodeType":"Return","src":"440:107:112"}]},"functionSelector":"8716c5ff","id":21680,"implemented":true,"kind":"function","modifiers":[],"name":"computeAddress","nodeType":"FunctionDefinition","parameters":{"id":21664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21657,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":21680,"src":"303:15:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21656,"name":"address","nodeType":"ElementaryTypeName","src":"303:7:112","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21659,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":21680,"src":"329:14:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21658,"name":"address","nodeType":"ElementaryTypeName","src":"329:7:112","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21661,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":21680,"src":"354:14:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21660,"name":"address","nodeType":"ElementaryTypeName","src":"354:7:112","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21663,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":21680,"src":"379:10:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":21662,"name":"uint24","nodeType":"ElementaryTypeName","src":"379:6:112","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"292:104:112"},"returnParameters":{"id":21667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21666,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21680,"src":"420:7:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21665,"name":"address","nodeType":"ElementaryTypeName","src":"420:7:112","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"419:9:112"},"scope":21717,"src":"269:286:112","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":21715,"nodeType":"Block","src":"735:198:112","statements":[{"assignments":[21694],"declarations":[{"constant":false,"id":21694,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":21715,"src":"746:17:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21693,"name":"uint256","nodeType":"ElementaryTypeName","src":"746:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21697,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":21695,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"766:7:112","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"766:9:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"746:29:112"},{"expression":{"arguments":[{"id":21701,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21682,"src":"813:7:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":21704,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21684,"src":"851:6:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21705,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21686,"src":"867:6:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21706,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21688,"src":"880:3:112","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":21702,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19734,"src":"822:11:112","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$19734_$","typeString":"type(library PoolAddress)"}},"id":21703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PoolKey","nodeType":"MemberAccess","referencedDeclaration":19655,"src":"822:19:112","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolKey_$19655_storage_ptr_$","typeString":"type(struct PoolAddress.PoolKey storage pointer)"}},"id":21707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee"],"nodeType":"FunctionCall","src":"822:63:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$19655_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":21698,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19734,"src":"786:11:112","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$19734_$","typeString":"type(library PoolAddress)"}},"id":21700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":19733,"src":"786:26:112","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$19655_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":21708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"786:100:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":21709,"nodeType":"ExpressionStatement","src":"786:100:112"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21710,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21694,"src":"904:9:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":21711,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"916:7:112","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"916:9:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"904:21:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21692,"id":21714,"nodeType":"Return","src":"897:28:112"}]},"functionSelector":"cce34ec6","id":21716,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfComputeAddress","nodeType":"FunctionDefinition","parameters":{"id":21689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21682,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":21716,"src":"609:15:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21681,"name":"address","nodeType":"ElementaryTypeName","src":"609:7:112","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21684,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":21716,"src":"635:14:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21683,"name":"address","nodeType":"ElementaryTypeName","src":"635:7:112","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21686,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":21716,"src":"660:14:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21685,"name":"address","nodeType":"ElementaryTypeName","src":"660:7:112","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21688,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":21716,"src":"685:10:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":21687,"name":"uint24","nodeType":"ElementaryTypeName","src":"685:6:112","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"598:104:112"},"returnParameters":{"id":21692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21691,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21716,"src":"726:7:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21690,"name":"uint256","nodeType":"ElementaryTypeName","src":"726:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"725:9:112"},"scope":21717,"src":"563:370:112","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":21718,"src":"109:827:112"}],"src":"40:898:112"},"id":112},"contracts/elixir-periphery/test/PoolTicksCounterTest.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/test/PoolTicksCounterTest.sol","exportedSymbols":{"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"PoolTicksCounter":[20042],"PoolTicksCounterTest":[21743]},"id":21744,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"../../elixir-core/interfaces/IElixirPool.sol","id":21719,"nodeType":"ImportDirective","scope":21744,"sourceUnit":3274,"src":"46:54:113","symbolAliases":[],"unitAlias":""},{"id":21720,"literals":["solidity",">=","0.6",".0"],"nodeType":"PragmaDirective","src":"104:24:113"},{"absolutePath":"contracts/elixir-periphery/libraries/PoolTicksCounter.sol","file":"../libraries/PoolTicksCounter.sol","id":21721,"nodeType":"ImportDirective","scope":21744,"sourceUnit":20043,"src":"132:43:113","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":21743,"linearizedBaseContracts":[21743],"name":"PoolTicksCounterTest","nodeType":"ContractDefinition","nodes":[{"id":21724,"libraryName":{"id":21722,"name":"PoolTicksCounter","nodeType":"UserDefinedTypeName","referencedDeclaration":20042,"src":"222:16:113","typeDescriptions":{"typeIdentifier":"t_contract$_PoolTicksCounter_$20042","typeString":"library PoolTicksCounter"}},"nodeType":"UsingForDirective","src":"216:39:113","typeName":{"id":21723,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":3273,"src":"243:11:113","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}}},{"body":{"id":21741,"nodeType":"Block","src":"443:82:113","statements":[{"expression":{"arguments":[{"id":21737,"name":"tickBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21728,"src":"495:10:113","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":21738,"name":"tickAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21730,"src":"507:9:113","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":21735,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21726,"src":"461:4:113","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"id":21736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"countInitializedTicksCrossed","nodeType":"MemberAccess","referencedDeclaration":20012,"src":"461:33:113","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IElixirPool_$3273_$_t_int24_$_t_int24_$returns$_t_uint32_$bound_to$_t_contract$_IElixirPool_$3273_$","typeString":"function (contract IElixirPool,int24,int24) view returns (uint32)"}},"id":21739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"461:56:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":21734,"id":21740,"nodeType":"Return","src":"454:63:113"}]},"functionSelector":"4c5b941c","id":21742,"implemented":true,"kind":"function","modifiers":[],"name":"countInitializedTicksCrossed","nodeType":"FunctionDefinition","parameters":{"id":21731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21726,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":21742,"src":"311:16:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"},"typeName":{"id":21725,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":3273,"src":"311:11:113","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"visibility":"internal"},{"constant":false,"id":21728,"mutability":"mutable","name":"tickBefore","nodeType":"VariableDeclaration","scope":21742,"src":"338:16:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":21727,"name":"int24","nodeType":"ElementaryTypeName","src":"338:5:113","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":21730,"mutability":"mutable","name":"tickAfter","nodeType":"VariableDeclaration","scope":21742,"src":"365:15:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":21729,"name":"int24","nodeType":"ElementaryTypeName","src":"365:5:113","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"300:87:113"},"returnParameters":{"id":21734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21733,"mutability":"mutable","name":"initializedTicksCrossed","nodeType":"VariableDeclaration","scope":21742,"src":"411:30:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":21732,"name":"uint32","nodeType":"ElementaryTypeName","src":"411:6:113","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"410:32:113"},"scope":21743,"src":"263:262:113","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":21744,"src":"179:349:113"}],"src":"46:484:113"},"id":113},"contracts/elixir-periphery/test/PositionValueTest.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/test/PositionValueTest.sol","exportedSymbols":{"FixedPoint128":[4065],"FixedPoint96":[4075],"FullMath":[4248],"IERC165":[30378],"IERC721":[32130],"IERC721Enumerable":[32161],"IERC721Metadata":[32188],"IERC721Permit":[15699],"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"INonfungiblePositionManager":[16094],"IPeripheryImmutableState":[16125],"IPeripheryPayments":[16151],"IPoolInitializer":[16203],"LiquidityAmounts":[17982],"LiquidityMath":[4300],"LowGasSafeMath":[4430],"PoolAddress":[19734],"PositionKey":[20067],"PositionValue":[20411],"PositionValueTest":[21895],"SafeCast":[5526],"Tick":[6776],"TickMath":[7567]},"id":21896,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":21745,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:114"},{"absolutePath":"contracts/elixir-periphery/libraries/PositionValue.sol","file":"../libraries/PositionValue.sol","id":21746,"nodeType":"ImportDirective","scope":21896,"sourceUnit":20412,"src":"67:40:114","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol","file":"../interfaces/INonfungiblePositionManager.sol","id":21747,"nodeType":"ImportDirective","scope":21896,"sourceUnit":16095,"src":"109:55:114","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":21895,"linearizedBaseContracts":[21895],"name":"PositionValueTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":21767,"nodeType":"Block","src":"380:73:114","statements":[{"expression":{"arguments":[{"id":21762,"name":"nft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21749,"src":"418:3:114","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},{"id":21763,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21751,"src":"423:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21764,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21753,"src":"432:12:114","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":21760,"name":"PositionValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20411,"src":"398:13:114","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PositionValue_$20411_$","typeString":"type(library PositionValue)"}},"id":21761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"total","nodeType":"MemberAccess","referencedDeclaration":20120,"src":"398:19:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_INonfungiblePositionManager_$16094_$_t_uint256_$_t_uint160_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract INonfungiblePositionManager,uint256,uint160) view returns (uint256,uint256)"}},"id":21765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"398:47:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":21759,"id":21766,"nodeType":"Return","src":"391:54:114"}]},"functionSelector":"5b6dc092","id":21768,"implemented":true,"kind":"function","modifiers":[],"name":"total","nodeType":"FunctionDefinition","parameters":{"id":21754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21749,"mutability":"mutable","name":"nft","nodeType":"VariableDeclaration","scope":21768,"src":"227:31:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":21748,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":16094,"src":"227:27:114","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":21751,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":21768,"src":"269:15:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21750,"name":"uint256","nodeType":"ElementaryTypeName","src":"269:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21753,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":21768,"src":"295:20:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":21752,"name":"uint160","nodeType":"ElementaryTypeName","src":"295:7:114","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"216:106:114"},"returnParameters":{"id":21759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21756,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":21768,"src":"346:15:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21755,"name":"uint256","nodeType":"ElementaryTypeName","src":"346:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21758,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":21768,"src":"363:15:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21757,"name":"uint256","nodeType":"ElementaryTypeName","src":"363:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"345:34:114"},"scope":21895,"src":"202:251:114","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":21788,"nodeType":"Block","src":"643:77:114","statements":[{"expression":{"arguments":[{"id":21783,"name":"nft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21770,"src":"685:3:114","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},{"id":21784,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21772,"src":"690:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21785,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21774,"src":"699:12:114","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":21781,"name":"PositionValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20411,"src":"661:13:114","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PositionValue_$20411_$","typeString":"type(library PositionValue)"}},"id":21782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":20160,"src":"661:23:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_INonfungiblePositionManager_$16094_$_t_uint256_$_t_uint160_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract INonfungiblePositionManager,uint256,uint160) view returns (uint256,uint256)"}},"id":21786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"661:51:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":21780,"id":21787,"nodeType":"Return","src":"654:58:114"}]},"functionSelector":"22635397","id":21789,"implemented":true,"kind":"function","modifiers":[],"name":"principal","nodeType":"FunctionDefinition","parameters":{"id":21775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21770,"mutability":"mutable","name":"nft","nodeType":"VariableDeclaration","scope":21789,"src":"490:31:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":21769,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":16094,"src":"490:27:114","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":21772,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":21789,"src":"532:15:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21771,"name":"uint256","nodeType":"ElementaryTypeName","src":"532:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21774,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":21789,"src":"558:20:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":21773,"name":"uint160","nodeType":"ElementaryTypeName","src":"558:7:114","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"479:106:114"},"returnParameters":{"id":21780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21777,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":21789,"src":"609:15:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21776,"name":"uint256","nodeType":"ElementaryTypeName","src":"609:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21779,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":21789,"src":"626:15:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21778,"name":"uint256","nodeType":"ElementaryTypeName","src":"626:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"608:34:114"},"scope":21895,"src":"461:259:114","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":21806,"nodeType":"Block","src":"881:58:114","statements":[{"expression":{"arguments":[{"id":21802,"name":"nft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21791,"src":"918:3:114","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},{"id":21803,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21793,"src":"923:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21800,"name":"PositionValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20411,"src":"899:13:114","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PositionValue_$20411_$","typeString":"type(library PositionValue)"}},"id":21801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fees","nodeType":"MemberAccess","referencedDeclaration":20235,"src":"899:18:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_INonfungiblePositionManager_$16094_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract INonfungiblePositionManager,uint256) view returns (uint256,uint256)"}},"id":21804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"899:32:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":21799,"id":21805,"nodeType":"Return","src":"892:39:114"}]},"functionSelector":"263a5362","id":21807,"implemented":true,"kind":"function","modifiers":[],"name":"fees","nodeType":"FunctionDefinition","parameters":{"id":21794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21791,"mutability":"mutable","name":"nft","nodeType":"VariableDeclaration","scope":21807,"src":"742:31:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":21790,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":16094,"src":"742:27:114","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":21793,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":21807,"src":"775:15:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21792,"name":"uint256","nodeType":"ElementaryTypeName","src":"775:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"741:50:114"},"returnParameters":{"id":21799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21796,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":21807,"src":"842:15:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21795,"name":"uint256","nodeType":"ElementaryTypeName","src":"842:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21798,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":21807,"src":"859:15:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21797,"name":"uint256","nodeType":"ElementaryTypeName","src":"859:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"841:34:114"},"scope":21895,"src":"728:211:114","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":21836,"nodeType":"Block","src":"1103:145:114","statements":[{"assignments":[21819],"declarations":[{"constant":false,"id":21819,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":21836,"src":"1114:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21818,"name":"uint256","nodeType":"ElementaryTypeName","src":"1114:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21822,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":21820,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1134:7:114","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1134:9:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1114:29:114"},{"expression":{"arguments":[{"id":21826,"name":"nft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21809,"src":"1174:3:114","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},{"id":21827,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21811,"src":"1179:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21828,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21813,"src":"1188:12:114","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":21823,"name":"PositionValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20411,"src":"1154:13:114","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PositionValue_$20411_$","typeString":"type(library PositionValue)"}},"id":21825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"total","nodeType":"MemberAccess","referencedDeclaration":20120,"src":"1154:19:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_INonfungiblePositionManager_$16094_$_t_uint256_$_t_uint160_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract INonfungiblePositionManager,uint256,uint160) view returns (uint256,uint256)"}},"id":21829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1154:47:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":21830,"nodeType":"ExpressionStatement","src":"1154:47:114"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21831,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21819,"src":"1219:9:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":21832,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1231:7:114","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1231:9:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1219:21:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21817,"id":21835,"nodeType":"Return","src":"1212:28:114"}]},"functionSelector":"90594f91","id":21837,"implemented":true,"kind":"function","modifiers":[],"name":"totalGas","nodeType":"FunctionDefinition","parameters":{"id":21814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21809,"mutability":"mutable","name":"nft","nodeType":"VariableDeclaration","scope":21837,"src":"975:31:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":21808,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":16094,"src":"975:27:114","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":21811,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":21837,"src":"1017:15:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21810,"name":"uint256","nodeType":"ElementaryTypeName","src":"1017:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21813,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":21837,"src":"1043:20:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":21812,"name":"uint160","nodeType":"ElementaryTypeName","src":"1043:7:114","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"964:106:114"},"returnParameters":{"id":21817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21816,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21837,"src":"1094:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21815,"name":"uint256","nodeType":"ElementaryTypeName","src":"1094:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1093:9:114"},"scope":21895,"src":"947:301:114","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":21866,"nodeType":"Block","src":"1416:149:114","statements":[{"assignments":[21849],"declarations":[{"constant":false,"id":21849,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":21866,"src":"1427:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21848,"name":"uint256","nodeType":"ElementaryTypeName","src":"1427:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21852,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":21850,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1447:7:114","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1447:9:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1427:29:114"},{"expression":{"arguments":[{"id":21856,"name":"nft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21839,"src":"1491:3:114","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},{"id":21857,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21841,"src":"1496:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21858,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21843,"src":"1505:12:114","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":21853,"name":"PositionValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20411,"src":"1467:13:114","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PositionValue_$20411_$","typeString":"type(library PositionValue)"}},"id":21855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":20160,"src":"1467:23:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_INonfungiblePositionManager_$16094_$_t_uint256_$_t_uint160_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract INonfungiblePositionManager,uint256,uint160) view returns (uint256,uint256)"}},"id":21859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1467:51:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":21860,"nodeType":"ExpressionStatement","src":"1467:51:114"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21861,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21849,"src":"1536:9:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":21862,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1548:7:114","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1548:9:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1536:21:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21847,"id":21865,"nodeType":"Return","src":"1529:28:114"}]},"functionSelector":"ee4e9ba3","id":21867,"implemented":true,"kind":"function","modifiers":[],"name":"principalGas","nodeType":"FunctionDefinition","parameters":{"id":21844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21839,"mutability":"mutable","name":"nft","nodeType":"VariableDeclaration","scope":21867,"src":"1288:31:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":21838,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":16094,"src":"1288:27:114","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":21841,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":21867,"src":"1330:15:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21840,"name":"uint256","nodeType":"ElementaryTypeName","src":"1330:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21843,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":21867,"src":"1356:20:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":21842,"name":"uint160","nodeType":"ElementaryTypeName","src":"1356:7:114","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1277:106:114"},"returnParameters":{"id":21847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21846,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21867,"src":"1407:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21845,"name":"uint256","nodeType":"ElementaryTypeName","src":"1407:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1406:9:114"},"scope":21895,"src":"1256:309:114","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":21893,"nodeType":"Block","src":"1672:130:114","statements":[{"assignments":[21877],"declarations":[{"constant":false,"id":21877,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":21893,"src":"1683:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21876,"name":"uint256","nodeType":"ElementaryTypeName","src":"1683:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21880,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":21878,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1703:7:114","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1703:9:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1683:29:114"},{"expression":{"arguments":[{"id":21884,"name":"nft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21869,"src":"1742:3:114","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},{"id":21885,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21871,"src":"1747:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21881,"name":"PositionValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20411,"src":"1723:13:114","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PositionValue_$20411_$","typeString":"type(library PositionValue)"}},"id":21883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fees","nodeType":"MemberAccess","referencedDeclaration":20235,"src":"1723:18:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_INonfungiblePositionManager_$16094_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract INonfungiblePositionManager,uint256) view returns (uint256,uint256)"}},"id":21886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1723:32:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":21887,"nodeType":"ExpressionStatement","src":"1723:32:114"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21888,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21877,"src":"1773:9:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":21889,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1785:7:114","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1785:9:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1773:21:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21875,"id":21892,"nodeType":"Return","src":"1766:28:114"}]},"functionSelector":"3803770c","id":21894,"implemented":true,"kind":"function","modifiers":[],"name":"feesGas","nodeType":"FunctionDefinition","parameters":{"id":21872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21869,"mutability":"mutable","name":"nft","nodeType":"VariableDeclaration","scope":21894,"src":"1590:31:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":21868,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":16094,"src":"1590:27:114","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$16094","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":21871,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":21894,"src":"1623:15:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21870,"name":"uint256","nodeType":"ElementaryTypeName","src":"1623:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1589:50:114"},"returnParameters":{"id":21875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21874,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21894,"src":"1663:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21873,"name":"uint256","nodeType":"ElementaryTypeName","src":"1663:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1662:9:114"},"scope":21895,"src":"1573:229:114","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":21896,"src":"168:1637:114"}],"src":"40:1767:114"},"id":114},"contracts/elixir-periphery/test/SelfPermitTest.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/test/SelfPermitTest.sol","exportedSymbols":{"IERC20":[31070],"IERC20Permit":[30309],"IERC20PermitAllowed":[16428],"ISelfPermit":[16271],"SelfPermit":[15639],"SelfPermitTest":[21902]},"id":21903,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":21897,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:115"},{"absolutePath":"contracts/elixir-periphery/base/SelfPermit.sol","file":"../base/SelfPermit.sol","id":21898,"nodeType":"ImportDirective","scope":21903,"sourceUnit":15640,"src":"67:32:115","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":21900,"name":"SelfPermit","nodeType":"UserDefinedTypeName","referencedDeclaration":15639,"src":"176:10:115","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$15639","typeString":"contract SelfPermit"}},"id":21901,"nodeType":"InheritanceSpecifier","src":"176:10:115"}],"contractDependencies":[15639,16271],"contractKind":"contract","documentation":{"id":21899,"nodeType":"StructuredDocumentation","src":"103:46:115","text":"@dev Same as SelfPermit but not abstract"},"fullyImplemented":true,"id":21902,"linearizedBaseContracts":[21902,15639,16271],"name":"SelfPermitTest","nodeType":"ContractDefinition","nodes":[],"scope":21903,"src":"149:44:115"}],"src":"40:155:115"},"id":115},"contracts/elixir-periphery/test/TestCallbackValidation.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/test/TestCallbackValidation.sol","exportedSymbols":{"CallbackValidation":[17495],"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"PoolAddress":[19734],"TestCallbackValidation":[21928]},"id":21929,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":21904,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:116"},{"absolutePath":"contracts/elixir-periphery/libraries/CallbackValidation.sol","file":"../libraries/CallbackValidation.sol","id":21905,"nodeType":"ImportDirective","scope":21929,"sourceUnit":17496,"src":"67:45:116","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":21928,"linearizedBaseContracts":[21928],"name":"TestCallbackValidation","nodeType":"ContractDefinition","nodes":[{"body":{"id":21926,"nodeType":"Block","src":"324:89:116","statements":[{"expression":{"arguments":[{"id":21920,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21907,"src":"376:7:116","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21921,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21909,"src":"385:6:116","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21922,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21911,"src":"393:6:116","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21923,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21913,"src":"401:3:116","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":21918,"name":"CallbackValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17495,"src":"342:18:116","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CallbackValidation_$17495_$","typeString":"type(library CallbackValidation)"}},"id":21919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"verifyCallback","nodeType":"MemberAccess","referencedDeclaration":17463,"src":"342:33:116","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint24_$returns$_t_contract$_IElixirPool_$3273_$","typeString":"function (address,address,address,uint24) view returns (contract IElixirPool)"}},"id":21924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"342:63:116","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"functionReturnParameters":21917,"id":21925,"nodeType":"Return","src":"335:70:116"}]},"functionSelector":"8bdb1925","id":21927,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallback","nodeType":"FunctionDefinition","parameters":{"id":21914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21907,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":21927,"src":"189:15:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21906,"name":"address","nodeType":"ElementaryTypeName","src":"189:7:116","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21909,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":21927,"src":"215:14:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21908,"name":"address","nodeType":"ElementaryTypeName","src":"215:7:116","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21911,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":21927,"src":"240:14:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21910,"name":"address","nodeType":"ElementaryTypeName","src":"240:7:116","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21913,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":21927,"src":"265:10:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":21912,"name":"uint24","nodeType":"ElementaryTypeName","src":"265:6:116","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"178:104:116"},"returnParameters":{"id":21917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21916,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":21927,"src":"306:16:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"},"typeName":{"id":21915,"name":"IElixirPool","nodeType":"UserDefinedTypeName","referencedDeclaration":3273,"src":"306:11:116","typeDescriptions":{"typeIdentifier":"t_contract$_IElixirPool_$3273","typeString":"contract IElixirPool"}},"visibility":"internal"}],"src":"305:18:116"},"scope":21928,"src":"155:258:116","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":21929,"src":"116:300:116"}],"src":"40:378:116"},"id":116},"contracts/elixir-periphery/test/TestMulticall.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/test/TestMulticall.sol","exportedSymbols":{"IMulticall":[15852],"Multicall":[14924],"TestMulticall":[21987]},"id":21988,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":21930,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:117"},{"id":21931,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"65:19:117"},{"absolutePath":"contracts/elixir-periphery/base/Multicall.sol","file":"../base/Multicall.sol","id":21932,"nodeType":"ImportDirective","scope":21988,"sourceUnit":14925,"src":"88:31:117","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":21933,"name":"Multicall","nodeType":"UserDefinedTypeName","referencedDeclaration":14924,"src":"149:9:117","typeDescriptions":{"typeIdentifier":"t_contract$_Multicall_$14924","typeString":"contract Multicall"}},"id":21934,"nodeType":"InheritanceSpecifier","src":"149:9:117"}],"contractDependencies":[14924,15852],"contractKind":"contract","fullyImplemented":true,"id":21987,"linearizedBaseContracts":[21987,14924,15852],"name":"TestMulticall","nodeType":"ContractDefinition","nodes":[{"body":{"id":21943,"nodeType":"Block","src":"239:32:117","statements":[{"expression":{"arguments":[{"id":21940,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21936,"src":"257:5:117","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":21939,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"250:6:117","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":21941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"250:13:117","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21942,"nodeType":"ExpressionStatement","src":"250:13:117"}]},"functionSelector":"34621235","id":21944,"implemented":true,"kind":"function","modifiers":[],"name":"functionThatRevertsWithError","nodeType":"FunctionDefinition","parameters":{"id":21937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21936,"mutability":"mutable","name":"error","nodeType":"VariableDeclaration","scope":21944,"src":"204:19:117","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21935,"name":"string","nodeType":"ElementaryTypeName","src":"204:6:117","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"203:21:117"},"returnParameters":{"id":21938,"nodeType":"ParameterList","parameters":[],"src":"239:0:117"},"scope":21987,"src":"166:105:117","stateMutability":"pure","virtual":false,"visibility":"external"},{"canonicalName":"TestMulticall.Tuple","id":21949,"members":[{"constant":false,"id":21946,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":21949,"src":"303:9:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21945,"name":"uint256","nodeType":"ElementaryTypeName","src":"303:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21948,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":21949,"src":"323:9:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21947,"name":"uint256","nodeType":"ElementaryTypeName","src":"323:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Tuple","nodeType":"StructDefinition","scope":21987,"src":"279:61:117","visibility":"public"},{"body":{"id":21965,"nodeType":"Block","src":"447:46:117","statements":[{"expression":{"id":21963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21958,"name":"tuple","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21956,"src":"458:5:117","typeDescriptions":{"typeIdentifier":"t_struct$_Tuple_$21949_memory_ptr","typeString":"struct TestMulticall.Tuple memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":21960,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21951,"src":"476:1:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21961,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21953,"src":"482:1:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21959,"name":"Tuple","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21949,"src":"466:5:117","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Tuple_$21949_storage_ptr_$","typeString":"type(struct TestMulticall.Tuple storage pointer)"}},"id":21962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["b","a"],"nodeType":"FunctionCall","src":"466:19:117","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Tuple_$21949_memory_ptr","typeString":"struct TestMulticall.Tuple memory"}},"src":"458:27:117","typeDescriptions":{"typeIdentifier":"t_struct$_Tuple_$21949_memory_ptr","typeString":"struct TestMulticall.Tuple memory"}},"id":21964,"nodeType":"ExpressionStatement","src":"458:27:117"}]},"functionSelector":"3b16a6a3","id":21966,"implemented":true,"kind":"function","modifiers":[],"name":"functionThatReturnsTuple","nodeType":"FunctionDefinition","parameters":{"id":21954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21951,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":21966,"src":"382:9:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21950,"name":"uint256","nodeType":"ElementaryTypeName","src":"382:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21953,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":21966,"src":"393:9:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21952,"name":"uint256","nodeType":"ElementaryTypeName","src":"393:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"381:22:117"},"returnParameters":{"id":21957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21956,"mutability":"mutable","name":"tuple","nodeType":"VariableDeclaration","scope":21966,"src":"427:18:117","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Tuple_$21949_memory_ptr","typeString":"struct TestMulticall.Tuple"},"typeName":{"id":21955,"name":"Tuple","nodeType":"UserDefinedTypeName","referencedDeclaration":21949,"src":"427:5:117","typeDescriptions":{"typeIdentifier":"t_struct$_Tuple_$21949_storage_ptr","typeString":"struct TestMulticall.Tuple"}},"visibility":"internal"}],"src":"426:20:117"},"scope":21987,"src":"348:145:117","stateMutability":"pure","virtual":false,"visibility":"external"},{"constant":false,"functionSelector":"295b4e17","id":21968,"mutability":"mutable","name":"paid","nodeType":"VariableDeclaration","scope":21987,"src":"501:19:117","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21967,"name":"uint256","nodeType":"ElementaryTypeName","src":"501:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":21976,"nodeType":"Block","src":"562:36:117","statements":[{"expression":{"id":21974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21971,"name":"paid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21968,"src":"573:4:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":21972,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"581:3:117","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"581:9:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"573:17:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21975,"nodeType":"ExpressionStatement","src":"573:17:117"}]},"functionSelector":"f3e22297","id":21977,"implemented":true,"kind":"function","modifiers":[],"name":"pays","nodeType":"FunctionDefinition","parameters":{"id":21969,"nodeType":"ParameterList","parameters":[],"src":"542:2:117"},"returnParameters":{"id":21970,"nodeType":"ParameterList","parameters":[],"src":"562:0:117"},"scope":21987,"src":"529:69:117","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":21985,"nodeType":"Block","src":"662:36:117","statements":[{"expression":{"expression":{"id":21982,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"680:3:117","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"680:10:117","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":21981,"id":21984,"nodeType":"Return","src":"673:17:117"}]},"functionSelector":"5170a9d0","id":21986,"implemented":true,"kind":"function","modifiers":[],"name":"returnSender","nodeType":"FunctionDefinition","parameters":{"id":21978,"nodeType":"ParameterList","parameters":[],"src":"627:2:117"},"returnParameters":{"id":21981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21980,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21986,"src":"653:7:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21979,"name":"address","nodeType":"ElementaryTypeName","src":"653:7:117","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"652:9:117"},"scope":21987,"src":"606:92:117","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":21988,"src":"123:578:117"}],"src":"40:663:117"},"id":117},"contracts/elixir-periphery/test/TestPositionNFTOwner.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/test/TestPositionNFTOwner.sol","exportedSymbols":{"IERC1271":[16404],"TestPositionNFTOwner":[22047]},"id":22048,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":21989,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"40:23:118"},{"absolutePath":"contracts/elixir-periphery/interfaces/external/IERC1271.sol","file":"../interfaces/external/IERC1271.sol","id":21990,"nodeType":"ImportDirective","scope":22048,"sourceUnit":16405,"src":"67:45:118","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":21991,"name":"IERC1271","nodeType":"UserDefinedTypeName","referencedDeclaration":16404,"src":"149:8:118","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1271_$16404","typeString":"contract IERC1271"}},"id":21992,"nodeType":"InheritanceSpecifier","src":"149:8:118"}],"contractDependencies":[16404],"contractKind":"contract","fullyImplemented":true,"id":22047,"linearizedBaseContracts":[22047,16404],"name":"TestPositionNFTOwner","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"8da5cb5b","id":21994,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":22047,"src":"165:20:118","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21993,"name":"address","nodeType":"ElementaryTypeName","src":"165:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"body":{"id":22003,"nodeType":"Block","src":"237:33:118","statements":[{"expression":{"id":22001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21999,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21994,"src":"248:5:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22000,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21996,"src":"256:6:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"248:14:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":22002,"nodeType":"ExpressionStatement","src":"248:14:118"}]},"functionSelector":"13af4035","id":22004,"implemented":true,"kind":"function","modifiers":[],"name":"setOwner","nodeType":"FunctionDefinition","parameters":{"id":21997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21996,"mutability":"mutable","name":"_owner","nodeType":"VariableDeclaration","scope":22004,"src":"212:14:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21995,"name":"address","nodeType":"ElementaryTypeName","src":"212:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"211:16:118"},"returnParameters":{"id":21998,"nodeType":"ParameterList","parameters":[],"src":"237:0:118"},"scope":22047,"src":"194:76:118","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[16403],"body":{"id":22045,"nodeType":"Block","src":"393:394:118","statements":[{"assignments":[22015],"declarations":[{"constant":false,"id":22015,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":22045,"src":"404:9:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22014,"name":"bytes32","nodeType":"ElementaryTypeName","src":"404:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":22016,"nodeType":"VariableDeclarationStatement","src":"404:9:118"},{"assignments":[22018],"declarations":[{"constant":false,"id":22018,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":22045,"src":"424:9:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22017,"name":"bytes32","nodeType":"ElementaryTypeName","src":"424:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":22019,"nodeType":"VariableDeclarationStatement","src":"424:9:118"},{"assignments":[22021],"declarations":[{"constant":false,"id":22021,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":22045,"src":"444:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":22020,"name":"uint8","nodeType":"ElementaryTypeName","src":"444:5:118","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":22022,"nodeType":"VariableDeclarationStatement","src":"444:7:118"},{"AST":{"nodeType":"YulBlock","src":"471:159:118","statements":[{"nodeType":"YulAssignment","src":"486:32:118","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"501:9:118"},{"kind":"number","nodeType":"YulLiteral","src":"512:4:118","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"497:3:118"},"nodeType":"YulFunctionCall","src":"497:20:118"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"491:5:118"},"nodeType":"YulFunctionCall","src":"491:27:118"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"486:1:118"}]},{"nodeType":"YulAssignment","src":"532:32:118","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"547:9:118"},{"kind":"number","nodeType":"YulLiteral","src":"558:4:118","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"543:3:118"},"nodeType":"YulFunctionCall","src":"543:20:118"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"537:5:118"},"nodeType":"YulFunctionCall","src":"537:27:118"},"variableNames":[{"name":"s","nodeType":"YulIdentifier","src":"532:1:118"}]},{"nodeType":"YulAssignment","src":"578:41:118","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"588:1:118","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"601:9:118"},{"kind":"number","nodeType":"YulLiteral","src":"612:4:118","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"597:3:118"},"nodeType":"YulFunctionCall","src":"597:20:118"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"591:5:118"},"nodeType":"YulFunctionCall","src":"591:27:118"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"583:4:118"},"nodeType":"YulFunctionCall","src":"583:36:118"},"variableNames":[{"name":"v","nodeType":"YulIdentifier","src":"578:1:118"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":22015,"isOffset":false,"isSlot":false,"src":"486:1:118","valueSize":1},{"declaration":22018,"isOffset":false,"isSlot":false,"src":"532:1:118","valueSize":1},{"declaration":22008,"isOffset":false,"isSlot":false,"src":"501:9:118","valueSize":1},{"declaration":22008,"isOffset":false,"isSlot":false,"src":"547:9:118","valueSize":1},{"declaration":22008,"isOffset":false,"isSlot":false,"src":"601:9:118","valueSize":1},{"declaration":22021,"isOffset":false,"isSlot":false,"src":"578:1:118","valueSize":1}],"id":22023,"nodeType":"InlineAssembly","src":"462:168:118"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":22031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":22025,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22006,"src":"654:4:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":22026,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22021,"src":"660:1:118","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":22027,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22015,"src":"663:1:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":22028,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22018,"src":"666:1:118","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":22024,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"644:9:118","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":22029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"644:24:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":22030,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21994,"src":"672:5:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"644:33:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":22043,"nodeType":"Block","src":"737:43:118","statements":[{"expression":{"arguments":[{"hexValue":"30","id":22040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"766:1:118","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":22039,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"759:6:118","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":22038,"name":"bytes4","nodeType":"ElementaryTypeName","src":"759:6:118","typeDescriptions":{}}},"id":22041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"759:9:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":22013,"id":22042,"nodeType":"Return","src":"752:16:118"}]},"id":22044,"nodeType":"IfStatement","src":"640:140:118","trueBody":{"id":22037,"nodeType":"Block","src":"679:52:118","statements":[{"expression":{"arguments":[{"hexValue":"30783136323662613765","id":22034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"708:10:118","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":22033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"701:6:118","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":22032,"name":"bytes4","nodeType":"ElementaryTypeName","src":"701:6:118","typeDescriptions":{}}},"id":22035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"701:18:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":22013,"id":22036,"nodeType":"Return","src":"694:25:118"}]}}]},"functionSelector":"1626ba7e","id":22046,"implemented":true,"kind":"function","modifiers":[],"name":"isValidSignature","nodeType":"FunctionDefinition","overrides":{"id":22010,"nodeType":"OverrideSpecifier","overrides":[],"src":"356:8:118"},"parameters":{"id":22009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22006,"mutability":"mutable","name":"hash","nodeType":"VariableDeclaration","scope":22046,"src":"304:12:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22005,"name":"bytes32","nodeType":"ElementaryTypeName","src":"304:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":22008,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":22046,"src":"318:22:118","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22007,"name":"bytes","nodeType":"ElementaryTypeName","src":"318:5:118","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"303:38:118"},"returnParameters":{"id":22013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22012,"mutability":"mutable","name":"magicValue","nodeType":"VariableDeclaration","scope":22046,"src":"374:17:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":22011,"name":"bytes4","nodeType":"ElementaryTypeName","src":"374:6:118","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"373:19:118"},"scope":22047,"src":"278:509:118","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":22048,"src":"116:674:118"}],"src":"40:752:118"},"id":118},"contracts/elixir-periphery/test/TickLensTest.sol":{"ast":{"absolutePath":"contracts/elixir-periphery/test/TickLensTest.sol","exportedSymbols":{"IElixirPool":[3273],"IElixirPoolActions":[3411],"IElixirPoolDerivedState":[3447],"IElixirPoolEvents":[3573],"IElixirPoolImmutables":[3613],"IElixirPoolOwnerActions":[3659],"IElixirPoolState":[3779],"ITickLens":[16390],"TickLens":[17314],"TickLensTest":[22081]},"id":22082,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":22049,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:119"},{"id":22050,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"72:19:119"},{"absolutePath":"contracts/elixir-core/interfaces/IElixirPool.sol","file":"../../elixir-core/interfaces/IElixirPool.sol","id":22051,"nodeType":"ImportDirective","scope":22082,"sourceUnit":3274,"src":"95:54:119","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/elixir-periphery/lens/TickLens.sol","file":"../lens/TickLens.sol","id":22052,"nodeType":"ImportDirective","scope":22082,"sourceUnit":17315,"src":"151:30:119","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":22054,"name":"TickLens","nodeType":"UserDefinedTypeName","referencedDeclaration":17314,"src":"241:8:119","typeDescriptions":{"typeIdentifier":"t_contract$_TickLens_$17314","typeString":"contract TickLens"}},"id":22055,"nodeType":"InheritanceSpecifier","src":"241:8:119"}],"contractDependencies":[16390,17314],"contractKind":"contract","documentation":{"id":22053,"nodeType":"StructuredDocumentation","src":"185:31:119","text":"@title Tick Lens contract"},"fullyImplemented":true,"id":22081,"linearizedBaseContracts":[22081,17314,16390],"name":"TickLensTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":22079,"nodeType":"Block","src":"396:144:119","statements":[{"assignments":[22065],"declarations":[{"constant":false,"id":22065,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":22079,"src":"407:17:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22064,"name":"uint256","nodeType":"ElementaryTypeName","src":"407:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22068,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":22066,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"427:7:119","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":22067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"427:9:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"407:29:119"},{"expression":{"arguments":[{"id":22070,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22057,"src":"471:4:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22071,"name":"tickBitmapIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22059,"src":"477:15:119","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int16","typeString":"int16"}],"id":22069,"name":"getPopulatedTicksInWord","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17313,"src":"447:23:119","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_int16_$returns$_t_array$_t_struct$_PopulatedTick_$16378_memory_ptr_$dyn_memory_ptr_$","typeString":"function (address,int16) view returns (struct ITickLens.PopulatedTick memory[] memory)"}},"id":22072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"447:46:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PopulatedTick_$16378_memory_ptr_$dyn_memory_ptr","typeString":"struct ITickLens.PopulatedTick memory[] memory"}},"id":22073,"nodeType":"ExpressionStatement","src":"447:46:119"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22074,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22065,"src":"511:9:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":22075,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"523:7:119","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":22076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"523:9:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"511:21:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22063,"id":22078,"nodeType":"Return","src":"504:28:119"}]},"functionSelector":"f0c2e7bc","id":22080,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetPopulatedTicksInWord","nodeType":"FunctionDefinition","parameters":{"id":22060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22057,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":22080,"src":"312:12:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22056,"name":"address","nodeType":"ElementaryTypeName","src":"312:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22059,"mutability":"mutable","name":"tickBitmapIndex","nodeType":"VariableDeclaration","scope":22080,"src":"335:21:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":22058,"name":"int16","nodeType":"ElementaryTypeName","src":"335:5:119","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"301:62:119"},"returnParameters":{"id":22063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22062,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22080,"src":"387:7:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22061,"name":"uint256","nodeType":"ElementaryTypeName","src":"387:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"386:9:119"},"scope":22081,"src":"257:283:119","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":22082,"src":"216:327:119"}],"src":"46:499:119"},"id":119},"contracts/governance/CommunityTreasury.sol":{"ast":{"absolutePath":"contracts/governance/CommunityTreasury.sol","exportedSymbols":{"Address":[29920],"CommunityTreasury":[22140],"Context":[28828],"IERC20":[29463],"Ownable":[28937],"SafeERC20":[29676],"SafeMath":[29206]},"id":22141,"nodeType":"SourceUnit","nodes":[{"id":22083,"literals":["solidity","^","0.7",".6"],"nodeType":"PragmaDirective","src":"0:23:120"},{"absolutePath":"openzeppelin-contracts-legacy/access/Ownable.sol","file":"openzeppelin-contracts-legacy/access/Ownable.sol","id":22084,"nodeType":"ImportDirective","scope":22141,"sourceUnit":28938,"src":"27:58:120","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-legacy/token/ERC20/SafeERC20.sol","file":"openzeppelin-contracts-legacy/token/ERC20/SafeERC20.sol","id":22085,"nodeType":"ImportDirective","scope":22141,"sourceUnit":29677,"src":"87:65:120","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-legacy/token/ERC20/IERC20.sol","file":"openzeppelin-contracts-legacy/token/ERC20/IERC20.sol","id":22086,"nodeType":"ImportDirective","scope":22141,"sourceUnit":29464,"src":"154:62:120","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":22088,"name":"Ownable","nodeType":"UserDefinedTypeName","referencedDeclaration":28937,"src":"477:7:120","typeDescriptions":{"typeIdentifier":"t_contract$_Ownable_$28937","typeString":"contract Ownable"}},"id":22089,"nodeType":"InheritanceSpecifier","src":"477:7:120"}],"contractDependencies":[28828,28937],"contractKind":"contract","documentation":{"id":22087,"nodeType":"StructuredDocumentation","src":"220:225:120","text":" Custodian of community's PNG. Deploy this contract, then change the owner to be a\n governance protocol. Send community treasury funds to the deployed contract, then\n spend them through governance proposals."},"fullyImplemented":true,"id":22140,"linearizedBaseContracts":[22140,28937,28828],"name":"CommunityTreasury","nodeType":"ContractDefinition","nodes":[{"id":22092,"libraryName":{"id":22090,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":29676,"src":"498:9:120","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$29676","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"492:27:120","typeName":{"id":22091,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":29463,"src":"512:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}}},{"constant":false,"functionSelector":"5f775678","id":22094,"mutability":"mutable","name":"png","nodeType":"VariableDeclaration","scope":22140,"src":"552:17:120","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"},"typeName":{"id":22093,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":29463,"src":"552:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"visibility":"public"},{"body":{"id":22105,"nodeType":"Block","src":"604:37:120","statements":[{"expression":{"id":22103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22099,"name":"png","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22094,"src":"615:3:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":22101,"name":"png_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22096,"src":"628:4:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22100,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29463,"src":"621:6:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$29463_$","typeString":"type(contract IERC20)"}},"id":22102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"621:12:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"src":"615:18:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"id":22104,"nodeType":"ExpressionStatement","src":"615:18:120"}]},"id":22106,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":22097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22096,"mutability":"mutable","name":"png_","nodeType":"VariableDeclaration","scope":22106,"src":"590:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22095,"name":"address","nodeType":"ElementaryTypeName","src":"590:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"589:14:120"},"returnParameters":{"id":22098,"nodeType":"ParameterList","parameters":[],"src":"604:0:120"},"scope":22140,"src":"578:63:120","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":22123,"nodeType":"Block","src":"814:49:120","statements":[{"expression":{"arguments":[{"id":22119,"name":"dest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22109,"src":"842:4:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22120,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22111,"src":"848:6:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":22116,"name":"png","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22094,"src":"825:3:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"id":22118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":29497,"src":"825:16:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$29463_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$29463_$","typeString":"function (contract IERC20,address,uint256)"}},"id":22121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"825:30:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22122,"nodeType":"ExpressionStatement","src":"825:30:120"}]},"documentation":{"id":22107,"nodeType":"StructuredDocumentation","src":"649:95:120","text":" Transfer PNG to the destination. Can only be called by the contract owner."},"functionSelector":"a9059cbb","id":22124,"implemented":true,"kind":"function","modifiers":[{"id":22114,"modifierName":{"id":22113,"name":"onlyOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28886,"src":"804:9:120","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"804:9:120"}],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":22112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22109,"mutability":"mutable","name":"dest","nodeType":"VariableDeclaration","scope":22124,"src":"768:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22108,"name":"address","nodeType":"ElementaryTypeName","src":"768:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22111,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":22124,"src":"782:11:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22110,"name":"uint","nodeType":"ElementaryTypeName","src":"782:4:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"767:27:120"},"returnParameters":{"id":22115,"nodeType":"ParameterList","parameters":[],"src":"814:0:120"},"scope":22140,"src":"750:113:120","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":22138,"nodeType":"Block","src":"985:54:120","statements":[{"expression":{"arguments":[{"arguments":[{"id":22134,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1025:4:120","typeDescriptions":{"typeIdentifier":"t_contract$_CommunityTreasury_$22140","typeString":"contract CommunityTreasury"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CommunityTreasury_$22140","typeString":"contract CommunityTreasury"}],"id":22133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1017:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22132,"name":"address","nodeType":"ElementaryTypeName","src":"1017:7:120","typeDescriptions":{}}},"id":22135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1017:13:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":22130,"name":"png","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22094,"src":"1003:3:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"id":22131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":29402,"src":"1003:13:120","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":22136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1003:28:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22129,"id":22137,"nodeType":"Return","src":"996:35:120"}]},"documentation":{"id":22125,"nodeType":"StructuredDocumentation","src":"871:61:120","text":" Return the PNG balance of this contract."},"functionSelector":"b69ef8a8","id":22139,"implemented":true,"kind":"function","modifiers":[],"name":"balance","nodeType":"FunctionDefinition","parameters":{"id":22126,"nodeType":"ParameterList","parameters":[],"src":"954:2:120"},"returnParameters":{"id":22129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22128,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22139,"src":"979:4:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22127,"name":"uint","nodeType":"ElementaryTypeName","src":"979:4:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"978:6:120"},"scope":22140,"src":"938:101:120","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":22141,"src":"447:597:120"}],"src":"0:1044:120"},"id":120},"contracts/pangolin-core/interfaces/IPangolinERC20.sol":{"ast":{"absolutePath":"contracts/pangolin-core/interfaces/IPangolinERC20.sol","exportedSymbols":{"IPangolinERC20":[22258]},"id":22259,"nodeType":"SourceUnit","nodes":[{"id":22142,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"0:24:121"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":22258,"linearizedBaseContracts":[22258],"name":"IPangolinERC20","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":22150,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":22149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22144,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":22150,"src":"75:21:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22143,"name":"address","nodeType":"ElementaryTypeName","src":"75:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22146,"indexed":true,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":22150,"src":"98:23:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22145,"name":"address","nodeType":"ElementaryTypeName","src":"98:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22148,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":22150,"src":"123:10:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22147,"name":"uint","nodeType":"ElementaryTypeName","src":"123:4:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"74:60:121"},"src":"60:75:121"},{"anonymous":false,"id":22158,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":22157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22152,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":22158,"src":"156:20:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22151,"name":"address","nodeType":"ElementaryTypeName","src":"156:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22154,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":22158,"src":"178:18:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22153,"name":"address","nodeType":"ElementaryTypeName","src":"178:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22156,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":22158,"src":"198:10:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22155,"name":"uint","nodeType":"ElementaryTypeName","src":"198:4:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"155:54:121"},"src":"141:69:121"},{"functionSelector":"06fdde03","id":22163,"implemented":false,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","parameters":{"id":22159,"nodeType":"ParameterList","parameters":[],"src":"231:2:121"},"returnParameters":{"id":22162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22161,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22163,"src":"257:13:121","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":22160,"name":"string","nodeType":"ElementaryTypeName","src":"257:6:121","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"256:15:121"},"scope":22258,"src":"218:54:121","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"95d89b41","id":22168,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","parameters":{"id":22164,"nodeType":"ParameterList","parameters":[],"src":"293:2:121"},"returnParameters":{"id":22167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22166,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22168,"src":"319:13:121","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":22165,"name":"string","nodeType":"ElementaryTypeName","src":"319:6:121","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"318:15:121"},"scope":22258,"src":"278:56:121","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"313ce567","id":22173,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nodeType":"FunctionDefinition","parameters":{"id":22169,"nodeType":"ParameterList","parameters":[],"src":"357:2:121"},"returnParameters":{"id":22172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22171,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22173,"src":"383:5:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":22170,"name":"uint8","nodeType":"ElementaryTypeName","src":"383:5:121","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"382:7:121"},"scope":22258,"src":"340:50:121","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"18160ddd","id":22178,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":22174,"nodeType":"ParameterList","parameters":[],"src":"416:2:121"},"returnParameters":{"id":22177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22176,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22178,"src":"442:4:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22175,"name":"uint","nodeType":"ElementaryTypeName","src":"442:4:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"441:6:121"},"scope":22258,"src":"396:52:121","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"70a08231","id":22185,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":22181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22180,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":22185,"src":"473:13:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22179,"name":"address","nodeType":"ElementaryTypeName","src":"473:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"472:15:121"},"returnParameters":{"id":22184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22183,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22185,"src":"511:4:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22182,"name":"uint","nodeType":"ElementaryTypeName","src":"511:4:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"510:6:121"},"scope":22258,"src":"454:63:121","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"dd62ed3e","id":22194,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":22190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22187,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":22194,"src":"542:13:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22186,"name":"address","nodeType":"ElementaryTypeName","src":"542:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22189,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":22194,"src":"557:15:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22188,"name":"address","nodeType":"ElementaryTypeName","src":"557:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"541:32:121"},"returnParameters":{"id":22193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22192,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22194,"src":"597:4:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22191,"name":"uint","nodeType":"ElementaryTypeName","src":"597:4:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"596:6:121"},"scope":22258,"src":"523:80:121","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"095ea7b3","id":22203,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":22199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22196,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":22203,"src":"628:15:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22195,"name":"address","nodeType":"ElementaryTypeName","src":"628:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22198,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":22203,"src":"645:10:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22197,"name":"uint","nodeType":"ElementaryTypeName","src":"645:4:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"627:29:121"},"returnParameters":{"id":22202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22201,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22203,"src":"675:4:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22200,"name":"bool","nodeType":"ElementaryTypeName","src":"675:4:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"674:6:121"},"scope":22258,"src":"611:70:121","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a9059cbb","id":22212,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":22208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22205,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":22212,"src":"705:10:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22204,"name":"address","nodeType":"ElementaryTypeName","src":"705:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22207,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":22212,"src":"717:10:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22206,"name":"uint","nodeType":"ElementaryTypeName","src":"717:4:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"704:24:121"},"returnParameters":{"id":22211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22210,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22212,"src":"747:4:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22209,"name":"bool","nodeType":"ElementaryTypeName","src":"747:4:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"746:6:121"},"scope":22258,"src":"687:66:121","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"23b872dd","id":22223,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":22219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22214,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":22223,"src":"781:12:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22213,"name":"address","nodeType":"ElementaryTypeName","src":"781:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22216,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":22223,"src":"795:10:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22215,"name":"address","nodeType":"ElementaryTypeName","src":"795:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22218,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":22223,"src":"807:10:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22217,"name":"uint","nodeType":"ElementaryTypeName","src":"807:4:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"780:38:121"},"returnParameters":{"id":22222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22221,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22223,"src":"837:4:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22220,"name":"bool","nodeType":"ElementaryTypeName","src":"837:4:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"836:6:121"},"scope":22258,"src":"759:84:121","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3644e515","id":22228,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","parameters":{"id":22224,"nodeType":"ParameterList","parameters":[],"src":"876:2:121"},"returnParameters":{"id":22227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22226,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22228,"src":"902:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22225,"name":"bytes32","nodeType":"ElementaryTypeName","src":"902:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"901:9:121"},"scope":22258,"src":"851:60:121","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"30adf81f","id":22233,"implemented":false,"kind":"function","modifiers":[],"name":"PERMIT_TYPEHASH","nodeType":"FunctionDefinition","parameters":{"id":22229,"nodeType":"ParameterList","parameters":[],"src":"941:2:121"},"returnParameters":{"id":22232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22231,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22233,"src":"967:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22230,"name":"bytes32","nodeType":"ElementaryTypeName","src":"967:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"966:9:121"},"scope":22258,"src":"917:59:121","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"7ecebe00","id":22240,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nodeType":"FunctionDefinition","parameters":{"id":22236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22235,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":22240,"src":"998:13:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22234,"name":"address","nodeType":"ElementaryTypeName","src":"998:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"997:15:121"},"returnParameters":{"id":22239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22238,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22240,"src":"1036:4:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22237,"name":"uint","nodeType":"ElementaryTypeName","src":"1036:4:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1035:6:121"},"scope":22258,"src":"982:60:121","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d505accf","id":22257,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":22255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22242,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":22257,"src":"1066:13:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22241,"name":"address","nodeType":"ElementaryTypeName","src":"1066:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22244,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":22257,"src":"1081:15:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22243,"name":"address","nodeType":"ElementaryTypeName","src":"1081:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22246,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":22257,"src":"1098:10:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22245,"name":"uint","nodeType":"ElementaryTypeName","src":"1098:4:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22248,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":22257,"src":"1110:13:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22247,"name":"uint","nodeType":"ElementaryTypeName","src":"1110:4:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22250,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":22257,"src":"1125:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":22249,"name":"uint8","nodeType":"ElementaryTypeName","src":"1125:5:121","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":22252,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":22257,"src":"1134:9:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22251,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1134:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":22254,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":22257,"src":"1145:9:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22253,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1145:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1065:90:121"},"returnParameters":{"id":22256,"nodeType":"ParameterList","parameters":[],"src":"1164:0:121"},"scope":22258,"src":"1050:115:121","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":22259,"src":"28:1140:121"}],"src":"0:1170:121"},"id":121},"contracts/pangolin-core/interfaces/IPangolinFactory.sol":{"ast":{"absolutePath":"contracts/pangolin-core/interfaces/IPangolinFactory.sol","exportedSymbols":{"IPangolinFactory":[22321]},"id":22322,"nodeType":"SourceUnit","nodes":[{"id":22260,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"0:24:122"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":22321,"linearizedBaseContracts":[22321],"name":"IPangolinFactory","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":22270,"name":"PairCreated","nodeType":"EventDefinition","parameters":{"id":22269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22262,"indexed":true,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":22270,"src":"80:22:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22261,"name":"address","nodeType":"ElementaryTypeName","src":"80:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22264,"indexed":true,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":22270,"src":"104:22:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22263,"name":"address","nodeType":"ElementaryTypeName","src":"104:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22266,"indexed":false,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","scope":22270,"src":"128:12:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22265,"name":"address","nodeType":"ElementaryTypeName","src":"128:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22268,"indexed":false,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22270,"src":"142:4:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22267,"name":"uint","nodeType":"ElementaryTypeName","src":"142:4:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"79:68:122"},"src":"62:86:122"},{"functionSelector":"017e7e58","id":22275,"implemented":false,"kind":"function","modifiers":[],"name":"feeTo","nodeType":"FunctionDefinition","parameters":{"id":22271,"nodeType":"ParameterList","parameters":[],"src":"170:2:122"},"returnParameters":{"id":22274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22273,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22275,"src":"196:7:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22272,"name":"address","nodeType":"ElementaryTypeName","src":"196:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"195:9:122"},"scope":22321,"src":"156:49:122","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"094b7415","id":22280,"implemented":false,"kind":"function","modifiers":[],"name":"feeToSetter","nodeType":"FunctionDefinition","parameters":{"id":22276,"nodeType":"ParameterList","parameters":[],"src":"231:2:122"},"returnParameters":{"id":22279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22278,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22280,"src":"257:7:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22277,"name":"address","nodeType":"ElementaryTypeName","src":"257:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"256:9:122"},"scope":22321,"src":"211:55:122","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e6a43905","id":22289,"implemented":false,"kind":"function","modifiers":[],"name":"getPair","nodeType":"FunctionDefinition","parameters":{"id":22285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22282,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":22289,"src":"291:14:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22281,"name":"address","nodeType":"ElementaryTypeName","src":"291:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22284,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":22289,"src":"307:14:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22283,"name":"address","nodeType":"ElementaryTypeName","src":"307:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"290:32:122"},"returnParameters":{"id":22288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22287,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","scope":22289,"src":"346:12:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22286,"name":"address","nodeType":"ElementaryTypeName","src":"346:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"345:14:122"},"scope":22321,"src":"274:86:122","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"1e3dd18b","id":22296,"implemented":false,"kind":"function","modifiers":[],"name":"allPairs","nodeType":"FunctionDefinition","parameters":{"id":22292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22291,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22296,"src":"384:4:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22290,"name":"uint","nodeType":"ElementaryTypeName","src":"384:4:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"383:6:122"},"returnParameters":{"id":22295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22294,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","scope":22296,"src":"413:12:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22293,"name":"address","nodeType":"ElementaryTypeName","src":"413:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"412:14:122"},"scope":22321,"src":"366:61:122","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"574f2ba3","id":22301,"implemented":false,"kind":"function","modifiers":[],"name":"allPairsLength","nodeType":"FunctionDefinition","parameters":{"id":22297,"nodeType":"ParameterList","parameters":[],"src":"456:2:122"},"returnParameters":{"id":22300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22299,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22301,"src":"482:4:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22298,"name":"uint","nodeType":"ElementaryTypeName","src":"482:4:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"481:6:122"},"scope":22321,"src":"433:55:122","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c9c65396","id":22310,"implemented":false,"kind":"function","modifiers":[],"name":"createPair","nodeType":"FunctionDefinition","parameters":{"id":22306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22303,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":22310,"src":"516:14:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22302,"name":"address","nodeType":"ElementaryTypeName","src":"516:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22305,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":22310,"src":"532:14:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22304,"name":"address","nodeType":"ElementaryTypeName","src":"532:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"515:32:122"},"returnParameters":{"id":22309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22308,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","scope":22310,"src":"566:12:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22307,"name":"address","nodeType":"ElementaryTypeName","src":"566:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"565:14:122"},"scope":22321,"src":"496:84:122","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f46901ed","id":22315,"implemented":false,"kind":"function","modifiers":[],"name":"setFeeTo","nodeType":"FunctionDefinition","parameters":{"id":22313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22312,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22315,"src":"606:7:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22311,"name":"address","nodeType":"ElementaryTypeName","src":"606:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"605:9:122"},"returnParameters":{"id":22314,"nodeType":"ParameterList","parameters":[],"src":"623:0:122"},"scope":22321,"src":"588:36:122","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a2e74af6","id":22320,"implemented":false,"kind":"function","modifiers":[],"name":"setFeeToSetter","nodeType":"FunctionDefinition","parameters":{"id":22318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22317,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22320,"src":"654:7:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22316,"name":"address","nodeType":"ElementaryTypeName","src":"654:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"653:9:122"},"returnParameters":{"id":22319,"nodeType":"ParameterList","parameters":[],"src":"671:0:122"},"scope":22321,"src":"630:42:122","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":22322,"src":"28:647:122"}],"src":"0:677:122"},"id":122},"contracts/pangolin-core/interfaces/IPangolinPair.sol":{"ast":{"absolutePath":"contracts/pangolin-core/interfaces/IPangolinPair.sol","exportedSymbols":{"IPangolinPair":[22563]},"id":22564,"nodeType":"SourceUnit","nodes":[{"id":22323,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"0:24:123"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":22563,"linearizedBaseContracts":[22563],"name":"IPangolinPair","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":22331,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":22330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22325,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":22331,"src":"74:21:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22324,"name":"address","nodeType":"ElementaryTypeName","src":"74:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22327,"indexed":true,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":22331,"src":"97:23:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22326,"name":"address","nodeType":"ElementaryTypeName","src":"97:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22329,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":22331,"src":"122:10:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22328,"name":"uint","nodeType":"ElementaryTypeName","src":"122:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"73:60:123"},"src":"59:75:123"},{"anonymous":false,"id":22339,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":22338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22333,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":22339,"src":"155:20:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22332,"name":"address","nodeType":"ElementaryTypeName","src":"155:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22335,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":22339,"src":"177:18:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22334,"name":"address","nodeType":"ElementaryTypeName","src":"177:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22337,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":22339,"src":"197:10:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22336,"name":"uint","nodeType":"ElementaryTypeName","src":"197:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"154:54:123"},"src":"140:69:123"},{"functionSelector":"06fdde03","id":22344,"implemented":false,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","parameters":{"id":22340,"nodeType":"ParameterList","parameters":[],"src":"230:2:123"},"returnParameters":{"id":22343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22342,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22344,"src":"256:13:123","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":22341,"name":"string","nodeType":"ElementaryTypeName","src":"256:6:123","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"255:15:123"},"scope":22563,"src":"217:54:123","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"95d89b41","id":22349,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","parameters":{"id":22345,"nodeType":"ParameterList","parameters":[],"src":"292:2:123"},"returnParameters":{"id":22348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22347,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22349,"src":"318:13:123","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":22346,"name":"string","nodeType":"ElementaryTypeName","src":"318:6:123","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"317:15:123"},"scope":22563,"src":"277:56:123","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"313ce567","id":22354,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nodeType":"FunctionDefinition","parameters":{"id":22350,"nodeType":"ParameterList","parameters":[],"src":"356:2:123"},"returnParameters":{"id":22353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22352,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22354,"src":"382:5:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":22351,"name":"uint8","nodeType":"ElementaryTypeName","src":"382:5:123","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"381:7:123"},"scope":22563,"src":"339:50:123","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"18160ddd","id":22359,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":22355,"nodeType":"ParameterList","parameters":[],"src":"415:2:123"},"returnParameters":{"id":22358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22357,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22359,"src":"441:4:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22356,"name":"uint","nodeType":"ElementaryTypeName","src":"441:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"440:6:123"},"scope":22563,"src":"395:52:123","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"70a08231","id":22366,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":22362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22361,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":22366,"src":"472:13:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22360,"name":"address","nodeType":"ElementaryTypeName","src":"472:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"471:15:123"},"returnParameters":{"id":22365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22364,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22366,"src":"510:4:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22363,"name":"uint","nodeType":"ElementaryTypeName","src":"510:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"509:6:123"},"scope":22563,"src":"453:63:123","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"dd62ed3e","id":22375,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":22371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22368,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":22375,"src":"541:13:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22367,"name":"address","nodeType":"ElementaryTypeName","src":"541:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22370,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":22375,"src":"556:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22369,"name":"address","nodeType":"ElementaryTypeName","src":"556:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"540:32:123"},"returnParameters":{"id":22374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22373,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22375,"src":"596:4:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22372,"name":"uint","nodeType":"ElementaryTypeName","src":"596:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"595:6:123"},"scope":22563,"src":"522:80:123","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"095ea7b3","id":22384,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":22380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22377,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":22384,"src":"627:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22376,"name":"address","nodeType":"ElementaryTypeName","src":"627:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22379,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":22384,"src":"644:10:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22378,"name":"uint","nodeType":"ElementaryTypeName","src":"644:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"626:29:123"},"returnParameters":{"id":22383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22382,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22384,"src":"674:4:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22381,"name":"bool","nodeType":"ElementaryTypeName","src":"674:4:123","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"673:6:123"},"scope":22563,"src":"610:70:123","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a9059cbb","id":22393,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":22389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22386,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":22393,"src":"704:10:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22385,"name":"address","nodeType":"ElementaryTypeName","src":"704:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22388,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":22393,"src":"716:10:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22387,"name":"uint","nodeType":"ElementaryTypeName","src":"716:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"703:24:123"},"returnParameters":{"id":22392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22391,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22393,"src":"746:4:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22390,"name":"bool","nodeType":"ElementaryTypeName","src":"746:4:123","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"745:6:123"},"scope":22563,"src":"686:66:123","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"23b872dd","id":22404,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":22400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22395,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":22404,"src":"780:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22394,"name":"address","nodeType":"ElementaryTypeName","src":"780:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22397,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":22404,"src":"794:10:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22396,"name":"address","nodeType":"ElementaryTypeName","src":"794:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22399,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":22404,"src":"806:10:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22398,"name":"uint","nodeType":"ElementaryTypeName","src":"806:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"779:38:123"},"returnParameters":{"id":22403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22402,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22404,"src":"836:4:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22401,"name":"bool","nodeType":"ElementaryTypeName","src":"836:4:123","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"835:6:123"},"scope":22563,"src":"758:84:123","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3644e515","id":22409,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","parameters":{"id":22405,"nodeType":"ParameterList","parameters":[],"src":"875:2:123"},"returnParameters":{"id":22408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22407,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22409,"src":"901:7:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22406,"name":"bytes32","nodeType":"ElementaryTypeName","src":"901:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"900:9:123"},"scope":22563,"src":"850:60:123","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"30adf81f","id":22414,"implemented":false,"kind":"function","modifiers":[],"name":"PERMIT_TYPEHASH","nodeType":"FunctionDefinition","parameters":{"id":22410,"nodeType":"ParameterList","parameters":[],"src":"940:2:123"},"returnParameters":{"id":22413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22412,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22414,"src":"966:7:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22411,"name":"bytes32","nodeType":"ElementaryTypeName","src":"966:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"965:9:123"},"scope":22563,"src":"916:59:123","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"7ecebe00","id":22421,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nodeType":"FunctionDefinition","parameters":{"id":22417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22416,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":22421,"src":"997:13:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22415,"name":"address","nodeType":"ElementaryTypeName","src":"997:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"996:15:123"},"returnParameters":{"id":22420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22419,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22421,"src":"1035:4:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22418,"name":"uint","nodeType":"ElementaryTypeName","src":"1035:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1034:6:123"},"scope":22563,"src":"981:60:123","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d505accf","id":22438,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":22436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22423,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":22438,"src":"1065:13:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22422,"name":"address","nodeType":"ElementaryTypeName","src":"1065:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22425,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":22438,"src":"1080:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22424,"name":"address","nodeType":"ElementaryTypeName","src":"1080:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22427,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":22438,"src":"1097:10:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22426,"name":"uint","nodeType":"ElementaryTypeName","src":"1097:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22429,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":22438,"src":"1109:13:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22428,"name":"uint","nodeType":"ElementaryTypeName","src":"1109:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22431,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":22438,"src":"1124:7:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":22430,"name":"uint8","nodeType":"ElementaryTypeName","src":"1124:5:123","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":22433,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":22438,"src":"1133:9:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22432,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1133:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":22435,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":22438,"src":"1144:9:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22434,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1144:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1064:90:123"},"returnParameters":{"id":22437,"nodeType":"ParameterList","parameters":[],"src":"1163:0:123"},"scope":22563,"src":"1049:115:123","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"id":22446,"name":"Mint","nodeType":"EventDefinition","parameters":{"id":22445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22440,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":22446,"src":"1183:22:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22439,"name":"address","nodeType":"ElementaryTypeName","src":"1183:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22442,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":22446,"src":"1207:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22441,"name":"uint","nodeType":"ElementaryTypeName","src":"1207:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22444,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":22446,"src":"1221:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22443,"name":"uint","nodeType":"ElementaryTypeName","src":"1221:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1182:52:123"},"src":"1172:63:123"},{"anonymous":false,"id":22456,"name":"Burn","nodeType":"EventDefinition","parameters":{"id":22455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22448,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":22456,"src":"1252:22:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22447,"name":"address","nodeType":"ElementaryTypeName","src":"1252:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22450,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":22456,"src":"1276:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22449,"name":"uint","nodeType":"ElementaryTypeName","src":"1276:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22452,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":22456,"src":"1290:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22451,"name":"uint","nodeType":"ElementaryTypeName","src":"1290:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22454,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":22456,"src":"1304:18:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22453,"name":"address","nodeType":"ElementaryTypeName","src":"1304:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1251:72:123"},"src":"1241:83:123"},{"anonymous":false,"id":22470,"name":"Swap","nodeType":"EventDefinition","parameters":{"id":22469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22458,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":22470,"src":"1351:22:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22457,"name":"address","nodeType":"ElementaryTypeName","src":"1351:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22460,"indexed":false,"mutability":"mutable","name":"amount0In","nodeType":"VariableDeclaration","scope":22470,"src":"1384:14:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22459,"name":"uint","nodeType":"ElementaryTypeName","src":"1384:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22462,"indexed":false,"mutability":"mutable","name":"amount1In","nodeType":"VariableDeclaration","scope":22470,"src":"1409:14:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22461,"name":"uint","nodeType":"ElementaryTypeName","src":"1409:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22464,"indexed":false,"mutability":"mutable","name":"amount0Out","nodeType":"VariableDeclaration","scope":22470,"src":"1434:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22463,"name":"uint","nodeType":"ElementaryTypeName","src":"1434:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22466,"indexed":false,"mutability":"mutable","name":"amount1Out","nodeType":"VariableDeclaration","scope":22470,"src":"1460:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22465,"name":"uint","nodeType":"ElementaryTypeName","src":"1460:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22468,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":22470,"src":"1486:18:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22467,"name":"address","nodeType":"ElementaryTypeName","src":"1486:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1340:171:123"},"src":"1330:182:123"},{"anonymous":false,"id":22476,"name":"Sync","nodeType":"EventDefinition","parameters":{"id":22475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22472,"indexed":false,"mutability":"mutable","name":"reserve0","nodeType":"VariableDeclaration","scope":22476,"src":"1529:16:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":22471,"name":"uint112","nodeType":"ElementaryTypeName","src":"1529:7:123","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},{"constant":false,"id":22474,"indexed":false,"mutability":"mutable","name":"reserve1","nodeType":"VariableDeclaration","scope":22476,"src":"1547:16:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":22473,"name":"uint112","nodeType":"ElementaryTypeName","src":"1547:7:123","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"1528:36:123"},"src":"1518:47:123"},{"functionSelector":"ba9a7a56","id":22481,"implemented":false,"kind":"function","modifiers":[],"name":"MINIMUM_LIQUIDITY","nodeType":"FunctionDefinition","parameters":{"id":22477,"nodeType":"ParameterList","parameters":[],"src":"1599:2:123"},"returnParameters":{"id":22480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22479,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22481,"src":"1625:4:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22478,"name":"uint","nodeType":"ElementaryTypeName","src":"1625:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1624:6:123"},"scope":22563,"src":"1573:58:123","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"c45a0155","id":22486,"implemented":false,"kind":"function","modifiers":[],"name":"factory","nodeType":"FunctionDefinition","parameters":{"id":22482,"nodeType":"ParameterList","parameters":[],"src":"1653:2:123"},"returnParameters":{"id":22485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22484,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22486,"src":"1679:7:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22483,"name":"address","nodeType":"ElementaryTypeName","src":"1679:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1678:9:123"},"scope":22563,"src":"1637:51:123","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0dfe1681","id":22491,"implemented":false,"kind":"function","modifiers":[],"name":"token0","nodeType":"FunctionDefinition","parameters":{"id":22487,"nodeType":"ParameterList","parameters":[],"src":"1709:2:123"},"returnParameters":{"id":22490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22489,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22491,"src":"1735:7:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22488,"name":"address","nodeType":"ElementaryTypeName","src":"1735:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1734:9:123"},"scope":22563,"src":"1694:50:123","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d21220a7","id":22496,"implemented":false,"kind":"function","modifiers":[],"name":"token1","nodeType":"FunctionDefinition","parameters":{"id":22492,"nodeType":"ParameterList","parameters":[],"src":"1765:2:123"},"returnParameters":{"id":22495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22494,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22496,"src":"1791:7:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22493,"name":"address","nodeType":"ElementaryTypeName","src":"1791:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1790:9:123"},"scope":22563,"src":"1750:50:123","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0902f1ac","id":22505,"implemented":false,"kind":"function","modifiers":[],"name":"getReserves","nodeType":"FunctionDefinition","parameters":{"id":22497,"nodeType":"ParameterList","parameters":[],"src":"1826:2:123"},"returnParameters":{"id":22504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22499,"mutability":"mutable","name":"reserve0","nodeType":"VariableDeclaration","scope":22505,"src":"1852:16:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":22498,"name":"uint112","nodeType":"ElementaryTypeName","src":"1852:7:123","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},{"constant":false,"id":22501,"mutability":"mutable","name":"reserve1","nodeType":"VariableDeclaration","scope":22505,"src":"1870:16:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":22500,"name":"uint112","nodeType":"ElementaryTypeName","src":"1870:7:123","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},{"constant":false,"id":22503,"mutability":"mutable","name":"blockTimestampLast","nodeType":"VariableDeclaration","scope":22505,"src":"1888:25:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":22502,"name":"uint32","nodeType":"ElementaryTypeName","src":"1888:6:123","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1851:63:123"},"scope":22563,"src":"1806:109:123","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"5909c0d5","id":22510,"implemented":false,"kind":"function","modifiers":[],"name":"price0CumulativeLast","nodeType":"FunctionDefinition","parameters":{"id":22506,"nodeType":"ParameterList","parameters":[],"src":"1950:2:123"},"returnParameters":{"id":22509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22508,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22510,"src":"1976:4:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22507,"name":"uint","nodeType":"ElementaryTypeName","src":"1976:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1975:6:123"},"scope":22563,"src":"1921:61:123","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"5a3d5493","id":22515,"implemented":false,"kind":"function","modifiers":[],"name":"price1CumulativeLast","nodeType":"FunctionDefinition","parameters":{"id":22511,"nodeType":"ParameterList","parameters":[],"src":"2017:2:123"},"returnParameters":{"id":22514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22513,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22515,"src":"2043:4:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22512,"name":"uint","nodeType":"ElementaryTypeName","src":"2043:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2042:6:123"},"scope":22563,"src":"1988:61:123","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7464fc3d","id":22520,"implemented":false,"kind":"function","modifiers":[],"name":"kLast","nodeType":"FunctionDefinition","parameters":{"id":22516,"nodeType":"ParameterList","parameters":[],"src":"2069:2:123"},"returnParameters":{"id":22519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22518,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22520,"src":"2095:4:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22517,"name":"uint","nodeType":"ElementaryTypeName","src":"2095:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2094:6:123"},"scope":22563,"src":"2055:46:123","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6a627842","id":22527,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":22523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22522,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":22527,"src":"2123:10:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22521,"name":"address","nodeType":"ElementaryTypeName","src":"2123:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2122:12:123"},"returnParameters":{"id":22526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22525,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":22527,"src":"2153:14:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22524,"name":"uint","nodeType":"ElementaryTypeName","src":"2153:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2152:16:123"},"scope":22563,"src":"2109:60:123","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"89afcb44","id":22536,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":22530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22529,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":22536,"src":"2189:10:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22528,"name":"address","nodeType":"ElementaryTypeName","src":"2189:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2188:12:123"},"returnParameters":{"id":22535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22532,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":22536,"src":"2219:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22531,"name":"uint","nodeType":"ElementaryTypeName","src":"2219:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22534,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":22536,"src":"2233:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22533,"name":"uint","nodeType":"ElementaryTypeName","src":"2233:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2218:28:123"},"scope":22563,"src":"2175:72:123","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"022c0d9f","id":22547,"implemented":false,"kind":"function","modifiers":[],"name":"swap","nodeType":"FunctionDefinition","parameters":{"id":22545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22538,"mutability":"mutable","name":"amount0Out","nodeType":"VariableDeclaration","scope":22547,"src":"2267:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22537,"name":"uint","nodeType":"ElementaryTypeName","src":"2267:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22540,"mutability":"mutable","name":"amount1Out","nodeType":"VariableDeclaration","scope":22547,"src":"2284:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22539,"name":"uint","nodeType":"ElementaryTypeName","src":"2284:4:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22542,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":22547,"src":"2301:10:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22541,"name":"address","nodeType":"ElementaryTypeName","src":"2301:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22544,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":22547,"src":"2313:19:123","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":22543,"name":"bytes","nodeType":"ElementaryTypeName","src":"2313:5:123","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2266:67:123"},"returnParameters":{"id":22546,"nodeType":"ParameterList","parameters":[],"src":"2342:0:123"},"scope":22563,"src":"2253:90:123","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"bc25cf77","id":22552,"implemented":false,"kind":"function","modifiers":[],"name":"skim","nodeType":"FunctionDefinition","parameters":{"id":22550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22549,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":22552,"src":"2363:10:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22548,"name":"address","nodeType":"ElementaryTypeName","src":"2363:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2362:12:123"},"returnParameters":{"id":22551,"nodeType":"ParameterList","parameters":[],"src":"2383:0:123"},"scope":22563,"src":"2349:35:123","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"fff6cae9","id":22555,"implemented":false,"kind":"function","modifiers":[],"name":"sync","nodeType":"FunctionDefinition","parameters":{"id":22553,"nodeType":"ParameterList","parameters":[],"src":"2403:2:123"},"returnParameters":{"id":22554,"nodeType":"ParameterList","parameters":[],"src":"2414:0:123"},"scope":22563,"src":"2390:25:123","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"485cc955","id":22562,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":22560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22557,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22562,"src":"2443:7:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22556,"name":"address","nodeType":"ElementaryTypeName","src":"2443:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22559,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22562,"src":"2452:7:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22558,"name":"address","nodeType":"ElementaryTypeName","src":"2452:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2442:18:123"},"returnParameters":{"id":22561,"nodeType":"ParameterList","parameters":[],"src":"2469:0:123"},"scope":22563,"src":"2423:47:123","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":22564,"src":"28:2445:123"}],"src":"0:2475:123"},"id":123},"contracts/pangolin-lib/libraries/AddressStringUtil.sol":{"ast":{"absolutePath":"contracts/pangolin-lib/libraries/AddressStringUtil.sol","exportedSymbols":{"AddressStringUtil":[22706]},"id":22707,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":22565,"literals":["solidity",">=","0.5",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"48:31:124"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":22706,"linearizedBaseContracts":[22706],"name":"AddressStringUtil","nodeType":"ContractDefinition","nodes":[{"body":{"id":22676,"nodeType":"Block","src":"313:720:124","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22575,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22569,"src":"332:3:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":22576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"338:1:124","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"332:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":22578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"343:1:124","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"332:12:124","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22580,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22569,"src":"348:3:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":22581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"354:1:124","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"348:7:124","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"332:23:124","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22584,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22569,"src":"359:3:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"3430","id":22585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"366:2:124","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},"src":"359:9:124","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"332:36:124","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"41646472657373537472696e675574696c3a20494e56414c49445f4c454e","id":22588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"370:32:124","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":22574,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"324:7:124","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":22589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"324:79:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22590,"nodeType":"ExpressionStatement","src":"324:79:124"},{"assignments":[22592],"declarations":[{"constant":false,"id":22592,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":22676,"src":"416:14:124","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22591,"name":"bytes","nodeType":"ElementaryTypeName","src":"416:5:124","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":22597,"initialValue":{"arguments":[{"id":22595,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22569,"src":"443:3:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22594,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"433:9:124","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":22593,"name":"bytes","nodeType":"ElementaryTypeName","src":"437:5:124","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":22596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"433:14:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"416:31:124"},{"assignments":[22599],"declarations":[{"constant":false,"id":22599,"mutability":"mutable","name":"addrNum","nodeType":"VariableDeclaration","scope":22676,"src":"458:15:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22598,"name":"uint256","nodeType":"ElementaryTypeName","src":"458:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22604,"initialValue":{"arguments":[{"id":22602,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22567,"src":"484:4:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22601,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"476:7:124","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":22600,"name":"uint256","nodeType":"ElementaryTypeName","src":"476:7:124","typeDescriptions":{}}},"id":22603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"476:13:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"458:31:124"},{"body":{"id":22669,"nodeType":"Block","src":"538:461:124","statements":[{"assignments":[22618],"declarations":[{"constant":false,"id":22618,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":22669,"src":"666:7:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":22617,"name":"uint8","nodeType":"ElementaryTypeName","src":"666:5:124","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":22631,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22621,"name":"addrNum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22599,"src":"682:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"38","id":22622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"694:1:124","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":22625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3139","id":22623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"699:2:124","typeDescriptions":{"typeIdentifier":"t_rational_19_by_1","typeString":"int_const 19"},"value":"19"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":22624,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22606,"src":"704:1:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"699:6:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22626,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"698:8:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"694:12:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22628,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"693:14:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"682:25:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"676:5:124","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":22619,"name":"uint8","nodeType":"ElementaryTypeName","src":"676:5:124","typeDescriptions":{}}},"id":22630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"676:32:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"666:42:124"},{"assignments":[22633],"declarations":[{"constant":false,"id":22633,"mutability":"mutable","name":"hi","nodeType":"VariableDeclaration","scope":22669,"src":"790:8:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":22632,"name":"uint8","nodeType":"ElementaryTypeName","src":"790:5:124","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":22637,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":22636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22634,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22618,"src":"801:1:124","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":22635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"806:1:124","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"801:6:124","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"790:17:124"},{"assignments":[22639],"declarations":[{"constant":false,"id":22639,"mutability":"mutable","name":"lo","nodeType":"VariableDeclaration","scope":22669,"src":"891:8:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":22638,"name":"uint8","nodeType":"ElementaryTypeName","src":"891:5:124","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":22646,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":22645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22640,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22618,"src":"902:1:124","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":22643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22641,"name":"hi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22633,"src":"907:2:124","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":22642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"913:1:124","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"907:7:124","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":22644,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"906:9:124","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"902:13:124","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"891:24:124"},{"expression":{"id":22655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":22647,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22592,"src":"930:1:124","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":22651,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":22648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"932:1:124","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":22649,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22606,"src":"936:1:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"932:5:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"930:8:124","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":22653,"name":"hi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22633,"src":"946:2:124","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":22652,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22705,"src":"941:4:124","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_bytes1_$","typeString":"function (uint8) pure returns (bytes1)"}},"id":22654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"941:8:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"930:19:124","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":22656,"nodeType":"ExpressionStatement","src":"930:19:124"},{"expression":{"id":22667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":22657,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22592,"src":"964:1:124","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":22663,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":22658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"966:1:124","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":22659,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22606,"src":"970:1:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"966:5:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":22661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"974:1:124","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"966:9:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"964:12:124","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":22665,"name":"lo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22639,"src":"984:2:124","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":22664,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22705,"src":"979:4:124","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_bytes1_$","typeString":"function (uint8) pure returns (bytes1)"}},"id":22666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"979:8:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"964:23:124","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":22668,"nodeType":"ExpressionStatement","src":"964:23:124"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22609,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22606,"src":"520:1:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22610,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22569,"src":"524:3:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":22611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"530:1:124","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"524:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"520:11:124","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22670,"initializationExpression":{"assignments":[22606],"declarations":[{"constant":false,"id":22606,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":22670,"src":"505:9:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22605,"name":"uint256","nodeType":"ElementaryTypeName","src":"505:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22608,"initialValue":{"hexValue":"30","id":22607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"517:1:124","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"505:13:124"},"loopExpression":{"expression":{"id":22615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"533:3:124","subExpression":{"id":22614,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22606,"src":"533:1:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22616,"nodeType":"ExpressionStatement","src":"533:3:124"},"nodeType":"ForStatement","src":"500:499:124"},{"expression":{"arguments":[{"id":22673,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22592,"src":"1023:1:124","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":22672,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1016:6:124","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":22671,"name":"string","nodeType":"ElementaryTypeName","src":"1016:6:124","typeDescriptions":{}}},"id":22674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1016:9:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":22573,"id":22675,"nodeType":"Return","src":"1009:16:124"}]},"id":22677,"implemented":true,"kind":"function","modifiers":[],"name":"toAsciiString","nodeType":"FunctionDefinition","parameters":{"id":22570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22567,"mutability":"mutable","name":"addr","nodeType":"VariableDeclaration","scope":22677,"src":"248:12:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22566,"name":"address","nodeType":"ElementaryTypeName","src":"248:7:124","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22569,"mutability":"mutable","name":"len","nodeType":"VariableDeclaration","scope":22677,"src":"262:11:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22568,"name":"uint256","nodeType":"ElementaryTypeName","src":"262:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"247:27:124"},"returnParameters":{"id":22573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22572,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22677,"src":"298:13:124","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":22571,"name":"string","nodeType":"ElementaryTypeName","src":"298:6:124","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"297:15:124"},"scope":22706,"src":"225:808:124","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":22704,"nodeType":"Block","src":"1295:136:124","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":22686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22684,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22679,"src":"1310:1:124","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3130","id":22685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1314:2:124","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1310:6:124","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":22702,"nodeType":"Block","src":"1374:50:124","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":22699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22697,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22679,"src":"1403:1:124","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"30783337","id":22698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1407:4:124","typeDescriptions":{"typeIdentifier":"t_rational_55_by_1","typeString":"int_const 55"},"value":"0x37"},"src":"1403:8:124","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":22696,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1396:6:124","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":22695,"name":"bytes1","nodeType":"ElementaryTypeName","src":"1396:6:124","typeDescriptions":{}}},"id":22700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1396:16:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"functionReturnParameters":22683,"id":22701,"nodeType":"Return","src":"1389:23:124"}]},"id":22703,"nodeType":"IfStatement","src":"1306:118:124","trueBody":{"id":22694,"nodeType":"Block","src":"1318:50:124","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":22691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22689,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22679,"src":"1347:1:124","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"30783330","id":22690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1351:4:124","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"0x30"},"src":"1347:8:124","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":22688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1340:6:124","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":22687,"name":"bytes1","nodeType":"ElementaryTypeName","src":"1340:6:124","typeDescriptions":{}}},"id":22692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1340:16:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"functionReturnParameters":22683,"id":22693,"nodeType":"Return","src":"1333:23:124"}]}}]},"id":22705,"implemented":true,"kind":"function","modifiers":[],"name":"char","nodeType":"FunctionDefinition","parameters":{"id":22680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22679,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":22705,"src":"1254:7:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":22678,"name":"uint8","nodeType":"ElementaryTypeName","src":"1254:5:124","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1253:9:124"},"returnParameters":{"id":22683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22682,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":22705,"src":"1285:8:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":22681,"name":"bytes1","nodeType":"ElementaryTypeName","src":"1285:6:124","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"src":"1284:10:124"},"scope":22706,"src":"1240:191:124","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":22707,"src":"83:1351:124"}],"src":"48:1388:124"},"id":124},"contracts/pangolin-lib/libraries/Babylonian.sol":{"ast":{"absolutePath":"contracts/pangolin-lib/libraries/Babylonian.sol","exportedSymbols":{"Babylonian":[22763]},"id":22764,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":22708,"literals":["solidity",">=","0.4",".0"],"nodeType":"PragmaDirective","src":"48:24:125"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":22763,"linearizedBaseContracts":[22763],"name":"Babylonian","nodeType":"ContractDefinition","nodes":[{"body":{"id":22761,"nodeType":"Block","src":"301:276:125","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22715,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22710,"src":"316:1:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"33","id":22716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"320:1:125","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"316:5:125","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22751,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22710,"src":"507:1:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":22752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"512:1:125","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"507:6:125","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22759,"nodeType":"IfStatement","src":"503:44:125","trueBody":{"id":22758,"nodeType":"Block","src":"515:32:125","statements":[{"expression":{"id":22756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22754,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22713,"src":"530:1:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":22755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"534:1:125","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"530:5:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22757,"nodeType":"ExpressionStatement","src":"530:5:125"}]}},"id":22760,"nodeType":"IfStatement","src":"312:235:125","trueBody":{"id":22750,"nodeType":"Block","src":"323:174:125","statements":[{"expression":{"id":22720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22718,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22713,"src":"338:1:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22719,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22710,"src":"342:1:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"338:5:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22721,"nodeType":"ExpressionStatement","src":"338:5:125"},{"assignments":[22723],"declarations":[{"constant":false,"id":22723,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":22750,"src":"358:9:125","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22722,"name":"uint256","nodeType":"ElementaryTypeName","src":"358:7:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22729,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22724,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22710,"src":"370:1:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":22725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"374:1:125","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"370:5:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":22727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"378:1:125","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"370:9:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"358:21:125"},{"body":{"id":22748,"nodeType":"Block","src":"408:78:125","statements":[{"expression":{"id":22735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22733,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22713,"src":"427:1:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22734,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22723,"src":"431:1:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"427:5:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22736,"nodeType":"ExpressionStatement","src":"427:5:125"},{"expression":{"id":22746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22737,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22723,"src":"451:1:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22738,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22710,"src":"456:1:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":22739,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22723,"src":"460:1:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"456:5:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":22741,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22723,"src":"464:1:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"456:9:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22743,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"455:11:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":22744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"469:1:125","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"455:15:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"451:19:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22747,"nodeType":"ExpressionStatement","src":"451:19:125"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22730,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22723,"src":"401:1:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":22731,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22713,"src":"405:1:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"401:5:125","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22749,"nodeType":"WhileStatement","src":"394:92:125"}]}}]},"id":22762,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nodeType":"FunctionDefinition","parameters":{"id":22711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22710,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":22762,"src":"256:9:125","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22709,"name":"uint256","nodeType":"ElementaryTypeName","src":"256:7:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"255:11:125"},"returnParameters":{"id":22714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22713,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":22762,"src":"290:9:125","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22712,"name":"uint256","nodeType":"ElementaryTypeName","src":"290:7:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"289:11:125"},"scope":22763,"src":"242:335:125","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":22764,"src":"216:364:125"}],"src":"48:534:125"},"id":125},"contracts/pangolin-lib/libraries/FixedPoint.sol":{"ast":{"absolutePath":"contracts/pangolin-lib/libraries/FixedPoint.sol","exportedSymbols":{"Babylonian":[22763],"FixedPoint":[23338],"FullMath":[23551]},"id":23339,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":22765,"literals":["solidity",">=","0.4",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"46:31:126"},{"absolutePath":"contracts/pangolin-lib/libraries/FullMath.sol","file":"./FullMath.sol","id":22766,"nodeType":"ImportDirective","scope":23339,"sourceUnit":23552,"src":"81:24:126","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/pangolin-lib/libraries/Babylonian.sol","file":"./Babylonian.sol","id":22767,"nodeType":"ImportDirective","scope":23339,"sourceUnit":22764,"src":"107:26:126","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":23338,"linearizedBaseContracts":[23338],"name":"FixedPoint","nodeType":"ContractDefinition","nodes":[{"canonicalName":"FixedPoint.uq112x112","id":22770,"members":[{"constant":false,"id":22769,"mutability":"mutable","name":"_x","nodeType":"VariableDeclaration","scope":22770,"src":"357:10:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":22768,"name":"uint224","nodeType":"ElementaryTypeName","src":"357:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"name":"uq112x112","nodeType":"StructDefinition","scope":23338,"src":"329:46:126","visibility":"public"},{"canonicalName":"FixedPoint.uq144x112","id":22773,"members":[{"constant":false,"id":22772,"mutability":"mutable","name":"_x","nodeType":"VariableDeclaration","scope":22773,"src":"473:10:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22771,"name":"uint256","nodeType":"ElementaryTypeName","src":"473:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"uq144x112","nodeType":"StructDefinition","scope":23338,"src":"445:46:126","visibility":"public"},{"constant":true,"id":22776,"mutability":"constant","name":"RESOLUTION","nodeType":"VariableDeclaration","scope":23338,"src":"499:39:126","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":22774,"name":"uint8","nodeType":"ElementaryTypeName","src":"499:5:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"313132","id":22775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"535:3:126","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},"visibility":"private"},{"constant":true,"id":22779,"mutability":"constant","name":"Q112","nodeType":"VariableDeclaration","scope":23338,"src":"545:63:126","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22777,"name":"uint256","nodeType":"ElementaryTypeName","src":"545:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783130303030303030303030303030303030303030303030303030303030","id":22778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"577:31:126","typeDescriptions":{"typeIdentifier":"t_rational_5192296858534827628530496329220096_by_1","typeString":"int_const 5192...(26 digits omitted)...0096"},"value":"0x10000000000000000000000000000"},"visibility":"private"},{"constant":true,"id":22782,"mutability":"constant","name":"Q224","nodeType":"VariableDeclaration","scope":23338,"src":"615:91:126","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22780,"name":"uint256","nodeType":"ElementaryTypeName","src":"615:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":22781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"647:59:126","typeDescriptions":{"typeIdentifier":"t_rational_26959946667150639794667015087019630673637144422540572481103610249216_by_1","typeString":"int_const 2695...(60 digits omitted)...9216"},"value":"0x100000000000000000000000000000000000000000000000000000000"},"visibility":"private"},{"constant":true,"id":22785,"mutability":"constant","name":"LOWER_MASK","nodeType":"VariableDeclaration","scope":23338,"src":"713:68:126","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22783,"name":"uint256","nodeType":"ElementaryTypeName","src":"713:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307866666666666666666666666666666666666666666666666666666666","id":22784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"751:30:126","typeDescriptions":{"typeIdentifier":"t_rational_5192296858534827628530496329220095_by_1","typeString":"int_const 5192...(26 digits omitted)...0095"},"value":"0xffffffffffffffffffffffffffff"},"visibility":"private"},{"body":{"id":22801,"nodeType":"Block","src":"937:61:126","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":22798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":22795,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22787,"src":"973:1:126","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"id":22794,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"965:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":22793,"name":"uint224","nodeType":"ElementaryTypeName","src":"965:7:126","typeDescriptions":{}}},"id":22796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"965:10:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":22797,"name":"RESOLUTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22776,"src":"979:10:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"965:24:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":22792,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22770,"src":"955:9:126","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$22770_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":22799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"955:35:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":22791,"id":22800,"nodeType":"Return","src":"948:42:126"}]},"id":22802,"implemented":true,"kind":"function","modifiers":[],"name":"encode","nodeType":"FunctionDefinition","parameters":{"id":22788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22787,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":22802,"src":"885:9:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":22786,"name":"uint112","nodeType":"ElementaryTypeName","src":"885:7:126","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"884:11:126"},"returnParameters":{"id":22791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22790,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22802,"src":"919:16:126","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":22789,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"919:9:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"918:18:126"},"scope":23338,"src":"869:129:126","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":22818,"nodeType":"Block","src":"1118:61:126","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":22812,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22804,"src":"1154:1:126","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint144","typeString":"uint144"}],"id":22811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1146:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":22810,"name":"uint256","nodeType":"ElementaryTypeName","src":"1146:7:126","typeDescriptions":{}}},"id":22813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1146:10:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":22814,"name":"RESOLUTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22776,"src":"1160:10:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1146:24:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22809,"name":"uq144x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22773,"src":"1136:9:126","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq144x112_$22773_storage_ptr_$","typeString":"type(struct FixedPoint.uq144x112 storage pointer)"}},"id":22816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1136:35:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$22773_memory_ptr","typeString":"struct FixedPoint.uq144x112 memory"}},"functionReturnParameters":22808,"id":22817,"nodeType":"Return","src":"1129:42:126"}]},"id":22819,"implemented":true,"kind":"function","modifiers":[],"name":"encode144","nodeType":"FunctionDefinition","parameters":{"id":22805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22804,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":22819,"src":"1066:9:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":22803,"name":"uint144","nodeType":"ElementaryTypeName","src":"1066:7:126","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"1065:11:126"},"returnParameters":{"id":22808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22807,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22819,"src":"1100:16:126","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$22773_memory_ptr","typeString":"struct FixedPoint.uq144x112"},"typeName":{"id":22806,"name":"uq144x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22773,"src":"1100:9:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$22773_storage_ptr","typeString":"struct FixedPoint.uq144x112"}},"visibility":"internal"}],"src":"1099:18:126"},"scope":23338,"src":"1047:132:126","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":22834,"nodeType":"Block","src":"1336:56:126","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":22831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22828,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22821,"src":"1362:4:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":22829,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"1362:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":22830,"name":"RESOLUTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22776,"src":"1373:10:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1362:21:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":22827,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1354:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":22826,"name":"uint112","nodeType":"ElementaryTypeName","src":"1354:7:126","typeDescriptions":{}}},"id":22832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1354:30:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"functionReturnParameters":22825,"id":22833,"nodeType":"Return","src":"1347:37:126"}]},"id":22835,"implemented":true,"kind":"function","modifiers":[],"name":"decode","nodeType":"FunctionDefinition","parameters":{"id":22822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22821,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":22835,"src":"1281:21:126","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":22820,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"1281:9:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"1280:23:126"},"returnParameters":{"id":22825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22824,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22835,"src":"1327:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":22823,"name":"uint112","nodeType":"ElementaryTypeName","src":"1327:7:126","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"1326:9:126"},"scope":23338,"src":"1265:127:126","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":22850,"nodeType":"Block","src":"1552:56:126","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22844,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22837,"src":"1578:4:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$22773_memory_ptr","typeString":"struct FixedPoint.uq144x112 memory"}},"id":22845,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22772,"src":"1578:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":22846,"name":"RESOLUTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22776,"src":"1589:10:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1578:21:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1570:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":22842,"name":"uint144","nodeType":"ElementaryTypeName","src":"1570:7:126","typeDescriptions":{}}},"id":22848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1570:30:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"functionReturnParameters":22841,"id":22849,"nodeType":"Return","src":"1563:37:126"}]},"id":22851,"implemented":true,"kind":"function","modifiers":[],"name":"decode144","nodeType":"FunctionDefinition","parameters":{"id":22838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22837,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":22851,"src":"1497:21:126","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$22773_memory_ptr","typeString":"struct FixedPoint.uq144x112"},"typeName":{"id":22836,"name":"uq144x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22773,"src":"1497:9:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$22773_storage_ptr","typeString":"struct FixedPoint.uq144x112"}},"visibility":"internal"}],"src":"1496:23:126"},"returnParameters":{"id":22841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22840,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22851,"src":"1543:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":22839,"name":"uint144","nodeType":"ElementaryTypeName","src":"1543:7:126","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"1542:9:126"},"scope":23338,"src":"1478:130:126","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":22888,"nodeType":"Block","src":"1794:152:126","statements":[{"assignments":[22861],"declarations":[{"constant":false,"id":22861,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":22888,"src":"1805:9:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22860,"name":"uint256","nodeType":"ElementaryTypeName","src":"1805:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22863,"initialValue":{"hexValue":"30","id":22862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1817:1:126","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1805:13:126"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22865,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22855,"src":"1837:1:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":22866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1842:1:126","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1837:6:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":22873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22868,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22861,"src":"1848:1:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22869,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22853,"src":"1852:4:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":22870,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"1852:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":22871,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22855,"src":"1862:1:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1852:11:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1848:15:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22874,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1847:17:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":22875,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22855,"src":"1867:1:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1847:21:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":22877,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22853,"src":"1872:4:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":22878,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"1872:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"1847:32:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1837:42:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669786564506f696e743a204d554c5f4f564552464c4f57","id":22881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1881:26:126","typeDescriptions":{"typeIdentifier":"t_stringliteral_be2d4be71eb2194f98ae25808fa2a3e3d5bd0303cf4f11edea78e1e1eabb2653","typeString":"literal_string \"FixedPoint: MUL_OVERFLOW\""},"value":"FixedPoint: MUL_OVERFLOW"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be2d4be71eb2194f98ae25808fa2a3e3d5bd0303cf4f11edea78e1e1eabb2653","typeString":"literal_string \"FixedPoint: MUL_OVERFLOW\""}],"id":22864,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1829:7:126","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":22882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1829:79:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22883,"nodeType":"ExpressionStatement","src":"1829:79:126"},{"expression":{"arguments":[{"id":22885,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22861,"src":"1936:1:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22884,"name":"uq144x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22773,"src":"1926:9:126","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq144x112_$22773_storage_ptr_$","typeString":"type(struct FixedPoint.uq144x112 storage pointer)"}},"id":22886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1926:12:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$22773_memory_ptr","typeString":"struct FixedPoint.uq144x112 memory"}},"functionReturnParameters":22859,"id":22887,"nodeType":"Return","src":"1919:19:126"}]},"id":22889,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":22856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22853,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":22889,"src":"1719:21:126","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":22852,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"1719:9:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"},{"constant":false,"id":22855,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":22889,"src":"1742:9:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22854,"name":"uint256","nodeType":"ElementaryTypeName","src":"1742:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1718:34:126"},"returnParameters":{"id":22859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22858,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22889,"src":"1776:16:126","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$22773_memory_ptr","typeString":"struct FixedPoint.uq144x112"},"typeName":{"id":22857,"name":"uq144x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22773,"src":"1776:9:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$22773_storage_ptr","typeString":"struct FixedPoint.uq144x112"}},"visibility":"internal"}],"src":"1775:18:126"},"scope":23338,"src":"1706:240:126","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":22940,"nodeType":"Block","src":"2128:193:126","statements":[{"assignments":[22899],"declarations":[{"constant":false,"id":22899,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":22940,"src":"2139:9:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22898,"name":"uint256","nodeType":"ElementaryTypeName","src":"2139:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22916,"initialValue":{"arguments":[{"expression":{"id":22902,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22891,"src":"2167:4:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":22903,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"2167:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":22908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22906,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22893,"src":"2184:1:126","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":22907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2188:1:126","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2184:5:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":22911,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22893,"src":"2197:1:126","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":22912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2184:14:126","trueExpression":{"id":22910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2192:2:126","subExpression":{"id":22909,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22893,"src":"2193:1:126","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":22905,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2176:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":22904,"name":"uint256","nodeType":"ElementaryTypeName","src":"2176:7:126","typeDescriptions":{}}},"id":22913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2176:23:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":22914,"name":"Q112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22779,"src":"2201:4:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":22900,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23551,"src":"2151:8:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$23551_$","typeString":"type(library FullMath)"}},"id":22901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":23550,"src":"2151:15:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":22915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2151:55:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2139:67:126"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22918,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22899,"src":"2225:1:126","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":22921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":22919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2229:1:126","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"323535","id":22920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2232:3:126","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"2229:6:126","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"}},"src":"2225:10:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669786564506f696e743a204d554c495f4f564552464c4f57","id":22923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2237:27:126","typeDescriptions":{"typeIdentifier":"t_stringliteral_914c90235670df1ae5bf52334659fe1406f845f46800f1d0de0a5462ab169feb","typeString":"literal_string \"FixedPoint: MULI_OVERFLOW\""},"value":"FixedPoint: MULI_OVERFLOW"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_914c90235670df1ae5bf52334659fe1406f845f46800f1d0de0a5462ab169feb","typeString":"literal_string \"FixedPoint: MULI_OVERFLOW\""}],"id":22917,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2217:7:126","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":22924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2217:48:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22925,"nodeType":"ExpressionStatement","src":"2217:48:126"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":22928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22926,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22893,"src":"2283:1:126","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":22927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2287:1:126","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2283:5:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":22936,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22899,"src":"2311:1:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22935,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2304:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":22934,"name":"int256","nodeType":"ElementaryTypeName","src":"2304:6:126","typeDescriptions":{}}},"id":22937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2304:9:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":22938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2283:30:126","trueExpression":{"id":22933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2291:10:126","subExpression":{"arguments":[{"id":22931,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22899,"src":"2299:1:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22930,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2292:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":22929,"name":"int256","nodeType":"ElementaryTypeName","src":"2292:6:126","typeDescriptions":{}}},"id":22932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2292:9:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":22897,"id":22939,"nodeType":"Return","src":"2276:37:126"}]},"id":22941,"implemented":true,"kind":"function","modifiers":[],"name":"muli","nodeType":"FunctionDefinition","parameters":{"id":22894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22891,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":22941,"src":"2064:21:126","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":22890,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"2064:9:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"},{"constant":false,"id":22893,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":22941,"src":"2087:8:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":22892,"name":"int256","nodeType":"ElementaryTypeName","src":"2087:6:126","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2063:33:126"},"returnParameters":{"id":22897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22896,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22941,"src":"2120:6:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":22895,"name":"int256","nodeType":"ElementaryTypeName","src":"2120:6:126","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2119:8:126"},"scope":23338,"src":"2050:271:126","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23088,"nodeType":"Block","src":"2513:1183:126","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":22953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22950,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22943,"src":"2528:4:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":22951,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"2528:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":22952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2539:1:126","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2528:12:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":22957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22954,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22945,"src":"2544:5:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":22955,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"2544:8:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":22956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2556:1:126","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2544:13:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2528:29:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22964,"nodeType":"IfStatement","src":"2524:81:126","trueBody":{"id":22963,"nodeType":"Block","src":"2559:46:126","statements":[{"expression":{"arguments":[{"hexValue":"30","id":22960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2591:1:126","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":22959,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22770,"src":"2581:9:126","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$22770_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":22961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2581:12:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":22949,"id":22962,"nodeType":"Return","src":"2574:19:126"}]}},{"assignments":[22966],"declarations":[{"constant":false,"id":22966,"mutability":"mutable","name":"upper_self","nodeType":"VariableDeclaration","scope":23088,"src":"2615:18:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":22965,"name":"uint112","nodeType":"ElementaryTypeName","src":"2615:7:126","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"id":22974,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":22972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22969,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22943,"src":"2644:4:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":22970,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"2644:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":22971,"name":"RESOLUTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22776,"src":"2655:10:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2644:21:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":22968,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2636:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":22967,"name":"uint112","nodeType":"ElementaryTypeName","src":"2636:7:126","typeDescriptions":{}}},"id":22973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2636:30:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"VariableDeclarationStatement","src":"2615:51:126"},{"assignments":[22976],"declarations":[{"constant":false,"id":22976,"mutability":"mutable","name":"lower_self","nodeType":"VariableDeclaration","scope":23088,"src":"2686:18:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":22975,"name":"uint112","nodeType":"ElementaryTypeName","src":"2686:7:126","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"id":22984,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22979,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22943,"src":"2715:4:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":22980,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"2715:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":22981,"name":"LOWER_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22785,"src":"2725:10:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2715:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22978,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2707:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":22977,"name":"uint112","nodeType":"ElementaryTypeName","src":"2707:7:126","typeDescriptions":{}}},"id":22983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2707:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"VariableDeclarationStatement","src":"2686:50:126"},{"assignments":[22986],"declarations":[{"constant":false,"id":22986,"mutability":"mutable","name":"upper_other","nodeType":"VariableDeclaration","scope":23088,"src":"2759:19:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":22985,"name":"uint112","nodeType":"ElementaryTypeName","src":"2759:7:126","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"id":22994,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":22992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22989,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22945,"src":"2789:5:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":22990,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"2789:8:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":22991,"name":"RESOLUTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22776,"src":"2801:10:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2789:22:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":22988,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2781:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":22987,"name":"uint112","nodeType":"ElementaryTypeName","src":"2781:7:126","typeDescriptions":{}}},"id":22993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2781:31:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"VariableDeclarationStatement","src":"2759:53:126"},{"assignments":[22996],"declarations":[{"constant":false,"id":22996,"mutability":"mutable","name":"lower_other","nodeType":"VariableDeclaration","scope":23088,"src":"2832:19:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":22995,"name":"uint112","nodeType":"ElementaryTypeName","src":"2832:7:126","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"id":23004,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22999,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22945,"src":"2862:5:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":23000,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"2862:8:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":23001,"name":"LOWER_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22785,"src":"2873:10:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2862:21:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22998,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2854:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":22997,"name":"uint112","nodeType":"ElementaryTypeName","src":"2854:7:126","typeDescriptions":{}}},"id":23003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2854:30:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"VariableDeclarationStatement","src":"2832:52:126"},{"assignments":[23006],"declarations":[{"constant":false,"id":23006,"mutability":"mutable","name":"upper","nodeType":"VariableDeclaration","scope":23088,"src":"2938:13:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":23005,"name":"uint224","nodeType":"ElementaryTypeName","src":"2938:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"id":23013,"initialValue":{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":23012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":23009,"name":"upper_self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22966,"src":"2962:10:126","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"id":23008,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2954:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":23007,"name":"uint224","nodeType":"ElementaryTypeName","src":"2954:7:126","typeDescriptions":{}}},"id":23010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2954:19:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":23011,"name":"upper_other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22986,"src":"2976:11:126","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"2954:33:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"VariableDeclarationStatement","src":"2938:49:126"},{"assignments":[23015],"declarations":[{"constant":false,"id":23015,"mutability":"mutable","name":"lower","nodeType":"VariableDeclaration","scope":23088,"src":"3007:13:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":23014,"name":"uint224","nodeType":"ElementaryTypeName","src":"3007:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"id":23022,"initialValue":{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":23021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":23018,"name":"lower_self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22976,"src":"3031:10:126","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"id":23017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3023:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":23016,"name":"uint224","nodeType":"ElementaryTypeName","src":"3023:7:126","typeDescriptions":{}}},"id":23019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3023:19:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":23020,"name":"lower_other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22996,"src":"3045:11:126","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"3023:33:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"VariableDeclarationStatement","src":"3007:49:126"},{"assignments":[23024],"declarations":[{"constant":false,"id":23024,"mutability":"mutable","name":"uppers_lowero","nodeType":"VariableDeclaration","scope":23088,"src":"3079:21:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":23023,"name":"uint224","nodeType":"ElementaryTypeName","src":"3079:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"id":23031,"initialValue":{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":23030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":23027,"name":"upper_self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22966,"src":"3111:10:126","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"id":23026,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3103:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":23025,"name":"uint224","nodeType":"ElementaryTypeName","src":"3103:7:126","typeDescriptions":{}}},"id":23028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3103:19:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":23029,"name":"lower_other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22996,"src":"3125:11:126","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"3103:33:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"VariableDeclarationStatement","src":"3079:57:126"},{"assignments":[23033],"declarations":[{"constant":false,"id":23033,"mutability":"mutable","name":"uppero_lowers","nodeType":"VariableDeclaration","scope":23088,"src":"3159:21:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":23032,"name":"uint224","nodeType":"ElementaryTypeName","src":"3159:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"id":23040,"initialValue":{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":23039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":23036,"name":"upper_other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22986,"src":"3191:11:126","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"id":23035,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3183:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":23034,"name":"uint224","nodeType":"ElementaryTypeName","src":"3183:7:126","typeDescriptions":{}}},"id":23037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3183:20:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":23038,"name":"lower_self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22976,"src":"3206:10:126","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"3183:33:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"VariableDeclarationStatement","src":"3159:57:126"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":23048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23042,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23006,"src":"3296:5:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":23046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"3313:2:126","subExpression":{"hexValue":"31","id":23045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3314:1:126","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"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":23044,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3305:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":23043,"name":"uint112","nodeType":"ElementaryTypeName","src":"3305:7:126","typeDescriptions":{}}},"id":23047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3305:11:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"3296:20:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669786564506f696e743a204d554c55515f4f564552464c4f575f5550504552","id":23049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3318:34:126","typeDescriptions":{"typeIdentifier":"t_stringliteral_539126dda09a0257d4f5544b4872275f1d3e0d4dd7e4a8f4f649b7b85ade12ef","typeString":"literal_string \"FixedPoint: MULUQ_OVERFLOW_UPPER\""},"value":"FixedPoint: MULUQ_OVERFLOW_UPPER"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_539126dda09a0257d4f5544b4872275f1d3e0d4dd7e4a8f4f649b7b85ade12ef","typeString":"literal_string \"FixedPoint: MULUQ_OVERFLOW_UPPER\""}],"id":23041,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3288:7:126","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":23050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3288:65:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23051,"nodeType":"ExpressionStatement","src":"3288:65:126"},{"assignments":[23053],"declarations":[{"constant":false,"id":23053,"mutability":"mutable","name":"sum","nodeType":"VariableDeclaration","scope":23088,"src":"3431:11:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23052,"name":"uint256","nodeType":"ElementaryTypeName","src":"3431:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23069,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":23058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23056,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23006,"src":"3453:5:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":23057,"name":"RESOLUTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22776,"src":"3462:10:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3453:19:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":23055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3445:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":23054,"name":"uint256","nodeType":"ElementaryTypeName","src":"3445:7:126","typeDescriptions":{}}},"id":23059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3445:28:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":23060,"name":"uppers_lowero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23024,"src":"3476:13:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3445:44:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":23062,"name":"uppero_lowers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23033,"src":"3492:13:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3445:60:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":23066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23064,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23015,"src":"3509:5:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":23065,"name":"RESOLUTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22776,"src":"3518:10:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3509:19:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":23067,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3508:21:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3445:84:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3431:98:126"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23071,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23053,"src":"3592:3:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":23075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"3607:2:126","subExpression":{"hexValue":"31","id":23074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3608:1:126","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"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":23073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3599:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":23072,"name":"uint224","nodeType":"ElementaryTypeName","src":"3599:7:126","typeDescriptions":{}}},"id":23076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3599:11:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3592:18:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669786564506f696e743a204d554c55515f4f564552464c4f575f53554d","id":23078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3612:32:126","typeDescriptions":{"typeIdentifier":"t_stringliteral_ed10647d1d56d8dfa5e692aff9922a0c4fdd3b351dd8fe34d459ce2b342e405e","typeString":"literal_string \"FixedPoint: MULUQ_OVERFLOW_SUM\""},"value":"FixedPoint: MULUQ_OVERFLOW_SUM"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ed10647d1d56d8dfa5e692aff9922a0c4fdd3b351dd8fe34d459ce2b342e405e","typeString":"literal_string \"FixedPoint: MULUQ_OVERFLOW_SUM\""}],"id":23070,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3584:7:126","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":23079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3584:61:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23080,"nodeType":"ExpressionStatement","src":"3584:61:126"},{"expression":{"arguments":[{"arguments":[{"id":23084,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23053,"src":"3683:3:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23083,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3675:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":23082,"name":"uint224","nodeType":"ElementaryTypeName","src":"3675:7:126","typeDescriptions":{}}},"id":23085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3675:12:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":23081,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22770,"src":"3665:9:126","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$22770_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":23086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3665:23:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":22949,"id":23087,"nodeType":"Return","src":"3658:30:126"}]},"id":23089,"implemented":true,"kind":"function","modifiers":[],"name":"muluq","nodeType":"FunctionDefinition","parameters":{"id":22946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22943,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":23089,"src":"2425:21:126","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":22942,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"2425:9:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"},{"constant":false,"id":22945,"mutability":"mutable","name":"other","nodeType":"VariableDeclaration","scope":23089,"src":"2448:22:126","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":22944,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"2448:9:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"2424:47:126"},"returnParameters":{"id":22949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22948,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":23089,"src":"2495:16:126","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":22947,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"2495:9:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"2494:18:126"},"scope":23338,"src":"2410:1286:126","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23191,"nodeType":"Block","src":"3872:596:126","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":23102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23099,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23093,"src":"3891:5:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":23100,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"3891:8:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":23101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3902:1:126","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3891:12:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669786564506f696e743a204449565f42595f5a45524f5f4449565551","id":23103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3905:31:126","typeDescriptions":{"typeIdentifier":"t_stringliteral_17c163ab722223a7e87aead0e98bba666c61192e8c1b57b3ace2bb62ea553040","typeString":"literal_string \"FixedPoint: DIV_BY_ZERO_DIVUQ\""},"value":"FixedPoint: DIV_BY_ZERO_DIVUQ"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_17c163ab722223a7e87aead0e98bba666c61192e8c1b57b3ace2bb62ea553040","typeString":"literal_string \"FixedPoint: DIV_BY_ZERO_DIVUQ\""}],"id":23098,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3883:7:126","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":23104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3883:54:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23105,"nodeType":"ExpressionStatement","src":"3883:54:126"},{"condition":{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":23110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23106,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23091,"src":"3952:4:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":23107,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"3952:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":23108,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23093,"src":"3963:5:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":23109,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"3963:8:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3952:19:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23119,"nodeType":"IfStatement","src":"3948:83:126","trueBody":{"id":23118,"nodeType":"Block","src":"3973:58:126","statements":[{"expression":{"arguments":[{"arguments":[{"id":23114,"name":"Q112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22779,"src":"4013:4:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4005:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":23112,"name":"uint224","nodeType":"ElementaryTypeName","src":"4005:7:126","typeDescriptions":{}}},"id":23115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4005:13:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":23111,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22770,"src":"3995:9:126","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$22770_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":23116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3995:24:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":23097,"id":23117,"nodeType":"Return","src":"3988:31:126"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":23127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23120,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23091,"src":"4045:4:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":23121,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"4045:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":23125,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"4064:2:126","subExpression":{"hexValue":"31","id":23124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4065:1:126","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"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":23123,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4056:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":23122,"name":"uint144","nodeType":"ElementaryTypeName","src":"4056:7:126","typeDescriptions":{}}},"id":23126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4056:11:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"4045:22:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23161,"nodeType":"IfStatement","src":"4041:235:126","trueBody":{"id":23160,"nodeType":"Block","src":"4069:207:126","statements":[{"assignments":[23129],"declarations":[{"constant":false,"id":23129,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":23160,"src":"4084:13:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23128,"name":"uint256","nodeType":"ElementaryTypeName","src":"4084:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23141,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":23132,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23091,"src":"4109:4:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":23133,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"4109:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":23131,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4101:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":23130,"name":"uint256","nodeType":"ElementaryTypeName","src":"4101:7:126","typeDescriptions":{}}},"id":23134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4101:16:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":23135,"name":"RESOLUTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22776,"src":"4121:10:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4101:30:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":23137,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4100:32:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":23138,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23093,"src":"4135:5:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":23139,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"4135:8:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"4100:43:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4084:59:126"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23143,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23129,"src":"4166:5:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":23147,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"4183:2:126","subExpression":{"hexValue":"31","id":23146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4184:1:126","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"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":23145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4175:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":23144,"name":"uint224","nodeType":"ElementaryTypeName","src":"4175:7:126","typeDescriptions":{}}},"id":23148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4175:11:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"4166:20:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669786564506f696e743a2044495655515f4f564552464c4f57","id":23150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4188:28:126","typeDescriptions":{"typeIdentifier":"t_stringliteral_a54651753380997b91edda984d56ffa370134f66bce6a4aac5aa41ecd34aede5","typeString":"literal_string \"FixedPoint: DIVUQ_OVERFLOW\""},"value":"FixedPoint: DIVUQ_OVERFLOW"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a54651753380997b91edda984d56ffa370134f66bce6a4aac5aa41ecd34aede5","typeString":"literal_string \"FixedPoint: DIVUQ_OVERFLOW\""}],"id":23142,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4158:7:126","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":23151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4158:59:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23152,"nodeType":"ExpressionStatement","src":"4158:59:126"},{"expression":{"arguments":[{"arguments":[{"id":23156,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23129,"src":"4257:5:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23155,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4249:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":23154,"name":"uint224","nodeType":"ElementaryTypeName","src":"4249:7:126","typeDescriptions":{}}},"id":23157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4249:14:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":23153,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22770,"src":"4239:9:126","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$22770_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":23158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4239:25:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":23097,"id":23159,"nodeType":"Return","src":"4232:32:126"}]}},{"assignments":[23163],"declarations":[{"constant":false,"id":23163,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":23191,"src":"4288:14:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23162,"name":"uint256","nodeType":"ElementaryTypeName","src":"4288:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23172,"initialValue":{"arguments":[{"id":23166,"name":"Q112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22779,"src":"4321:4:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":23167,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23091,"src":"4327:4:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":23168,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"4327:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"expression":{"id":23169,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23093,"src":"4336:5:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":23170,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"4336:8:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint224","typeString":"uint224"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"expression":{"id":23164,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23551,"src":"4305:8:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$23551_$","typeString":"type(library FullMath)"}},"id":23165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":23550,"src":"4305:15:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":23171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4305:40:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4288:57:126"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23174,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23163,"src":"4364:6:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":23178,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"4382:2:126","subExpression":{"hexValue":"31","id":23177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4383:1:126","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"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":23176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4374:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":23175,"name":"uint224","nodeType":"ElementaryTypeName","src":"4374:7:126","typeDescriptions":{}}},"id":23179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4374:11:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"4364:21:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669786564506f696e743a2044495655515f4f564552464c4f57","id":23181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4387:28:126","typeDescriptions":{"typeIdentifier":"t_stringliteral_a54651753380997b91edda984d56ffa370134f66bce6a4aac5aa41ecd34aede5","typeString":"literal_string \"FixedPoint: DIVUQ_OVERFLOW\""},"value":"FixedPoint: DIVUQ_OVERFLOW"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a54651753380997b91edda984d56ffa370134f66bce6a4aac5aa41ecd34aede5","typeString":"literal_string \"FixedPoint: DIVUQ_OVERFLOW\""}],"id":23173,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4356:7:126","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":23182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4356:60:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23183,"nodeType":"ExpressionStatement","src":"4356:60:126"},{"expression":{"arguments":[{"arguments":[{"id":23187,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23163,"src":"4452:6:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4444:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":23185,"name":"uint224","nodeType":"ElementaryTypeName","src":"4444:7:126","typeDescriptions":{}}},"id":23188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4444:15:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":23184,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22770,"src":"4434:9:126","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$22770_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":23189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4434:26:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":23097,"id":23190,"nodeType":"Return","src":"4427:33:126"}]},"id":23192,"implemented":true,"kind":"function","modifiers":[],"name":"divuq","nodeType":"FunctionDefinition","parameters":{"id":23094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23091,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":23192,"src":"3784:21:126","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":23090,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"3784:9:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"},{"constant":false,"id":23093,"mutability":"mutable","name":"other","nodeType":"VariableDeclaration","scope":23192,"src":"3807:22:126","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":23092,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"3807:9:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"3783:47:126"},"returnParameters":{"id":23097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23096,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":23192,"src":"3854:16:126","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":23095,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"3854:9:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"3853:18:126"},"scope":23338,"src":"3769:699:126","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23220,"nodeType":"Block","src":"4680:156:126","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint112","typeString":"uint112"},"id":23204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23202,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23196,"src":"4699:11:126","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":23203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4713:1:126","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4699:15:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669786564506f696e743a204449565f42595f5a45524f5f4652414354494f4e","id":23205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4716:34:126","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3bb2b1394a0ebfeaa64d5d26aef760856a492bbd6a20ab1a5b73fc2ae685f39","typeString":"literal_string \"FixedPoint: DIV_BY_ZERO_FRACTION\""},"value":"FixedPoint: DIV_BY_ZERO_FRACTION"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d3bb2b1394a0ebfeaa64d5d26aef760856a492bbd6a20ab1a5b73fc2ae685f39","typeString":"literal_string \"FixedPoint: DIV_BY_ZERO_FRACTION\""}],"id":23201,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4691:7:126","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":23206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4691:60:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23207,"nodeType":"ExpressionStatement","src":"4691:60:126"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":23217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":23214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":23211,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23194,"src":"4788:9:126","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"id":23210,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4780:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":23209,"name":"uint224","nodeType":"ElementaryTypeName","src":"4780:7:126","typeDescriptions":{}}},"id":23212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4780:18:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":23213,"name":"RESOLUTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22776,"src":"4802:10:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4780:32:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":23215,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4779:34:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":23216,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23196,"src":"4816:11:126","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"4779:48:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":23208,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22770,"src":"4769:9:126","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$22770_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":23218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4769:59:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":23200,"id":23219,"nodeType":"Return","src":"4762:66:126"}]},"id":23221,"implemented":true,"kind":"function","modifiers":[],"name":"fraction","nodeType":"FunctionDefinition","parameters":{"id":23197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23194,"mutability":"mutable","name":"numerator","nodeType":"VariableDeclaration","scope":23221,"src":"4599:17:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":23193,"name":"uint112","nodeType":"ElementaryTypeName","src":"4599:7:126","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},{"constant":false,"id":23196,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","scope":23221,"src":"4618:19:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":23195,"name":"uint112","nodeType":"ElementaryTypeName","src":"4618:7:126","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"4598:40:126"},"returnParameters":{"id":23200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23199,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":23221,"src":"4662:16:126","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":23198,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"4662:9:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"4661:18:126"},"scope":23338,"src":"4581:255:126","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23246,"nodeType":"Block","src":"5013:141:126","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":23232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23229,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23223,"src":"5032:4:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":23230,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"5032:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":23231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5042:1:126","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5032:11:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669786564506f696e743a204449565f42595f5a45524f5f5245434950524f43414c5f4f525f4f564552464c4f57","id":23233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5045:48:126","typeDescriptions":{"typeIdentifier":"t_stringliteral_44e3924586e2f3a06e27e98bc8562a7e74980b7506825e88bdd7cb4e94825082","typeString":"literal_string \"FixedPoint: DIV_BY_ZERO_RECIPROCAL_OR_OVERFLOW\""},"value":"FixedPoint: DIV_BY_ZERO_RECIPROCAL_OR_OVERFLOW"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_44e3924586e2f3a06e27e98bc8562a7e74980b7506825e88bdd7cb4e94825082","typeString":"literal_string \"FixedPoint: DIV_BY_ZERO_RECIPROCAL_OR_OVERFLOW\""}],"id":23228,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5024:7:126","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":23234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5024:70:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23235,"nodeType":"ExpressionStatement","src":"5024:70:126"},{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23239,"name":"Q224","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22782,"src":"5130:4:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":23240,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23223,"src":"5137:4:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":23241,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"5137:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"5130:14:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23238,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5122:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":23237,"name":"uint224","nodeType":"ElementaryTypeName","src":"5122:7:126","typeDescriptions":{}}},"id":23243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5122:23:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":23236,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22770,"src":"5112:9:126","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$22770_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":23244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5112:34:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":23227,"id":23245,"nodeType":"Return","src":"5105:41:126"}]},"id":23247,"implemented":true,"kind":"function","modifiers":[],"name":"reciprocal","nodeType":"FunctionDefinition","parameters":{"id":23224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23223,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":23247,"src":"4949:21:126","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":23222,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"4949:9:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"4948:23:126"},"returnParameters":{"id":23227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23226,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":23247,"src":"4995:16:126","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":23225,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"4995:9:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"4994:18:126"},"scope":23338,"src":"4929:225:126","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23336,"nodeType":"Block","src":"5313:516:126","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":23261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23254,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23249,"src":"5328:4:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":23255,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"5328:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":23259,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"5347:2:126","subExpression":{"hexValue":"31","id":23258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5348:1:126","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"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":23257,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5339:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":23256,"name":"uint144","nodeType":"ElementaryTypeName","src":"5339:7:126","typeDescriptions":{}}},"id":23260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5339:11:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"5328:22:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23279,"nodeType":"IfStatement","src":"5324:122:126","trueBody":{"id":23278,"nodeType":"Block","src":"5352:94:126","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":23269,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23249,"src":"5416:4:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":23270,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"5416:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":23268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5408:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":23267,"name":"uint256","nodeType":"ElementaryTypeName","src":"5408:7:126","typeDescriptions":{}}},"id":23271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5408:16:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313132","id":23272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5428:3:126","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},"src":"5408:23:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":23265,"name":"Babylonian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22763,"src":"5392:10:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Babylonian_$22763_$","typeString":"type(library Babylonian)"}},"id":23266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sqrt","nodeType":"MemberAccess","referencedDeclaration":22762,"src":"5392:15:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":23274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5392:40:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5384:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":23263,"name":"uint224","nodeType":"ElementaryTypeName","src":"5384:7:126","typeDescriptions":{}}},"id":23275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5384:49:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":23262,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22770,"src":"5374:9:126","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$22770_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":23276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5374:60:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":23253,"id":23277,"nodeType":"Return","src":"5367:67:126"}]}},{"assignments":[23281],"declarations":[{"constant":false,"id":23281,"mutability":"mutable","name":"safeShiftBits","nodeType":"VariableDeclaration","scope":23336,"src":"5458:19:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":23280,"name":"uint8","nodeType":"ElementaryTypeName","src":"5458:5:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":23283,"initialValue":{"hexValue":"3332","id":23282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5480:2:126","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"nodeType":"VariableDeclarationStatement","src":"5458:24:126"},{"body":{"id":23310,"nodeType":"Block","src":"5521:182:126","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23287,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23249,"src":"5540:4:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":23288,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"5540:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"31","id":23291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5559:1:126","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"}],"id":23290,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5551:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":23289,"name":"uint256","nodeType":"ElementaryTypeName","src":"5551:7:126","typeDescriptions":{}}},"id":23292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5551:10:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":23297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":23295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323536","id":23293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5566:3:126","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":23294,"name":"safeShiftBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23281,"src":"5572:13:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5566:19:126","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"32","id":23296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5588:1:126","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5566:23:126","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":23298,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5565:25:126","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"5551:39:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":23300,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5550:41:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5540:51:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":23308,"nodeType":"Block","src":"5652:40:126","statements":[{"id":23307,"nodeType":"Break","src":"5671:5:126"}]},"id":23309,"nodeType":"IfStatement","src":"5536:156:126","trueBody":{"id":23306,"nodeType":"Block","src":"5593:53:126","statements":[{"expression":{"id":23304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23302,"name":"safeShiftBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23281,"src":"5612:13:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":23303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5629:1:126","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5612:18:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":23305,"nodeType":"ExpressionStatement","src":"5612:18:126"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":23286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23284,"name":"safeShiftBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23281,"src":"5500:13:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"313132","id":23285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5516:3:126","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},"src":"5500:19:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23311,"nodeType":"WhileStatement","src":"5493:210:126"},{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":23319,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23249,"src":"5762:4:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":23320,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"5762:7:126","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":23318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5754:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":23317,"name":"uint256","nodeType":"ElementaryTypeName","src":"5754:7:126","typeDescriptions":{}}},"id":23321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5754:16:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":23322,"name":"safeShiftBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23281,"src":"5774:13:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5754:33:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":23315,"name":"Babylonian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22763,"src":"5738:10:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Babylonian_$22763_$","typeString":"type(library Babylonian)"}},"id":23316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sqrt","nodeType":"MemberAccess","referencedDeclaration":22762,"src":"5738:15:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":23324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5738:50:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":23330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":23327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"313132","id":23325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5794:3:126","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":23326,"name":"safeShiftBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23281,"src":"5800:13:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5794:19:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":23328,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5793:21:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":23329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5817:1:126","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5793:25:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":23331,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5792:27:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5738:81:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23314,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5730:7:126","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":23313,"name":"uint224","nodeType":"ElementaryTypeName","src":"5730:7:126","typeDescriptions":{}}},"id":23333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5730:90:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":23312,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22770,"src":"5720:9:126","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$22770_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":23334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5720:101:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":23253,"id":23335,"nodeType":"Return","src":"5713:108:126"}]},"id":23337,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nodeType":"FunctionDefinition","parameters":{"id":23250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23249,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":23337,"src":"5249:21:126","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":23248,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"5249:9:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"5248:23:126"},"returnParameters":{"id":23253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23252,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":23337,"src":"5295:16:126","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":23251,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"5295:9:126","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"5294:18:126"},"scope":23338,"src":"5235:594:126","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":23339,"src":"241:5591:126"}],"src":"46:5788:126"},"id":126},"contracts/pangolin-lib/libraries/FullMath.sol":{"ast":{"absolutePath":"contracts/pangolin-lib/libraries/FullMath.sol","exportedSymbols":{"FullMath":[23551]},"id":23552,"license":"CC-BY-4.0","nodeType":"SourceUnit","nodes":[{"id":23340,"literals":["solidity",">=","0.4",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"39:31:127"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":23551,"linearizedBaseContracts":[23551],"name":"FullMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":23383,"nodeType":"Block","src":"312:127:127","statements":[{"assignments":[23352],"declarations":[{"constant":false,"id":23352,"mutability":"mutable","name":"mm","nodeType":"VariableDeclaration","scope":23383,"src":"323:10:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23351,"name":"uint256","nodeType":"ElementaryTypeName","src":"323:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23362,"initialValue":{"arguments":[{"id":23354,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23342,"src":"343:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23355,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23344,"src":"346:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":23359,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"357:2:127","subExpression":{"hexValue":"31","id":23358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"358:1:127","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"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":23357,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"349:7:127","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":23356,"name":"uint256","nodeType":"ElementaryTypeName","src":"349:7:127","typeDescriptions":{}}},"id":23360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"349:11:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23353,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"336:6:127","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":23361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"336:25:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"323:38:127"},{"expression":{"id":23367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23363,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23347,"src":"372:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23364,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23342,"src":"376:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":23365,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23344,"src":"380:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"376:5:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"372:9:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23368,"nodeType":"ExpressionStatement","src":"372:9:127"},{"expression":{"id":23373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23369,"name":"h","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23349,"src":"392:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23370,"name":"mm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23352,"src":"396:2:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":23371,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23347,"src":"401:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"396:6:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"392:10:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23374,"nodeType":"ExpressionStatement","src":"392:10:127"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23375,"name":"mm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23352,"src":"417:2:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":23376,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23347,"src":"422:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"417:6:127","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23382,"nodeType":"IfStatement","src":"413:18:127","trueBody":{"expression":{"id":23380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23378,"name":"h","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23349,"src":"425:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":23379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"430:1:127","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"425:6:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23381,"nodeType":"ExpressionStatement","src":"425:6:127"}}]},"id":23384,"implemented":true,"kind":"function","modifiers":[],"name":"fullMul","nodeType":"FunctionDefinition","parameters":{"id":23345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23342,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":23384,"src":"246:9:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23341,"name":"uint256","nodeType":"ElementaryTypeName","src":"246:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23344,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":23384,"src":"257:9:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23343,"name":"uint256","nodeType":"ElementaryTypeName","src":"257:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"245:22:127"},"returnParameters":{"id":23350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23347,"mutability":"mutable","name":"l","nodeType":"VariableDeclaration","scope":23384,"src":"290:9:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23346,"name":"uint256","nodeType":"ElementaryTypeName","src":"290:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23349,"mutability":"mutable","name":"h","nodeType":"VariableDeclaration","scope":23384,"src":"301:9:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23348,"name":"uint256","nodeType":"ElementaryTypeName","src":"301:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"289:22:127"},"scope":23551,"src":"229:210:127","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":23495,"nodeType":"Block","src":"562:367:127","statements":[{"assignments":[23396],"declarations":[{"constant":false,"id":23396,"mutability":"mutable","name":"pow2","nodeType":"VariableDeclaration","scope":23495,"src":"573:12:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23395,"name":"uint256","nodeType":"ElementaryTypeName","src":"573:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23401,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23397,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23390,"src":"588:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":23399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"592:2:127","subExpression":{"id":23398,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23390,"src":"593:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"588:6:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"573:21:127"},{"expression":{"id":23404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23402,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23390,"src":"605:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":23403,"name":"pow2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23396,"src":"610:4:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"605:9:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23405,"nodeType":"ExpressionStatement","src":"605:9:127"},{"expression":{"id":23408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23406,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23386,"src":"625:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":23407,"name":"pow2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23396,"src":"630:4:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"625:9:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23409,"nodeType":"ExpressionStatement","src":"625:9:127"},{"expression":{"id":23421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23410,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23386,"src":"645:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23411,"name":"h","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23388,"src":"650:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":23413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"656:5:127","subExpression":{"id":23412,"name":"pow2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23396,"src":"657:4:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":23414,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"655:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":23415,"name":"pow2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23396,"src":"665:4:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"655:14:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":23417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"672:1:127","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"655:18:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":23419,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"654:20:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"650:24:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"645:29:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23422,"nodeType":"ExpressionStatement","src":"645:29:127"},{"assignments":[23424],"declarations":[{"constant":false,"id":23424,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":23495,"src":"685:9:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23423,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23426,"initialValue":{"hexValue":"31","id":23425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"697:1:127","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"685:13:127"},{"expression":{"id":23433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23427,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23424,"src":"709:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":23428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"714:1:127","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23429,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23390,"src":"718:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":23430,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23424,"src":"722:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"718:5:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"714:9:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"709:14:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23434,"nodeType":"ExpressionStatement","src":"709:14:127"},{"expression":{"id":23441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23435,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23424,"src":"734:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":23436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"739:1:127","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23437,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23390,"src":"743:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":23438,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23424,"src":"747:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"743:5:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"739:9:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"734:14:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23442,"nodeType":"ExpressionStatement","src":"734:14:127"},{"expression":{"id":23449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23443,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23424,"src":"759:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":23444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"764:1:127","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23445,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23390,"src":"768:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":23446,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23424,"src":"772:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"768:5:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"764:9:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"759:14:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23450,"nodeType":"ExpressionStatement","src":"759:14:127"},{"expression":{"id":23457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23451,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23424,"src":"784:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":23452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"789:1:127","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23453,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23390,"src":"793:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":23454,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23424,"src":"797:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"793:5:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"789:9:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"784:14:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23458,"nodeType":"ExpressionStatement","src":"784:14:127"},{"expression":{"id":23465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23459,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23424,"src":"809:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":23460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"814:1:127","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23461,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23390,"src":"818:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":23462,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23424,"src":"822:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"818:5:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"814:9:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"809:14:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23466,"nodeType":"ExpressionStatement","src":"809:14:127"},{"expression":{"id":23473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23467,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23424,"src":"834:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":23468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"839:1:127","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23469,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23390,"src":"843:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":23470,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23424,"src":"847:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"843:5:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"839:9:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"834:14:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23474,"nodeType":"ExpressionStatement","src":"834:14:127"},{"expression":{"id":23481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23475,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23424,"src":"859:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":23476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"864:1:127","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23477,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23390,"src":"868:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":23478,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23424,"src":"872:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"868:5:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"864:9:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"859:14:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23482,"nodeType":"ExpressionStatement","src":"859:14:127"},{"expression":{"id":23489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23483,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23424,"src":"884:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":23484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"889:1:127","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23485,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23390,"src":"893:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":23486,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23424,"src":"897:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"893:5:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"889:9:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"884:14:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23490,"nodeType":"ExpressionStatement","src":"884:14:127"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23491,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23386,"src":"916:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":23492,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23424,"src":"920:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"916:5:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":23394,"id":23494,"nodeType":"Return","src":"909:12:127"}]},"id":23496,"implemented":true,"kind":"function","modifiers":[],"name":"fullDiv","nodeType":"FunctionDefinition","parameters":{"id":23391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23386,"mutability":"mutable","name":"l","nodeType":"VariableDeclaration","scope":23496,"src":"474:9:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23385,"name":"uint256","nodeType":"ElementaryTypeName","src":"474:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23388,"mutability":"mutable","name":"h","nodeType":"VariableDeclaration","scope":23496,"src":"494:9:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23387,"name":"uint256","nodeType":"ElementaryTypeName","src":"494:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23390,"mutability":"mutable","name":"d","nodeType":"VariableDeclaration","scope":23496,"src":"514:9:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23389,"name":"uint256","nodeType":"ElementaryTypeName","src":"514:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"463:67:127"},"returnParameters":{"id":23394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23393,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":23496,"src":"553:7:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23392,"name":"uint256","nodeType":"ElementaryTypeName","src":"553:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"552:9:127"},"scope":23551,"src":"447:482:127","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":23549,"nodeType":"Block","src":"1052:232:127","statements":[{"assignments":[23508,23510],"declarations":[{"constant":false,"id":23508,"mutability":"mutable","name":"l","nodeType":"VariableDeclaration","scope":23549,"src":"1064:9:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23507,"name":"uint256","nodeType":"ElementaryTypeName","src":"1064:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23510,"mutability":"mutable","name":"h","nodeType":"VariableDeclaration","scope":23549,"src":"1075:9:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23509,"name":"uint256","nodeType":"ElementaryTypeName","src":"1075:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23515,"initialValue":{"arguments":[{"id":23512,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23498,"src":"1096:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23513,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23500,"src":"1099:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23511,"name":"fullMul","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23384,"src":"1088:7:127","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":23514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1088:13:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1063:38:127"},{"assignments":[23517],"declarations":[{"constant":false,"id":23517,"mutability":"mutable","name":"mm","nodeType":"VariableDeclaration","scope":23549,"src":"1112:10:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23516,"name":"uint256","nodeType":"ElementaryTypeName","src":"1112:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23523,"initialValue":{"arguments":[{"id":23519,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23498,"src":"1132:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23520,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23500,"src":"1135:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23521,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23502,"src":"1138:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23518,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"1125:6:127","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":23522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1125:15:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1112:28:127"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23524,"name":"mm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23517,"src":"1155:2:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":23525,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23508,"src":"1160:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1155:6:127","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23531,"nodeType":"IfStatement","src":"1151:18:127","trueBody":{"expression":{"id":23529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23527,"name":"h","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23510,"src":"1163:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":23528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1168:1:127","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1163:6:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23530,"nodeType":"ExpressionStatement","src":"1163:6:127"}},{"expression":{"id":23534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23532,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23508,"src":"1180:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":23533,"name":"mm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23517,"src":"1185:2:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1180:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23535,"nodeType":"ExpressionStatement","src":"1180:7:127"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23537,"name":"h","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23510,"src":"1206:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":23538,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23502,"src":"1210:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1206:5:127","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57","id":23540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1213:28:127","typeDescriptions":{"typeIdentifier":"t_stringliteral_9573a614b6ab65c92932376c168e5635a05a20769ae8cb8b8a2d9575aad107da","typeString":"literal_string \"FullMath: FULLDIV_OVERFLOW\""},"value":"FullMath: FULLDIV_OVERFLOW"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9573a614b6ab65c92932376c168e5635a05a20769ae8cb8b8a2d9575aad107da","typeString":"literal_string \"FullMath: FULLDIV_OVERFLOW\""}],"id":23536,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1198:7:127","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":23541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1198:44:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23542,"nodeType":"ExpressionStatement","src":"1198:44:127"},{"expression":{"arguments":[{"id":23544,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23508,"src":"1268:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23545,"name":"h","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23510,"src":"1271:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23546,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23502,"src":"1274:1:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23543,"name":"fullDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23496,"src":"1260:7:127","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":23547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1260:16:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":23506,"id":23548,"nodeType":"Return","src":"1253:23:127"}]},"id":23550,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nodeType":"FunctionDefinition","parameters":{"id":23503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23498,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":23550,"src":"963:9:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23497,"name":"uint256","nodeType":"ElementaryTypeName","src":"963:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23500,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":23550,"src":"983:9:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23499,"name":"uint256","nodeType":"ElementaryTypeName","src":"983:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23502,"mutability":"mutable","name":"d","nodeType":"VariableDeclaration","scope":23550,"src":"1003:9:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23501,"name":"uint256","nodeType":"ElementaryTypeName","src":"1003:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"952:67:127"},"returnParameters":{"id":23506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23505,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":23550,"src":"1043:7:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23504,"name":"uint256","nodeType":"ElementaryTypeName","src":"1043:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1042:9:127"},"scope":23551,"src":"937:347:127","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":23552,"src":"205:1082:127"}],"src":"39:1250:127"},"id":127},"contracts/pangolin-lib/libraries/PairNamer.sol":{"ast":{"absolutePath":"contracts/pangolin-lib/libraries/PairNamer.sol","exportedSymbols":{"AddressStringUtil":[22706],"PairNamer":[23623],"SafeERC20Namer":[23938]},"id":23624,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":23553,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"48:24:128"},{"absolutePath":"contracts/pangolin-lib/libraries/SafeERC20Namer.sol","file":"./SafeERC20Namer.sol","id":23554,"nodeType":"ImportDirective","scope":23624,"sourceUnit":23939,"src":"76:30:128","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":23623,"linearizedBaseContracts":[23623],"name":"PairNamer","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":23557,"mutability":"constant","name":"TOKEN_SYMBOL_PREFIX","nodeType":"VariableDeclaration","scope":23623,"src":"205:52:128","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":23555,"name":"string","nodeType":"ElementaryTypeName","src":"205:6:128","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"504e473a","id":23556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"251:6:128","typeDescriptions":{"typeIdentifier":"t_stringliteral_58a2aaa45e41a97ed92a20d33dbb9c204d0b9d3f9a46b46e05ff398c09959137","typeString":"literal_string \"PNG:\""},"value":"PNG:"},"visibility":"private"},{"constant":true,"id":23560,"mutability":"constant","name":"TOKEN_SEPARATOR","nodeType":"VariableDeclaration","scope":23623,"src":"264:45:128","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":23558,"name":"string","nodeType":"ElementaryTypeName","src":"264:6:128","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3a","id":23559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"306:3:128","typeDescriptions":{"typeIdentifier":"t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c","typeString":"literal_string \":\""},"value":":"},"visibility":"private"},{"body":{"id":23591,"nodeType":"Block","src":"583:320:128","statements":[{"expression":{"arguments":[{"arguments":[{"id":23577,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23566,"src":"678:6:128","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"id":23580,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23562,"src":"732:6:128","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":23578,"name":"SafeERC20Namer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23938,"src":"707:14:128","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeERC20Namer_$23938_$","typeString":"type(library SafeERC20Namer)"}},"id":23579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenName","nodeType":"MemberAccess","referencedDeclaration":23937,"src":"707:24:128","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_string_memory_ptr_$","typeString":"function (address) view returns (string memory)"}},"id":23581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"707:32:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":23582,"name":"TOKEN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23560,"src":"762:15:128","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"id":23585,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23564,"src":"825:6:128","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":23583,"name":"SafeERC20Namer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23938,"src":"800:14:128","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeERC20Namer_$23938_$","typeString":"type(library SafeERC20Namer)"}},"id":23584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenName","nodeType":"MemberAccess","referencedDeclaration":23937,"src":"800:24:128","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_string_memory_ptr_$","typeString":"function (address) view returns (string memory)"}},"id":23586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"800:32:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":23587,"name":"suffix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23568,"src":"855:6:128","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"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":23575,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"639:3:128","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":23576,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"639:16:128","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":23588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"639:241:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":23574,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"614:6:128","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":23573,"name":"string","nodeType":"ElementaryTypeName","src":"614:6:128","typeDescriptions":{}}},"id":23589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"614:281:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":23572,"id":23590,"nodeType":"Return","src":"594:301:128"}]},"id":23592,"implemented":true,"kind":"function","modifiers":[],"name":"pairName","nodeType":"FunctionDefinition","parameters":{"id":23569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23562,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":23592,"src":"436:14:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23561,"name":"address","nodeType":"ElementaryTypeName","src":"436:7:128","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":23564,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":23592,"src":"461:14:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23563,"name":"address","nodeType":"ElementaryTypeName","src":"461:7:128","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":23566,"mutability":"mutable","name":"prefix","nodeType":"VariableDeclaration","scope":23592,"src":"486:20:128","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":23565,"name":"string","nodeType":"ElementaryTypeName","src":"486:6:128","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":23568,"mutability":"mutable","name":"suffix","nodeType":"VariableDeclaration","scope":23592,"src":"517:20:128","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":23567,"name":"string","nodeType":"ElementaryTypeName","src":"517:6:128","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"425:119:128"},"returnParameters":{"id":23572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23571,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":23592,"src":"568:13:128","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":23570,"name":"string","nodeType":"ElementaryTypeName","src":"568:6:128","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"567:15:128"},"scope":23623,"src":"408:495:128","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":23621,"nodeType":"Block","src":"1142:337:128","statements":[{"expression":{"arguments":[{"arguments":[{"id":23607,"name":"TOKEN_SYMBOL_PREFIX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23557,"src":"1237:19:128","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"id":23610,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23594,"src":"1306:6:128","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":23608,"name":"SafeERC20Namer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23938,"src":"1279:14:128","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeERC20Namer_$23938_$","typeString":"type(library SafeERC20Namer)"}},"id":23609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenSymbol","nodeType":"MemberAccess","referencedDeclaration":23907,"src":"1279:26:128","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_string_memory_ptr_$","typeString":"function (address) view returns (string memory)"}},"id":23611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1279:34:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":23612,"name":"TOKEN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23560,"src":"1336:15:128","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"id":23615,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23596,"src":"1401:6:128","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":23613,"name":"SafeERC20Namer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23938,"src":"1374:14:128","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeERC20Namer_$23938_$","typeString":"type(library SafeERC20Namer)"}},"id":23614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenSymbol","nodeType":"MemberAccess","referencedDeclaration":23907,"src":"1374:26:128","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_string_memory_ptr_$","typeString":"function (address) view returns (string memory)"}},"id":23616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1374:34:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":23617,"name":"suffix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23598,"src":"1431:6:128","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"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":23605,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1198:3:128","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":23606,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1198:16:128","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":23618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1198:258:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":23604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1173:6:128","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":23603,"name":"string","nodeType":"ElementaryTypeName","src":"1173:6:128","typeDescriptions":{}}},"id":23619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1173:298:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":23602,"id":23620,"nodeType":"Return","src":"1153:318:128"}]},"id":23622,"implemented":true,"kind":"function","modifiers":[],"name":"pairSymbol","nodeType":"FunctionDefinition","parameters":{"id":23599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23594,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":23622,"src":"1026:14:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23593,"name":"address","nodeType":"ElementaryTypeName","src":"1026:7:128","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":23596,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":23622,"src":"1051:14:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23595,"name":"address","nodeType":"ElementaryTypeName","src":"1051:7:128","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":23598,"mutability":"mutable","name":"suffix","nodeType":"VariableDeclaration","scope":23622,"src":"1076:20:128","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":23597,"name":"string","nodeType":"ElementaryTypeName","src":"1076:6:128","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1015:88:128"},"returnParameters":{"id":23602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23601,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":23622,"src":"1127:13:128","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":23600,"name":"string","nodeType":"ElementaryTypeName","src":"1127:6:128","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1126:15:128"},"scope":23623,"src":"996:483:128","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":23624,"src":"180:1302:128"}],"src":"48:1436:128"},"id":128},"contracts/pangolin-lib/libraries/SafeERC20Namer.sol":{"ast":{"absolutePath":"contracts/pangolin-lib/libraries/SafeERC20Namer.sol","exportedSymbols":{"AddressStringUtil":[22706],"SafeERC20Namer":[23938]},"id":23939,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":23625,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"48:24:129"},{"absolutePath":"contracts/pangolin-lib/libraries/AddressStringUtil.sol","file":"./AddressStringUtil.sol","id":23626,"nodeType":"ImportDirective","scope":23939,"sourceUnit":22707,"src":"76:33:129","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":23938,"linearizedBaseContracts":[23938],"name":"SafeERC20Namer","nodeType":"ContractDefinition","nodes":[{"body":{"id":23708,"nodeType":"Block","src":"414:526:129","statements":[{"assignments":[23634],"declarations":[{"constant":false,"id":23634,"mutability":"mutable","name":"bytesString","nodeType":"VariableDeclaration","scope":23708,"src":"425:24:129","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23633,"name":"bytes","nodeType":"ElementaryTypeName","src":"425:5:129","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":23639,"initialValue":{"arguments":[{"hexValue":"3332","id":23637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"462:2:129","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":23636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"452:9:129","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":23635,"name":"bytes","nodeType":"ElementaryTypeName","src":"456:5:129","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":23638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"452:13:129","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"425:40:129"},{"assignments":[23641],"declarations":[{"constant":false,"id":23641,"mutability":"mutable","name":"charCount","nodeType":"VariableDeclaration","scope":23708,"src":"476:17:129","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23640,"name":"uint256","nodeType":"ElementaryTypeName","src":"476:7:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23643,"initialValue":{"hexValue":"30","id":23642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"496:1:129","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"476:21:129"},{"body":{"id":23674,"nodeType":"Block","src":"541:168:129","statements":[{"assignments":[23655],"declarations":[{"constant":false,"id":23655,"mutability":"mutable","name":"char","nodeType":"VariableDeclaration","scope":23674,"src":"556:11:129","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":23654,"name":"bytes1","nodeType":"ElementaryTypeName","src":"556:6:129","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"id":23659,"initialValue":{"baseExpression":{"id":23656,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23628,"src":"570:1:129","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":23658,"indexExpression":{"id":23657,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23645,"src":"572:1:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"570:4:129","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"VariableDeclarationStatement","src":"556:18:129"},{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":23662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23660,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23655,"src":"593:4:129","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":23661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"601:1:129","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"593:9:129","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23673,"nodeType":"IfStatement","src":"589:109:129","trueBody":{"id":23672,"nodeType":"Block","src":"604:94:129","statements":[{"expression":{"id":23667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":23663,"name":"bytesString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23634,"src":"623:11:129","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23665,"indexExpression":{"id":23664,"name":"charCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23641,"src":"635:9:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"623:22:129","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":23666,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23655,"src":"648:4:129","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"623:29:129","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":23668,"nodeType":"ExpressionStatement","src":"623:29:129"},{"expression":{"id":23670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"671:11:129","subExpression":{"id":23669,"name":"charCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23641,"src":"671:9:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23671,"nodeType":"ExpressionStatement","src":"671:11:129"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23648,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23645,"src":"528:1:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3332","id":23649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"532:2:129","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"528:6:129","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23675,"initializationExpression":{"assignments":[23645],"declarations":[{"constant":false,"id":23645,"mutability":"mutable","name":"j","nodeType":"VariableDeclaration","scope":23675,"src":"513:9:129","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23644,"name":"uint256","nodeType":"ElementaryTypeName","src":"513:7:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23647,"initialValue":{"hexValue":"30","id":23646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"525:1:129","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"513:13:129"},"loopExpression":{"expression":{"id":23652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"536:3:129","subExpression":{"id":23651,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23645,"src":"536:1:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23653,"nodeType":"ExpressionStatement","src":"536:3:129"},"nodeType":"ForStatement","src":"508:201:129"},{"assignments":[23677],"declarations":[{"constant":false,"id":23677,"mutability":"mutable","name":"bytesStringTrimmed","nodeType":"VariableDeclaration","scope":23708,"src":"719:31:129","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23676,"name":"bytes","nodeType":"ElementaryTypeName","src":"719:5:129","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":23682,"initialValue":{"arguments":[{"id":23680,"name":"charCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23641,"src":"763:9:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23679,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"753:9:129","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":23678,"name":"bytes","nodeType":"ElementaryTypeName","src":"757:5:129","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":23681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"753:20:129","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"719:54:129"},{"body":{"id":23701,"nodeType":"Block","src":"824:65:129","statements":[{"expression":{"id":23699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":23693,"name":"bytesStringTrimmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23677,"src":"839:18:129","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23695,"indexExpression":{"id":23694,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23684,"src":"858:1:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"839:21:129","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":23696,"name":"bytesString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23634,"src":"863:11:129","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23698,"indexExpression":{"id":23697,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23684,"src":"875:1:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"863:14:129","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"839:38:129","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":23700,"nodeType":"ExpressionStatement","src":"839:38:129"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23687,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23684,"src":"804:1:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":23688,"name":"charCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23641,"src":"808:9:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"804:13:129","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23702,"initializationExpression":{"assignments":[23684],"declarations":[{"constant":false,"id":23684,"mutability":"mutable","name":"j","nodeType":"VariableDeclaration","scope":23702,"src":"789:9:129","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23683,"name":"uint256","nodeType":"ElementaryTypeName","src":"789:7:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23686,"initialValue":{"hexValue":"30","id":23685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"801:1:129","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"789:13:129"},"loopExpression":{"expression":{"id":23691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"819:3:129","subExpression":{"id":23690,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23684,"src":"819:1:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23692,"nodeType":"ExpressionStatement","src":"819:3:129"},"nodeType":"ForStatement","src":"784:105:129"},{"expression":{"arguments":[{"id":23705,"name":"bytesStringTrimmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23677,"src":"913:18:129","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":23704,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"906:6:129","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":23703,"name":"string","nodeType":"ElementaryTypeName","src":"906:6:129","typeDescriptions":{}}},"id":23706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"906:26:129","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":23632,"id":23707,"nodeType":"Return","src":"899:33:129"}]},"id":23709,"implemented":true,"kind":"function","modifiers":[],"name":"bytes32ToString","nodeType":"FunctionDefinition","parameters":{"id":23629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23628,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":23709,"src":"366:9:129","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":23627,"name":"bytes32","nodeType":"ElementaryTypeName","src":"366:7:129","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"365:11:129"},"returnParameters":{"id":23632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23631,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":23709,"src":"399:13:129","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":23630,"name":"string","nodeType":"ElementaryTypeName","src":"399:6:129","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"398:15:129"},"scope":23938,"src":"341:599:129","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":23779,"nodeType":"Block","src":"1068:442:129","statements":[{"assignments":[23717],"declarations":[{"constant":false,"id":23717,"mutability":"mutable","name":"charCount","nodeType":"VariableDeclaration","scope":23779,"src":"1079:17:129","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23716,"name":"uint256","nodeType":"ElementaryTypeName","src":"1079:7:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23719,"initialValue":{"hexValue":"30","id":23718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1099:1:129","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1079:21:129"},{"body":{"id":23743,"nodeType":"Block","src":"1199:81:129","statements":[{"expression":{"id":23732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23730,"name":"charCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23717,"src":"1214:9:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"38","id":23731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1228:1:129","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1214:15:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23733,"nodeType":"ExpressionStatement","src":"1214:15:129"},{"expression":{"id":23741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23734,"name":"charCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23717,"src":"1244:9:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"baseExpression":{"id":23737,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23711,"src":"1263:1:129","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23739,"indexExpression":{"id":23738,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23721,"src":"1265:1:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1263:4:129","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":23736,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1257:5:129","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":23735,"name":"uint8","nodeType":"ElementaryTypeName","src":"1257:5:129","typeDescriptions":{}}},"id":23740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1257:11:129","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1244:24:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23742,"nodeType":"ExpressionStatement","src":"1244:24:129"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23724,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23721,"src":"1186:1:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3634","id":23725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1190:2:129","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"1186:6:129","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23744,"initializationExpression":{"assignments":[23721],"declarations":[{"constant":false,"id":23721,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":23744,"src":"1170:9:129","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23720,"name":"uint256","nodeType":"ElementaryTypeName","src":"1170:7:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23723,"initialValue":{"hexValue":"3332","id":23722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1182:2:129","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"nodeType":"VariableDeclarationStatement","src":"1170:14:129"},"loopExpression":{"expression":{"id":23728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1194:3:129","subExpression":{"id":23727,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23721,"src":"1194:1:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23729,"nodeType":"ExpressionStatement","src":"1194:3:129"},"nodeType":"ForStatement","src":"1165:115:129"},{"assignments":[23746],"declarations":[{"constant":false,"id":23746,"mutability":"mutable","name":"bytesStringTrimmed","nodeType":"VariableDeclaration","scope":23779,"src":"1292:31:129","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23745,"name":"bytes","nodeType":"ElementaryTypeName","src":"1292:5:129","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":23751,"initialValue":{"arguments":[{"id":23749,"name":"charCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23717,"src":"1336:9:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1326:9:129","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":23747,"name":"bytes","nodeType":"ElementaryTypeName","src":"1330:5:129","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":23750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1326:20:129","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1292:54:129"},{"body":{"id":23772,"nodeType":"Block","src":"1397:60:129","statements":[{"expression":{"id":23770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":23762,"name":"bytesStringTrimmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23746,"src":"1412:18:129","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23764,"indexExpression":{"id":23763,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23753,"src":"1431:1:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1412:21:129","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":23765,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23711,"src":"1436:1:129","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23769,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23766,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23753,"src":"1438:1:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3634","id":23767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1442:2:129","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"1438:6:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1436:9:129","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"1412:33:129","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":23771,"nodeType":"ExpressionStatement","src":"1412:33:129"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23756,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23753,"src":"1377:1:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":23757,"name":"charCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23717,"src":"1381:9:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1377:13:129","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23773,"initializationExpression":{"assignments":[23753],"declarations":[{"constant":false,"id":23753,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":23773,"src":"1362:9:129","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23752,"name":"uint256","nodeType":"ElementaryTypeName","src":"1362:7:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23755,"initialValue":{"hexValue":"30","id":23754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1374:1:129","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1362:13:129"},"loopExpression":{"expression":{"id":23760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1392:3:129","subExpression":{"id":23759,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23753,"src":"1392:1:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23761,"nodeType":"ExpressionStatement","src":"1392:3:129"},"nodeType":"ForStatement","src":"1357:100:129"},{"expression":{"arguments":[{"id":23776,"name":"bytesStringTrimmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23746,"src":"1483:18:129","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":23775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1476:6:129","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":23774,"name":"string","nodeType":"ElementaryTypeName","src":"1476:6:129","typeDescriptions":{}}},"id":23777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1476:26:129","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":23715,"id":23778,"nodeType":"Return","src":"1469:33:129"}]},"id":23780,"implemented":true,"kind":"function","modifiers":[],"name":"parseStringData","nodeType":"FunctionDefinition","parameters":{"id":23712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23711,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":23780,"src":"1015:14:129","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23710,"name":"bytes","nodeType":"ElementaryTypeName","src":"1015:5:129","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1014:16:129"},"returnParameters":{"id":23715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23714,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":23780,"src":"1053:13:129","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":23713,"name":"string","nodeType":"ElementaryTypeName","src":"1053:6:129","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1052:15:129"},"scope":23938,"src":"990:520:129","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":23793,"nodeType":"Block","src":"1738:68:129","statements":[{"expression":{"arguments":[{"id":23789,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23782,"src":"1788:5:129","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"3430","id":23790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1795:2:129","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":23787,"name":"AddressStringUtil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22706,"src":"1756:17:129","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressStringUtil_$22706_$","typeString":"type(library AddressStringUtil)"}},"id":23788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toAsciiString","nodeType":"MemberAccess","referencedDeclaration":22677,"src":"1756:31:129","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (address,uint256) pure returns (string memory)"}},"id":23791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1756:42:129","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":23786,"id":23792,"nodeType":"Return","src":"1749:49:129"}]},"id":23794,"implemented":true,"kind":"function","modifiers":[],"name":"addressToName","nodeType":"FunctionDefinition","parameters":{"id":23783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23782,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":23794,"src":"1686:13:129","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23781,"name":"address","nodeType":"ElementaryTypeName","src":"1686:7:129","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1685:15:129"},"returnParameters":{"id":23786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23785,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":23794,"src":"1723:13:129","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":23784,"name":"string","nodeType":"ElementaryTypeName","src":"1723:6:129","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1722:15:129"},"scope":23938,"src":"1663:143:129","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":23807,"nodeType":"Block","src":"2041:67:129","statements":[{"expression":{"arguments":[{"id":23803,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23796,"src":"2091:5:129","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"36","id":23804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2098:1:129","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":23801,"name":"AddressStringUtil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22706,"src":"2059:17:129","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressStringUtil_$22706_$","typeString":"type(library AddressStringUtil)"}},"id":23802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toAsciiString","nodeType":"MemberAccess","referencedDeclaration":22677,"src":"2059:31:129","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (address,uint256) pure returns (string memory)"}},"id":23805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2059:41:129","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":23800,"id":23806,"nodeType":"Return","src":"2052:48:129"}]},"id":23808,"implemented":true,"kind":"function","modifiers":[],"name":"addressToSymbol","nodeType":"FunctionDefinition","parameters":{"id":23797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23796,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":23808,"src":"1989:13:129","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23795,"name":"address","nodeType":"ElementaryTypeName","src":"1989:7:129","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1988:15:129"},"returnParameters":{"id":23800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23799,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":23808,"src":"2026:13:129","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":23798,"name":"string","nodeType":"ElementaryTypeName","src":"2026:6:129","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2025:15:129"},"scope":23938,"src":"1964:144:129","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":23876,"nodeType":"Block","src":"2339:565:129","statements":[{"assignments":[23818,23820],"declarations":[{"constant":false,"id":23818,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":23876,"src":"2351:12:129","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":23817,"name":"bool","nodeType":"ElementaryTypeName","src":"2351:4:129","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":23820,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":23876,"src":"2365:17:129","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23819,"name":"bytes","nodeType":"ElementaryTypeName","src":"2365:5:129","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":23828,"initialValue":{"arguments":[{"arguments":[{"id":23825,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23812,"src":"2426:8:129","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":23823,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2403:3:129","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":23824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2403:22:129","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":23826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2403:32:129","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":23821,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23810,"src":"2386:5:129","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":23822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"staticcall","nodeType":"MemberAccess","src":"2386:16:129","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":23827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2386:50:129","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2350:86:129"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":23835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2526:8:129","subExpression":{"id":23829,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23818,"src":"2527:7:129","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23831,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23820,"src":"2538:4:129","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2538:11:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":23833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2553:1:129","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2538:16:129","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2526:28:129","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23839,"nodeType":"IfStatement","src":"2522:70:129","trueBody":{"id":23838,"nodeType":"Block","src":"2556:36:129","statements":[{"expression":{"hexValue":"","id":23836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2578:2:129","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":23816,"id":23837,"nodeType":"Return","src":"2571:9:129"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23840,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23820,"src":"2652:4:129","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2652:11:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3332","id":23842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2667:2:129","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"2652:17:129","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23859,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23820,"src":"2799:4:129","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2799:11:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3634","id":23861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2813:2:129","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"2799:16:129","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23872,"nodeType":"IfStatement","src":"2795:82:129","trueBody":{"id":23871,"nodeType":"Block","src":"2817:60:129","statements":[{"expression":{"arguments":[{"id":23865,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23820,"src":"2850:4:129","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":23867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2857:6:129","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":23866,"name":"string","nodeType":"ElementaryTypeName","src":"2857:6:129","typeDescriptions":{}}}],"id":23868,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2856:8:129","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":23863,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2839:3:129","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":23864,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2839:10:129","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":23869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2839:26:129","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":23816,"id":23870,"nodeType":"Return","src":"2832:33:129"}]}},"id":23873,"nodeType":"IfStatement","src":"2648:229:129","trueBody":{"id":23858,"nodeType":"Block","src":"2671:118:129","statements":[{"assignments":[23845],"declarations":[{"constant":false,"id":23845,"mutability":"mutable","name":"decoded","nodeType":"VariableDeclaration","scope":23858,"src":"2686:15:129","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":23844,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2686:7:129","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":23853,"initialValue":{"arguments":[{"id":23848,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23820,"src":"2715:4:129","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":23850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2722:7:129","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":23849,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2722:7:129","typeDescriptions":{}}}],"id":23851,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2721:9:129","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":23846,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2704:3:129","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":23847,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2704:10:129","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":23852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2704:27:129","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2686:45:129"},{"expression":{"arguments":[{"id":23855,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23845,"src":"2769:7:129","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":23854,"name":"bytes32ToString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23709,"src":"2753:15:129","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_string_memory_ptr_$","typeString":"function (bytes32) pure returns (string memory)"}},"id":23856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2753:24:129","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":23816,"id":23857,"nodeType":"Return","src":"2746:31:129"}]}},{"expression":{"hexValue":"","id":23874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2894:2:129","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":23816,"id":23875,"nodeType":"Return","src":"2887:9:129"}]},"id":23877,"implemented":true,"kind":"function","modifiers":[],"name":"callAndParseStringReturn","nodeType":"FunctionDefinition","parameters":{"id":23813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23810,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":23877,"src":"2270:13:129","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23809,"name":"address","nodeType":"ElementaryTypeName","src":"2270:7:129","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":23812,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":23877,"src":"2285:15:129","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":23811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2285:6:129","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2269:32:129"},"returnParameters":{"id":23816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23815,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":23877,"src":"2324:13:129","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":23814,"name":"string","nodeType":"ElementaryTypeName","src":"2324:6:129","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2323:15:129"},"scope":23938,"src":"2236:668:129","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":23906,"nodeType":"Block","src":"3107:316:129","statements":[{"assignments":[23885],"declarations":[{"constant":false,"id":23885,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":23906,"src":"3173:20:129","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":23884,"name":"string","nodeType":"ElementaryTypeName","src":"3173:6:129","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":23890,"initialValue":{"arguments":[{"id":23887,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23879,"src":"3221:5:129","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30783935643839623431","id":23888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3228:10:129","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":23886,"name":"callAndParseStringReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23877,"src":"3196:24:129","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_string_memory_ptr_$","typeString":"function (address,bytes4) view returns (string memory)"}},"id":23889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3196:43:129","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"3173:66:129"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":23893,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23885,"src":"3260:6:129","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":23892,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3254:5:129","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":23891,"name":"bytes","nodeType":"ElementaryTypeName","src":"3254:5:129","typeDescriptions":{}}},"id":23894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3254:13:129","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3254:20:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":23896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3278:1:129","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3254:25:129","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23903,"nodeType":"IfStatement","src":"3250:142:129","trueBody":{"id":23902,"nodeType":"Block","src":"3281:111:129","statements":[{"expression":{"arguments":[{"id":23899,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23879,"src":"3374:5:129","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23898,"name":"addressToSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23808,"src":"3358:15:129","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$","typeString":"function (address) pure returns (string memory)"}},"id":23900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3358:22:129","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":23883,"id":23901,"nodeType":"Return","src":"3351:29:129"}]}},{"expression":{"id":23904,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23885,"src":"3409:6:129","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":23883,"id":23905,"nodeType":"Return","src":"3402:13:129"}]},"id":23907,"implemented":true,"kind":"function","modifiers":[],"name":"tokenSymbol","nodeType":"FunctionDefinition","parameters":{"id":23880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23879,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":23907,"src":"3054:13:129","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23878,"name":"address","nodeType":"ElementaryTypeName","src":"3054:7:129","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3053:15:129"},"returnParameters":{"id":23883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23882,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":23907,"src":"3092:13:129","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":23881,"name":"string","nodeType":"ElementaryTypeName","src":"3092:6:129","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3091:15:129"},"scope":23938,"src":"3033:390:129","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":23936,"nodeType":"Block","src":"3618:299:129","statements":[{"assignments":[23915],"declarations":[{"constant":false,"id":23915,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":23936,"src":"3682:18:129","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":23914,"name":"string","nodeType":"ElementaryTypeName","src":"3682:6:129","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":23920,"initialValue":{"arguments":[{"id":23917,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23909,"src":"3728:5:129","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30783036666464653033","id":23918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3735:10:129","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":23916,"name":"callAndParseStringReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23877,"src":"3703:24:129","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_string_memory_ptr_$","typeString":"function (address,bytes4) view returns (string memory)"}},"id":23919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3703:43:129","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"3682:64:129"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":23923,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23915,"src":"3767:4:129","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":23922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3761:5:129","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":23921,"name":"bytes","nodeType":"ElementaryTypeName","src":"3761:5:129","typeDescriptions":{}}},"id":23924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3761:11:129","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3761:18:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":23926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3783:1:129","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3761:23:129","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23933,"nodeType":"IfStatement","src":"3757:131:129","trueBody":{"id":23932,"nodeType":"Block","src":"3786:102:129","statements":[{"expression":{"arguments":[{"id":23929,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23909,"src":"3870:5:129","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23928,"name":"addressToName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23794,"src":"3856:13:129","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$","typeString":"function (address) pure returns (string memory)"}},"id":23930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3856:20:129","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":23913,"id":23931,"nodeType":"Return","src":"3849:27:129"}]}},{"expression":{"id":23934,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23915,"src":"3905:4:129","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":23913,"id":23935,"nodeType":"Return","src":"3898:11:129"}]},"id":23937,"implemented":true,"kind":"function","modifiers":[],"name":"tokenName","nodeType":"FunctionDefinition","parameters":{"id":23910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23909,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":23937,"src":"3565:13:129","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23908,"name":"address","nodeType":"ElementaryTypeName","src":"3565:7:129","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3564:15:129"},"returnParameters":{"id":23913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23912,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":23937,"src":"3603:13:129","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":23911,"name":"string","nodeType":"ElementaryTypeName","src":"3603:6:129","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3602:15:129"},"scope":23938,"src":"3546:371:129","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":23939,"src":"311:3609:129"}],"src":"48:3874:129"},"id":129},"contracts/pangolin-lib/libraries/TransferHelper.sol":{"ast":{"absolutePath":"contracts/pangolin-lib/libraries/TransferHelper.sol","exportedSymbols":{"TransferHelper":[24098]},"id":24099,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":23940,"literals":["solidity",">=","0.6",".0"],"nodeType":"PragmaDirective","src":"48:24:130"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":24098,"linearizedBaseContracts":[24098],"name":"TransferHelper","nodeType":"ContractDefinition","nodes":[{"body":{"id":23982,"nodeType":"Block","src":"325:289:130","statements":[{"assignments":[23950,23952],"declarations":[{"constant":false,"id":23950,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":23982,"src":"403:12:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":23949,"name":"bool","nodeType":"ElementaryTypeName","src":"403:4:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":23952,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":23982,"src":"417:17:130","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23951,"name":"bytes","nodeType":"ElementaryTypeName","src":"417:5:130","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":23962,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30783039356561376233","id":23957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"472:10:130","typeDescriptions":{"typeIdentifier":"t_rational_157198259_by_1","typeString":"int_const 157198259"},"value":"0x095ea7b3"},{"id":23958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23944,"src":"484:2:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":23959,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23946,"src":"488:5:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_157198259_by_1","typeString":"int_const 157198259"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":23955,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"449:3:130","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":23956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"449:22:130","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":23960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"449:45:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":23953,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23942,"src":"438:5:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":23954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"438:10:130","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":23961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"438:57:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"402:93:130"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":23978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23964,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23950,"src":"514:7:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":23976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23965,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23952,"src":"526:4:130","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"526:11:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":23967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"541:1:130","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"526:16:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":23971,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23952,"src":"557:4:130","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":23973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"564:4:130","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":23972,"name":"bool","nodeType":"ElementaryTypeName","src":"564:4:130","typeDescriptions":{}}}],"id":23974,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"563:6:130","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":23969,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"546:3:130","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":23970,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"546:10:130","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":23975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"546:24:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"526:44:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":23977,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"525:46:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"514:57:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472616e7366657248656c7065723a20415050524f56455f4641494c4544","id":23979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"573:32:130","typeDescriptions":{"typeIdentifier":"t_stringliteral_3e27be550bb5367a6d8a8b2dd8b5c52ee0710d2d5b26de50062207957ab5bd00","typeString":"literal_string \"TransferHelper: APPROVE_FAILED\""},"value":"TransferHelper: APPROVE_FAILED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3e27be550bb5367a6d8a8b2dd8b5c52ee0710d2d5b26de50062207957ab5bd00","typeString":"literal_string \"TransferHelper: APPROVE_FAILED\""}],"id":23963,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"506:7:130","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":23980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"506:100:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23981,"nodeType":"ExpressionStatement","src":"506:100:130"}]},"id":23983,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nodeType":"FunctionDefinition","parameters":{"id":23947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23942,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":23983,"src":"250:13:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23941,"name":"address","nodeType":"ElementaryTypeName","src":"250:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":23944,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":23983,"src":"274:10:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23943,"name":"address","nodeType":"ElementaryTypeName","src":"274:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":23946,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":23983,"src":"295:13:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23945,"name":"uint256","nodeType":"ElementaryTypeName","src":"295:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"239:76:130"},"returnParameters":{"id":23948,"nodeType":"ParameterList","parameters":[],"src":"325:0:130"},"scope":24098,"src":"219:395:130","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":24025,"nodeType":"Block","src":"729:291:130","statements":[{"assignments":[23993,23995],"declarations":[{"constant":false,"id":23993,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":24025,"src":"808:12:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":23992,"name":"bool","nodeType":"ElementaryTypeName","src":"808:4:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":23995,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":24025,"src":"822:17:130","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23994,"name":"bytes","nodeType":"ElementaryTypeName","src":"822:5:130","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":24005,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30786139303539636262","id":24000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"877:10:130","typeDescriptions":{"typeIdentifier":"t_rational_2835717307_by_1","typeString":"int_const 2835717307"},"value":"0xa9059cbb"},{"id":24001,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23987,"src":"889:2:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24002,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23989,"src":"893:5:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2835717307_by_1","typeString":"int_const 2835717307"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":23998,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"854:3:130","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":23999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"854:22:130","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":24003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"854:45:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":23996,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23985,"src":"843:5:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":23997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"843:10:130","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":24004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"843:57:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"807:93:130"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":24021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24007,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23993,"src":"919:7:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":24019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":24008,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23995,"src":"931:4:130","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":24009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"931:11:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":24010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"946:1:130","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"931:16:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":24014,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23995,"src":"962:4:130","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":24016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"969:4:130","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":24015,"name":"bool","nodeType":"ElementaryTypeName","src":"969:4:130","typeDescriptions":{}}}],"id":24017,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"968:6:130","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":24012,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"951:3:130","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":24013,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"951:10:130","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":24018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"951:24:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"931:44:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":24020,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"930:46:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"919:57:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472616e7366657248656c7065723a205452414e534645525f4641494c4544","id":24022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"978:33:130","typeDescriptions":{"typeIdentifier":"t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426","typeString":"literal_string \"TransferHelper: TRANSFER_FAILED\""},"value":"TransferHelper: TRANSFER_FAILED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426","typeString":"literal_string \"TransferHelper: TRANSFER_FAILED\""}],"id":24006,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"911:7:130","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":24023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"911:101:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24024,"nodeType":"ExpressionStatement","src":"911:101:130"}]},"id":24026,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nodeType":"FunctionDefinition","parameters":{"id":23990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23985,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":24026,"src":"654:13:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23984,"name":"address","nodeType":"ElementaryTypeName","src":"654:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":23987,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":24026,"src":"678:10:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23986,"name":"address","nodeType":"ElementaryTypeName","src":"678:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":23989,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":24026,"src":"699:13:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23988,"name":"uint256","nodeType":"ElementaryTypeName","src":"699:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"643:76:130"},"returnParameters":{"id":23991,"nodeType":"ParameterList","parameters":[],"src":"729:0:130"},"scope":24098,"src":"622:398:130","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":24071,"nodeType":"Block","src":"1162:314:130","statements":[{"assignments":[24038,24040],"declarations":[{"constant":false,"id":24038,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":24071,"src":"1253:12:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24037,"name":"bool","nodeType":"ElementaryTypeName","src":"1253:4:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":24040,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":24071,"src":"1267:17:130","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":24039,"name":"bytes","nodeType":"ElementaryTypeName","src":"1267:5:130","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":24051,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30783233623837326464","id":24045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1322:10:130","typeDescriptions":{"typeIdentifier":"t_rational_599290589_by_1","typeString":"int_const 599290589"},"value":"0x23b872dd"},{"id":24046,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24030,"src":"1334:4:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24047,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24032,"src":"1340:2:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24048,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24034,"src":"1344:5:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_599290589_by_1","typeString":"int_const 599290589"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":24043,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1299:3:130","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":24044,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1299:22:130","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":24049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1299:51:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":24041,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24028,"src":"1288:5:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":24042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"1288:10:130","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":24050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1288:63:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1252:99:130"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":24067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24053,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24038,"src":"1370:7:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":24065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":24054,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24040,"src":"1382:4:130","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":24055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1382:11:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":24056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1397:1:130","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1382:16:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":24060,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24040,"src":"1413:4:130","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":24062,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1420:4:130","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":24061,"name":"bool","nodeType":"ElementaryTypeName","src":"1420:4:130","typeDescriptions":{}}}],"id":24063,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1419:6:130","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":24058,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1402:3:130","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":24059,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1402:10:130","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":24064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1402:24:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1382:44:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":24066,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1381:46:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1370:57:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544","id":24068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1429:38:130","typeDescriptions":{"typeIdentifier":"t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18","typeString":"literal_string \"TransferHelper: TRANSFER_FROM_FAILED\""},"value":"TransferHelper: TRANSFER_FROM_FAILED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18","typeString":"literal_string \"TransferHelper: TRANSFER_FROM_FAILED\""}],"id":24052,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1362:7:130","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":24069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1362:106:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24070,"nodeType":"ExpressionStatement","src":"1362:106:130"}]},"id":24072,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":24035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24028,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":24072,"src":"1064:13:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24027,"name":"address","nodeType":"ElementaryTypeName","src":"1064:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24030,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":24072,"src":"1088:12:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24029,"name":"address","nodeType":"ElementaryTypeName","src":"1088:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24032,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":24072,"src":"1111:10:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24031,"name":"address","nodeType":"ElementaryTypeName","src":"1111:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24034,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":24072,"src":"1132:13:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24033,"name":"uint256","nodeType":"ElementaryTypeName","src":"1132:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1053:99:130"},"returnParameters":{"id":24036,"nodeType":"ParameterList","parameters":[],"src":"1162:0:130"},"scope":24098,"src":"1028:448:130","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":24096,"nodeType":"Block","src":"1546:140:130","statements":[{"assignments":[24080,null],"declarations":[{"constant":false,"id":24080,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":24096,"src":"1558:12:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24079,"name":"bool","nodeType":"ElementaryTypeName","src":"1558:4:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":24090,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":24087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1608:1:130","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":24086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1598:9:130","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":24085,"name":"bytes","nodeType":"ElementaryTypeName","src":"1602:5:130","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":24088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1598:12:130","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":24081,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24074,"src":"1576:2:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":24082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"1576:7:130","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":24084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":24083,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24076,"src":"1591:5:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1576:21:130","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":24089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1576:35:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1557:54:130"},{"expression":{"arguments":[{"id":24092,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24080,"src":"1630:7:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472616e7366657248656c7065723a20415641585f5452414e534645525f4641494c4544","id":24093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1639:38:130","typeDescriptions":{"typeIdentifier":"t_stringliteral_6eeb3ea74a2f88de728640dd6a452276f122934c6fe6ff44e2119ba609848c2a","typeString":"literal_string \"TransferHelper: AVAX_TRANSFER_FAILED\""},"value":"TransferHelper: AVAX_TRANSFER_FAILED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6eeb3ea74a2f88de728640dd6a452276f122934c6fe6ff44e2119ba609848c2a","typeString":"literal_string \"TransferHelper: AVAX_TRANSFER_FAILED\""}],"id":24091,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1622:7:130","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":24094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1622:56:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24095,"nodeType":"ExpressionStatement","src":"1622:56:130"}]},"id":24097,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferAVAX","nodeType":"FunctionDefinition","parameters":{"id":24077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24074,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":24097,"src":"1510:10:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24073,"name":"address","nodeType":"ElementaryTypeName","src":"1510:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24076,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":24097,"src":"1522:13:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24075,"name":"uint256","nodeType":"ElementaryTypeName","src":"1522:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1509:27:130"},"returnParameters":{"id":24078,"nodeType":"ParameterList","parameters":[],"src":"1546:0:130"},"scope":24098,"src":"1484:202:130","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":24099,"src":"189:1500:130"}],"src":"48:1643:130"},"id":130},"contracts/pangolin-lib/test/AddressStringUtilTest.sol":{"ast":{"absolutePath":"contracts/pangolin-lib/test/AddressStringUtilTest.sol","exportedSymbols":{"AddressStringUtil":[22706],"AddressStringUtilTest":[24118]},"id":24119,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":24100,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"48:24:131"},{"absolutePath":"contracts/pangolin-lib/libraries/AddressStringUtil.sol","file":"../libraries/AddressStringUtil.sol","id":24101,"nodeType":"ImportDirective","scope":24119,"sourceUnit":22707,"src":"76:44:131","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":24118,"linearizedBaseContracts":[24118],"name":"AddressStringUtilTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":24116,"nodeType":"Block","src":"250:68:131","statements":[{"expression":{"arguments":[{"id":24112,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24103,"src":"300:4:131","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24113,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24105,"src":"306:3:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":24110,"name":"AddressStringUtil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22706,"src":"268:17:131","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressStringUtil_$22706_$","typeString":"type(library AddressStringUtil)"}},"id":24111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toAsciiString","nodeType":"MemberAccess","referencedDeclaration":22677,"src":"268:31:131","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (address,uint256) pure returns (string memory)"}},"id":24114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"268:42:131","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":24109,"id":24115,"nodeType":"Return","src":"261:49:131"}]},"functionSelector":"5768786e","id":24117,"implemented":true,"kind":"function","modifiers":[],"name":"toAsciiString","nodeType":"FunctionDefinition","parameters":{"id":24106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24103,"mutability":"mutable","name":"addr","nodeType":"VariableDeclaration","scope":24117,"src":"185:12:131","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24102,"name":"address","nodeType":"ElementaryTypeName","src":"185:7:131","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24105,"mutability":"mutable","name":"len","nodeType":"VariableDeclaration","scope":24117,"src":"199:11:131","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24104,"name":"uint256","nodeType":"ElementaryTypeName","src":"199:7:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"184:27:131"},"returnParameters":{"id":24109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24108,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24117,"src":"235:13:131","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":24107,"name":"string","nodeType":"ElementaryTypeName","src":"235:6:131","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"234:15:131"},"scope":24118,"src":"162:156:131","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":24119,"src":"124:197:131"}],"src":"48:275:131"},"id":131},"contracts/pangolin-lib/test/FixedPointTest.sol":{"ast":{"absolutePath":"contracts/pangolin-lib/test/FixedPointTest.sol","exportedSymbols":{"Babylonian":[22763],"FixedPoint":[23338],"FixedPointTest":[24308],"FullMath":[23551]},"id":24309,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":24120,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"48:24:132"},{"id":24121,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"74:33:132"},{"absolutePath":"contracts/pangolin-lib/libraries/FixedPoint.sol","file":"../libraries/FixedPoint.sol","id":24122,"nodeType":"ImportDirective","scope":24309,"sourceUnit":23339,"src":"111:37:132","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":24308,"linearizedBaseContracts":[24308],"name":"FixedPointTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":24134,"nodeType":"Block","src":"262:46:132","statements":[{"expression":{"arguments":[{"id":24131,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24124,"src":"298:1:132","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"expression":{"id":24129,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23338,"src":"280:10:132","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$23338_$","typeString":"type(library FixedPoint)"}},"id":24130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":22802,"src":"280:17:132","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint112_$returns$_t_struct$_uq112x112_$22770_memory_ptr_$","typeString":"function (uint112) pure returns (struct FixedPoint.uq112x112 memory)"}},"id":24132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"280:20:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":24128,"id":24133,"nodeType":"Return","src":"273:27:132"}]},"functionSelector":"ca2d0299","id":24135,"implemented":true,"kind":"function","modifiers":[],"name":"encode","nodeType":"FunctionDefinition","parameters":{"id":24125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24124,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":24135,"src":"199:9:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":24123,"name":"uint112","nodeType":"ElementaryTypeName","src":"199:7:132","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"198:11:132"},"returnParameters":{"id":24128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24127,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24135,"src":"233:27:132","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":24126,"name":"FixedPoint.uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"233:20:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"232:29:132"},"scope":24308,"src":"183:125:132","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":24147,"nodeType":"Block","src":"398:49:132","statements":[{"expression":{"arguments":[{"id":24144,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24137,"src":"437:1:132","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint144","typeString":"uint144"}],"expression":{"id":24142,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23338,"src":"416:10:132","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$23338_$","typeString":"type(library FixedPoint)"}},"id":24143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"encode144","nodeType":"MemberAccess","referencedDeclaration":22819,"src":"416:20:132","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint144_$returns$_t_struct$_uq144x112_$22773_memory_ptr_$","typeString":"function (uint144) pure returns (struct FixedPoint.uq144x112 memory)"}},"id":24145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"416:23:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$22773_memory_ptr","typeString":"struct FixedPoint.uq144x112 memory"}},"functionReturnParameters":24141,"id":24146,"nodeType":"Return","src":"409:30:132"}]},"functionSelector":"c814e314","id":24148,"implemented":true,"kind":"function","modifiers":[],"name":"encode144","nodeType":"FunctionDefinition","parameters":{"id":24138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24137,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":24148,"src":"335:9:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":24136,"name":"uint144","nodeType":"ElementaryTypeName","src":"335:7:132","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"334:11:132"},"returnParameters":{"id":24141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24140,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24148,"src":"369:27:132","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$22773_memory_ptr","typeString":"struct FixedPoint.uq144x112"},"typeName":{"id":24139,"name":"FixedPoint.uq144x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22773,"src":"369:20:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$22773_storage_ptr","typeString":"struct FixedPoint.uq144x112"}},"visibility":"internal"}],"src":"368:29:132"},"scope":24308,"src":"316:131:132","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":24160,"nodeType":"Block","src":"539:49:132","statements":[{"expression":{"arguments":[{"id":24157,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24150,"src":"575:4:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"}],"expression":{"id":24155,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23338,"src":"557:10:132","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$23338_$","typeString":"type(library FixedPoint)"}},"id":24156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":22835,"src":"557:17:132","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_uq112x112_$22770_memory_ptr_$returns$_t_uint112_$","typeString":"function (struct FixedPoint.uq112x112 memory) pure returns (uint112)"}},"id":24158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"557:23:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"functionReturnParameters":24154,"id":24159,"nodeType":"Return","src":"550:30:132"}]},"functionSelector":"4fd04a40","id":24161,"implemented":true,"kind":"function","modifiers":[],"name":"decode","nodeType":"FunctionDefinition","parameters":{"id":24151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24150,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":24161,"src":"471:34:132","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":24149,"name":"FixedPoint.uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"471:20:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"470:36:132"},"returnParameters":{"id":24154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24153,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24161,"src":"530:7:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":24152,"name":"uint112","nodeType":"ElementaryTypeName","src":"530:7:132","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"529:9:132"},"scope":24308,"src":"455:133:132","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":24173,"nodeType":"Block","src":"683:52:132","statements":[{"expression":{"arguments":[{"id":24170,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24163,"src":"722:4:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$22773_calldata_ptr","typeString":"struct FixedPoint.uq144x112 calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_uq144x112_$22773_calldata_ptr","typeString":"struct FixedPoint.uq144x112 calldata"}],"expression":{"id":24168,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23338,"src":"701:10:132","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$23338_$","typeString":"type(library FixedPoint)"}},"id":24169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decode144","nodeType":"MemberAccess","referencedDeclaration":22851,"src":"701:20:132","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_uq144x112_$22773_memory_ptr_$returns$_t_uint144_$","typeString":"function (struct FixedPoint.uq144x112 memory) pure returns (uint144)"}},"id":24171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"701:26:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"functionReturnParameters":24167,"id":24172,"nodeType":"Return","src":"694:33:132"}]},"functionSelector":"5f9f4c3b","id":24174,"implemented":true,"kind":"function","modifiers":[],"name":"decode144","nodeType":"FunctionDefinition","parameters":{"id":24164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24163,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":24174,"src":"615:34:132","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$22773_calldata_ptr","typeString":"struct FixedPoint.uq144x112"},"typeName":{"id":24162,"name":"FixedPoint.uq144x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22773,"src":"615:20:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$22773_storage_ptr","typeString":"struct FixedPoint.uq144x112"}},"visibility":"internal"}],"src":"614:36:132"},"returnParameters":{"id":24167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24166,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24174,"src":"674:7:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":24165,"name":"uint144","nodeType":"ElementaryTypeName","src":"674:7:132","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"673:9:132"},"scope":24308,"src":"596:139:132","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":24189,"nodeType":"Block","src":"855:49:132","statements":[{"expression":{"arguments":[{"id":24185,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24176,"src":"888:4:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"}},{"id":24186,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24178,"src":"894:1:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":24183,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23338,"src":"873:10:132","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$23338_$","typeString":"type(library FixedPoint)"}},"id":24184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":22889,"src":"873:14:132","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_uq112x112_$22770_memory_ptr_$_t_uint256_$returns$_t_struct$_uq144x112_$22773_memory_ptr_$","typeString":"function (struct FixedPoint.uq112x112 memory,uint256) pure returns (struct FixedPoint.uq144x112 memory)"}},"id":24187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"873:23:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$22773_memory_ptr","typeString":"struct FixedPoint.uq144x112 memory"}},"functionReturnParameters":24182,"id":24188,"nodeType":"Return","src":"866:30:132"}]},"functionSelector":"af35b769","id":24190,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":24179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24176,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":24190,"src":"756:34:132","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":24175,"name":"FixedPoint.uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"756:20:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"},{"constant":false,"id":24178,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":24190,"src":"792:9:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24177,"name":"uint256","nodeType":"ElementaryTypeName","src":"792:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"755:47:132"},"returnParameters":{"id":24182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24181,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24190,"src":"826:27:132","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$22773_memory_ptr","typeString":"struct FixedPoint.uq144x112"},"typeName":{"id":24180,"name":"FixedPoint.uq144x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22773,"src":"826:20:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$22773_storage_ptr","typeString":"struct FixedPoint.uq144x112"}},"visibility":"internal"}],"src":"825:29:132"},"scope":24308,"src":"743:161:132","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":24205,"nodeType":"Block","src":"1003:50:132","statements":[{"expression":{"arguments":[{"id":24201,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24192,"src":"1037:4:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"}},{"id":24202,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24194,"src":"1043:1:132","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"},{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":24199,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23338,"src":"1021:10:132","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$23338_$","typeString":"type(library FixedPoint)"}},"id":24200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"muli","nodeType":"MemberAccess","referencedDeclaration":22941,"src":"1021:15:132","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_uq112x112_$22770_memory_ptr_$_t_int256_$returns$_t_int256_$","typeString":"function (struct FixedPoint.uq112x112 memory,int256) pure returns (int256)"}},"id":24203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1021:24:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":24198,"id":24204,"nodeType":"Return","src":"1014:31:132"}]},"functionSelector":"89258451","id":24206,"implemented":true,"kind":"function","modifiers":[],"name":"muli","nodeType":"FunctionDefinition","parameters":{"id":24195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24192,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":24206,"src":"926:34:132","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":24191,"name":"FixedPoint.uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"926:20:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"},{"constant":false,"id":24194,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":24206,"src":"962:8:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":24193,"name":"int256","nodeType":"ElementaryTypeName","src":"962:6:132","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"925:46:132"},"returnParameters":{"id":24198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24197,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24206,"src":"995:6:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":24196,"name":"int256","nodeType":"ElementaryTypeName","src":"995:6:132","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"994:8:132"},"scope":24308,"src":"912:141:132","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":24221,"nodeType":"Block","src":"1233:55:132","statements":[{"expression":{"arguments":[{"id":24217,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24208,"src":"1268:4:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"}},{"id":24218,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24210,"src":"1274:5:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"},{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"}],"expression":{"id":24215,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23338,"src":"1251:10:132","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$23338_$","typeString":"type(library FixedPoint)"}},"id":24216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"muluq","nodeType":"MemberAccess","referencedDeclaration":23089,"src":"1251:16:132","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_uq112x112_$22770_memory_ptr_$_t_struct$_uq112x112_$22770_memory_ptr_$returns$_t_struct$_uq112x112_$22770_memory_ptr_$","typeString":"function (struct FixedPoint.uq112x112 memory,struct FixedPoint.uq112x112 memory) pure returns (struct FixedPoint.uq112x112 memory)"}},"id":24219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1251:29:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":24214,"id":24220,"nodeType":"Return","src":"1244:36:132"}]},"functionSelector":"5a606689","id":24222,"implemented":true,"kind":"function","modifiers":[],"name":"muluq","nodeType":"FunctionDefinition","parameters":{"id":24211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24208,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":24222,"src":"1076:34:132","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":24207,"name":"FixedPoint.uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"1076:20:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"},{"constant":false,"id":24210,"mutability":"mutable","name":"other","nodeType":"VariableDeclaration","scope":24222,"src":"1112:35:132","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":24209,"name":"FixedPoint.uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"1112:20:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"1075:73:132"},"returnParameters":{"id":24214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24213,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24222,"src":"1199:27:132","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":24212,"name":"FixedPoint.uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"1199:20:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"1198:29:132"},"scope":24308,"src":"1061:227:132","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":24237,"nodeType":"Block","src":"1468:55:132","statements":[{"expression":{"arguments":[{"id":24233,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24224,"src":"1503:4:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"}},{"id":24234,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24226,"src":"1509:5:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"},{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"}],"expression":{"id":24231,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23338,"src":"1486:10:132","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$23338_$","typeString":"type(library FixedPoint)"}},"id":24232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divuq","nodeType":"MemberAccess","referencedDeclaration":23192,"src":"1486:16:132","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_uq112x112_$22770_memory_ptr_$_t_struct$_uq112x112_$22770_memory_ptr_$returns$_t_struct$_uq112x112_$22770_memory_ptr_$","typeString":"function (struct FixedPoint.uq112x112 memory,struct FixedPoint.uq112x112 memory) pure returns (struct FixedPoint.uq112x112 memory)"}},"id":24235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1486:29:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":24230,"id":24236,"nodeType":"Return","src":"1479:36:132"}]},"functionSelector":"ca74fcc0","id":24238,"implemented":true,"kind":"function","modifiers":[],"name":"divuq","nodeType":"FunctionDefinition","parameters":{"id":24227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24224,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":24238,"src":"1311:34:132","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":24223,"name":"FixedPoint.uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"1311:20:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"},{"constant":false,"id":24226,"mutability":"mutable","name":"other","nodeType":"VariableDeclaration","scope":24238,"src":"1347:35:132","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":24225,"name":"FixedPoint.uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"1347:20:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"1310:73:132"},"returnParameters":{"id":24230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24229,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24238,"src":"1434:27:132","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":24228,"name":"FixedPoint.uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"1434:20:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"1433:29:132"},"scope":24308,"src":"1296:227:132","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":24264,"nodeType":"Block","src":"1695:127:132","statements":[{"assignments":[24248],"declarations":[{"constant":false,"id":24248,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":24264,"src":"1706:17:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24247,"name":"uint256","nodeType":"ElementaryTypeName","src":"1706:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":24251,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":24249,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1726:7:132","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":24250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1726:9:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1706:29:132"},{"expression":{"arguments":[{"id":24255,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24240,"src":"1763:4:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"}},{"id":24256,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24242,"src":"1769:5:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"},{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"}],"expression":{"id":24252,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23338,"src":"1746:10:132","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$23338_$","typeString":"type(library FixedPoint)"}},"id":24254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divuq","nodeType":"MemberAccess","referencedDeclaration":23192,"src":"1746:16:132","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_uq112x112_$22770_memory_ptr_$_t_struct$_uq112x112_$22770_memory_ptr_$returns$_t_struct$_uq112x112_$22770_memory_ptr_$","typeString":"function (struct FixedPoint.uq112x112 memory,struct FixedPoint.uq112x112 memory) pure returns (struct FixedPoint.uq112x112 memory)"}},"id":24257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1746:29:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":24258,"nodeType":"ExpressionStatement","src":"1746:29:132"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24259,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24248,"src":"1793:9:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":24260,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1805:7:132","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":24261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1805:9:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1793:21:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":24246,"id":24263,"nodeType":"Return","src":"1786:28:132"}]},"functionSelector":"d993d379","id":24265,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfDivuq","nodeType":"FunctionDefinition","parameters":{"id":24243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24240,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":24265,"src":"1558:34:132","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":24239,"name":"FixedPoint.uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"1558:20:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"},{"constant":false,"id":24242,"mutability":"mutable","name":"other","nodeType":"VariableDeclaration","scope":24265,"src":"1594:35:132","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":24241,"name":"FixedPoint.uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"1594:20:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"1557:73:132"},"returnParameters":{"id":24246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24245,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24265,"src":"1681:7:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24244,"name":"uint256","nodeType":"ElementaryTypeName","src":"1681:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1680:9:132"},"scope":24308,"src":"1531:291:132","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":24280,"nodeType":"Block","src":"1940:69:132","statements":[{"expression":{"arguments":[{"id":24276,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24267,"src":"1978:9:132","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},{"id":24277,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24269,"src":"1989:11:132","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"},{"typeIdentifier":"t_uint112","typeString":"uint112"}],"expression":{"id":24274,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23338,"src":"1958:10:132","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$23338_$","typeString":"type(library FixedPoint)"}},"id":24275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fraction","nodeType":"MemberAccess","referencedDeclaration":23221,"src":"1958:19:132","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint112_$_t_uint112_$returns$_t_struct$_uq112x112_$22770_memory_ptr_$","typeString":"function (uint112,uint112) pure returns (struct FixedPoint.uq112x112 memory)"}},"id":24278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1958:43:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":24273,"id":24279,"nodeType":"Return","src":"1951:50:132"}]},"functionSelector":"4de4cf92","id":24281,"implemented":true,"kind":"function","modifiers":[],"name":"fraction","nodeType":"FunctionDefinition","parameters":{"id":24270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24267,"mutability":"mutable","name":"numerator","nodeType":"VariableDeclaration","scope":24281,"src":"1848:17:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":24266,"name":"uint112","nodeType":"ElementaryTypeName","src":"1848:7:132","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},{"constant":false,"id":24269,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","scope":24281,"src":"1867:19:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":24268,"name":"uint112","nodeType":"ElementaryTypeName","src":"1867:7:132","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"1847:40:132"},"returnParameters":{"id":24273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24272,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24281,"src":"1911:27:132","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":24271,"name":"FixedPoint.uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"1911:20:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"1910:29:132"},"scope":24308,"src":"1830:179:132","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":24293,"nodeType":"Block","src":"2125:53:132","statements":[{"expression":{"arguments":[{"id":24290,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24283,"src":"2165:4:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"}],"expression":{"id":24288,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23338,"src":"2143:10:132","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$23338_$","typeString":"type(library FixedPoint)"}},"id":24289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reciprocal","nodeType":"MemberAccess","referencedDeclaration":23247,"src":"2143:21:132","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_uq112x112_$22770_memory_ptr_$returns$_t_struct$_uq112x112_$22770_memory_ptr_$","typeString":"function (struct FixedPoint.uq112x112 memory) pure returns (struct FixedPoint.uq112x112 memory)"}},"id":24291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2143:27:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":24287,"id":24292,"nodeType":"Return","src":"2136:34:132"}]},"functionSelector":"31f92b13","id":24294,"implemented":true,"kind":"function","modifiers":[],"name":"reciprocal","nodeType":"FunctionDefinition","parameters":{"id":24284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24283,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":24294,"src":"2037:34:132","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":24282,"name":"FixedPoint.uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"2037:20:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"2036:36:132"},"returnParameters":{"id":24287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24286,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24294,"src":"2096:27:132","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":24285,"name":"FixedPoint.uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"2096:20:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"2095:29:132"},"scope":24308,"src":"2017:161:132","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":24306,"nodeType":"Block","src":"2288:47:132","statements":[{"expression":{"arguments":[{"id":24303,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24296,"src":"2322:4:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112 calldata"}],"expression":{"id":24301,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23338,"src":"2306:10:132","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$23338_$","typeString":"type(library FixedPoint)"}},"id":24302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sqrt","nodeType":"MemberAccess","referencedDeclaration":23337,"src":"2306:15:132","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_uq112x112_$22770_memory_ptr_$returns$_t_struct$_uq112x112_$22770_memory_ptr_$","typeString":"function (struct FixedPoint.uq112x112 memory) pure returns (struct FixedPoint.uq112x112 memory)"}},"id":24304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2306:21:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":24300,"id":24305,"nodeType":"Return","src":"2299:28:132"}]},"functionSelector":"3f1626c8","id":24307,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nodeType":"FunctionDefinition","parameters":{"id":24297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24296,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":24307,"src":"2200:34:132","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_calldata_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":24295,"name":"FixedPoint.uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"2200:20:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"2199:36:132"},"returnParameters":{"id":24300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24299,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24307,"src":"2259:27:132","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"id":24298,"name":"FixedPoint.uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":22770,"src":"2259:20:132","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"visibility":"internal"}],"src":"2258:29:132"},"scope":24308,"src":"2186:149:132","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":24309,"src":"152:2186:132"}],"src":"48:2292:132"},"id":132},"contracts/pangolin-lib/test/FullMathTest.sol":{"ast":{"absolutePath":"contracts/pangolin-lib/test/FullMathTest.sol","exportedSymbols":{"FullMath":[23551],"FullMathTest":[24366]},"id":24367,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":24310,"literals":["solidity",">=","0.4",".0"],"nodeType":"PragmaDirective","src":"48:24:133"},{"absolutePath":"contracts/pangolin-lib/libraries/FullMath.sol","file":"../libraries/FullMath.sol","id":24311,"nodeType":"ImportDirective","scope":24367,"sourceUnit":23552,"src":"76:35:133","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":24366,"linearizedBaseContracts":[24366],"name":"FullMathTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":24329,"nodeType":"Block","src":"259:50:133","statements":[{"expression":{"arguments":[{"id":24324,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24313,"src":"293:1:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":24325,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24315,"src":"296:1:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":24326,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24317,"src":"299:1:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":24322,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23551,"src":"277:8:133","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$23551_$","typeString":"type(library FullMath)"}},"id":24323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":23550,"src":"277:15:133","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":24327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"277:24:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":24321,"id":24328,"nodeType":"Return","src":"270:31:133"}]},"functionSelector":"aa9a0912","id":24330,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nodeType":"FunctionDefinition","parameters":{"id":24318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24313,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":24330,"src":"170:9:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24312,"name":"uint256","nodeType":"ElementaryTypeName","src":"170:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":24315,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":24330,"src":"190:9:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24314,"name":"uint256","nodeType":"ElementaryTypeName","src":"190:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":24317,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":24330,"src":"210:9:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24316,"name":"uint256","nodeType":"ElementaryTypeName","src":"210:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"159:67:133"},"returnParameters":{"id":24321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24320,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24330,"src":"250:7:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24319,"name":"uint256","nodeType":"ElementaryTypeName","src":"250:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"249:9:133"},"scope":24366,"src":"144:165:133","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":24364,"nodeType":"Block","src":"442:115:133","statements":[{"assignments":[24342],"declarations":[{"constant":false,"id":24342,"mutability":"mutable","name":"roundUp","nodeType":"VariableDeclaration","scope":24364,"src":"453:12:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24341,"name":"bool","nodeType":"ElementaryTypeName","src":"453:4:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":24350,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":24344,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24332,"src":"475:1:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":24345,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24334,"src":"478:1:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":24346,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24336,"src":"481:1:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":24343,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"468:6:133","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":24347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"468:15:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":24348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"486:1:133","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"468:19:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"453:34:133"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":24353,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24332,"src":"521:1:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":24354,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24334,"src":"524:1:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":24355,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24336,"src":"527:1:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":24351,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23551,"src":"505:8:133","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$23551_$","typeString":"type(library FullMath)"}},"id":24352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":23550,"src":"505:15:133","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":24356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"505:24:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"id":24357,"name":"roundUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24342,"src":"533:7:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":24359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"547:1:133","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":24360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"533:15:133","trueExpression":{"hexValue":"31","id":24358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"543:1:133","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":24361,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"532:17:133","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"505:44:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":24340,"id":24363,"nodeType":"Return","src":"498:51:133"}]},"functionSelector":"0af8b27f","id":24365,"implemented":true,"kind":"function","modifiers":[],"name":"mulDivRoundingUp","nodeType":"FunctionDefinition","parameters":{"id":24337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24332,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":24365,"src":"353:9:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24331,"name":"uint256","nodeType":"ElementaryTypeName","src":"353:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":24334,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":24365,"src":"373:9:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24333,"name":"uint256","nodeType":"ElementaryTypeName","src":"373:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":24336,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":24365,"src":"393:9:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24335,"name":"uint256","nodeType":"ElementaryTypeName","src":"393:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"342:67:133"},"returnParameters":{"id":24340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24339,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24365,"src":"433:7:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24338,"name":"uint256","nodeType":"ElementaryTypeName","src":"433:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"432:9:133"},"scope":24366,"src":"317:240:133","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":24367,"src":"115:445:133"}],"src":"48:514:133"},"id":133},"contracts/pangolin-lib/test/PairNamerTest.sol":{"ast":{"absolutePath":"contracts/pangolin-lib/test/PairNamerTest.sol","exportedSymbols":{"AddressStringUtil":[22706],"PairNamer":[23623],"PairNamerTest":[24411],"PairNamerTestFakeToken":[24432],"SafeERC20Namer":[23938]},"id":24433,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":24368,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"48:24:134"},{"absolutePath":"contracts/pangolin-lib/libraries/PairNamer.sol","file":"../libraries/PairNamer.sol","id":24369,"nodeType":"ImportDirective","scope":24433,"sourceUnit":23624,"src":"76:36:134","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":24411,"linearizedBaseContracts":[24411],"name":"PairNamerTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":24390,"nodeType":"Block","src":"325:76:134","statements":[{"expression":{"arguments":[{"id":24384,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24371,"src":"362:6:134","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24385,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24373,"src":"370:6:134","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24386,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24375,"src":"378:6:134","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":24387,"name":"suffix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24377,"src":"386:6:134","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"expression":{"id":24382,"name":"PairNamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23623,"src":"343:9:134","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PairNamer_$23623_$","typeString":"type(library PairNamer)"}},"id":24383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairName","nodeType":"MemberAccess","referencedDeclaration":23592,"src":"343:18:134","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function (address,address,string memory,string memory) view returns (string memory)"}},"id":24388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"343:50:134","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":24381,"id":24389,"nodeType":"Return","src":"336:57:134"}]},"functionSelector":"e9f52d23","id":24391,"implemented":true,"kind":"function","modifiers":[],"name":"pairName","nodeType":"FunctionDefinition","parameters":{"id":24378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24371,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":24391,"src":"174:14:134","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24370,"name":"address","nodeType":"ElementaryTypeName","src":"174:7:134","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24373,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":24391,"src":"199:14:134","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24372,"name":"address","nodeType":"ElementaryTypeName","src":"199:7:134","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24375,"mutability":"mutable","name":"prefix","nodeType":"VariableDeclaration","scope":24391,"src":"224:22:134","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":24374,"name":"string","nodeType":"ElementaryTypeName","src":"224:6:134","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":24377,"mutability":"mutable","name":"suffix","nodeType":"VariableDeclaration","scope":24391,"src":"257:22:134","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":24376,"name":"string","nodeType":"ElementaryTypeName","src":"257:6:134","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"163:123:134"},"returnParameters":{"id":24381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24380,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24391,"src":"310:13:134","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":24379,"name":"string","nodeType":"ElementaryTypeName","src":"310:6:134","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"309:15:134"},"scope":24411,"src":"146:255:134","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":24409,"nodeType":"Block","src":"557:70:134","statements":[{"expression":{"arguments":[{"id":24404,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24393,"src":"596:6:134","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24405,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24395,"src":"604:6:134","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24406,"name":"suffix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24397,"src":"612:6:134","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"expression":{"id":24402,"name":"PairNamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23623,"src":"575:9:134","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PairNamer_$23623_$","typeString":"type(library PairNamer)"}},"id":24403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairSymbol","nodeType":"MemberAccess","referencedDeclaration":23622,"src":"575:20:134","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function (address,address,string memory) view returns (string memory)"}},"id":24407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"575:44:134","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":24401,"id":24408,"nodeType":"Return","src":"568:51:134"}]},"functionSelector":"4c75e918","id":24410,"implemented":true,"kind":"function","modifiers":[],"name":"pairSymbol","nodeType":"FunctionDefinition","parameters":{"id":24398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24393,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":24410,"src":"439:14:134","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24392,"name":"address","nodeType":"ElementaryTypeName","src":"439:7:134","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24395,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":24410,"src":"464:14:134","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24394,"name":"address","nodeType":"ElementaryTypeName","src":"464:7:134","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24397,"mutability":"mutable","name":"suffix","nodeType":"VariableDeclaration","scope":24410,"src":"489:22:134","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":24396,"name":"string","nodeType":"ElementaryTypeName","src":"489:6:134","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"428:90:134"},"returnParameters":{"id":24401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24400,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24410,"src":"542:13:134","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":24399,"name":"string","nodeType":"ElementaryTypeName","src":"542:6:134","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"541:15:134"},"scope":24411,"src":"409:218:134","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":24433,"src":"116:514:134"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":24432,"linearizedBaseContracts":[24432],"name":"PairNamerTestFakeToken","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"06fdde03","id":24413,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":24432,"src":"771:18:134","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":24412,"name":"string","nodeType":"ElementaryTypeName","src":"771:6:134","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"public"},{"constant":false,"functionSelector":"95d89b41","id":24415,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":24432,"src":"796:20:134","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":24414,"name":"string","nodeType":"ElementaryTypeName","src":"796:6:134","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"public"},{"body":{"id":24430,"nodeType":"Block","src":"888:58:134","statements":[{"expression":{"id":24424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":24422,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24413,"src":"899:4:134","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":24423,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24417,"src":"906:5:134","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"899:12:134","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":24425,"nodeType":"ExpressionStatement","src":"899:12:134"},{"expression":{"id":24428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":24426,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24415,"src":"922:6:134","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":24427,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24419,"src":"931:7:134","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"922:16:134","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":24429,"nodeType":"ExpressionStatement","src":"922:16:134"}]},"id":24431,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":24420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24417,"mutability":"mutable","name":"name_","nodeType":"VariableDeclaration","scope":24431,"src":"837:19:134","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":24416,"name":"string","nodeType":"ElementaryTypeName","src":"837:6:134","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":24419,"mutability":"mutable","name":"symbol_","nodeType":"VariableDeclaration","scope":24431,"src":"858:21:134","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":24418,"name":"string","nodeType":"ElementaryTypeName","src":"858:6:134","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"836:44:134"},"returnParameters":{"id":24421,"nodeType":"ParameterList","parameters":[],"src":"888:0:134"},"scope":24432,"src":"825:121:134","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":24433,"src":"732:217:134"}],"src":"48:903:134"},"id":134},"contracts/pangolin-lib/test/SafeERC20NamerTest.sol":{"ast":{"absolutePath":"contracts/pangolin-lib/test/SafeERC20NamerTest.sol","exportedSymbols":{"AddressStringUtil":[22706],"NamerTestFakeCompliantERC20":[24484],"NamerTestFakeNoncompliantERC20":[24505],"NamerTestFakeOptionalERC20":[24463],"SafeERC20Namer":[23938],"SafeERC20NamerTest":[24462]},"id":24506,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":24434,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"48:24:135"},{"absolutePath":"contracts/pangolin-lib/libraries/SafeERC20Namer.sol","file":"../libraries/SafeERC20Namer.sol","id":24435,"nodeType":"ImportDirective","scope":24506,"sourceUnit":23939,"src":"76:41:135","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":24462,"linearizedBaseContracts":[24462],"name":"SafeERC20NamerTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":24447,"nodeType":"Block","src":"277:59:135","statements":[{"expression":{"arguments":[{"id":24444,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24437,"src":"322:5:135","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":24442,"name":"SafeERC20Namer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23938,"src":"295:14:135","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeERC20Namer_$23938_$","typeString":"type(library SafeERC20Namer)"}},"id":24443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenSymbol","nodeType":"MemberAccess","referencedDeclaration":23907,"src":"295:26:135","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_string_memory_ptr_$","typeString":"function (address) view returns (string memory)"}},"id":24445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"295:33:135","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":24441,"id":24446,"nodeType":"Return","src":"288:40:135"}]},"functionSelector":"033b9b4f","id":24448,"implemented":true,"kind":"function","modifiers":[],"name":"tokenSymbol","nodeType":"FunctionDefinition","parameters":{"id":24438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24437,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":24448,"src":"224:13:135","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24436,"name":"address","nodeType":"ElementaryTypeName","src":"224:7:135","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"223:15:135"},"returnParameters":{"id":24441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24440,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24448,"src":"262:13:135","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":24439,"name":"string","nodeType":"ElementaryTypeName","src":"262:6:135","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"261:15:135"},"scope":24462,"src":"203:133:135","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":24460,"nodeType":"Block","src":"416:57:135","statements":[{"expression":{"arguments":[{"id":24457,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24450,"src":"459:5:135","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":24455,"name":"SafeERC20Namer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23938,"src":"434:14:135","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeERC20Namer_$23938_$","typeString":"type(library SafeERC20Namer)"}},"id":24456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenName","nodeType":"MemberAccess","referencedDeclaration":23937,"src":"434:24:135","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_string_memory_ptr_$","typeString":"function (address) view returns (string memory)"}},"id":24458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"434:31:135","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":24454,"id":24459,"nodeType":"Return","src":"427:38:135"}]},"functionSelector":"e54f7522","id":24461,"implemented":true,"kind":"function","modifiers":[],"name":"tokenName","nodeType":"FunctionDefinition","parameters":{"id":24451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24450,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":24461,"src":"363:13:135","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24449,"name":"address","nodeType":"ElementaryTypeName","src":"363:7:135","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"362:15:135"},"returnParameters":{"id":24454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24453,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24461,"src":"401:13:135","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":24452,"name":"string","nodeType":"ElementaryTypeName","src":"401:6:135","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"400:15:135"},"scope":24462,"src":"344:129:135","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":24506,"src":"168:308:135"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":24463,"linearizedBaseContracts":[24463],"name":"NamerTestFakeOptionalERC20","nodeType":"ContractDefinition","nodes":[],"scope":24506,"src":"518:42:135"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":24484,"linearizedBaseContracts":[24484],"name":"NamerTestFakeCompliantERC20","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"06fdde03","id":24465,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":24484,"src":"652:18:135","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":24464,"name":"string","nodeType":"ElementaryTypeName","src":"652:6:135","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"public"},{"constant":false,"functionSelector":"95d89b41","id":24467,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":24484,"src":"677:20:135","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":24466,"name":"string","nodeType":"ElementaryTypeName","src":"677:6:135","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"public"},{"body":{"id":24482,"nodeType":"Block","src":"769:58:135","statements":[{"expression":{"id":24476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":24474,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24465,"src":"780:4:135","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":24475,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24469,"src":"787:5:135","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"780:12:135","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":24477,"nodeType":"ExpressionStatement","src":"780:12:135"},{"expression":{"id":24480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":24478,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24467,"src":"803:6:135","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":24479,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24471,"src":"812:7:135","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"803:16:135","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":24481,"nodeType":"ExpressionStatement","src":"803:16:135"}]},"id":24483,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":24472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24469,"mutability":"mutable","name":"name_","nodeType":"VariableDeclaration","scope":24483,"src":"718:19:135","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":24468,"name":"string","nodeType":"ElementaryTypeName","src":"718:6:135","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":24471,"mutability":"mutable","name":"symbol_","nodeType":"VariableDeclaration","scope":24483,"src":"739:21:135","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":24470,"name":"string","nodeType":"ElementaryTypeName","src":"739:6:135","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"717:44:135"},"returnParameters":{"id":24473,"nodeType":"ParameterList","parameters":[],"src":"769:0:135"},"scope":24484,"src":"706:121:135","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":24506,"src":"608:222:135"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":24505,"linearizedBaseContracts":[24505],"name":"NamerTestFakeNoncompliantERC20","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"06fdde03","id":24486,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":24505,"src":"932:19:135","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":24485,"name":"bytes32","nodeType":"ElementaryTypeName","src":"932:7:135","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"functionSelector":"95d89b41","id":24488,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":24505,"src":"958:21:135","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":24487,"name":"bytes32","nodeType":"ElementaryTypeName","src":"958:7:135","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"body":{"id":24503,"nodeType":"Block","src":"1039:58:135","statements":[{"expression":{"id":24497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":24495,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24486,"src":"1050:4:135","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":24496,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24490,"src":"1057:5:135","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1050:12:135","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":24498,"nodeType":"ExpressionStatement","src":"1050:12:135"},{"expression":{"id":24501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":24499,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24488,"src":"1073:6:135","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":24500,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24492,"src":"1082:7:135","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1073:16:135","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":24502,"nodeType":"ExpressionStatement","src":"1073:16:135"}]},"id":24504,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":24493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24490,"mutability":"mutable","name":"name_","nodeType":"VariableDeclaration","scope":24504,"src":"1000:13:135","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":24489,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1000:7:135","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":24492,"mutability":"mutable","name":"symbol_","nodeType":"VariableDeclaration","scope":24504,"src":"1015:15:135","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":24491,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1015:7:135","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"999:32:135"},"returnParameters":{"id":24494,"nodeType":"ParameterList","parameters":[],"src":"1039:0:135"},"scope":24505,"src":"988:109:135","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":24506,"src":"885:215:135"}],"src":"48:1054:135"},"id":135},"contracts/pangolin-lib/test/TransferHelperTest.sol":{"ast":{"absolutePath":"contracts/pangolin-lib/test/TransferHelperTest.sol","exportedSymbols":{"TransferHelper":[24098],"TransferHelperTest":[24581],"TransferHelperTestFakeERC20Compliant":[24658],"TransferHelperTestFakeERC20Noncompliant":[24712],"TransferHelperTestFakeFallback":[24750]},"id":24751,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":24507,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"48:31:136"},{"absolutePath":"contracts/pangolin-lib/libraries/TransferHelper.sol","file":"../libraries/TransferHelper.sol","id":24508,"nodeType":"ImportDirective","scope":24751,"sourceUnit":24099,"src":"83:41:136","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":24581,"linearizedBaseContracts":[24581],"name":"TransferHelperTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":24525,"nodeType":"Block","src":"299:63:136","statements":[{"expression":{"arguments":[{"id":24520,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24510,"src":"337:5:136","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24521,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24512,"src":"344:2:136","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24522,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24514,"src":"348:5:136","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":24517,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24098,"src":"310:14:136","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$24098_$","typeString":"type(library TransferHelper)"}},"id":24519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":23983,"src":"310:26:136","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":24523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"310:44:136","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24524,"nodeType":"ExpressionStatement","src":"310:44:136"}]},"functionSelector":"eb5625d9","id":24526,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nodeType":"FunctionDefinition","parameters":{"id":24515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24510,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":24526,"src":"224:13:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24509,"name":"address","nodeType":"ElementaryTypeName","src":"224:7:136","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24512,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":24526,"src":"248:10:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24511,"name":"address","nodeType":"ElementaryTypeName","src":"248:7:136","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24514,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":24526,"src":"269:13:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24513,"name":"uint256","nodeType":"ElementaryTypeName","src":"269:7:136","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"213:76:136"},"returnParameters":{"id":24516,"nodeType":"ParameterList","parameters":[],"src":"299:0:136"},"scope":24581,"src":"193:169:136","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":24543,"nodeType":"Block","src":"477:64:136","statements":[{"expression":{"arguments":[{"id":24538,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24528,"src":"516:5:136","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24539,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24530,"src":"523:2:136","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24540,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24532,"src":"527:5:136","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":24535,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24098,"src":"488:14:136","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$24098_$","typeString":"type(library TransferHelper)"}},"id":24537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":24026,"src":"488:27:136","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":24541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"488:45:136","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24542,"nodeType":"ExpressionStatement","src":"488:45:136"}]},"functionSelector":"d1660f99","id":24544,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nodeType":"FunctionDefinition","parameters":{"id":24533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24528,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":24544,"src":"402:13:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24527,"name":"address","nodeType":"ElementaryTypeName","src":"402:7:136","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24530,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":24544,"src":"426:10:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24529,"name":"address","nodeType":"ElementaryTypeName","src":"426:7:136","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24532,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":24544,"src":"447:13:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24531,"name":"uint256","nodeType":"ElementaryTypeName","src":"447:7:136","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"391:76:136"},"returnParameters":{"id":24534,"nodeType":"ParameterList","parameters":[],"src":"477:0:136"},"scope":24581,"src":"370:171:136","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":24564,"nodeType":"Block","src":"683:74:136","statements":[{"expression":{"arguments":[{"id":24558,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24546,"src":"726:5:136","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24559,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24548,"src":"733:4:136","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24560,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24550,"src":"739:2:136","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24561,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24552,"src":"743:5:136","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":24555,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24098,"src":"694:14:136","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$24098_$","typeString":"type(library TransferHelper)"}},"id":24557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":24072,"src":"694:31:136","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":24562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"694:55:136","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24563,"nodeType":"ExpressionStatement","src":"694:55:136"}]},"functionSelector":"d9fc4b61","id":24565,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":24553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24546,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":24565,"src":"585:13:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24545,"name":"address","nodeType":"ElementaryTypeName","src":"585:7:136","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24548,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":24565,"src":"609:12:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24547,"name":"address","nodeType":"ElementaryTypeName","src":"609:7:136","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24550,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":24565,"src":"632:10:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24549,"name":"address","nodeType":"ElementaryTypeName","src":"632:7:136","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24552,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":24565,"src":"653:13:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24551,"name":"uint256","nodeType":"ElementaryTypeName","src":"653:7:136","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"574:99:136"},"returnParameters":{"id":24554,"nodeType":"ParameterList","parameters":[],"src":"683:0:136"},"scope":24581,"src":"549:208:136","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":24579,"nodeType":"Block","src":"827:61:136","statements":[{"expression":{"arguments":[{"id":24575,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24567,"src":"870:2:136","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24576,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24569,"src":"874:5:136","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":24572,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24098,"src":"838:14:136","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$24098_$","typeString":"type(library TransferHelper)"}},"id":24574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAVAX","nodeType":"MemberAccess","referencedDeclaration":24097,"src":"838:31:136","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":24577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"838:42:136","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24578,"nodeType":"ExpressionStatement","src":"838:42:136"}]},"functionSelector":"7a03e80f","id":24580,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferAVAX","nodeType":"FunctionDefinition","parameters":{"id":24570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24567,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":24580,"src":"791:10:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24566,"name":"address","nodeType":"ElementaryTypeName","src":"791:7:136","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24569,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":24580,"src":"803:13:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24568,"name":"uint256","nodeType":"ElementaryTypeName","src":"803:7:136","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"790:27:136"},"returnParameters":{"id":24571,"nodeType":"ParameterList","parameters":[],"src":"827:0:136"},"scope":24581,"src":"765:123:136","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":24751,"src":"158:733:136"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":24658,"linearizedBaseContracts":[24658],"name":"TransferHelperTestFakeERC20Compliant","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"0b93381b","id":24583,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":24658,"src":"1005:19:136","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24582,"name":"bool","nodeType":"ElementaryTypeName","src":"1005:4:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"functionSelector":"d3072d82","id":24585,"mutability":"mutable","name":"shouldRevert","nodeType":"VariableDeclaration","scope":24658,"src":"1031:24:136","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24584,"name":"bool","nodeType":"ElementaryTypeName","src":"1031:4:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"body":{"id":24600,"nodeType":"Block","src":"1123:76:136","statements":[{"expression":{"id":24594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":24592,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24583,"src":"1134:7:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":24593,"name":"success_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24587,"src":"1144:8:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1134:18:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24595,"nodeType":"ExpressionStatement","src":"1134:18:136"},{"expression":{"id":24598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":24596,"name":"shouldRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24585,"src":"1163:12:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":24597,"name":"shouldRevert_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24589,"src":"1178:13:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1163:28:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24599,"nodeType":"ExpressionStatement","src":"1163:28:136"}]},"functionSelector":"15d98b40","id":24601,"implemented":true,"kind":"function","modifiers":[],"name":"setup","nodeType":"FunctionDefinition","parameters":{"id":24590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24587,"mutability":"mutable","name":"success_","nodeType":"VariableDeclaration","scope":24601,"src":"1079:13:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24586,"name":"bool","nodeType":"ElementaryTypeName","src":"1079:4:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":24589,"mutability":"mutable","name":"shouldRevert_","nodeType":"VariableDeclaration","scope":24601,"src":"1094:18:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24588,"name":"bool","nodeType":"ElementaryTypeName","src":"1094:4:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1078:35:136"},"returnParameters":{"id":24591,"nodeType":"ParameterList","parameters":[],"src":"1123:0:136"},"scope":24658,"src":"1064:135:136","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":24618,"nodeType":"Block","src":"1272:76:136","statements":[{"expression":{"arguments":[{"id":24612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1291:13:136","subExpression":{"id":24611,"name":"shouldRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24585,"src":"1292:12:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"524556455254","id":24613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1306:8:136","typeDescriptions":{"typeIdentifier":"t_stringliteral_e13872d662304a4be4efe6d4425b00781f90609ddf2ef6e5b5e5c8bc7f5ed47f","typeString":"literal_string \"REVERT\""},"value":"REVERT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e13872d662304a4be4efe6d4425b00781f90609ddf2ef6e5b5e5c8bc7f5ed47f","typeString":"literal_string \"REVERT\""}],"id":24610,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1283:7:136","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":24614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1283:32:136","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24615,"nodeType":"ExpressionStatement","src":"1283:32:136"},{"expression":{"id":24616,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24583,"src":"1333:7:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":24609,"id":24617,"nodeType":"Return","src":"1326:14:136"}]},"functionSelector":"a9059cbb","id":24619,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":24606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24603,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24619,"src":"1225:7:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24602,"name":"address","nodeType":"ElementaryTypeName","src":"1225:7:136","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24605,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24619,"src":"1234:7:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24604,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:136","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1224:18:136"},"returnParameters":{"id":24609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24608,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24619,"src":"1266:4:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24607,"name":"bool","nodeType":"ElementaryTypeName","src":"1266:4:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1265:6:136"},"scope":24658,"src":"1207:141:136","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":24638,"nodeType":"Block","src":"1468:76:136","statements":[{"expression":{"arguments":[{"id":24632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1487:13:136","subExpression":{"id":24631,"name":"shouldRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24585,"src":"1488:12:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"524556455254","id":24633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1502:8:136","typeDescriptions":{"typeIdentifier":"t_stringliteral_e13872d662304a4be4efe6d4425b00781f90609ddf2ef6e5b5e5c8bc7f5ed47f","typeString":"literal_string \"REVERT\""},"value":"REVERT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e13872d662304a4be4efe6d4425b00781f90609ddf2ef6e5b5e5c8bc7f5ed47f","typeString":"literal_string \"REVERT\""}],"id":24630,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1479:7:136","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":24634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1479:32:136","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24635,"nodeType":"ExpressionStatement","src":"1479:32:136"},{"expression":{"id":24636,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24583,"src":"1529:7:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":24629,"id":24637,"nodeType":"Return","src":"1522:14:136"}]},"functionSelector":"23b872dd","id":24639,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":24626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24621,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24639,"src":"1388:7:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24620,"name":"address","nodeType":"ElementaryTypeName","src":"1388:7:136","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24623,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24639,"src":"1406:7:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24622,"name":"address","nodeType":"ElementaryTypeName","src":"1406:7:136","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24625,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24639,"src":"1424:7:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24624,"name":"uint256","nodeType":"ElementaryTypeName","src":"1424:7:136","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1377:61:136"},"returnParameters":{"id":24629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24628,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24639,"src":"1462:4:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24627,"name":"bool","nodeType":"ElementaryTypeName","src":"1462:4:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1461:6:136"},"scope":24658,"src":"1356:188:136","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":24656,"nodeType":"Block","src":"1616:76:136","statements":[{"expression":{"arguments":[{"id":24650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1635:13:136","subExpression":{"id":24649,"name":"shouldRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24585,"src":"1636:12:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"524556455254","id":24651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1650:8:136","typeDescriptions":{"typeIdentifier":"t_stringliteral_e13872d662304a4be4efe6d4425b00781f90609ddf2ef6e5b5e5c8bc7f5ed47f","typeString":"literal_string \"REVERT\""},"value":"REVERT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e13872d662304a4be4efe6d4425b00781f90609ddf2ef6e5b5e5c8bc7f5ed47f","typeString":"literal_string \"REVERT\""}],"id":24648,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1627:7:136","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":24652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1627:32:136","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24653,"nodeType":"ExpressionStatement","src":"1627:32:136"},{"expression":{"id":24654,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24583,"src":"1677:7:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":24647,"id":24655,"nodeType":"Return","src":"1670:14:136"}]},"functionSelector":"095ea7b3","id":24657,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":24644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24641,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24657,"src":"1569:7:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24640,"name":"address","nodeType":"ElementaryTypeName","src":"1569:7:136","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24643,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24657,"src":"1578:7:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24642,"name":"uint256","nodeType":"ElementaryTypeName","src":"1578:7:136","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1568:18:136"},"returnParameters":{"id":24647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24646,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24657,"src":"1610:4:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24645,"name":"bool","nodeType":"ElementaryTypeName","src":"1610:4:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1609:6:136"},"scope":24658,"src":"1552:140:136","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":24751,"src":"952:743:136"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":24712,"linearizedBaseContracts":[24712],"name":"TransferHelperTestFakeERC20Noncompliant","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"d3072d82","id":24660,"mutability":"mutable","name":"shouldRevert","nodeType":"VariableDeclaration","scope":24712,"src":"1800:24:136","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24659,"name":"bool","nodeType":"ElementaryTypeName","src":"1800:4:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"body":{"id":24669,"nodeType":"Block","src":"1877:47:136","statements":[{"expression":{"id":24667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":24665,"name":"shouldRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24660,"src":"1888:12:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":24666,"name":"shouldRevert_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24662,"src":"1903:13:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1888:28:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24668,"nodeType":"ExpressionStatement","src":"1888:28:136"}]},"functionSelector":"e2c169ec","id":24670,"implemented":true,"kind":"function","modifiers":[],"name":"setup","nodeType":"FunctionDefinition","parameters":{"id":24663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24662,"mutability":"mutable","name":"shouldRevert_","nodeType":"VariableDeclaration","scope":24670,"src":"1848:18:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24661,"name":"bool","nodeType":"ElementaryTypeName","src":"1848:4:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1847:20:136"},"returnParameters":{"id":24664,"nodeType":"ParameterList","parameters":[],"src":"1877:0:136"},"scope":24712,"src":"1833:91:136","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":24682,"nodeType":"Block","src":"1982:41:136","statements":[{"expression":{"arguments":[{"id":24679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2001:13:136","subExpression":{"id":24678,"name":"shouldRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24660,"src":"2002:12:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":24677,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1993:7:136","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":24680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1993:22:136","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24681,"nodeType":"ExpressionStatement","src":"1993:22:136"}]},"functionSelector":"a9059cbb","id":24683,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":24675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24672,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24683,"src":"1950:7:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24671,"name":"address","nodeType":"ElementaryTypeName","src":"1950:7:136","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24674,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24683,"src":"1959:7:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24673,"name":"uint256","nodeType":"ElementaryTypeName","src":"1959:7:136","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1949:18:136"},"returnParameters":{"id":24676,"nodeType":"ParameterList","parameters":[],"src":"1982:0:136"},"scope":24712,"src":"1932:91:136","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":24697,"nodeType":"Block","src":"2128:41:136","statements":[{"expression":{"arguments":[{"id":24694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2147:13:136","subExpression":{"id":24693,"name":"shouldRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24660,"src":"2148:12:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":24692,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2139:7:136","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":24695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2139:22:136","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24696,"nodeType":"ExpressionStatement","src":"2139:22:136"}]},"functionSelector":"23b872dd","id":24698,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":24690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24685,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24698,"src":"2063:7:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24684,"name":"address","nodeType":"ElementaryTypeName","src":"2063:7:136","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24687,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24698,"src":"2081:7:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24686,"name":"address","nodeType":"ElementaryTypeName","src":"2081:7:136","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24689,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24698,"src":"2099:7:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24688,"name":"uint256","nodeType":"ElementaryTypeName","src":"2099:7:136","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2052:61:136"},"returnParameters":{"id":24691,"nodeType":"ParameterList","parameters":[],"src":"2128:0:136"},"scope":24712,"src":"2031:138:136","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":24710,"nodeType":"Block","src":"2226:41:136","statements":[{"expression":{"arguments":[{"id":24707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2245:13:136","subExpression":{"id":24706,"name":"shouldRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24660,"src":"2246:12:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":24705,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2237:7:136","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":24708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2237:22:136","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24709,"nodeType":"ExpressionStatement","src":"2237:22:136"}]},"functionSelector":"095ea7b3","id":24711,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":24703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24700,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24711,"src":"2194:7:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24699,"name":"address","nodeType":"ElementaryTypeName","src":"2194:7:136","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24702,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24711,"src":"2203:7:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24701,"name":"uint256","nodeType":"ElementaryTypeName","src":"2203:7:136","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2193:18:136"},"returnParameters":{"id":24704,"nodeType":"ParameterList","parameters":[],"src":"2226:0:136"},"scope":24712,"src":"2177:90:136","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":24751,"src":"1744:526:136"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":24750,"linearizedBaseContracts":[24750],"name":"TransferHelperTestFakeFallback","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"d3072d82","id":24714,"mutability":"mutable","name":"shouldRevert","nodeType":"VariableDeclaration","scope":24750,"src":"2321:24:136","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24713,"name":"bool","nodeType":"ElementaryTypeName","src":"2321:4:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"body":{"id":24723,"nodeType":"Block","src":"2398:47:136","statements":[{"expression":{"id":24721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":24719,"name":"shouldRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24714,"src":"2409:12:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":24720,"name":"shouldRevert_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24716,"src":"2424:13:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2409:28:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24722,"nodeType":"ExpressionStatement","src":"2409:28:136"}]},"functionSelector":"e2c169ec","id":24724,"implemented":true,"kind":"function","modifiers":[],"name":"setup","nodeType":"FunctionDefinition","parameters":{"id":24717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24716,"mutability":"mutable","name":"shouldRevert_","nodeType":"VariableDeclaration","scope":24724,"src":"2369:18:136","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24715,"name":"bool","nodeType":"ElementaryTypeName","src":"2369:4:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2368:20:136"},"returnParameters":{"id":24718,"nodeType":"ParameterList","parameters":[],"src":"2398:0:136"},"scope":24750,"src":"2354:91:136","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":24732,"nodeType":"Block","src":"2480:41:136","statements":[{"expression":{"arguments":[{"id":24729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2499:13:136","subExpression":{"id":24728,"name":"shouldRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24714,"src":"2500:12:136","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":24727,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2491:7:136","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":24730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2491:22:136","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24731,"nodeType":"ExpressionStatement","src":"2491:22:136"}]},"id":24733,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":24725,"nodeType":"ParameterList","parameters":[],"src":"2460:2:136"},"returnParameters":{"id":24726,"nodeType":"ParameterList","parameters":[],"src":"2480:0:136"},"scope":24750,"src":"2453:68:136","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":24748,"nodeType":"Block","src":"2558:61:136","statements":[{"expression":{"arguments":[{"expression":{"arguments":[{"id":24743,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2597:4:136","typeDescriptions":{"typeIdentifier":"t_contract$_TransferHelperTestFakeFallback_$24750","typeString":"contract TransferHelperTestFakeFallback"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TransferHelperTestFakeFallback_$24750","typeString":"contract TransferHelperTestFakeFallback"}],"id":24742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2589:7:136","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24741,"name":"address","nodeType":"ElementaryTypeName","src":"2589:7:136","typeDescriptions":{}}},"id":24744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2589:13:136","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":24745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2589:21:136","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":24736,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2569:3:136","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":24739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2569:10:136","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":24740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","src":"2569:19:136","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":24746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2569:42:136","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24747,"nodeType":"ExpressionStatement","src":"2569:42:136"}]},"functionSelector":"3ccfd60b","id":24749,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":24734,"nodeType":"ParameterList","parameters":[],"src":"2546:2:136"},"returnParameters":{"id":24735,"nodeType":"ParameterList","parameters":[],"src":"2558:0:136"},"scope":24750,"src":"2529:90:136","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":24751,"src":"2274:348:136"}],"src":"48:2576:136"},"id":136},"contracts/pangolin-periphery/PangolinBridgeMigrationRouter.sol":{"ast":{"absolutePath":"contracts/pangolin-periphery/PangolinBridgeMigrationRouter.sol","exportedSymbols":{"IBridgeToken":[25762],"IPangolinERC20":[22258],"IPangolinFactory":[22321],"IPangolinPair":[22563],"PangolinBridgeMigrationRouter":[25742],"PangolinLibrary":[26235],"Roles":[26320],"SafeMath":[26395],"TransferHelper":[24098]},"id":25743,"nodeType":"SourceUnit","nodes":[{"id":24752,"literals":["solidity","^","0.7",".6"],"nodeType":"PragmaDirective","src":"0:23:137"},{"absolutePath":"contracts/pangolin-core/interfaces/IPangolinERC20.sol","file":"../pangolin-core/interfaces/IPangolinERC20.sol","id":24753,"nodeType":"ImportDirective","scope":25743,"sourceUnit":22259,"src":"27:56:137","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/pangolin-lib/libraries/TransferHelper.sol","file":"../pangolin-lib/libraries/TransferHelper.sol","id":24754,"nodeType":"ImportDirective","scope":25743,"sourceUnit":24099,"src":"85:54:137","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/pangolin-periphery/interfaces/IBridgeToken.sol","file":"./interfaces/IBridgeToken.sol","id":24755,"nodeType":"ImportDirective","scope":25743,"sourceUnit":25763,"src":"141:39:137","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/pangolin-periphery/libraries/Roles.sol","file":"./libraries/Roles.sol","id":24756,"nodeType":"ImportDirective","scope":25743,"sourceUnit":26321,"src":"182:31:137","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/pangolin-periphery/libraries/PangolinLibrary.sol","file":"./libraries/PangolinLibrary.sol","id":24757,"nodeType":"ImportDirective","scope":25743,"sourceUnit":26236,"src":"215:41:137","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":25742,"linearizedBaseContracts":[25742],"name":"PangolinBridgeMigrationRouter","nodeType":"ContractDefinition","nodes":[{"id":24760,"libraryName":{"id":24758,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":26395,"src":"312:8:137","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$26395","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"306:24:137","typeName":{"id":24759,"name":"uint","nodeType":"ElementaryTypeName","src":"325:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":24763,"libraryName":{"id":24761,"name":"Roles","nodeType":"UserDefinedTypeName","referencedDeclaration":26320,"src":"342:5:137","typeDescriptions":{"typeIdentifier":"t_contract$_Roles_$26320","typeString":"library Roles"}},"nodeType":"UsingForDirective","src":"336:27:137","typeName":{"id":24762,"name":"Roles.Role","nodeType":"UserDefinedTypeName","referencedDeclaration":26242,"src":"352:10:137","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage_ptr","typeString":"struct Roles.Role"}}},{"constant":false,"id":24765,"mutability":"mutable","name":"adminRole","nodeType":"VariableDeclaration","scope":25742,"src":"371:28:137","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage","typeString":"struct Roles.Role"},"typeName":{"id":24764,"name":"Roles.Role","nodeType":"UserDefinedTypeName","referencedDeclaration":26242,"src":"371:10:137","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage_ptr","typeString":"struct Roles.Role"}},"visibility":"private"},{"constant":false,"functionSelector":"ffc50594","id":24769,"mutability":"mutable","name":"bridgeMigrator","nodeType":"VariableDeclaration","scope":25742,"src":"406:49:137","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"typeName":{"id":24768,"keyType":{"id":24766,"name":"address","nodeType":"ElementaryTypeName","src":"414:7:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"406:27:137","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueType":{"id":24767,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"public"},{"body":{"id":24779,"nodeType":"Block","src":"485:44:137","statements":[{"expression":{"arguments":[{"expression":{"id":24775,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"510:3:137","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":24776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"510:10:137","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":24772,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24765,"src":"496:9:137","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage","typeString":"struct Roles.Role storage ref"}},"id":24774,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":26268,"src":"496:13:137","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Role_$26242_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$26242_storage_ptr_$","typeString":"function (struct Roles.Role storage pointer,address)"}},"id":24777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"496:25:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24778,"nodeType":"ExpressionStatement","src":"496:25:137"}]},"id":24780,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":24770,"nodeType":"ParameterList","parameters":[],"src":"475:2:137"},"returnParameters":{"id":24771,"nodeType":"ParameterList","parameters":[],"src":"485:0:137"},"scope":25742,"src":"464:65:137","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":24793,"nodeType":"Block","src":"639:109:137","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24785,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24782,"src":"658:8:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":24786,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"670:5:137","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":24787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"670:15:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"658:27:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4272696467654d6967726174696f6e526f757465723a2045585049524544","id":24789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"687:40:137","typeDescriptions":{"typeIdentifier":"t_stringliteral_4bf3a3bdb3dfe781d5fb51ef0581c97dc8978cc691fcf943614cc20404d0a33b","typeString":"literal_string \"PangolinBridgeMigrationRouter: EXPIRED\""},"value":"PangolinBridgeMigrationRouter: EXPIRED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4bf3a3bdb3dfe781d5fb51ef0581c97dc8978cc691fcf943614cc20404d0a33b","typeString":"literal_string \"PangolinBridgeMigrationRouter: EXPIRED\""}],"id":24784,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"650:7:137","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":24790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"650:78:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24791,"nodeType":"ExpressionStatement","src":"650:78:137"},{"id":24792,"nodeType":"PlaceholderStatement","src":"739:1:137"}]},"id":24794,"name":"ensure","nodeType":"ModifierDefinition","parameters":{"id":24783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24782,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":24794,"src":"624:13:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24781,"name":"uint","nodeType":"ElementaryTypeName","src":"624:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"623:15:137"},"src":"608:140:137","virtual":false,"visibility":"internal"},{"body":{"id":24806,"nodeType":"Block","src":"843:112:137","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":24799,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"876:3:137","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":24800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"876:10:137","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":24797,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24765,"src":"862:9:137","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage","typeString":"struct Roles.Role storage ref"}},"id":24798,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"has","nodeType":"MemberAccess","referencedDeclaration":26319,"src":"862:13:137","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Role_$26242_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$26242_storage_ptr_$","typeString":"function (struct Roles.Role storage pointer,address) view returns (bool)"}},"id":24801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"862:25:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4272696467654d6967726174696f6e526f757465723a20556e617574686f72697a6564","id":24802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"889:45:137","typeDescriptions":{"typeIdentifier":"t_stringliteral_aed548c6ccee6a5e08947dab2188416304276c4d63f625581bfef0ea5e10f21d","typeString":"literal_string \"PangolinBridgeMigrationRouter: Unauthorized\""},"value":"PangolinBridgeMigrationRouter: Unauthorized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_aed548c6ccee6a5e08947dab2188416304276c4d63f625581bfef0ea5e10f21d","typeString":"literal_string \"PangolinBridgeMigrationRouter: Unauthorized\""}],"id":24796,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"854:7:137","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":24803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"854:81:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24804,"nodeType":"ExpressionStatement","src":"854:81:137"},{"id":24805,"nodeType":"PlaceholderStatement","src":"946:1:137"}]},"id":24807,"name":"onlyAdmin","nodeType":"ModifierDefinition","parameters":{"id":24795,"nodeType":"ParameterList","parameters":[],"src":"840:2:137"},"src":"822:133:137","virtual":false,"visibility":"internal"},{"body":{"id":24831,"nodeType":"Block","src":"1228:138:137","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":24821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24816,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24810,"src":"1247:7:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":24819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1266:1:137","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":24818,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1258:7:137","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24817,"name":"address","nodeType":"ElementaryTypeName","src":"1258:7:137","typeDescriptions":{}}},"id":24820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1258:10:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1247:21:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4272696467654d6967726174696f6e526f757465723a20416464726573732030206e6f7420616c6c6f776564","id":24822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1270:54:137","typeDescriptions":{"typeIdentifier":"t_stringliteral_b692a48275b91747003ff9350cfe272254a553da179d937d7cb40bac7fe811df","typeString":"literal_string \"PangolinBridgeMigrationRouter: Address 0 not allowed\""},"value":"PangolinBridgeMigrationRouter: Address 0 not allowed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b692a48275b91747003ff9350cfe272254a553da179d937d7cb40bac7fe811df","typeString":"literal_string \"PangolinBridgeMigrationRouter: Address 0 not allowed\""}],"id":24815,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1239:7:137","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":24823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1239:86:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24824,"nodeType":"ExpressionStatement","src":"1239:86:137"},{"expression":{"arguments":[{"id":24828,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24810,"src":"1350:7:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":24825,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24765,"src":"1336:9:137","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage","typeString":"struct Roles.Role storage ref"}},"id":24827,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":26268,"src":"1336:13:137","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Role_$26242_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$26242_storage_ptr_$","typeString":"function (struct Roles.Role storage pointer,address)"}},"id":24829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1336:22:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24830,"nodeType":"ExpressionStatement","src":"1336:22:137"}]},"documentation":{"id":24808,"nodeType":"StructuredDocumentation","src":"963:205:137","text":" @notice Given an address, this address is added to the list of admin.\n @dev Any admin can add or remove other admins, careful.\n @param account The address of the account."},"functionSelector":"70480275","id":24832,"implemented":true,"kind":"function","modifiers":[{"id":24813,"modifierName":{"id":24812,"name":"onlyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24807,"src":"1218:9:137","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"1218:9:137"}],"name":"addAdmin","nodeType":"FunctionDefinition","parameters":{"id":24811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24810,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":24832,"src":"1192:15:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24809,"name":"address","nodeType":"ElementaryTypeName","src":"1192:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1191:17:137"},"returnParameters":{"id":24814,"nodeType":"ParameterList","parameters":[],"src":"1228:0:137"},"scope":25742,"src":"1174:192:137","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":24854,"nodeType":"Block","src":"1642:145:137","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":24844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":24841,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1661:3:137","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":24842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1661:10:137","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":24843,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24835,"src":"1675:7:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1661:21:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4272696467654d6967726174696f6e526f757465723a20596f752063616e27742064656d6f746520796f757273656c66","id":24845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1684:58:137","typeDescriptions":{"typeIdentifier":"t_stringliteral_1993ef893a40655d906d935aab3543171618a87a267c3d94e596756860e6e8f8","typeString":"literal_string \"PangolinBridgeMigrationRouter: You can't demote yourself\""},"value":"PangolinBridgeMigrationRouter: You can't demote yourself"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1993ef893a40655d906d935aab3543171618a87a267c3d94e596756860e6e8f8","typeString":"literal_string \"PangolinBridgeMigrationRouter: You can't demote yourself\""}],"id":24840,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1653:7:137","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":24846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1653:90:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24847,"nodeType":"ExpressionStatement","src":"1653:90:137"},{"expression":{"arguments":[{"id":24851,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24835,"src":"1771:7:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":24848,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24765,"src":"1754:9:137","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage","typeString":"struct Roles.Role storage ref"}},"id":24850,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":26293,"src":"1754:16:137","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Role_$26242_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$26242_storage_ptr_$","typeString":"function (struct Roles.Role storage pointer,address)"}},"id":24852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1754:25:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24853,"nodeType":"ExpressionStatement","src":"1754:25:137"}]},"documentation":{"id":24833,"nodeType":"StructuredDocumentation","src":"1374:205:137","text":" @notice Given an address, this address is added to the list of admin.\n @dev Any admin can add or remove other admins, careful.\n @param account The address of the account."},"functionSelector":"1785f53c","id":24855,"implemented":true,"kind":"function","modifiers":[{"id":24838,"modifierName":{"id":24837,"name":"onlyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24807,"src":"1632:9:137","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"1632:9:137"}],"name":"removeAdmin","nodeType":"FunctionDefinition","parameters":{"id":24836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24835,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":24855,"src":"1606:15:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24834,"name":"address","nodeType":"ElementaryTypeName","src":"1606:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1605:17:137"},"returnParameters":{"id":24839,"nodeType":"ParameterList","parameters":[],"src":"1642:0:137"},"scope":25742,"src":"1585:202:137","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":24868,"nodeType":"Block","src":"2069:48:137","statements":[{"expression":{"arguments":[{"id":24865,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24858,"src":"2101:7:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":24863,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24765,"src":"2087:9:137","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage","typeString":"struct Roles.Role storage ref"}},"id":24864,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"has","nodeType":"MemberAccess","referencedDeclaration":26319,"src":"2087:13:137","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Role_$26242_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$26242_storage_ptr_$","typeString":"function (struct Roles.Role storage pointer,address) view returns (bool)"}},"id":24866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2087:22:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":24862,"id":24867,"nodeType":"Return","src":"2080:29:137"}]},"documentation":{"id":24856,"nodeType":"StructuredDocumentation","src":"1795:206:137","text":" @notice Given an address, returns whether or not he's already an admin\n @param account The address of the account.\n @return Whether or not the account address is an admin."},"functionSelector":"24d7806c","id":24869,"implemented":true,"kind":"function","modifiers":[],"name":"isAdmin","nodeType":"FunctionDefinition","parameters":{"id":24859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24858,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":24869,"src":"2024:15:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24857,"name":"address","nodeType":"ElementaryTypeName","src":"2024:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2023:17:137"},"returnParameters":{"id":24862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24861,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":24869,"src":"2063:4:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24860,"name":"bool","nodeType":"ElementaryTypeName","src":"2063:4:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2062:6:137"},"scope":25742,"src":"2007:110:137","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":24926,"nodeType":"Block","src":"2518:547:137","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":24885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24880,"name":"tokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24872,"src":"2537:12:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":24883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2561:1:137","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":24882,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2553:7:137","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24881,"name":"address","nodeType":"ElementaryTypeName","src":"2553:7:137","typeDescriptions":{}}},"id":24884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2553:10:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2537:26:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4272696467654d6967726174696f6e526f757465723a20746f6b656e416464726573732030206e6f7420737570706f72746564","id":24886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2565:61:137","typeDescriptions":{"typeIdentifier":"t_stringliteral_86d9e332989e632283830d366c0a694e9b696eccc4b32f2a2bcadc00c6be4b3d","typeString":"literal_string \"PangolinBridgeMigrationRouter: tokenAddress 0 not supported\""},"value":"PangolinBridgeMigrationRouter: tokenAddress 0 not supported"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_86d9e332989e632283830d366c0a694e9b696eccc4b32f2a2bcadc00c6be4b3d","typeString":"literal_string \"PangolinBridgeMigrationRouter: tokenAddress 0 not supported\""}],"id":24879,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2529:7:137","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":24887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2529:98:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24888,"nodeType":"ExpressionStatement","src":"2529:98:137"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":24895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24890,"name":"migratorAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24874,"src":"2646:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":24893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2673:1:137","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":24892,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2665:7:137","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24891,"name":"address","nodeType":"ElementaryTypeName","src":"2665:7:137","typeDescriptions":{}}},"id":24894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2665:10:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2646:29:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4272696467654d6967726174696f6e526f757465723a206d69677261746f72416464726573732030206e6f7420737570706f72746564","id":24896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2677:64:137","typeDescriptions":{"typeIdentifier":"t_stringliteral_6c8a22a2553401190cea08a356a1afa419dfa720865a5f1c3187014519481985","typeString":"literal_string \"PangolinBridgeMigrationRouter: migratorAddress 0 not supported\""},"value":"PangolinBridgeMigrationRouter: migratorAddress 0 not supported"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6c8a22a2553401190cea08a356a1afa419dfa720865a5f1c3187014519481985","typeString":"literal_string \"PangolinBridgeMigrationRouter: migratorAddress 0 not supported\""}],"id":24889,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2638:7:137","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":24897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2638:104:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24898,"nodeType":"ExpressionStatement","src":"2638:104:137"},{"assignments":[24900],"declarations":[{"constant":false,"id":24900,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":24926,"src":"2753:14:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24899,"name":"uint256","nodeType":"ElementaryTypeName","src":"2753:7:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":24907,"initialValue":{"arguments":[{"id":24905,"name":"tokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24872,"src":"2811:12:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":24902,"name":"migratorAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24874,"src":"2783:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24901,"name":"IBridgeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25762,"src":"2770:12:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBridgeToken_$25762_$","typeString":"type(contract IBridgeToken)"}},"id":24903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2770:29:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBridgeToken_$25762","typeString":"contract IBridgeToken"}},"id":24904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swapSupply","nodeType":"MemberAccess","referencedDeclaration":25761,"src":"2770:40:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":24906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2770:54:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2753:71:137"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24909,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24900,"src":"2857:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":24910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2866:1:137","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2857:10:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546865206d69677261746f7220646f65736e27742068617665207377617020737570706c7920666f72207468697320746f6b656e","id":24912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2882:54:137","typeDescriptions":{"typeIdentifier":"t_stringliteral_67de629378f206179ef1573eeb90ada9b246d75587b16d0d1d34653b7fb2db45","typeString":"literal_string \"The migrator doesn't have swap supply for this token\""},"value":"The migrator doesn't have swap supply for this token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67de629378f206179ef1573eeb90ada9b246d75587b16d0d1d34653b7fb2db45","typeString":"literal_string \"The migrator doesn't have swap supply for this token\""}],"id":24908,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2835:7:137","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":24913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2835:112:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24914,"nodeType":"ExpressionStatement","src":"2835:112:137"},{"expression":{"arguments":[{"id":24916,"name":"tokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24872,"src":"2970:12:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24917,"name":"migratorAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24874,"src":"2984:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":24915,"name":"_allowToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24948,"src":"2958:11:137","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":24918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2958:42:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24919,"nodeType":"ExpressionStatement","src":"2958:42:137"},{"expression":{"id":24924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":24920,"name":"bridgeMigrator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24769,"src":"3011:14:137","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":24922,"indexExpression":{"id":24921,"name":"tokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24872,"src":"3026:12:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3011:28:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":24923,"name":"migratorAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24874,"src":"3042:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3011:46:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":24925,"nodeType":"ExpressionStatement","src":"3011:46:137"}]},"documentation":{"id":24870,"nodeType":"StructuredDocumentation","src":"2125:300:137","text":" @notice Given an token, and it's migrator address, it configures the migrator for later usage\n @param tokenAddress The ERC20 token address that will be migrated using the migrator\n @param migratorAddress The WrappedERC20 token address that will be migrate the token"},"functionSelector":"4c389d26","id":24927,"implemented":true,"kind":"function","modifiers":[{"id":24877,"modifierName":{"id":24876,"name":"onlyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24807,"src":"2508:9:137","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2508:9:137"}],"name":"addMigrator","nodeType":"FunctionDefinition","parameters":{"id":24875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24872,"mutability":"mutable","name":"tokenAddress","nodeType":"VariableDeclaration","scope":24927,"src":"2452:20:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24871,"name":"address","nodeType":"ElementaryTypeName","src":"2452:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24874,"mutability":"mutable","name":"migratorAddress","nodeType":"VariableDeclaration","scope":24927,"src":"2474:23:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24873,"name":"address","nodeType":"ElementaryTypeName","src":"2474:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2451:47:137"},"returnParameters":{"id":24878,"nodeType":"ParameterList","parameters":[],"src":"2518:0:137"},"scope":25742,"src":"2431:634:137","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":24947,"nodeType":"Block","src":"3415:87:137","statements":[{"expression":{"arguments":[{"id":24939,"name":"spenderAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24932,"src":"3463:14:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":24942,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3484:4:137","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":24941,"name":"uint","nodeType":"ElementaryTypeName","src":"3484:4:137","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":24940,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3479:4:137","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":24943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3479:10:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":24944,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"3479:14:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":24936,"name":"tokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24930,"src":"3441:12:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24935,"name":"IPangolinERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22258,"src":"3426:14:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinERC20_$22258_$","typeString":"type(contract IPangolinERC20)"}},"id":24937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3426:28:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinERC20_$22258","typeString":"contract IPangolinERC20"}},"id":24938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":22203,"src":"3426:36:137","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":24945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3426:68:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24946,"nodeType":"ExpressionStatement","src":"3426:68:137"}]},"documentation":{"id":24928,"nodeType":"StructuredDocumentation","src":"3073:260:137","text":" @notice Internal function to manage approval, allows an ERC20 to be spent to the maximum\n @param tokenAddress The ERC20 token address that will be allowed to be used\n @param spenderAddress Who's going to spend the ERC20 token"},"id":24948,"implemented":true,"kind":"function","modifiers":[],"name":"_allowToken","nodeType":"FunctionDefinition","parameters":{"id":24933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24930,"mutability":"mutable","name":"tokenAddress","nodeType":"VariableDeclaration","scope":24948,"src":"3360:20:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24929,"name":"address","nodeType":"ElementaryTypeName","src":"3360:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24932,"mutability":"mutable","name":"spenderAddress","nodeType":"VariableDeclaration","scope":24948,"src":"3382:22:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24931,"name":"address","nodeType":"ElementaryTypeName","src":"3382:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3359:46:137"},"returnParameters":{"id":24934,"nodeType":"ParameterList","parameters":[],"src":"3415:0:137"},"scope":25742,"src":"3339:163:137","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":25048,"nodeType":"Block","src":"4585:633:137","statements":[{"assignments":[24971,24973,null],"declarations":[{"constant":false,"id":24971,"mutability":"mutable","name":"reserve0","nodeType":"VariableDeclaration","scope":25048,"src":"4597:16:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":24970,"name":"uint112","nodeType":"ElementaryTypeName","src":"4597:7:137","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},{"constant":false,"id":24973,"mutability":"mutable","name":"reserve1","nodeType":"VariableDeclaration","scope":25048,"src":"4615:16:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":24972,"name":"uint112","nodeType":"ElementaryTypeName","src":"4615:7:137","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},null],"id":24979,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":24975,"name":"pairToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24951,"src":"4650:9:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24974,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"4636:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":24976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4636:24:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":24977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getReserves","nodeType":"MemberAccess","referencedDeclaration":22505,"src":"4636:36:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"function () view external returns (uint112,uint112,uint32)"}},"id":24978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4636:38:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"tuple(uint112,uint112,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"4596:78:137"},{"assignments":[24981],"declarations":[{"constant":false,"id":24981,"mutability":"mutable","name":"quote0","nodeType":"VariableDeclaration","scope":25048,"src":"4685:11:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24980,"name":"uint","nodeType":"ElementaryTypeName","src":"4685:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":24983,"initialValue":{"id":24982,"name":"amountIn0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24957,"src":"4699:9:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4685:23:137"},{"assignments":[24985],"declarations":[{"constant":false,"id":24985,"mutability":"mutable","name":"quote1","nodeType":"VariableDeclaration","scope":25048,"src":"4719:11:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24984,"name":"uint","nodeType":"ElementaryTypeName","src":"4719:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":24992,"initialValue":{"arguments":[{"id":24988,"name":"amountIn0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24957,"src":"4755:9:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":24989,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24971,"src":"4766:8:137","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},{"id":24990,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24973,"src":"4776:8:137","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint112","typeString":"uint112"},{"typeIdentifier":"t_uint112","typeString":"uint112"}],"expression":{"id":24986,"name":"PangolinLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26235,"src":"4733:15:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PangolinLibrary_$26235_$","typeString":"type(library PangolinLibrary)"}},"id":24987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":25948,"src":"4733:21:137","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":24991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4733:52:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4719:66:137"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24993,"name":"quote1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24985,"src":"4800:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":24994,"name":"amountIn1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24959,"src":"4809:9:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4800:18:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25010,"nodeType":"IfStatement","src":"4796:145:137","trueBody":{"id":25009,"nodeType":"Block","src":"4820:121:137","statements":[{"expression":{"id":24998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":24996,"name":"quote1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24985,"src":"4835:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":24997,"name":"amountIn1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24959,"src":"4844:9:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4835:18:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":24999,"nodeType":"ExpressionStatement","src":"4835:18:137"},{"expression":{"id":25007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25000,"name":"quote0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24981,"src":"4868:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":25003,"name":"amountIn1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24959,"src":"4899:9:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":25004,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24973,"src":"4910:8:137","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},{"id":25005,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24971,"src":"4920:8:137","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint112","typeString":"uint112"},{"typeIdentifier":"t_uint112","typeString":"uint112"}],"expression":{"id":25001,"name":"PangolinLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26235,"src":"4877:15:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PangolinLibrary_$26235_$","typeString":"type(library PangolinLibrary)"}},"id":25002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":25948,"src":"4877:21:137","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":25006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4877:52:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4868:61:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25008,"nodeType":"ExpressionStatement","src":"4868:61:137"}]}},{"expression":{"arguments":[{"id":25014,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24953,"src":"4979:6:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25015,"name":"pairToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24951,"src":"4987:9:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25016,"name":"quote0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24981,"src":"4998:6:137","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":25011,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24098,"src":"4951:14:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$24098_$","typeString":"type(library TransferHelper)"}},"id":25013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":24026,"src":"4951:27:137","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":25017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4951:54:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25018,"nodeType":"ExpressionStatement","src":"4951:54:137"},{"expression":{"arguments":[{"id":25022,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24955,"src":"5044:6:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25023,"name":"pairToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24951,"src":"5052:9:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25024,"name":"quote1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24985,"src":"5063:6:137","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":25019,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24098,"src":"5016:14:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$24098_$","typeString":"type(library TransferHelper)"}},"id":25021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":24026,"src":"5016:27:137","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":25025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5016:54:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25026,"nodeType":"ExpressionStatement","src":"5016:54:137"},{"expression":{"id":25031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25027,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24964,"src":"5081:7:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25028,"name":"amountIn0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24957,"src":"5091:9:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":25029,"name":"quote0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24981,"src":"5103:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5091:18:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5081:28:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25032,"nodeType":"ExpressionStatement","src":"5081:28:137"},{"expression":{"id":25037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25033,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24966,"src":"5120:7:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25034,"name":"amountIn1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24959,"src":"5130:9:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":25035,"name":"quote1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24985,"src":"5142:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5130:18:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5120:28:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25038,"nodeType":"ExpressionStatement","src":"5120:28:137"},{"expression":{"id":25046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25039,"name":"liquidityAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24968,"src":"5159:15:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":25044,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24961,"src":"5207:2:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":25041,"name":"pairToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24951,"src":"5191:9:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25040,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"5177:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5177:24:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":22527,"src":"5177:29:137","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) external returns (uint256)"}},"id":25045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5177:33:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5159:51:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25047,"nodeType":"ExpressionStatement","src":"5159:51:137"}]},"documentation":{"id":24949,"nodeType":"StructuredDocumentation","src":"3510:823:137","text":" @notice Internal function add liquidity on a low level, without the use of a router\n @dev This function will try to maximize one of the tokens amount and match the other\n one, can cause dust so consider charge backs\n @param pairToken The pair that will receive the liquidity\n @param token0 The first token of the pair\n @param token1 The second token of the pair\n @param amountIn0 The amount of first token that can be used to deposit liquidity\n @param amountIn1 The amount of second token that can be used to deposit liquidity\n @param to The address who will receive the liquidity\n @return amount0 Charge back from token0\n @return amount1 Charge back from token1\n @return liquidityAmount Total liquidity token amount acquired"},"id":25049,"implemented":true,"kind":"function","modifiers":[],"name":"_addLiquidity","nodeType":"FunctionDefinition","parameters":{"id":24962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24951,"mutability":"mutable","name":"pairToken","nodeType":"VariableDeclaration","scope":25049,"src":"4372:17:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24950,"name":"address","nodeType":"ElementaryTypeName","src":"4372:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24953,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":25049,"src":"4400:14:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24952,"name":"address","nodeType":"ElementaryTypeName","src":"4400:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24955,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":25049,"src":"4425:14:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24954,"name":"address","nodeType":"ElementaryTypeName","src":"4425:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24957,"mutability":"mutable","name":"amountIn0","nodeType":"VariableDeclaration","scope":25049,"src":"4450:14:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24956,"name":"uint","nodeType":"ElementaryTypeName","src":"4450:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":24959,"mutability":"mutable","name":"amountIn1","nodeType":"VariableDeclaration","scope":25049,"src":"4475:14:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24958,"name":"uint","nodeType":"ElementaryTypeName","src":"4475:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":24961,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":25049,"src":"4500:10:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24960,"name":"address","nodeType":"ElementaryTypeName","src":"4500:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4361:156:137"},"returnParameters":{"id":24969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24964,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":25049,"src":"4535:12:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24963,"name":"uint","nodeType":"ElementaryTypeName","src":"4535:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":24966,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":25049,"src":"4549:12:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24965,"name":"uint","nodeType":"ElementaryTypeName","src":"4549:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":24968,"mutability":"mutable","name":"liquidityAmount","nodeType":"VariableDeclaration","scope":25049,"src":"4563:20:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24967,"name":"uint","nodeType":"ElementaryTypeName","src":"4563:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4534:50:137"},"scope":25742,"src":"4339:879:137","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":25085,"nodeType":"Block","src":"5918:190:137","statements":[{"expression":{"arguments":[{"id":25064,"name":"liquidityPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25052,"src":"5961:13:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":25065,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5976:3:137","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":25066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5976:10:137","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":25067,"name":"liquidityPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25052,"src":"5988:13:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25068,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25054,"src":"6003:6:137","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"}],"expression":{"id":25061,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24098,"src":"5929:14:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$24098_$","typeString":"type(library TransferHelper)"}},"id":25063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":24072,"src":"5929:31:137","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":25069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5929:81:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25070,"nodeType":"ExpressionStatement","src":"5929:81:137"},{"expression":{"id":25083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":25071,"name":"amountTokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25057,"src":"6022:12:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":25072,"name":"amountTokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25059,"src":"6036:12:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":25073,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6021:28:137","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":25080,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6094:4:137","typeDescriptions":{"typeIdentifier":"t_contract$_PangolinBridgeMigrationRouter_$25742","typeString":"contract PangolinBridgeMigrationRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PangolinBridgeMigrationRouter_$25742","typeString":"contract PangolinBridgeMigrationRouter"}],"id":25079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6086:7:137","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":25078,"name":"address","nodeType":"ElementaryTypeName","src":"6086:7:137","typeDescriptions":{}}},"id":25081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6086:13:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":25075,"name":"liquidityPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25052,"src":"6066:13:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25074,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"6052:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6052:28:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":22536,"src":"6052:33:137","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address) external returns (uint256,uint256)"}},"id":25082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6052:48:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"6021:79:137","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25084,"nodeType":"ExpressionStatement","src":"6021:79:137"}]},"documentation":{"id":25050,"nodeType":"StructuredDocumentation","src":"5226:543:137","text":" @notice Internal function to remove liquidity on a low level, without the use of a router\n @dev This function requires the user to approve this contract to transfer the liquidity pair on it's behalf\n @param liquidityPair The pair that will have the liquidity removed\n @param amount The amount of liquidity token that you want to rescue\n @return amountTokenA The amount of token0 from burning liquidityPair token\n @return amountTokenB The amount of token1 from burning liquidityPair token"},"id":25086,"implemented":true,"kind":"function","modifiers":[],"name":"_rescueLiquidity","nodeType":"FunctionDefinition","parameters":{"id":25055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25052,"mutability":"mutable","name":"liquidityPair","nodeType":"VariableDeclaration","scope":25086,"src":"5811:21:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25051,"name":"address","nodeType":"ElementaryTypeName","src":"5811:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25054,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":25086,"src":"5843:11:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25053,"name":"uint","nodeType":"ElementaryTypeName","src":"5843:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5800:61:137"},"returnParameters":{"id":25060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25057,"mutability":"mutable","name":"amountTokenA","nodeType":"VariableDeclaration","scope":25086,"src":"5880:17:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25056,"name":"uint","nodeType":"ElementaryTypeName","src":"5880:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":25059,"mutability":"mutable","name":"amountTokenB","nodeType":"VariableDeclaration","scope":25086,"src":"5899:17:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25058,"name":"uint","nodeType":"ElementaryTypeName","src":"5899:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5879:38:137"},"scope":25742,"src":"5775:333:137","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":25172,"nodeType":"Block","src":"6565:745:137","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25095,"name":"pairA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25089,"src":"6584:5:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":25098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6601:1:137","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":25097,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6593:7:137","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":25096,"name":"address","nodeType":"ElementaryTypeName","src":"6593:7:137","typeDescriptions":{}}},"id":25099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6593:10:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"6584:19:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4272696467654d6967726174696f6e526f757465723a206c69717569646974795061697246726f6d20616464726573732030","id":25101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6605:60:137","typeDescriptions":{"typeIdentifier":"t_stringliteral_a11bef235fe953d6a6aa795691bf80faa561350b27f779437a864d440f7752cd","typeString":"literal_string \"PangolinBridgeMigrationRouter: liquidityPairFrom address 0\""},"value":"PangolinBridgeMigrationRouter: liquidityPairFrom address 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a11bef235fe953d6a6aa795691bf80faa561350b27f779437a864d440f7752cd","typeString":"literal_string \"PangolinBridgeMigrationRouter: liquidityPairFrom address 0\""}],"id":25094,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6576:7:137","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6576:90:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25103,"nodeType":"ExpressionStatement","src":"6576:90:137"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25105,"name":"pairA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25089,"src":"6685:5:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":25108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6702:1:137","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":25107,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6694:7:137","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":25106,"name":"address","nodeType":"ElementaryTypeName","src":"6694:7:137","typeDescriptions":{}}},"id":25109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6694:10:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"6685:19:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4272696467654d6967726174696f6e526f757465723a206c697175696469747950616972546f20616464726573732030","id":25111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6706:58:137","typeDescriptions":{"typeIdentifier":"t_stringliteral_d844e2f36e5160dd88fc0cddae9b1364cc20ca28aa391b849f2adc0f48183026","typeString":"literal_string \"PangolinBridgeMigrationRouter: liquidityPairTo address 0\""},"value":"PangolinBridgeMigrationRouter: liquidityPairTo address 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d844e2f36e5160dd88fc0cddae9b1364cc20ca28aa391b849f2adc0f48183026","typeString":"literal_string \"PangolinBridgeMigrationRouter: liquidityPairTo address 0\""}],"id":25104,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6677:7:137","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6677:88:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25113,"nodeType":"ExpressionStatement","src":"6677:88:137"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25115,"name":"pairA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25089,"src":"6784:5:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":25116,"name":"pairB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25091,"src":"6793:5:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6784:14:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4272696467654d6967726174696f6e526f757465723a2043616e7420636f6e7665727420746f207468652073616d65206c6971756964697479207061697273","id":25118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6800:73:137","typeDescriptions":{"typeIdentifier":"t_stringliteral_15de62603b1809d62ca9182e1bdceedb3f5b200197d1c80f31fec8e2062ebe84","typeString":"literal_string \"PangolinBridgeMigrationRouter: Cant convert to the same liquidity pairs\""},"value":"PangolinBridgeMigrationRouter: Cant convert to the same liquidity pairs"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_15de62603b1809d62ca9182e1bdceedb3f5b200197d1c80f31fec8e2062ebe84","typeString":"literal_string \"PangolinBridgeMigrationRouter: Cant convert to the same liquidity pairs\""}],"id":25114,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6776:7:137","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6776:98:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25120,"nodeType":"ExpressionStatement","src":"6776:98:137"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":25168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":25156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":25144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25123,"name":"pairA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25089,"src":"6921:5:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25122,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"6907:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6907:20:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":22491,"src":"6907:27:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6907:29:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25128,"name":"pairB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25091,"src":"6954:5:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25127,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"6940:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6940:20:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":22491,"src":"6940:27:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6940:29:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6907:62:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25134,"name":"pairA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25089,"src":"7000:5:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25133,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"6986:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6986:20:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":22491,"src":"6986:27:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6986:29:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25139,"name":"pairB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25091,"src":"7033:5:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25138,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"7019:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7019:20:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":22496,"src":"7019:27:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7019:29:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6986:62:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6907:141:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25146,"name":"pairA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25089,"src":"7079:5:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25145,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"7065:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7065:20:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":22496,"src":"7065:27:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7065:29:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25151,"name":"pairB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25091,"src":"7112:5:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25150,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"7098:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7098:20:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":22491,"src":"7098:27:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7098:29:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7065:62:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6907:220:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25158,"name":"pairA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25089,"src":"7158:5:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25157,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"7144:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7144:20:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":22496,"src":"7144:27:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7144:29:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25163,"name":"pairB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25091,"src":"7191:5:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25162,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"7177:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7177:20:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":22496,"src":"7177:27:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7177:29:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7144:62:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6907:299:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4272696467654d6967726174696f6e526f757465723a205061697220646f6573206e6f742068617665206f6e6520746f6b656e206d61746368696e67","id":25169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7221:70:137","typeDescriptions":{"typeIdentifier":"t_stringliteral_d891399e89c3519566e0c1267cce0f7d46559e18345ec2509a2d925ad1c413a4","typeString":"literal_string \"PangolinBridgeMigrationRouter: Pair does not have one token matching\""},"value":"PangolinBridgeMigrationRouter: Pair does not have one token matching"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d891399e89c3519566e0c1267cce0f7d46559e18345ec2509a2d925ad1c413a4","typeString":"literal_string \"PangolinBridgeMigrationRouter: Pair does not have one token matching\""}],"id":25121,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6885:7:137","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6885:417:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25171,"nodeType":"ExpressionStatement","src":"6885:417:137"}]},"documentation":{"id":25087,"nodeType":"StructuredDocumentation","src":"6116:370:137","text":" @notice Internal function that checks if the minimum requirements are met to accept the pairs to migrate\n @dev This function makes the main function(migrateLiquidity) cleaner, this function can revert the transaction\n @param pairA The pair that is going to be migrated from\n @param pairB The pair that is going to be migrated to"},"id":25173,"implemented":true,"kind":"function","modifiers":[],"name":"_arePairsCompatible","nodeType":"FunctionDefinition","parameters":{"id":25092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25089,"mutability":"mutable","name":"pairA","nodeType":"VariableDeclaration","scope":25173,"src":"6521:13:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25088,"name":"address","nodeType":"ElementaryTypeName","src":"6521:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25091,"mutability":"mutable","name":"pairB","nodeType":"VariableDeclaration","scope":25173,"src":"6536:13:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25090,"name":"address","nodeType":"ElementaryTypeName","src":"6536:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6520:30:137"},"returnParameters":{"id":25093,"nodeType":"ParameterList","parameters":[],"src":"6565:0:137"},"scope":25742,"src":"6492:818:137","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":25218,"nodeType":"Block","src":"7750:397:137","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25182,"name":"tokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25176,"src":"7769:12:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":25185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7793:1:137","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":25184,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7785:7:137","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":25183,"name":"address","nodeType":"ElementaryTypeName","src":"7785:7:137","typeDescriptions":{}}},"id":25186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7785:10:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7769:26:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4272696467654d6967726174696f6e526f757465723a20746f6b656e416464726573732030206e6f7420737570706f72746564","id":25188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7797:61:137","typeDescriptions":{"typeIdentifier":"t_stringliteral_86d9e332989e632283830d366c0a694e9b696eccc4b32f2a2bcadc00c6be4b3d","typeString":"literal_string \"PangolinBridgeMigrationRouter: tokenAddress 0 not supported\""},"value":"PangolinBridgeMigrationRouter: tokenAddress 0 not supported"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_86d9e332989e632283830d366c0a694e9b696eccc4b32f2a2bcadc00c6be4b3d","typeString":"literal_string \"PangolinBridgeMigrationRouter: tokenAddress 0 not supported\""}],"id":25181,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7761:7:137","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7761:98:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25190,"nodeType":"ExpressionStatement","src":"7761:98:137"},{"expression":{"arguments":[{"id":25197,"name":"tokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25176,"src":"7918:12:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25198,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25178,"src":"7932:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"baseExpression":{"id":25192,"name":"bridgeMigrator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24769,"src":"7883:14:137","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":25194,"indexExpression":{"id":25193,"name":"tokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25176,"src":"7898:12:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7883:28:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25191,"name":"IBridgeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25762,"src":"7870:12:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBridgeToken_$25762_$","typeString":"type(contract IBridgeToken)"}},"id":25195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7870:42:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBridgeToken_$25762","typeString":"contract IBridgeToken"}},"id":25196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":25754,"src":"7870:47:137","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":25199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7870:69:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25200,"nodeType":"ExpressionStatement","src":"7870:69:137"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":25210,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8033:4:137","typeDescriptions":{"typeIdentifier":"t_contract$_PangolinBridgeMigrationRouter_$25742","typeString":"contract PangolinBridgeMigrationRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PangolinBridgeMigrationRouter_$25742","typeString":"contract PangolinBridgeMigrationRouter"}],"id":25209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8025:7:137","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":25208,"name":"address","nodeType":"ElementaryTypeName","src":"8025:7:137","typeDescriptions":{}}},"id":25211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8025:13:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"baseExpression":{"id":25203,"name":"bridgeMigrator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24769,"src":"7985:14:137","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":25205,"indexExpression":{"id":25204,"name":"tokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25176,"src":"8000:12:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7985:28:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25202,"name":"IBridgeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25762,"src":"7972:12:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBridgeToken_$25762_$","typeString":"type(contract IBridgeToken)"}},"id":25206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7972:42:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBridgeToken_$25762","typeString":"contract IBridgeToken"}},"id":25207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":22185,"src":"7972:52:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":25212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7972:67:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":25213,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25178,"src":"8043:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7972:77:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4272696467654d6967726174696f6e526f757465723a204469646e2774207969656c642074686520636f727265637420616d6f756e74","id":25215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8064:64:137","typeDescriptions":{"typeIdentifier":"t_stringliteral_ae12f57b17f90af9f17ae9a91985d2a75732c663fe83e3f404afab32b02a6ab7","typeString":"literal_string \"PangolinBridgeMigrationRouter: Didn't yield the correct amount\""},"value":"PangolinBridgeMigrationRouter: Didn't yield the correct amount"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ae12f57b17f90af9f17ae9a91985d2a75732c663fe83e3f404afab32b02a6ab7","typeString":"literal_string \"PangolinBridgeMigrationRouter: Didn't yield the correct amount\""}],"id":25201,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7950:7:137","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7950:189:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25217,"nodeType":"ExpressionStatement","src":"7950:189:137"}]},"documentation":{"id":25174,"nodeType":"StructuredDocumentation","src":"7318:334:137","text":" @notice Internal function that implements the token migration\n @dev This function only checks if the expected balance was received, it doesn't check for migrator existance\n @param tokenAddress The ERC20 token address that will be migrated\n @param amount The amount of the token to be migrated"},"id":25219,"implemented":true,"kind":"function","modifiers":[],"name":"_migrateToken","nodeType":"FunctionDefinition","parameters":{"id":25179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25176,"mutability":"mutable","name":"tokenAddress","nodeType":"VariableDeclaration","scope":25219,"src":"7691:20:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25175,"name":"address","nodeType":"ElementaryTypeName","src":"7691:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25178,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":25219,"src":"7722:11:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25177,"name":"uint","nodeType":"ElementaryTypeName","src":"7722:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7680:60:137"},"returnParameters":{"id":25180,"nodeType":"ParameterList","parameters":[],"src":"7750:0:137"},"scope":25742,"src":"7658:489:137","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":25274,"nodeType":"Block","src":"8722:354:137","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":25235,"name":"bridgeMigrator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24769,"src":"8755:14:137","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":25237,"indexExpression":{"id":25236,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25222,"src":"8770:5:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8755:21:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":25240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8788:1:137","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":25239,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8780:7:137","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":25238,"name":"address","nodeType":"ElementaryTypeName","src":"8780:7:137","typeDescriptions":{}}},"id":25241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8780:10:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"8755:35:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4272696467654d6967726174696f6e526f757465723a206d69677261746f72206e6f742072656769737465726564","id":25243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8805:56:137","typeDescriptions":{"typeIdentifier":"t_stringliteral_732629ce63763751c929818a7bf243c02266763626fc4f1b03cc7520f01f646d","typeString":"literal_string \"PangolinBridgeMigrationRouter: migrator not registered\""},"value":"PangolinBridgeMigrationRouter: migrator not registered"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_732629ce63763751c929818a7bf243c02266763626fc4f1b03cc7520f01f646d","typeString":"literal_string \"PangolinBridgeMigrationRouter: migrator not registered\""}],"id":25234,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8733:7:137","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8733:139:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25245,"nodeType":"ExpressionStatement","src":"8733:139:137"},{"expression":{"arguments":[{"id":25249,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25222,"src":"8915:5:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":25250,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8922:3:137","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":25251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8922:10:137","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":25254,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8942:4:137","typeDescriptions":{"typeIdentifier":"t_contract$_PangolinBridgeMigrationRouter_$25742","typeString":"contract PangolinBridgeMigrationRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PangolinBridgeMigrationRouter_$25742","typeString":"contract PangolinBridgeMigrationRouter"}],"id":25253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8934:7:137","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":25252,"name":"address","nodeType":"ElementaryTypeName","src":"8934:7:137","typeDescriptions":{}}},"id":25255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8934:13:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25256,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25226,"src":"8949:6:137","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"}],"expression":{"id":25246,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24098,"src":"8883:14:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$24098_$","typeString":"type(library TransferHelper)"}},"id":25248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":24072,"src":"8883:31:137","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":25257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8883:73:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25258,"nodeType":"ExpressionStatement","src":"8883:73:137"},{"expression":{"arguments":[{"id":25260,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25222,"src":"8981:5:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25261,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25226,"src":"8988:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":25259,"name":"_migrateToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25219,"src":"8967:13:137","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":25262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8967:28:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25263,"nodeType":"ExpressionStatement","src":"8967:28:137"},{"expression":{"arguments":[{"baseExpression":{"id":25267,"name":"bridgeMigrator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24769,"src":"9034:14:137","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":25269,"indexExpression":{"id":25268,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25222,"src":"9049:5:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9034:21:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25270,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25224,"src":"9057:2:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25271,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25226,"src":"9061:6:137","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":25264,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24098,"src":"9006:14:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$24098_$","typeString":"type(library TransferHelper)"}},"id":25266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":24026,"src":"9006:27:137","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":25272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9006:62:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25273,"nodeType":"ExpressionStatement","src":"9006:62:137"}]},"documentation":{"id":25220,"nodeType":"StructuredDocumentation","src":"8155:415:137","text":" @notice Front facing function that migrates the token\n @dev This function includes important checks\n @param token The ERC20 token address that will be migrated\n @param to The address of who's receiving the token\n @param amount The amount of the token to be migrated\n @param deadline The deadline limit that should be met, otherwise revert to prevent front-run"},"functionSelector":"f057d237","id":25275,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":25231,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25228,"src":"8712:8:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":25232,"modifierName":{"id":25230,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24794,"src":"8705:6:137","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"8705:16:137"}],"name":"migrateToken","nodeType":"FunctionDefinition","parameters":{"id":25229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25222,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":25275,"src":"8608:13:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25221,"name":"address","nodeType":"ElementaryTypeName","src":"8608:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25224,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":25275,"src":"8632:10:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25223,"name":"address","nodeType":"ElementaryTypeName","src":"8632:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25226,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":25275,"src":"8653:11:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25225,"name":"uint","nodeType":"ElementaryTypeName","src":"8653:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":25228,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":25275,"src":"8675:13:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25227,"name":"uint","nodeType":"ElementaryTypeName","src":"8675:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8597:98:137"},"returnParameters":{"id":25233,"nodeType":"ParameterList","parameters":[],"src":"8722:0:137"},"scope":25742,"src":"8576:500:137","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":25322,"nodeType":"Block","src":"10009:251:137","statements":[{"expression":{"arguments":[{"expression":{"id":25302,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10060:3:137","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":25303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"10060:10:137","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":25306,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10080:4:137","typeDescriptions":{"typeIdentifier":"t_contract$_PangolinBridgeMigrationRouter_$25742","typeString":"contract PangolinBridgeMigrationRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PangolinBridgeMigrationRouter_$25742","typeString":"contract PangolinBridgeMigrationRouter"}],"id":25305,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10072:7:137","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":25304,"name":"address","nodeType":"ElementaryTypeName","src":"10072:7:137","typeDescriptions":{}}},"id":25307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10072:13:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25308,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25284,"src":"10087:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":25309,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25286,"src":"10095:8:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":25310,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25288,"src":"10105:1:137","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":25311,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25290,"src":"10108:1:137","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":25312,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25292,"src":"10111:1:137","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":25299,"name":"liquidityPairFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25278,"src":"10034:17:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25298,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"10020:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10020:32:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":22438,"src":"10020:39:137","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":25313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10020:93:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25314,"nodeType":"ExpressionStatement","src":"10020:93:137"},{"expression":{"arguments":[{"id":25316,"name":"liquidityPairFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25278,"src":"10156:17:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25317,"name":"liquidityPairTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25280,"src":"10188:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25282,"src":"10218:2:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25319,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25284,"src":"10235:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":25315,"name":"_migrateLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25562,"src":"10124:17:137","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":25320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10124:128:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25321,"nodeType":"ExpressionStatement","src":"10124:128:137"}]},"documentation":{"id":25276,"nodeType":"StructuredDocumentation","src":"9084:673:137","text":" @notice Front facing function that migrates the liquidity, with permit\n @param liquidityPairFrom The pair address to be migrated from\n @param liquidityPairTo The pair address to be migrated to\n @param to The address that will receive the liquidity and the charge backs\n @param amount The amount of token liquidityPairFrom that will be migrated\n @param deadline The deadline limit that should be met, otherwise revert to prevent front-run\n @param v by passing param for the permit validation\n @param r by passing param for the permit validation\n @param s by passing param for the permit validation"},"functionSelector":"b032fff7","id":25323,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":25295,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25286,"src":"9999:8:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":25296,"modifierName":{"id":25294,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24794,"src":"9992:6:137","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"9992:16:137"}],"name":"migrateLiquidityWithPermit","nodeType":"FunctionDefinition","parameters":{"id":25293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25278,"mutability":"mutable","name":"liquidityPairFrom","nodeType":"VariableDeclaration","scope":25323,"src":"9809:25:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25277,"name":"address","nodeType":"ElementaryTypeName","src":"9809:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25280,"mutability":"mutable","name":"liquidityPairTo","nodeType":"VariableDeclaration","scope":25323,"src":"9845:23:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25279,"name":"address","nodeType":"ElementaryTypeName","src":"9845:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25282,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":25323,"src":"9879:10:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25281,"name":"address","nodeType":"ElementaryTypeName","src":"9879:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25284,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":25323,"src":"9900:11:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25283,"name":"uint","nodeType":"ElementaryTypeName","src":"9900:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":25286,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":25323,"src":"9922:13:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25285,"name":"uint","nodeType":"ElementaryTypeName","src":"9922:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":25288,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":25323,"src":"9946:7:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":25287,"name":"uint8","nodeType":"ElementaryTypeName","src":"9946:5:137","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":25290,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":25323,"src":"9955:9:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":25289,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9955:7:137","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":25292,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":25323,"src":"9966:9:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":25291,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9966:7:137","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9798:184:137"},"returnParameters":{"id":25297,"nodeType":"ParameterList","parameters":[],"src":"10009:0:137"},"scope":25742,"src":"9763:497:137","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":25347,"nodeType":"Block","src":"11033:147:137","statements":[{"expression":{"arguments":[{"id":25341,"name":"liquidityPairFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25326,"src":"11076:17:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25342,"name":"liquidityPairTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25328,"src":"11108:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25343,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25330,"src":"11138:2:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25344,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25332,"src":"11155:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":25340,"name":"_migrateLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25562,"src":"11044:17:137","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":25345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11044:128:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25346,"nodeType":"ExpressionStatement","src":"11044:128:137"}]},"documentation":{"id":25324,"nodeType":"StructuredDocumentation","src":"10268:563:137","text":" @notice Front facing function that migrates the liquidity\n @dev This function assumes sender already gave approval to move the assets\n @param liquidityPairFrom The pair address to be migrated from\n @param liquidityPairTo The pair address to be migrated to\n @param to The address that will receive the liquidity and the charge backs\n @param amount The amount of token liquidityPairFrom that will be migrated\n @param deadline The deadline limit that should be met, otherwise revert to prevent front-run"},"functionSelector":"495952f5","id":25348,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":25337,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25334,"src":"11023:8:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":25338,"modifierName":{"id":25336,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24794,"src":"11016:6:137","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"11016:16:137"}],"name":"migrateLiquidity","nodeType":"FunctionDefinition","parameters":{"id":25335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25326,"mutability":"mutable","name":"liquidityPairFrom","nodeType":"VariableDeclaration","scope":25348,"src":"10873:25:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25325,"name":"address","nodeType":"ElementaryTypeName","src":"10873:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25328,"mutability":"mutable","name":"liquidityPairTo","nodeType":"VariableDeclaration","scope":25348,"src":"10909:23:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25327,"name":"address","nodeType":"ElementaryTypeName","src":"10909:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25330,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":25348,"src":"10943:10:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25329,"name":"address","nodeType":"ElementaryTypeName","src":"10943:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25332,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":25348,"src":"10964:11:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25331,"name":"uint","nodeType":"ElementaryTypeName","src":"10964:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":25334,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":25348,"src":"10986:13:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25333,"name":"uint","nodeType":"ElementaryTypeName","src":"10986:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10862:144:137"},"returnParameters":{"id":25339,"nodeType":"ParameterList","parameters":[],"src":"11033:0:137"},"scope":25742,"src":"10837:343:137","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":25561,"nodeType":"Block","src":"11824:2156:137","statements":[{"expression":{"arguments":[{"id":25361,"name":"liquidityPairFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25351,"src":"11855:17:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25362,"name":"liquidityPairTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25353,"src":"11874:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":25360,"name":"_arePairsCompatible","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25173,"src":"11835:19:137","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) view"}},"id":25363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11835:55:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25364,"nodeType":"ExpressionStatement","src":"11835:55:137"},{"assignments":[25366],"declarations":[{"constant":false,"id":25366,"mutability":"mutable","name":"tokenToMigrate","nodeType":"VariableDeclaration","scope":25561,"src":"11901:22:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25365,"name":"address","nodeType":"ElementaryTypeName","src":"11901:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":25372,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25368,"name":"liquidityPairFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25351,"src":"11940:17:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25367,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"11926:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11926:32:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":22491,"src":"11926:39:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11926:41:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11901:66:137"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":25395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25374,"name":"liquidityPairFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25351,"src":"12010:17:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25373,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"11996:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11996:32:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":22491,"src":"11996:39:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11996:41:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25379,"name":"liquidityPairTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25353,"src":"12055:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25378,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"12041:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12041:30:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":22491,"src":"12041:37:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12041:39:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11996:84:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25385,"name":"liquidityPairFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25351,"src":"12111:17:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25384,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"12097:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12097:32:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":22491,"src":"12097:39:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12097:41:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25390,"name":"liquidityPairTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25353,"src":"12156:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25389,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"12142:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12142:30:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":22496,"src":"12142:37:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12142:39:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12097:84:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11996:185:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25405,"nodeType":"IfStatement","src":"11978:300:137","trueBody":{"id":25404,"nodeType":"Block","src":"12193:85:137","statements":[{"expression":{"id":25402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25396,"name":"tokenToMigrate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25366,"src":"12208:14:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25398,"name":"liquidityPairFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25351,"src":"12239:17:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25397,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"12225:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12225:32:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":22496,"src":"12225:39:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12225:41:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12208:58:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":25403,"nodeType":"ExpressionStatement","src":"12208:58:137"}]}},{"assignments":[25407],"declarations":[{"constant":false,"id":25407,"mutability":"mutable","name":"newTokenAddress","nodeType":"VariableDeclaration","scope":25561,"src":"12288:23:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25406,"name":"address","nodeType":"ElementaryTypeName","src":"12288:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":25411,"initialValue":{"baseExpression":{"id":25408,"name":"bridgeMigrator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24769,"src":"12314:14:137","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":25410,"indexExpression":{"id":25409,"name":"tokenToMigrate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25366,"src":"12329:14:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12314:30:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12288:56:137"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25413,"name":"newTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25407,"src":"12377:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":25416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12404:1:137","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":25415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12396:7:137","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":25414,"name":"address","nodeType":"ElementaryTypeName","src":"12396:7:137","typeDescriptions":{}}},"id":25417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12396:10:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"12377:29:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4272696467654d6967726174696f6e526f757465723a204d69677261746f72206e6f74207265676973746572656420666f72207468652070616972","id":25419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12421:69:137","typeDescriptions":{"typeIdentifier":"t_stringliteral_846f0db2f24ab95f743b51e44cae6876f0e3f6d33a3d7dccda7f3245723df894","typeString":"literal_string \"PangolinBridgeMigrationRouter: Migrator not registered for the pair\""},"value":"PangolinBridgeMigrationRouter: Migrator not registered for the pair"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_846f0db2f24ab95f743b51e44cae6876f0e3f6d33a3d7dccda7f3245723df894","typeString":"literal_string \"PangolinBridgeMigrationRouter: Migrator not registered for the pair\""}],"id":25412,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12355:7:137","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12355:146:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25421,"nodeType":"ExpressionStatement","src":"12355:146:137"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":25437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25423,"name":"newTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25407,"src":"12534:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25425,"name":"liquidityPairTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25353,"src":"12567:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25424,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"12553:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12553:30:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":22491,"src":"12553:37:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12553:39:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12534:58:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25430,"name":"newTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25407,"src":"12609:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25432,"name":"liquidityPairTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25353,"src":"12642:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25431,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"12628:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12628:30:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":22496,"src":"12628:37:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12628:39:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12609:58:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12534:133:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4272696467654d6967726174696f6e526f757465723a205061697220646f65736e2774206d6174636820746865206d6967726174696f6e20746f6b656e","id":25438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12682:71:137","typeDescriptions":{"typeIdentifier":"t_stringliteral_11c87d1bed35c6ac1e1b15fa64a9453f72be39251c066fc057b73894eb877a92","typeString":"literal_string \"PangolinBridgeMigrationRouter: Pair doesn't match the migration token\""},"value":"PangolinBridgeMigrationRouter: Pair doesn't match the migration token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_11c87d1bed35c6ac1e1b15fa64a9453f72be39251c066fc057b73894eb877a92","typeString":"literal_string \"PangolinBridgeMigrationRouter: Pair doesn't match the migration token\""}],"id":25422,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12512:7:137","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12512:252:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25440,"nodeType":"ExpressionStatement","src":"12512:252:137"},{"assignments":[25442,25444],"declarations":[{"constant":false,"id":25442,"mutability":"mutable","name":"amountTokenA","nodeType":"VariableDeclaration","scope":25561,"src":"12778:17:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25441,"name":"uint","nodeType":"ElementaryTypeName","src":"12778:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":25444,"mutability":"mutable","name":"amountTokenB","nodeType":"VariableDeclaration","scope":25561,"src":"12797:17:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25443,"name":"uint","nodeType":"ElementaryTypeName","src":"12797:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":25449,"initialValue":{"arguments":[{"id":25446,"name":"liquidityPairFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25351,"src":"12835:17:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25447,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25357,"src":"12854:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":25445,"name":"_rescueLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25086,"src":"12818:16:137","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256) returns (uint256,uint256)"}},"id":25448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12818:43:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"12777:84:137"},{"id":25472,"nodeType":"Block","src":"12872:258:137","statements":[{"assignments":[25451],"declarations":[{"constant":false,"id":25451,"mutability":"mutable","name":"amountToSwap","nodeType":"VariableDeclaration","scope":25472,"src":"12887:17:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25450,"name":"uint","nodeType":"ElementaryTypeName","src":"12887:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":25453,"initialValue":{"id":25452,"name":"amountTokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25442,"src":"12907:12:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12887:32:137"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25454,"name":"tokenToMigrate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25366,"src":"12938:14:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25456,"name":"liquidityPairFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25351,"src":"12970:17:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25455,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"12956:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12956:32:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":22491,"src":"12956:39:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12956:41:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12938:59:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25466,"nodeType":"IfStatement","src":"12934:127:137","trueBody":{"id":25465,"nodeType":"Block","src":"12999:62:137","statements":[{"expression":{"id":25463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25461,"name":"amountToSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25451,"src":"13018:12:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":25462,"name":"amountTokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25444,"src":"13033:12:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13018:27:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25464,"nodeType":"ExpressionStatement","src":"13018:27:137"}]}},{"expression":{"arguments":[{"id":25468,"name":"tokenToMigrate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25366,"src":"13089:14:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25469,"name":"amountToSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25451,"src":"13105:12:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":25467,"name":"_migrateToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25219,"src":"13075:13:137","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":25470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13075:43:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25471,"nodeType":"ExpressionStatement","src":"13075:43:137"}]},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":25495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25474,"name":"liquidityPairFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25351,"src":"13158:17:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25473,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"13144:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13144:32:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":22491,"src":"13144:39:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13144:41:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25479,"name":"liquidityPairTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25353,"src":"13203:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25478,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"13189:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13189:30:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":22491,"src":"13189:37:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13189:39:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13144:84:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25485,"name":"liquidityPairFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25351,"src":"13259:17:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25484,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"13245:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13245:32:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":22496,"src":"13245:39:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13245:41:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25490,"name":"liquidityPairTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25353,"src":"13304:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25489,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"13290:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13290:30:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":22496,"src":"13290:37:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13290:39:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13245:84:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13144:185:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25505,"nodeType":"IfStatement","src":"13140:287:137","trueBody":{"id":25504,"nodeType":"Block","src":"13341:86:137","statements":[{"expression":{"id":25502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":25496,"name":"amountTokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25442,"src":"13357:12:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":25497,"name":"amountTokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25444,"src":"13371:12:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":25498,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13356:28:137","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":25499,"name":"amountTokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25444,"src":"13388:12:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":25500,"name":"amountTokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25442,"src":"13402:12:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":25501,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13387:28:137","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"13356:59:137","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25503,"nodeType":"ExpressionStatement","src":"13356:59:137"}]}},{"assignments":[25507,25509,null],"declarations":[{"constant":false,"id":25507,"mutability":"mutable","name":"changeAmount0","nodeType":"VariableDeclaration","scope":25561,"src":"13440:18:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25506,"name":"uint","nodeType":"ElementaryTypeName","src":"13440:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":25509,"mutability":"mutable","name":"changeAmount1","nodeType":"VariableDeclaration","scope":25561,"src":"13460:18:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25508,"name":"uint","nodeType":"ElementaryTypeName","src":"13460:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":25526,"initialValue":{"arguments":[{"id":25511,"name":"liquidityPairTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25353,"src":"13512:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25513,"name":"liquidityPairTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25353,"src":"13556:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25512,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"13542:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13542:30:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":22491,"src":"13542:37:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13542:39:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25518,"name":"liquidityPairTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25353,"src":"13597:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25517,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"13583:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13583:30:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":22496,"src":"13583:37:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13583:39:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25522,"name":"amountTokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25442,"src":"13637:12:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":25523,"name":"amountTokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25444,"src":"13651:12:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":25524,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25355,"src":"13665:2:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":25510,"name":"_addLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25049,"src":"13484:13:137","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (address,address,address,uint256,uint256,address) returns (uint256,uint256,uint256)"}},"id":25525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13484:194:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"13439:239:137"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25527,"name":"changeAmount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25507,"src":"13693:13:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":25528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13709:1:137","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13693:17:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25543,"nodeType":"IfStatement","src":"13689:137:137","trueBody":{"id":25542,"nodeType":"Block","src":"13712:114:137","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25534,"name":"liquidityPairTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25353,"src":"13769:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25533,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"13755:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13755:30:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":22491,"src":"13755:37:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13755:39:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25538,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25355,"src":"13796:2:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25539,"name":"changeAmount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25507,"src":"13800:13:137","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":25530,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24098,"src":"13727:14:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$24098_$","typeString":"type(library TransferHelper)"}},"id":25532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":24026,"src":"13727:27:137","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":25540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13727:87:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25541,"nodeType":"ExpressionStatement","src":"13727:87:137"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25544,"name":"changeAmount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25509,"src":"13840:13:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":25545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13856:1:137","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13840:17:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25560,"nodeType":"IfStatement","src":"13836:137:137","trueBody":{"id":25559,"nodeType":"Block","src":"13859:114:137","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25551,"name":"liquidityPairTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25353,"src":"13916:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25550,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"13902:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13902:30:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":22496,"src":"13902:37:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13902:39:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25555,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25355,"src":"13943:2:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25556,"name":"changeAmount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25509,"src":"13947:13:137","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":25547,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24098,"src":"13874:14:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$24098_$","typeString":"type(library TransferHelper)"}},"id":25549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":24026,"src":"13874:27:137","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":25557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13874:87:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25558,"nodeType":"ExpressionStatement","src":"13874:87:137"}]}}]},"documentation":{"id":25349,"nodeType":"StructuredDocumentation","src":"11188:474:137","text":" @notice This was extracted into a internal method to use with both migrateLiquidity and with permit\n @dev This function includes important checks\n @param liquidityPairFrom The pair address to be migrated from\n @param liquidityPairTo The pair address to be migrated to\n @param to The address that will receive the liquidity and the charge backs\n @param amount The amount of token liquidityPairFrom that will be migrated"},"id":25562,"implemented":true,"kind":"function","modifiers":[],"name":"_migrateLiquidity","nodeType":"FunctionDefinition","parameters":{"id":25358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25351,"mutability":"mutable","name":"liquidityPairFrom","nodeType":"VariableDeclaration","scope":25562,"src":"11705:25:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25350,"name":"address","nodeType":"ElementaryTypeName","src":"11705:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25353,"mutability":"mutable","name":"liquidityPairTo","nodeType":"VariableDeclaration","scope":25562,"src":"11741:23:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25352,"name":"address","nodeType":"ElementaryTypeName","src":"11741:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25355,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":25562,"src":"11775:10:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25354,"name":"address","nodeType":"ElementaryTypeName","src":"11775:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25357,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":25562,"src":"11796:11:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25356,"name":"uint","nodeType":"ElementaryTypeName","src":"11796:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11694:120:137"},"returnParameters":{"id":25359,"nodeType":"ParameterList","parameters":[],"src":"11824:0:137"},"scope":25742,"src":"11668:2312:137","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":25610,"nodeType":"Block","src":"14658:284:137","statements":[{"assignments":[25575,25577,null],"declarations":[{"constant":false,"id":25575,"mutability":"mutable","name":"reserves0","nodeType":"VariableDeclaration","scope":25610,"src":"14670:17:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":25574,"name":"uint112","nodeType":"ElementaryTypeName","src":"14670:7:137","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},{"constant":false,"id":25577,"mutability":"mutable","name":"reserves1","nodeType":"VariableDeclaration","scope":25610,"src":"14689:17:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":25576,"name":"uint112","nodeType":"ElementaryTypeName","src":"14689:7:137","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},null],"id":25583,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25579,"name":"pairAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25565,"src":"14726:11:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25578,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"14712:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14712:26:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getReserves","nodeType":"MemberAccess","referencedDeclaration":22505,"src":"14712:38:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"function () view external returns (uint112,uint112,uint32)"}},"id":25582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14712:40:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"tuple(uint112,uint112,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"14669:83:137"},{"assignments":[25585],"declarations":[{"constant":false,"id":25585,"mutability":"mutable","name":"totalSupply","nodeType":"VariableDeclaration","scope":25610,"src":"14763:16:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25584,"name":"uint","nodeType":"ElementaryTypeName","src":"14763:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":25591,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25587,"name":"pairAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25565,"src":"14796:11:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25586,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"14782:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14782:26:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":22359,"src":"14782:38:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":25590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14782:40:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14763:59:137"},{"expression":{"id":25599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25592,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25570,"src":"14833:7:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":25595,"name":"reserves0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25575,"src":"14854:9:137","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"expression":{"id":25593,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25567,"src":"14843:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":26394,"src":"14843:10:137","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":25596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14843:21:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":25597,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25585,"src":"14867:11:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14843:35:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14833:45:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25600,"nodeType":"ExpressionStatement","src":"14833:45:137"},{"expression":{"id":25608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25601,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25572,"src":"14889:7:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":25604,"name":"reserves1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25577,"src":"14910:9:137","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"expression":{"id":25602,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25567,"src":"14899:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":26394,"src":"14899:10:137","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":25605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14899:21:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":25606,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25585,"src":"14923:11:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14899:35:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14889:45:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25609,"nodeType":"ExpressionStatement","src":"14889:45:137"}]},"documentation":{"id":25563,"nodeType":"StructuredDocumentation","src":"13988:544:137","text":" @notice Internal function that simulates the amount received from the liquidity burn\n @dev This function is a support function that can be used by the front-end to show possible charge back\n @param pairAddress The pair address that will be burned(simulated)\n @param amount The amount of the liquidity token to be burned(simulated)\n @return amount0 Amounts of token0 acquired from burning the pairAddress token\n @return amount1 Amounts of token1 acquired from burning the pairAddress token"},"id":25611,"implemented":true,"kind":"function","modifiers":[],"name":"_calculateRescueLiquidity","nodeType":"FunctionDefinition","parameters":{"id":25568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25565,"mutability":"mutable","name":"pairAddress","nodeType":"VariableDeclaration","scope":25611,"src":"14573:19:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25564,"name":"address","nodeType":"ElementaryTypeName","src":"14573:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25567,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":25611,"src":"14594:11:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25566,"name":"uint","nodeType":"ElementaryTypeName","src":"14594:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14572:34:137"},"returnParameters":{"id":25573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25570,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":25611,"src":"14630:12:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25569,"name":"uint","nodeType":"ElementaryTypeName","src":"14630:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":25572,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":25611,"src":"14644:12:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25571,"name":"uint","nodeType":"ElementaryTypeName","src":"14644:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14629:28:137"},"scope":25742,"src":"14538:404:137","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":25740,"nodeType":"Block","src":"15734:1080:137","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25626,"name":"liquidityPairFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25614,"src":"15753:17:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":25629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15782:1:137","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":25628,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15774:7:137","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":25627,"name":"address","nodeType":"ElementaryTypeName","src":"15774:7:137","typeDescriptions":{}}},"id":25630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15774:10:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"15753:31:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4272696467654d6967726174696f6e526f757465723a206c69717569646974795061697246726f6d20616464726573732030206e6f7420737570706f72746564","id":25632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15786:74:137","typeDescriptions":{"typeIdentifier":"t_stringliteral_b19e99d33824fccc32d30befdac536cc56915619f85a8f7d919825979031569c","typeString":"literal_string \"PangolinBridgeMigrationRouter: liquidityPairFrom address 0 not supported\""},"value":"PangolinBridgeMigrationRouter: liquidityPairFrom address 0 not supported"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b19e99d33824fccc32d30befdac536cc56915619f85a8f7d919825979031569c","typeString":"literal_string \"PangolinBridgeMigrationRouter: liquidityPairFrom address 0 not supported\""}],"id":25625,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"15745:7:137","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15745:116:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25634,"nodeType":"ExpressionStatement","src":"15745:116:137"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25636,"name":"liquidityPairTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25616,"src":"15880:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":25639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15907:1:137","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":25638,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15899:7:137","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":25637,"name":"address","nodeType":"ElementaryTypeName","src":"15899:7:137","typeDescriptions":{}}},"id":25640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15899:10:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"15880:29:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4272696467654d6967726174696f6e526f757465723a206c697175696469747950616972546f20616464726573732030206e6f7420737570706f72746564","id":25642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15911:72:137","typeDescriptions":{"typeIdentifier":"t_stringliteral_2b2f2a10ec71331f02d242d3ab59a6240e55632665e3d300080e7fd80e28f744","typeString":"literal_string \"PangolinBridgeMigrationRouter: liquidityPairTo address 0 not supported\""},"value":"PangolinBridgeMigrationRouter: liquidityPairTo address 0 not supported"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2b2f2a10ec71331f02d242d3ab59a6240e55632665e3d300080e7fd80e28f744","typeString":"literal_string \"PangolinBridgeMigrationRouter: liquidityPairTo address 0 not supported\""}],"id":25635,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"15872:7:137","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15872:112:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25644,"nodeType":"ExpressionStatement","src":"15872:112:137"},{"assignments":[25646,25648],"declarations":[{"constant":false,"id":25646,"mutability":"mutable","name":"amountIn0","nodeType":"VariableDeclaration","scope":25740,"src":"15996:14:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25645,"name":"uint","nodeType":"ElementaryTypeName","src":"15996:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":25648,"mutability":"mutable","name":"amountIn1","nodeType":"VariableDeclaration","scope":25740,"src":"16012:14:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25647,"name":"uint","nodeType":"ElementaryTypeName","src":"16012:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":25653,"initialValue":{"arguments":[{"id":25650,"name":"liquidityPairFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25614,"src":"16056:17:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25651,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25618,"src":"16075:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":25649,"name":"_calculateRescueLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25611,"src":"16030:25:137","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256) view returns (uint256,uint256)"}},"id":25652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16030:52:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"15995:87:137"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":25676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25655,"name":"liquidityPairFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25614,"src":"16111:17:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25654,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"16097:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16097:32:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":22491,"src":"16097:39:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16097:41:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25660,"name":"liquidityPairTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25616,"src":"16156:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25659,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"16142:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16142:30:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":22491,"src":"16142:37:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16142:39:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16097:84:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25666,"name":"liquidityPairFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25614,"src":"16212:17:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25665,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"16198:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16198:32:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":22496,"src":"16198:39:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16198:41:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25671,"name":"liquidityPairTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25616,"src":"16257:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25670,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"16243:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16243:30:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":22496,"src":"16243:37:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":25674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16243:39:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16198:84:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16097:185:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25686,"nodeType":"IfStatement","src":"16093:275:137","trueBody":{"id":25685,"nodeType":"Block","src":"16294:74:137","statements":[{"expression":{"id":25683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":25677,"name":"amountIn0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25646,"src":"16310:9:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":25678,"name":"amountIn1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25648,"src":"16321:9:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":25679,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"16309:22:137","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":25680,"name":"amountIn1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25648,"src":"16335:9:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":25681,"name":"amountIn0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25646,"src":"16346:9:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":25682,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16334:22:137","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"16309:47:137","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25684,"nodeType":"ExpressionStatement","src":"16309:47:137"}]}},{"assignments":[25688,25690,null],"declarations":[{"constant":false,"id":25688,"mutability":"mutable","name":"reserve0","nodeType":"VariableDeclaration","scope":25740,"src":"16379:16:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":25687,"name":"uint112","nodeType":"ElementaryTypeName","src":"16379:7:137","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},{"constant":false,"id":25690,"mutability":"mutable","name":"reserve1","nodeType":"VariableDeclaration","scope":25740,"src":"16397:16:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":25689,"name":"uint112","nodeType":"ElementaryTypeName","src":"16397:7:137","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},null],"id":25696,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25692,"name":"liquidityPairTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25616,"src":"16432:15:137","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25691,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"16418:13:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16418:30:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getReserves","nodeType":"MemberAccess","referencedDeclaration":22505,"src":"16418:42:137","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"function () view external returns (uint112,uint112,uint32)"}},"id":25695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16418:44:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"tuple(uint112,uint112,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"16378:84:137"},{"assignments":[25698],"declarations":[{"constant":false,"id":25698,"mutability":"mutable","name":"quote0","nodeType":"VariableDeclaration","scope":25740,"src":"16473:11:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25697,"name":"uint","nodeType":"ElementaryTypeName","src":"16473:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":25700,"initialValue":{"id":25699,"name":"amountIn0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25646,"src":"16487:9:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16473:23:137"},{"assignments":[25702],"declarations":[{"constant":false,"id":25702,"mutability":"mutable","name":"quote1","nodeType":"VariableDeclaration","scope":25740,"src":"16507:11:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25701,"name":"uint","nodeType":"ElementaryTypeName","src":"16507:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":25709,"initialValue":{"arguments":[{"id":25705,"name":"amountIn0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25646,"src":"16543:9:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":25706,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25688,"src":"16554:8:137","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},{"id":25707,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25690,"src":"16564:8:137","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint112","typeString":"uint112"},{"typeIdentifier":"t_uint112","typeString":"uint112"}],"expression":{"id":25703,"name":"PangolinLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26235,"src":"16521:15:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PangolinLibrary_$26235_$","typeString":"type(library PangolinLibrary)"}},"id":25704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":25948,"src":"16521:21:137","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":25708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16521:52:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16507:66:137"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25710,"name":"quote1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25702,"src":"16588:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":25711,"name":"amountIn1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25648,"src":"16597:9:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16588:18:137","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25727,"nodeType":"IfStatement","src":"16584:145:137","trueBody":{"id":25726,"nodeType":"Block","src":"16608:121:137","statements":[{"expression":{"id":25715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25713,"name":"quote1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25702,"src":"16623:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":25714,"name":"amountIn1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25648,"src":"16632:9:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16623:18:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25716,"nodeType":"ExpressionStatement","src":"16623:18:137"},{"expression":{"id":25724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25717,"name":"quote0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25698,"src":"16656:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":25720,"name":"amountIn1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25648,"src":"16687:9:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":25721,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25690,"src":"16698:8:137","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},{"id":25722,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25688,"src":"16708:8:137","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint112","typeString":"uint112"},{"typeIdentifier":"t_uint112","typeString":"uint112"}],"expression":{"id":25718,"name":"PangolinLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26235,"src":"16665:15:137","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PangolinLibrary_$26235_$","typeString":"type(library PangolinLibrary)"}},"id":25719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":25948,"src":"16665:21:137","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":25723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16665:52:137","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16656:61:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25725,"nodeType":"ExpressionStatement","src":"16656:61:137"}]}},{"expression":{"id":25732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25728,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25621,"src":"16739:7:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25729,"name":"amountIn0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25646,"src":"16749:9:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":25730,"name":"quote0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25698,"src":"16761:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16749:18:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16739:28:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25733,"nodeType":"ExpressionStatement","src":"16739:28:137"},{"expression":{"id":25738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25734,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25623,"src":"16778:7:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25735,"name":"amountIn1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25648,"src":"16788:9:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":25736,"name":"quote1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25702,"src":"16800:6:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16788:18:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16778:28:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25739,"nodeType":"ExpressionStatement","src":"16778:28:137"}]},"documentation":{"id":25612,"nodeType":"StructuredDocumentation","src":"14950:599:137","text":" @notice Front facing function that computes the possible charge back from the migration\n @dev No need to be extra careful as this is only a view function\n @param liquidityPairFrom The pair address that will be migrated from(simulated)\n @param liquidityPairTo The pair address that will be migrated to(simulated)\n @param amount The amount of the liquidity token to be migrated(simulated)\n @return amount0 Amount of token0 will be charged back after the migration\n @return amount1 Amount of token1 will be charged back after the migration"},"functionSelector":"99a0df82","id":25741,"implemented":true,"kind":"function","modifiers":[],"name":"calculateChargeBack","nodeType":"FunctionDefinition","parameters":{"id":25619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25614,"mutability":"mutable","name":"liquidityPairFrom","nodeType":"VariableDeclaration","scope":25741,"src":"15594:25:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25613,"name":"address","nodeType":"ElementaryTypeName","src":"15594:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25616,"mutability":"mutable","name":"liquidityPairTo","nodeType":"VariableDeclaration","scope":25741,"src":"15630:23:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25615,"name":"address","nodeType":"ElementaryTypeName","src":"15630:7:137","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25618,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":25741,"src":"15664:11:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25617,"name":"uint","nodeType":"ElementaryTypeName","src":"15664:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15583:99:137"},"returnParameters":{"id":25624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25621,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":25741,"src":"15706:12:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25620,"name":"uint","nodeType":"ElementaryTypeName","src":"15706:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":25623,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":25741,"src":"15720:12:137","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25622,"name":"uint","nodeType":"ElementaryTypeName","src":"15720:4:137","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15705:28:137"},"scope":25742,"src":"15555:1259:137","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":25743,"src":"260:16559:137"}],"src":"0:16819:137"},"id":137},"contracts/pangolin-periphery/interfaces/IBridgeToken.sol":{"ast":{"absolutePath":"contracts/pangolin-periphery/interfaces/IBridgeToken.sol","exportedSymbols":{"IBridgeToken":[25762],"IPangolinERC20":[22258]},"id":25763,"nodeType":"SourceUnit","nodes":[{"id":25744,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"0:24:138"},{"absolutePath":"contracts/pangolin-core/interfaces/IPangolinERC20.sol","file":"../../pangolin-core/interfaces/IPangolinERC20.sol","id":25745,"nodeType":"ImportDirective","scope":25763,"sourceUnit":22259,"src":"28:59:138","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":25746,"name":"IPangolinERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":22258,"src":"117:14:138","typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinERC20_$22258","typeString":"contract IPangolinERC20"}},"id":25747,"nodeType":"InheritanceSpecifier","src":"117:14:138"}],"contractDependencies":[22258],"contractKind":"interface","fullyImplemented":false,"id":25762,"linearizedBaseContracts":[25762,22258],"name":"IBridgeToken","nodeType":"ContractDefinition","nodes":[{"functionSelector":"d004f0f7","id":25754,"implemented":false,"kind":"function","modifiers":[],"name":"swap","nodeType":"FunctionDefinition","parameters":{"id":25752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25749,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":25754,"src":"153:13:138","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25748,"name":"address","nodeType":"ElementaryTypeName","src":"153:7:138","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25751,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":25754,"src":"168:14:138","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25750,"name":"uint256","nodeType":"ElementaryTypeName","src":"168:7:138","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"152:31:138"},"returnParameters":{"id":25753,"nodeType":"ParameterList","parameters":[],"src":"192:0:138"},"scope":25762,"src":"139:54:138","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ab32dbb7","id":25761,"implemented":false,"kind":"function","modifiers":[],"name":"swapSupply","nodeType":"FunctionDefinition","parameters":{"id":25757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25756,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":25761,"src":"219:13:138","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25755,"name":"address","nodeType":"ElementaryTypeName","src":"219:7:138","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"218:15:138"},"returnParameters":{"id":25760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25759,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":25761,"src":"257:7:138","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25758,"name":"uint256","nodeType":"ElementaryTypeName","src":"257:7:138","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"256:9:138"},"scope":25762,"src":"199:67:138","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":25763,"src":"91:178:138"}],"src":"0:269:138"},"id":138},"contracts/pangolin-periphery/libraries/PangolinLibrary.sol":{"ast":{"absolutePath":"contracts/pangolin-periphery/libraries/PangolinLibrary.sol","exportedSymbols":{"IPangolinFactory":[22321],"IPangolinPair":[22563],"PangolinLibrary":[26235],"SafeMath":[26395]},"id":26236,"nodeType":"SourceUnit","nodes":[{"id":25764,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"0:24:139"},{"absolutePath":"contracts/pangolin-core/interfaces/IPangolinFactory.sol","file":"../../pangolin-core/interfaces/IPangolinFactory.sol","id":25765,"nodeType":"ImportDirective","scope":26236,"sourceUnit":22322,"src":"28:61:139","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/pangolin-core/interfaces/IPangolinPair.sol","file":"../../pangolin-core/interfaces/IPangolinPair.sol","id":25766,"nodeType":"ImportDirective","scope":26236,"sourceUnit":22564,"src":"91:58:139","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/pangolin-periphery/libraries/SafeMath.sol","file":"./SafeMath.sol","id":25767,"nodeType":"ImportDirective","scope":26236,"sourceUnit":26396,"src":"153:24:139","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":26235,"linearizedBaseContracts":[26235],"name":"PangolinLibrary","nodeType":"ContractDefinition","nodes":[{"id":25770,"libraryName":{"id":25768,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":26395,"src":"218:8:139","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$26395","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"212:24:139","typeName":{"id":25769,"name":"uint","nodeType":"ElementaryTypeName","src":"231:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"body":{"id":25813,"nodeType":"Block","src":"452:240:139","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25782,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25772,"src":"471:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":25783,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25774,"src":"481:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"471:16:139","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4c6962726172793a204944454e544943414c5f414444524553534553","id":25785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"489:38:139","typeDescriptions":{"typeIdentifier":"t_stringliteral_398cb0b74ea180decb6380ed1d1234dba257b88973fb0b09bea48e00976b9c15","typeString":"literal_string \"PangolinLibrary: IDENTICAL_ADDRESSES\""},"value":"PangolinLibrary: IDENTICAL_ADDRESSES"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_398cb0b74ea180decb6380ed1d1234dba257b88973fb0b09bea48e00976b9c15","typeString":"literal_string \"PangolinLibrary: IDENTICAL_ADDRESSES\""}],"id":25781,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"463:7:139","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"463:65:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25787,"nodeType":"ExpressionStatement","src":"463:65:139"},{"expression":{"id":25801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":25788,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25777,"src":"540:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25789,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25779,"src":"548:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":25790,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"539:16:139","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25791,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25772,"src":"558:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":25792,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25774,"src":"567:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"558:15:139","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"id":25797,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25774,"src":"596:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25798,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25772,"src":"604:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":25799,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"595:16:139","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"id":25800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"558:53:139","trueExpression":{"components":[{"id":25794,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25772,"src":"577:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25795,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25774,"src":"585:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":25796,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"576:16:139","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"src":"539:72:139","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25802,"nodeType":"ExpressionStatement","src":"539:72:139"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25804,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25777,"src":"630:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":25807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"648:1:139","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":25806,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"640:7:139","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":25805,"name":"address","nodeType":"ElementaryTypeName","src":"640:7:139","typeDescriptions":{}}},"id":25808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"640:10:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"630:20:139","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4c6962726172793a205a45524f5f41444452455353","id":25810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"652:31:139","typeDescriptions":{"typeIdentifier":"t_stringliteral_cde908b7df914eeaea2529a983aca522c8de9d2299aac9a3399e7fa2619393dc","typeString":"literal_string \"PangolinLibrary: ZERO_ADDRESS\""},"value":"PangolinLibrary: ZERO_ADDRESS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cde908b7df914eeaea2529a983aca522c8de9d2299aac9a3399e7fa2619393dc","typeString":"literal_string \"PangolinLibrary: ZERO_ADDRESS\""}],"id":25803,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"622:7:139","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"622:62:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25812,"nodeType":"ExpressionStatement","src":"622:62:139"}]},"id":25814,"implemented":true,"kind":"function","modifiers":[],"name":"sortTokens","nodeType":"FunctionDefinition","parameters":{"id":25775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25772,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":25814,"src":"365:14:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25771,"name":"address","nodeType":"ElementaryTypeName","src":"365:7:139","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25774,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":25814,"src":"381:14:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25773,"name":"address","nodeType":"ElementaryTypeName","src":"381:7:139","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"364:32:139"},"returnParameters":{"id":25780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25777,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":25814,"src":"420:14:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25776,"name":"address","nodeType":"ElementaryTypeName","src":"420:7:139","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25779,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":25814,"src":"436:14:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25778,"name":"address","nodeType":"ElementaryTypeName","src":"436:7:139","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"419:32:139"},"scope":26235,"src":"345:347:139","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":25858,"nodeType":"Block","src":"887:375:139","statements":[{"assignments":[25826,25828],"declarations":[{"constant":false,"id":25826,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":25858,"src":"899:14:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25825,"name":"address","nodeType":"ElementaryTypeName","src":"899:7:139","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25828,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":25858,"src":"915:14:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25827,"name":"address","nodeType":"ElementaryTypeName","src":"915:7:139","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":25833,"initialValue":{"arguments":[{"id":25830,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25818,"src":"944:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25831,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25820,"src":"952:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":25829,"name":"sortTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25814,"src":"933:10:139","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$","typeString":"function (address,address) pure returns (address,address)"}},"id":25832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"933:26:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"VariableDeclarationStatement","src":"898:61:139"},{"expression":{"id":25856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25834,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25823,"src":"970:4:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"ff","id":25842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"1035:7:139","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9","typeString":"literal_string hex\"ff\""}},{"id":25843,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25816,"src":"1061:7:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":25847,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25826,"src":"1114:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25848,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25828,"src":"1122:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":25845,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1097:3:139","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":25846,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1097:16:139","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":25849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1097:32:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":25844,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1087:9:139","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":25850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1087:43:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"40231f6b438bce0797c9ada29b718a87ea0a5cea3fe9a771abdd76bd41a3e545","id":25851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"1149:69:139","typeDescriptions":{"typeIdentifier":"t_stringliteral_ddb1e4875836598a4d8840045ea7355ab6d06b2915790dd9f7243b1e0d8dbc39","typeString":"literal_string hex\"40231f6b438bce0797c9ada29b718a87ea0a5cea3fe9a771abdd76bd41a3e545\""}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9","typeString":"literal_string hex\"ff\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_stringliteral_ddb1e4875836598a4d8840045ea7355ab6d06b2915790dd9f7243b1e0d8dbc39","typeString":"literal_string hex\"40231f6b438bce0797c9ada29b718a87ea0a5cea3fe9a771abdd76bd41a3e545\""}],"expression":{"id":25840,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1000:3:139","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":25841,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1000:16:139","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":25852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1000:251:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":25839,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"990:9:139","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":25853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"990:262:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":25838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"985:4:139","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":25837,"name":"uint","nodeType":"ElementaryTypeName","src":"985:4:139","typeDescriptions":{}}},"id":25854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"985:268:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":25836,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"977:7:139","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":25835,"name":"address","nodeType":"ElementaryTypeName","src":"977:7:139","typeDescriptions":{}}},"id":25855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"977:277:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"970:284:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":25857,"nodeType":"ExpressionStatement","src":"970:284:139"}]},"id":25859,"implemented":true,"kind":"function","modifiers":[],"name":"pairFor","nodeType":"FunctionDefinition","parameters":{"id":25821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25816,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":25859,"src":"801:15:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25815,"name":"address","nodeType":"ElementaryTypeName","src":"801:7:139","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25818,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":25859,"src":"818:14:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25817,"name":"address","nodeType":"ElementaryTypeName","src":"818:7:139","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25820,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":25859,"src":"834:14:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25819,"name":"address","nodeType":"ElementaryTypeName","src":"834:7:139","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"800:49:139"},"returnParameters":{"id":25824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25823,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","scope":25859,"src":"873:12:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25822,"name":"address","nodeType":"ElementaryTypeName","src":"873:7:139","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"872:14:139"},"scope":26235,"src":"784:478:139","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":25908,"nodeType":"Block","src":"1443:267:139","statements":[{"assignments":[25873,null],"declarations":[{"constant":false,"id":25873,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":25908,"src":"1455:14:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25872,"name":"address","nodeType":"ElementaryTypeName","src":"1455:7:139","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":25878,"initialValue":{"arguments":[{"id":25875,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25863,"src":"1485:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25876,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25865,"src":"1493:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":25874,"name":"sortTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25814,"src":"1474:10:139","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$","typeString":"function (address,address) pure returns (address,address)"}},"id":25877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1474:26:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"VariableDeclarationStatement","src":"1454:46:139"},{"assignments":[25880,25882,null],"declarations":[{"constant":false,"id":25880,"mutability":"mutable","name":"reserve0","nodeType":"VariableDeclaration","scope":25908,"src":"1512:13:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25879,"name":"uint","nodeType":"ElementaryTypeName","src":"1512:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":25882,"mutability":"mutable","name":"reserve1","nodeType":"VariableDeclaration","scope":25908,"src":"1527:13:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25881,"name":"uint","nodeType":"ElementaryTypeName","src":"1527:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":25892,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":25885,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25861,"src":"1567:7:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25886,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25863,"src":"1576:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25887,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25865,"src":"1584:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":25884,"name":"pairFor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25859,"src":"1559:7:139","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":25888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1559:32:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25883,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"1545:13:139","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":25889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1545:47:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":25890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getReserves","nodeType":"MemberAccess","referencedDeclaration":22505,"src":"1545:59:139","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"function () view external returns (uint112,uint112,uint32)"}},"id":25891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1545:61:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"tuple(uint112,uint112,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"1511:95:139"},{"expression":{"id":25906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":25893,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25868,"src":"1618:8:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":25894,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25870,"src":"1628:8:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":25895,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1617:20:139","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25896,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25863,"src":"1640:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":25897,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25873,"src":"1650:6:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1640:16:139","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"id":25902,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25882,"src":"1683:8:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":25903,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25880,"src":"1693:8:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":25904,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1682:20:139","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":25905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1640:62:139","trueExpression":{"components":[{"id":25899,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25880,"src":"1660:8:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":25900,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25882,"src":"1670:8:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":25901,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1659:20:139","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":"1617:85:139","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25907,"nodeType":"ExpressionStatement","src":"1617:85:139"}]},"id":25909,"implemented":true,"kind":"function","modifiers":[],"name":"getReserves","nodeType":"FunctionDefinition","parameters":{"id":25866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25861,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":25909,"src":"1341:15:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25860,"name":"address","nodeType":"ElementaryTypeName","src":"1341:7:139","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25863,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":25909,"src":"1358:14:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25862,"name":"address","nodeType":"ElementaryTypeName","src":"1358:7:139","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25865,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":25909,"src":"1374:14:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25864,"name":"address","nodeType":"ElementaryTypeName","src":"1374:7:139","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1340:49:139"},"returnParameters":{"id":25871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25868,"mutability":"mutable","name":"reserveA","nodeType":"VariableDeclaration","scope":25909,"src":"1413:13:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25867,"name":"uint","nodeType":"ElementaryTypeName","src":"1413:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":25870,"mutability":"mutable","name":"reserveB","nodeType":"VariableDeclaration","scope":25909,"src":"1428:13:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25869,"name":"uint","nodeType":"ElementaryTypeName","src":"1428:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1412:30:139"},"scope":26235,"src":"1320:390:139","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":25947,"nodeType":"Block","src":"1919:223:139","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25921,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25911,"src":"1938:7:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":25922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1948:1:139","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1938:11:139","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4c6962726172793a20494e53554646494349454e545f414d4f554e54","id":25924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1951:38:139","typeDescriptions":{"typeIdentifier":"t_stringliteral_2afd7eca07968c978a5ff5032aa9156fc5f2ed2d8e365ee16d36f22ce92cd2f9","typeString":"literal_string \"PangolinLibrary: INSUFFICIENT_AMOUNT\""},"value":"PangolinLibrary: INSUFFICIENT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2afd7eca07968c978a5ff5032aa9156fc5f2ed2d8e365ee16d36f22ce92cd2f9","typeString":"literal_string \"PangolinLibrary: INSUFFICIENT_AMOUNT\""}],"id":25920,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1930:7:139","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1930:60:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25926,"nodeType":"ExpressionStatement","src":"1930:60:139"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":25934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25928,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25913,"src":"2009:8:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":25929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2020:1:139","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2009:12:139","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25931,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25915,"src":"2025:8:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":25932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2036:1:139","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2025:12:139","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2009:28:139","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4c6962726172793a20494e53554646494349454e545f4c4951554944495459","id":25935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2039:41:139","typeDescriptions":{"typeIdentifier":"t_stringliteral_f4936a28530f824330a160210c1203816dc0b56365034d263702194187510bd8","typeString":"literal_string \"PangolinLibrary: INSUFFICIENT_LIQUIDITY\""},"value":"PangolinLibrary: INSUFFICIENT_LIQUIDITY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f4936a28530f824330a160210c1203816dc0b56365034d263702194187510bd8","typeString":"literal_string \"PangolinLibrary: INSUFFICIENT_LIQUIDITY\""}],"id":25927,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2001:7:139","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2001:80:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25937,"nodeType":"ExpressionStatement","src":"2001:80:139"},{"expression":{"id":25945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25938,"name":"amountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25918,"src":"2092:7:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":25941,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25915,"src":"2114:8:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":25939,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25911,"src":"2102:7:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":26394,"src":"2102:11:139","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":25942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2102:21:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":25943,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25913,"src":"2126:8:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2102:32:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2092:42:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25946,"nodeType":"ExpressionStatement","src":"2092:42:139"}]},"id":25948,"implemented":true,"kind":"function","modifiers":[],"name":"quote","nodeType":"FunctionDefinition","parameters":{"id":25916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25911,"mutability":"mutable","name":"amountA","nodeType":"VariableDeclaration","scope":25948,"src":"1838:12:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25910,"name":"uint","nodeType":"ElementaryTypeName","src":"1838:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":25913,"mutability":"mutable","name":"reserveA","nodeType":"VariableDeclaration","scope":25948,"src":"1852:13:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25912,"name":"uint","nodeType":"ElementaryTypeName","src":"1852:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":25915,"mutability":"mutable","name":"reserveB","nodeType":"VariableDeclaration","scope":25948,"src":"1867:13:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25914,"name":"uint","nodeType":"ElementaryTypeName","src":"1867:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1837:44:139"},"returnParameters":{"id":25919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25918,"mutability":"mutable","name":"amountB","nodeType":"VariableDeclaration","scope":25948,"src":"1905:12:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25917,"name":"uint","nodeType":"ElementaryTypeName","src":"1905:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1904:14:139"},"scope":26235,"src":"1823:319:139","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":26007,"nodeType":"Block","src":"2373:406:139","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25960,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25950,"src":"2392:8:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":25961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2403:1:139","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2392:12:139","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54","id":25963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2406:44:139","typeDescriptions":{"typeIdentifier":"t_stringliteral_dbd68bbd4b2618deb50f2e9d949dcee7b5235e32665c2886a874095bd64eb24e","typeString":"literal_string \"PangolinLibrary: INSUFFICIENT_INPUT_AMOUNT\""},"value":"PangolinLibrary: INSUFFICIENT_INPUT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dbd68bbd4b2618deb50f2e9d949dcee7b5235e32665c2886a874095bd64eb24e","typeString":"literal_string \"PangolinLibrary: INSUFFICIENT_INPUT_AMOUNT\""}],"id":25959,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2384:7:139","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2384:67:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25965,"nodeType":"ExpressionStatement","src":"2384:67:139"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":25973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25967,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25952,"src":"2470:9:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":25968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2482:1:139","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2470:13:139","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25970,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25954,"src":"2487:10:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":25971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2500:1:139","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2487:14:139","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2470:31:139","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4c6962726172793a20494e53554646494349454e545f4c4951554944495459","id":25974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2503:41:139","typeDescriptions":{"typeIdentifier":"t_stringliteral_f4936a28530f824330a160210c1203816dc0b56365034d263702194187510bd8","typeString":"literal_string \"PangolinLibrary: INSUFFICIENT_LIQUIDITY\""},"value":"PangolinLibrary: INSUFFICIENT_LIQUIDITY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f4936a28530f824330a160210c1203816dc0b56365034d263702194187510bd8","typeString":"literal_string \"PangolinLibrary: INSUFFICIENT_LIQUIDITY\""}],"id":25966,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2462:7:139","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":25975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2462:83:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25976,"nodeType":"ExpressionStatement","src":"2462:83:139"},{"assignments":[25978],"declarations":[{"constant":false,"id":25978,"mutability":"mutable","name":"amountInWithFee","nodeType":"VariableDeclaration","scope":26007,"src":"2556:20:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25977,"name":"uint","nodeType":"ElementaryTypeName","src":"2556:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":25983,"initialValue":{"arguments":[{"hexValue":"393937","id":25981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2592:3:139","typeDescriptions":{"typeIdentifier":"t_rational_997_by_1","typeString":"int_const 997"},"value":"997"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_997_by_1","typeString":"int_const 997"}],"expression":{"id":25979,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25950,"src":"2579:8:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":26394,"src":"2579:12:139","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":25982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2579:17:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2556:40:139"},{"assignments":[25985],"declarations":[{"constant":false,"id":25985,"mutability":"mutable","name":"numerator","nodeType":"VariableDeclaration","scope":26007,"src":"2607:14:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25984,"name":"uint","nodeType":"ElementaryTypeName","src":"2607:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":25990,"initialValue":{"arguments":[{"id":25988,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25954,"src":"2644:10:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":25986,"name":"amountInWithFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25978,"src":"2624:15:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":26394,"src":"2624:19:139","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":25989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2624:31:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2607:48:139"},{"assignments":[25992],"declarations":[{"constant":false,"id":25992,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","scope":26007,"src":"2666:16:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25991,"name":"uint","nodeType":"ElementaryTypeName","src":"2666:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":26000,"initialValue":{"arguments":[{"id":25998,"name":"amountInWithFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25978,"src":"2709:15:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"hexValue":"31303030","id":25995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2699:4:139","typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"}],"expression":{"id":25993,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25952,"src":"2685:9:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":26394,"src":"2685:13:139","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":25996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2685:19:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":26344,"src":"2685:23:139","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":25999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2685:40:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2666:59:139"},{"expression":{"id":26005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26001,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25957,"src":"2736:9:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26002,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25985,"src":"2748:9:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":26003,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25992,"src":"2760:11:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2748:23:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2736:35:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26006,"nodeType":"ExpressionStatement","src":"2736:35:139"}]},"id":26008,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountOut","nodeType":"FunctionDefinition","parameters":{"id":25955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25950,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":26008,"src":"2286:13:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25949,"name":"uint","nodeType":"ElementaryTypeName","src":"2286:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":25952,"mutability":"mutable","name":"reserveIn","nodeType":"VariableDeclaration","scope":26008,"src":"2301:14:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25951,"name":"uint","nodeType":"ElementaryTypeName","src":"2301:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":25954,"mutability":"mutable","name":"reserveOut","nodeType":"VariableDeclaration","scope":26008,"src":"2317:15:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25953,"name":"uint","nodeType":"ElementaryTypeName","src":"2317:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2285:48:139"},"returnParameters":{"id":25958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25957,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":26008,"src":"2357:14:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25956,"name":"uint","nodeType":"ElementaryTypeName","src":"2357:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2356:16:139"},"scope":26235,"src":"2264:515:139","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":26067,"nodeType":"Block","src":"3008:362:139","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26020,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26010,"src":"3027:9:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":26021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3039:1:139","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3027:13:139","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54","id":26023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3042:45:139","typeDescriptions":{"typeIdentifier":"t_stringliteral_fbe2352523f9faf36b97849eb8ca22b722e8cbca4e1e1f4739118cbd55bf3f96","typeString":"literal_string \"PangolinLibrary: INSUFFICIENT_OUTPUT_AMOUNT\""},"value":"PangolinLibrary: INSUFFICIENT_OUTPUT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fbe2352523f9faf36b97849eb8ca22b722e8cbca4e1e1f4739118cbd55bf3f96","typeString":"literal_string \"PangolinLibrary: INSUFFICIENT_OUTPUT_AMOUNT\""}],"id":26019,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3019:7:139","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3019:69:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26025,"nodeType":"ExpressionStatement","src":"3019:69:139"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":26033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26027,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26012,"src":"3107:9:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":26028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3119:1:139","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3107:13:139","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26030,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26014,"src":"3124:10:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":26031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3137:1:139","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3124:14:139","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3107:31:139","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4c6962726172793a20494e53554646494349454e545f4c4951554944495459","id":26034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3140:41:139","typeDescriptions":{"typeIdentifier":"t_stringliteral_f4936a28530f824330a160210c1203816dc0b56365034d263702194187510bd8","typeString":"literal_string \"PangolinLibrary: INSUFFICIENT_LIQUIDITY\""},"value":"PangolinLibrary: INSUFFICIENT_LIQUIDITY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f4936a28530f824330a160210c1203816dc0b56365034d263702194187510bd8","typeString":"literal_string \"PangolinLibrary: INSUFFICIENT_LIQUIDITY\""}],"id":26026,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3099:7:139","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3099:83:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26036,"nodeType":"ExpressionStatement","src":"3099:83:139"},{"assignments":[26038],"declarations":[{"constant":false,"id":26038,"mutability":"mutable","name":"numerator","nodeType":"VariableDeclaration","scope":26067,"src":"3193:14:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26037,"name":"uint","nodeType":"ElementaryTypeName","src":"3193:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":26046,"initialValue":{"arguments":[{"hexValue":"31303030","id":26044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3239:4:139","typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"}],"expression":{"arguments":[{"id":26041,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26010,"src":"3224:9:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":26039,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26012,"src":"3210:9:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":26394,"src":"3210:13:139","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":26042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3210:24:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":26394,"src":"3210:28:139","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":26045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3210:34:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3193:51:139"},{"assignments":[26048],"declarations":[{"constant":false,"id":26048,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","scope":26067,"src":"3255:16:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26047,"name":"uint","nodeType":"ElementaryTypeName","src":"3255:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":26056,"initialValue":{"arguments":[{"hexValue":"393937","id":26054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3304:3:139","typeDescriptions":{"typeIdentifier":"t_rational_997_by_1","typeString":"int_const 997"},"value":"997"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_997_by_1","typeString":"int_const 997"}],"expression":{"arguments":[{"id":26051,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26010,"src":"3289:9:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":26049,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26014,"src":"3274:10:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":26366,"src":"3274:14:139","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":26052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3274:25:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":26394,"src":"3274:29:139","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":26055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3274:34:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3255:53:139"},{"expression":{"id":26065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26057,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26017,"src":"3319:8:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"31","id":26063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3360:1:139","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":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26058,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26038,"src":"3331:9:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":26059,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26048,"src":"3343:11:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3331:23:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":26061,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3330:25:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":26344,"src":"3330:29:139","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":26064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3330:32:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3319:43:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26066,"nodeType":"ExpressionStatement","src":"3319:43:139"}]},"id":26068,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountIn","nodeType":"FunctionDefinition","parameters":{"id":26015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26010,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":26068,"src":"2921:14:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26009,"name":"uint","nodeType":"ElementaryTypeName","src":"2921:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":26012,"mutability":"mutable","name":"reserveIn","nodeType":"VariableDeclaration","scope":26068,"src":"2937:14:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26011,"name":"uint","nodeType":"ElementaryTypeName","src":"2937:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":26014,"mutability":"mutable","name":"reserveOut","nodeType":"VariableDeclaration","scope":26068,"src":"2953:15:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26013,"name":"uint","nodeType":"ElementaryTypeName","src":"2953:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2920:49:139"},"returnParameters":{"id":26018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26017,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":26068,"src":"2993:13:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26016,"name":"uint","nodeType":"ElementaryTypeName","src":"2993:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2992:15:139"},"scope":26235,"src":"2900:470:139","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":26148,"nodeType":"Block","src":"3576:386:139","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":26082,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26075,"src":"3595:4:139","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":26083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3595:11:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"32","id":26084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3610:1:139","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"3595:16:139","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4c6962726172793a20494e56414c49445f50415448","id":26086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3613:31:139","typeDescriptions":{"typeIdentifier":"t_stringliteral_17131ae6ef2d8749f9af0a1e791c2fb949a4d88c18fce9a939194e0e991b0a27","typeString":"literal_string \"PangolinLibrary: INVALID_PATH\""},"value":"PangolinLibrary: INVALID_PATH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_17131ae6ef2d8749f9af0a1e791c2fb949a4d88c18fce9a939194e0e991b0a27","typeString":"literal_string \"PangolinLibrary: INVALID_PATH\""}],"id":26081,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3587:7:139","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3587:58:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26088,"nodeType":"ExpressionStatement","src":"3587:58:139"},{"expression":{"id":26096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26089,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26079,"src":"3656:7:139","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":26093,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26075,"src":"3677:4:139","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":26094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3677:11:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26092,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3666:10:139","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":26090,"name":"uint","nodeType":"ElementaryTypeName","src":"3670:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26091,"nodeType":"ArrayTypeName","src":"3670:6:139","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":26095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3666:23:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"3656:33:139","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26097,"nodeType":"ExpressionStatement","src":"3656:33:139"},{"expression":{"id":26102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":26098,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26079,"src":"3700:7:139","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26100,"indexExpression":{"hexValue":"30","id":26099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3708:1:139","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3700:10:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":26101,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26072,"src":"3713:8:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3700:21:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26103,"nodeType":"ExpressionStatement","src":"3700:21:139"},{"body":{"id":26146,"nodeType":"Block","src":"3771:184:139","statements":[{"assignments":[26117,26119],"declarations":[{"constant":false,"id":26117,"mutability":"mutable","name":"reserveIn","nodeType":"VariableDeclaration","scope":26146,"src":"3787:14:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26116,"name":"uint","nodeType":"ElementaryTypeName","src":"3787:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":26119,"mutability":"mutable","name":"reserveOut","nodeType":"VariableDeclaration","scope":26146,"src":"3803:15:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26118,"name":"uint","nodeType":"ElementaryTypeName","src":"3803:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":26131,"initialValue":{"arguments":[{"id":26121,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26070,"src":"3834:7:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":26122,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26075,"src":"3843:4:139","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":26124,"indexExpression":{"id":26123,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26105,"src":"3848:1:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3843:7:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":26125,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26075,"src":"3852:4:139","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":26129,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26126,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26105,"src":"3857:1:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":26127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3861:1:139","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3857:5:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3852:11:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":26120,"name":"getReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25909,"src":"3822:11:139","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,address) view returns (uint256,uint256)"}},"id":26130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3822:42:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3786:78:139"},{"expression":{"id":26144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":26132,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26079,"src":"3879:7:139","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26136,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26133,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26105,"src":"3887:1:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":26134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3891:1:139","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3887:5:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3879:14:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":26138,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26079,"src":"3909:7:139","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26140,"indexExpression":{"id":26139,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26105,"src":"3917:1:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3909:10:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":26141,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26117,"src":"3921:9:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":26142,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26119,"src":"3932:10:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26137,"name":"getAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26008,"src":"3896:12:139","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":26143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3896:47:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3879:64:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26145,"nodeType":"ExpressionStatement","src":"3879:64:139"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26107,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26105,"src":"3745:1:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":26108,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26075,"src":"3749:4:139","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":26109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3749:11:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":26110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3763:1:139","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3749:15:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3745:19:139","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":26147,"initializationExpression":{"assignments":[26105],"declarations":[{"constant":false,"id":26105,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":26147,"src":"3737:6:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26104,"name":"uint","nodeType":"ElementaryTypeName","src":"3737:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":26106,"nodeType":"VariableDeclarationStatement","src":"3737:6:139"},"loopExpression":{"expression":{"id":26114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3766:3:139","subExpression":{"id":26113,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26105,"src":"3766:1:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26115,"nodeType":"ExpressionStatement","src":"3766:3:139"},"nodeType":"ForStatement","src":"3732:223:139"}]},"id":26149,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountsOut","nodeType":"FunctionDefinition","parameters":{"id":26076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26070,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":26149,"src":"3475:15:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26069,"name":"address","nodeType":"ElementaryTypeName","src":"3475:7:139","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26072,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":26149,"src":"3492:13:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26071,"name":"uint","nodeType":"ElementaryTypeName","src":"3492:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":26075,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":26149,"src":"3507:21:139","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":26073,"name":"address","nodeType":"ElementaryTypeName","src":"3507:7:139","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":26074,"nodeType":"ArrayTypeName","src":"3507:9:139","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3474:55:139"},"returnParameters":{"id":26080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26079,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":26149,"src":"3553:21:139","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":26077,"name":"uint","nodeType":"ElementaryTypeName","src":"3553:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26078,"nodeType":"ArrayTypeName","src":"3553:6:139","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3552:23:139"},"scope":26235,"src":"3452:510:139","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":26233,"nodeType":"Block","src":"4167:407:139","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":26163,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26156,"src":"4186:4:139","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":26164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4186:11:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"32","id":26165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4201:1:139","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4186:16:139","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e676f6c696e4c6962726172793a20494e56414c49445f50415448","id":26167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4204:31:139","typeDescriptions":{"typeIdentifier":"t_stringliteral_17131ae6ef2d8749f9af0a1e791c2fb949a4d88c18fce9a939194e0e991b0a27","typeString":"literal_string \"PangolinLibrary: INVALID_PATH\""},"value":"PangolinLibrary: INVALID_PATH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_17131ae6ef2d8749f9af0a1e791c2fb949a4d88c18fce9a939194e0e991b0a27","typeString":"literal_string \"PangolinLibrary: INVALID_PATH\""}],"id":26162,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4178:7:139","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4178:58:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26169,"nodeType":"ExpressionStatement","src":"4178:58:139"},{"expression":{"id":26177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26170,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26160,"src":"4247:7:139","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":26174,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26156,"src":"4268:4:139","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":26175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4268:11:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4257:10:139","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":26171,"name":"uint","nodeType":"ElementaryTypeName","src":"4261:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26172,"nodeType":"ArrayTypeName","src":"4261:6:139","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":26176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4257:23:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"4247:33:139","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26178,"nodeType":"ExpressionStatement","src":"4247:33:139"},{"expression":{"id":26186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":26179,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26160,"src":"4291:7:139","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26184,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":26180,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26160,"src":"4299:7:139","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4299:14:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":26182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4316:1:139","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4299:18:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4291:27:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":26185,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26153,"src":"4321:9:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4291:39:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26187,"nodeType":"ExpressionStatement","src":"4291:39:139"},{"body":{"id":26231,"nodeType":"Block","src":"4384:183:139","statements":[{"assignments":[26202,26204],"declarations":[{"constant":false,"id":26202,"mutability":"mutable","name":"reserveIn","nodeType":"VariableDeclaration","scope":26231,"src":"4400:14:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26201,"name":"uint","nodeType":"ElementaryTypeName","src":"4400:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":26204,"mutability":"mutable","name":"reserveOut","nodeType":"VariableDeclaration","scope":26231,"src":"4416:15:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26203,"name":"uint","nodeType":"ElementaryTypeName","src":"4416:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":26216,"initialValue":{"arguments":[{"id":26206,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26151,"src":"4447:7:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":26207,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26156,"src":"4456:4:139","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":26211,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26208,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26189,"src":"4461:1:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":26209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4465:1:139","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4461:5:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4456:11:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":26212,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26156,"src":"4469:4:139","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":26214,"indexExpression":{"id":26213,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26189,"src":"4474:1:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4469:7:139","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":26205,"name":"getReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25909,"src":"4435:11:139","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,address) view returns (uint256,uint256)"}},"id":26215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4435:42:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4399:78:139"},{"expression":{"id":26229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":26217,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26160,"src":"4492:7:139","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26221,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26218,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26189,"src":"4500:1:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":26219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4504:1:139","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4500:5:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4492:14:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":26223,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26160,"src":"4521:7:139","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26225,"indexExpression":{"id":26224,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26189,"src":"4529:1:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4521:10:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":26226,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26202,"src":"4533:9:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":26227,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26204,"src":"4544:10:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26222,"name":"getAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26068,"src":"4509:11:139","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":26228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4509:46:139","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4492:63:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26230,"nodeType":"ExpressionStatement","src":"4492:63:139"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26195,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26189,"src":"4372:1:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":26196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4376:1:139","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4372:5:139","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":26232,"initializationExpression":{"assignments":[26189],"declarations":[{"constant":false,"id":26189,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":26232,"src":"4346:6:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26188,"name":"uint","nodeType":"ElementaryTypeName","src":"4346:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":26194,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":26190,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26156,"src":"4355:4:139","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":26191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4355:11:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":26192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4369:1:139","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4355:15:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4346:24:139"},"loopExpression":{"expression":{"id":26199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"4379:3:139","subExpression":{"id":26198,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26189,"src":"4379:1:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26200,"nodeType":"ExpressionStatement","src":"4379:3:139"},"nodeType":"ForStatement","src":"4341:226:139"}]},"id":26234,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountsIn","nodeType":"FunctionDefinition","parameters":{"id":26157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26151,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":26234,"src":"4065:15:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26150,"name":"address","nodeType":"ElementaryTypeName","src":"4065:7:139","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26153,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":26234,"src":"4082:14:139","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26152,"name":"uint","nodeType":"ElementaryTypeName","src":"4082:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":26156,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":26234,"src":"4098:21:139","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":26154,"name":"address","nodeType":"ElementaryTypeName","src":"4098:7:139","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":26155,"nodeType":"ArrayTypeName","src":"4098:9:139","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4064:56:139"},"returnParameters":{"id":26161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26160,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":26234,"src":"4144:21:139","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":26158,"name":"uint","nodeType":"ElementaryTypeName","src":"4144:4:139","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26159,"nodeType":"ArrayTypeName","src":"4144:6:139","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4143:23:139"},"scope":26235,"src":"4043:531:139","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":26236,"src":"181:4396:139"}],"src":"0:4579:139"},"id":139},"contracts/pangolin-periphery/libraries/Roles.sol":{"ast":{"absolutePath":"contracts/pangolin-periphery/libraries/Roles.sol","exportedSymbols":{"Roles":[26320]},"id":26321,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":26237,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:140"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":26320,"linearizedBaseContracts":[26320],"name":"Roles","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Roles.Role","id":26242,"members":[{"constant":false,"id":26241,"mutability":"mutable","name":"bearer","nodeType":"VariableDeclaration","scope":26242,"src":"104:31:140","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":26240,"keyType":{"id":26238,"name":"address","nodeType":"ElementaryTypeName","src":"112:7:140","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"104:24:140","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":26239,"name":"bool","nodeType":"ElementaryTypeName","src":"123:4:140","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"}],"name":"Role","nodeType":"StructDefinition","scope":26320,"src":"81:62:140","visibility":"public"},{"body":{"id":26267,"nodeType":"Block","src":"277:120:140","statements":[{"expression":{"arguments":[{"id":26255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"296:19:140","subExpression":{"arguments":[{"id":26252,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26245,"src":"301:4:140","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage_ptr","typeString":"struct Roles.Role storage pointer"}},{"id":26253,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26247,"src":"307:7:140","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Role_$26242_storage_ptr","typeString":"struct Roles.Role storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":26251,"name":"has","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26319,"src":"297:3:140","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Role_$26242_storage_ptr_$_t_address_$returns$_t_bool_$","typeString":"function (struct Roles.Role storage pointer,address) view returns (bool)"}},"id":26254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"297:18:140","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"526f6c65733a206163636f756e7420616c72656164792068617320726f6c65","id":26256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"317:33:140","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f76c3a3e97a37fcdff532c2741c10933ebf2b769d5475388e30ae4f7155f13a","typeString":"literal_string \"Roles: account already has role\""},"value":"Roles: account already has role"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0f76c3a3e97a37fcdff532c2741c10933ebf2b769d5475388e30ae4f7155f13a","typeString":"literal_string \"Roles: account already has role\""}],"id":26250,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"288:7:140","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"288:63:140","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26258,"nodeType":"ExpressionStatement","src":"288:63:140"},{"expression":{"id":26265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":26259,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26245,"src":"362:4:140","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage_ptr","typeString":"struct Roles.Role storage pointer"}},"id":26262,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"bearer","nodeType":"MemberAccess","referencedDeclaration":26241,"src":"362:11:140","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":26263,"indexExpression":{"id":26261,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26247,"src":"374:7:140","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"362:20:140","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":26264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"385:4:140","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"362:27:140","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":26266,"nodeType":"ExpressionStatement","src":"362:27:140"}]},"documentation":{"id":26243,"nodeType":"StructuredDocumentation","src":"151:62:140","text":" @dev Give an account access to this role."},"id":26268,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":26248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26245,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":26268,"src":"232:17:140","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage_ptr","typeString":"struct Roles.Role"},"typeName":{"id":26244,"name":"Role","nodeType":"UserDefinedTypeName","referencedDeclaration":26242,"src":"232:4:140","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage_ptr","typeString":"struct Roles.Role"}},"visibility":"internal"},{"constant":false,"id":26247,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":26268,"src":"251:15:140","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26246,"name":"address","nodeType":"ElementaryTypeName","src":"251:7:140","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"231:36:140"},"returnParameters":{"id":26249,"nodeType":"ParameterList","parameters":[],"src":"277:0:140"},"scope":26320,"src":"219:178:140","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":26292,"nodeType":"Block","src":"538:122:140","statements":[{"expression":{"arguments":[{"arguments":[{"id":26278,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26271,"src":"561:4:140","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage_ptr","typeString":"struct Roles.Role storage pointer"}},{"id":26279,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26273,"src":"567:7:140","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Role_$26242_storage_ptr","typeString":"struct Roles.Role storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":26277,"name":"has","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26319,"src":"557:3:140","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Role_$26242_storage_ptr_$_t_address_$returns$_t_bool_$","typeString":"function (struct Roles.Role storage pointer,address) view returns (bool)"}},"id":26280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"557:18:140","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65","id":26281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"577:35:140","typeDescriptions":{"typeIdentifier":"t_stringliteral_7bd893145ac435f339bb7c288622d270324b7033b011f693aca172f5cbc3c257","typeString":"literal_string \"Roles: account does not have role\""},"value":"Roles: account does not have role"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7bd893145ac435f339bb7c288622d270324b7033b011f693aca172f5cbc3c257","typeString":"literal_string \"Roles: account does not have role\""}],"id":26276,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"549:7:140","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"549:64:140","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26283,"nodeType":"ExpressionStatement","src":"549:64:140"},{"expression":{"id":26290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":26284,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26271,"src":"624:4:140","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage_ptr","typeString":"struct Roles.Role storage pointer"}},"id":26287,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"bearer","nodeType":"MemberAccess","referencedDeclaration":26241,"src":"624:11:140","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":26288,"indexExpression":{"id":26286,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26273,"src":"636:7:140","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"624:20:140","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":26289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"647:5:140","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"624:28:140","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":26291,"nodeType":"ExpressionStatement","src":"624:28:140"}]},"documentation":{"id":26269,"nodeType":"StructuredDocumentation","src":"405:66:140","text":" @dev Remove an account's access to this role."},"id":26293,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":26274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26271,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":26293,"src":"493:17:140","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage_ptr","typeString":"struct Roles.Role"},"typeName":{"id":26270,"name":"Role","nodeType":"UserDefinedTypeName","referencedDeclaration":26242,"src":"493:4:140","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage_ptr","typeString":"struct Roles.Role"}},"visibility":"internal"},{"constant":false,"id":26273,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":26293,"src":"512:15:140","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26272,"name":"address","nodeType":"ElementaryTypeName","src":"512:7:140","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"492:36:140"},"returnParameters":{"id":26275,"nodeType":"ParameterList","parameters":[],"src":"538:0:140"},"scope":26320,"src":"477:183:140","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":26318,"nodeType":"Block","src":"865:125:140","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":26309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26304,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26298,"src":"884:7:140","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":26307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"903:1:140","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":26306,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"895:7:140","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":26305,"name":"address","nodeType":"ElementaryTypeName","src":"895:7:140","typeDescriptions":{}}},"id":26308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"895:10:140","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"884:21:140","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373","id":26310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"907:36:140","typeDescriptions":{"typeIdentifier":"t_stringliteral_9d214fa89563f4e6456a3929327e54500ea1cde2c0ba9fb2035ec106190d682f","typeString":"literal_string \"Roles: account is the zero address\""},"value":"Roles: account is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9d214fa89563f4e6456a3929327e54500ea1cde2c0ba9fb2035ec106190d682f","typeString":"literal_string \"Roles: account is the zero address\""}],"id":26303,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"876:7:140","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"876:68:140","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26312,"nodeType":"ExpressionStatement","src":"876:68:140"},{"expression":{"baseExpression":{"expression":{"id":26313,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26296,"src":"962:4:140","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage_ptr","typeString":"struct Roles.Role storage pointer"}},"id":26314,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"bearer","nodeType":"MemberAccess","referencedDeclaration":26241,"src":"962:11:140","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":26316,"indexExpression":{"id":26315,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26298,"src":"974:7:140","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"962:20:140","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":26302,"id":26317,"nodeType":"Return","src":"955:27:140"}]},"documentation":{"id":26294,"nodeType":"StructuredDocumentation","src":"668:81:140","text":" @dev Check if an account has this role.\n @return bool"},"id":26319,"implemented":true,"kind":"function","modifiers":[],"name":"has","nodeType":"FunctionDefinition","parameters":{"id":26299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26296,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":26319,"src":"768:17:140","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage_ptr","typeString":"struct Roles.Role"},"typeName":{"id":26295,"name":"Role","nodeType":"UserDefinedTypeName","referencedDeclaration":26242,"src":"768:4:140","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage_ptr","typeString":"struct Roles.Role"}},"visibility":"internal"},{"constant":false,"id":26298,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":26319,"src":"787:15:140","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26297,"name":"address","nodeType":"ElementaryTypeName","src":"787:7:140","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"767:36:140"},"returnParameters":{"id":26302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26301,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":26319,"src":"854:4:140","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":26300,"name":"bool","nodeType":"ElementaryTypeName","src":"854:4:140","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"853:6:140"},"scope":26320,"src":"755:235:140","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":26321,"src":"60:933:140"}],"src":"33:960:140"},"id":140},"contracts/pangolin-periphery/libraries/SafeMath.sol":{"ast":{"absolutePath":"contracts/pangolin-periphery/libraries/SafeMath.sol","exportedSymbols":{"SafeMath":[26395]},"id":26396,"nodeType":"SourceUnit","nodes":[{"id":26322,"literals":["solidity",">=","0.6",".6","<","0.8",".0"],"nodeType":"PragmaDirective","src":"0:31:141"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":26395,"linearizedBaseContracts":[26395],"name":"SafeMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":26343,"nodeType":"Block","src":"227:68:141","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":26336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26332,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26329,"src":"247:1:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26333,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26324,"src":"251:1:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":26334,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26326,"src":"255:1:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"251:5:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"247:9:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":26337,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"246:11:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":26338,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26324,"src":"261:1:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"246:16:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"64732d6d6174682d6164642d6f766572666c6f77","id":26340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"264:22:141","typeDescriptions":{"typeIdentifier":"t_stringliteral_3903056b84ed2aba2be78662dc6c5c99b160cebe9af9bd9493d0fc28ff16f6db","typeString":"literal_string \"ds-math-add-overflow\""},"value":"ds-math-add-overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3903056b84ed2aba2be78662dc6c5c99b160cebe9af9bd9493d0fc28ff16f6db","typeString":"literal_string \"ds-math-add-overflow\""}],"id":26331,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"238:7:141","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"238:49:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26342,"nodeType":"ExpressionStatement","src":"238:49:141"}]},"id":26344,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":26327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26324,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":26344,"src":"180:6:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26323,"name":"uint","nodeType":"ElementaryTypeName","src":"180:4:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":26326,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":26344,"src":"188:6:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26325,"name":"uint","nodeType":"ElementaryTypeName","src":"188:4:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"179:16:141"},"returnParameters":{"id":26330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26329,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":26344,"src":"219:6:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26328,"name":"uint","nodeType":"ElementaryTypeName","src":"219:4:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"218:8:141"},"scope":26395,"src":"167:128:141","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":26365,"nodeType":"Block","src":"363:69:141","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":26358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26354,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26351,"src":"383:1:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26355,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26346,"src":"387:1:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":26356,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26348,"src":"391:1:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"387:5:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"383:9:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":26359,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"382:11:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":26360,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26346,"src":"397:1:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"382:16:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"64732d6d6174682d7375622d756e646572666c6f77","id":26362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"400:23:141","typeDescriptions":{"typeIdentifier":"t_stringliteral_03b20b9f6e6e7905f077509fd420fb44afc685f254bcefe49147296e1ba25590","typeString":"literal_string \"ds-math-sub-underflow\""},"value":"ds-math-sub-underflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_03b20b9f6e6e7905f077509fd420fb44afc685f254bcefe49147296e1ba25590","typeString":"literal_string \"ds-math-sub-underflow\""}],"id":26353,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"374:7:141","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"374:50:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26364,"nodeType":"ExpressionStatement","src":"374:50:141"}]},"id":26366,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":26349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26346,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":26366,"src":"316:6:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26345,"name":"uint","nodeType":"ElementaryTypeName","src":"316:4:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":26348,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":26366,"src":"324:6:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26347,"name":"uint","nodeType":"ElementaryTypeName","src":"324:4:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"315:16:141"},"returnParameters":{"id":26352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26351,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":26366,"src":"355:6:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26350,"name":"uint","nodeType":"ElementaryTypeName","src":"355:4:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"354:8:141"},"scope":26395,"src":"303:129:141","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":26393,"nodeType":"Block","src":"500:82:141","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":26389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26376,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26370,"src":"519:1:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":26377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"524:1:141","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"519:6:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":26383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26379,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26373,"src":"530:1:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26380,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26368,"src":"534:1:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":26381,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26370,"src":"538:1:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"534:5:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"530:9:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":26384,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"529:11:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":26385,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26370,"src":"543:1:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"529:15:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":26387,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26368,"src":"548:1:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"529:20:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"519:30:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"64732d6d6174682d6d756c2d6f766572666c6f77","id":26390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"551:22:141","typeDescriptions":{"typeIdentifier":"t_stringliteral_25a0ef6406c6af6852555433653ce478274cd9f03a5dec44d001868a76b3bfdd","typeString":"literal_string \"ds-math-mul-overflow\""},"value":"ds-math-mul-overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_25a0ef6406c6af6852555433653ce478274cd9f03a5dec44d001868a76b3bfdd","typeString":"literal_string \"ds-math-mul-overflow\""}],"id":26375,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"511:7:141","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"511:63:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26392,"nodeType":"ExpressionStatement","src":"511:63:141"}]},"id":26394,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":26371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26368,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":26394,"src":"453:6:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26367,"name":"uint","nodeType":"ElementaryTypeName","src":"453:4:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":26370,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":26394,"src":"461:6:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26369,"name":"uint","nodeType":"ElementaryTypeName","src":"461:4:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"452:16:141"},"returnParameters":{"id":26374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26373,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":26394,"src":"492:6:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26372,"name":"uint","nodeType":"ElementaryTypeName","src":"492:4:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"491:8:141"},"scope":26395,"src":"440:142:141","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":26396,"src":"143:442:141"}],"src":"0:587:141"},"id":141},"contracts/pangolin-periphery/libraries/UniswapV2OracleLibrary.sol":{"ast":{"absolutePath":"contracts/pangolin-periphery/libraries/UniswapV2OracleLibrary.sol","exportedSymbols":{"Babylonian":[22763],"FixedPoint":[23338],"FullMath":[23551],"IPangolinPair":[22563],"PangolinOracleLibrary":[26502]},"id":26503,"nodeType":"SourceUnit","nodes":[{"id":26397,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"0:24:142"},{"absolutePath":"contracts/pangolin-core/interfaces/IPangolinPair.sol","file":"../../pangolin-core/interfaces/IPangolinPair.sol","id":26398,"nodeType":"ImportDirective","scope":26503,"sourceUnit":22564,"src":"28:58:142","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/pangolin-lib/libraries/FixedPoint.sol","file":"../../pangolin-lib/libraries/FixedPoint.sol","id":26399,"nodeType":"ImportDirective","scope":26503,"sourceUnit":23339,"src":"88:53:142","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":26502,"linearizedBaseContracts":[26502],"name":"PangolinOracleLibrary","nodeType":"ContractDefinition","nodes":[{"id":26401,"libraryName":{"id":26400,"name":"FixedPoint","nodeType":"UserDefinedTypeName","referencedDeclaration":23338,"src":"281:10:142","typeDescriptions":{"typeIdentifier":"t_contract$_FixedPoint_$23338","typeString":"library FixedPoint"}},"nodeType":"UsingForDirective","src":"275:23:142"},{"body":{"id":26416,"nodeType":"Block","src":"483:59:142","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":26408,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"508:5:142","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":26409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"508:15:142","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":26412,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":26410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"526:1:142","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":26411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"531:2:142","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"526:7:142","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"508:25:142","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26407,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"501:6:142","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":26406,"name":"uint32","nodeType":"ElementaryTypeName","src":"501:6:142","typeDescriptions":{}}},"id":26414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"501:33:142","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":26405,"id":26415,"nodeType":"Return","src":"494:40:142"}]},"id":26417,"implemented":true,"kind":"function","modifiers":[],"name":"currentBlockTimestamp","nodeType":"FunctionDefinition","parameters":{"id":26402,"nodeType":"ParameterList","parameters":[],"src":"449:2:142"},"returnParameters":{"id":26405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26404,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":26417,"src":"475:6:142","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":26403,"name":"uint32","nodeType":"ElementaryTypeName","src":"475:6:142","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"474:8:142"},"scope":26502,"src":"419:123:142","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":26500,"nodeType":"Block","src":"803:900:142","statements":[{"expression":{"id":26431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26428,"name":"blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26426,"src":"814:14:142","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":26429,"name":"currentBlockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26417,"src":"831:21:142","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":26430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"831:23:142","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"814:40:142","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":26432,"nodeType":"ExpressionStatement","src":"814:40:142"},{"expression":{"id":26439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26433,"name":"price0Cumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26422,"src":"865:16:142","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":26435,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26419,"src":"898:4:142","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26434,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"884:13:142","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":26436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"884:19:142","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":26437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"price0CumulativeLast","nodeType":"MemberAccess","referencedDeclaration":22510,"src":"884:40:142","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":26438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"884:42:142","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"865:61:142","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26440,"nodeType":"ExpressionStatement","src":"865:61:142"},{"expression":{"id":26447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26441,"name":"price1Cumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26424,"src":"937:16:142","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":26443,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26419,"src":"970:4:142","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26442,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"956:13:142","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":26444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"956:19:142","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":26445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"price1CumulativeLast","nodeType":"MemberAccess","referencedDeclaration":22515,"src":"956:40:142","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":26446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"956:42:142","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"937:61:142","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26448,"nodeType":"ExpressionStatement","src":"937:61:142"},{"assignments":[26450,26452,26454],"declarations":[{"constant":false,"id":26450,"mutability":"mutable","name":"reserve0","nodeType":"VariableDeclaration","scope":26500,"src":"1113:16:142","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":26449,"name":"uint112","nodeType":"ElementaryTypeName","src":"1113:7:142","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},{"constant":false,"id":26452,"mutability":"mutable","name":"reserve1","nodeType":"VariableDeclaration","scope":26500,"src":"1131:16:142","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":26451,"name":"uint112","nodeType":"ElementaryTypeName","src":"1131:7:142","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},{"constant":false,"id":26454,"mutability":"mutable","name":"blockTimestampLast","nodeType":"VariableDeclaration","scope":26500,"src":"1149:25:142","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":26453,"name":"uint32","nodeType":"ElementaryTypeName","src":"1149:6:142","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":26460,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":26456,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26419,"src":"1192:4:142","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26455,"name":"IPangolinPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22563,"src":"1178:13:142","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinPair_$22563_$","typeString":"type(contract IPangolinPair)"}},"id":26457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1178:19:142","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinPair_$22563","typeString":"contract IPangolinPair"}},"id":26458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getReserves","nodeType":"MemberAccess","referencedDeclaration":22505,"src":"1178:31:142","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"function () view external returns (uint112,uint112,uint32)"}},"id":26459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1178:33:142","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"tuple(uint112,uint112,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"1112:99:142"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":26463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26461,"name":"blockTimestampLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26454,"src":"1226:18:142","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":26462,"name":"blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26426,"src":"1248:14:142","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1226:36:142","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":26499,"nodeType":"IfStatement","src":"1222:474:142","trueBody":{"id":26498,"nodeType":"Block","src":"1264:432:142","statements":[{"assignments":[26465],"declarations":[{"constant":false,"id":26465,"mutability":"mutable","name":"timeElapsed","nodeType":"VariableDeclaration","scope":26498,"src":"1327:18:142","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":26464,"name":"uint32","nodeType":"ElementaryTypeName","src":"1327:6:142","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":26469,"initialValue":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":26468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26466,"name":"blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26426,"src":"1348:14:142","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":26467,"name":"blockTimestampLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26454,"src":"1365:18:142","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1348:35:142","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"1327:56:142"},{"expression":{"id":26482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26470,"name":"price0Cumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26422,"src":"1474:16:142","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"arguments":[{"id":26475,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26452,"src":"1519:8:142","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},{"id":26476,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26450,"src":"1529:8:142","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"},{"typeIdentifier":"t_uint112","typeString":"uint112"}],"expression":{"id":26473,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23338,"src":"1499:10:142","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$23338_$","typeString":"type(library FixedPoint)"}},"id":26474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fraction","nodeType":"MemberAccess","referencedDeclaration":23221,"src":"1499:19:142","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint112_$_t_uint112_$returns$_t_struct$_uq112x112_$22770_memory_ptr_$","typeString":"function (uint112,uint112) pure returns (struct FixedPoint.uq112x112 memory)"}},"id":26477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1499:39:142","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":26478,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"1499:42:142","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":26472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1494:4:142","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":26471,"name":"uint","nodeType":"ElementaryTypeName","src":"1494:4:142","typeDescriptions":{}}},"id":26479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1494:48:142","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":26480,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26465,"src":"1545:11:142","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1494:62:142","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1474:82:142","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26483,"nodeType":"ExpressionStatement","src":"1474:82:142"},{"expression":{"id":26496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26484,"name":"price1Cumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26424,"src":"1602:16:142","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"arguments":[{"id":26489,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26450,"src":"1647:8:142","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},{"id":26490,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26452,"src":"1657:8:142","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"},{"typeIdentifier":"t_uint112","typeString":"uint112"}],"expression":{"id":26487,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23338,"src":"1627:10:142","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$23338_$","typeString":"type(library FixedPoint)"}},"id":26488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fraction","nodeType":"MemberAccess","referencedDeclaration":23221,"src":"1627:19:142","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint112_$_t_uint112_$returns$_t_struct$_uq112x112_$22770_memory_ptr_$","typeString":"function (uint112,uint112) pure returns (struct FixedPoint.uq112x112 memory)"}},"id":26491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1627:39:142","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$22770_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":26492,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":22769,"src":"1627:42:142","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":26486,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1622:4:142","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":26485,"name":"uint","nodeType":"ElementaryTypeName","src":"1622:4:142","typeDescriptions":{}}},"id":26493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1622:48:142","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":26494,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26465,"src":"1673:11:142","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1622:62:142","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1602:82:142","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26497,"nodeType":"ExpressionStatement","src":"1602:82:142"}]}}]},"id":26501,"implemented":true,"kind":"function","modifiers":[],"name":"currentCumulativePrices","nodeType":"FunctionDefinition","parameters":{"id":26420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26419,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","scope":26501,"src":"691:12:142","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26418,"name":"address","nodeType":"ElementaryTypeName","src":"691:7:142","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"680:30:142"},"returnParameters":{"id":26427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26422,"mutability":"mutable","name":"price0Cumulative","nodeType":"VariableDeclaration","scope":26501,"src":"734:21:142","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26421,"name":"uint","nodeType":"ElementaryTypeName","src":"734:4:142","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":26424,"mutability":"mutable","name":"price1Cumulative","nodeType":"VariableDeclaration","scope":26501,"src":"757:21:142","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26423,"name":"uint","nodeType":"ElementaryTypeName","src":"757:4:142","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":26426,"mutability":"mutable","name":"blockTimestamp","nodeType":"VariableDeclaration","scope":26501,"src":"780:21:142","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":26425,"name":"uint32","nodeType":"ElementaryTypeName","src":"780:6:142","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"733:69:142"},"scope":26502,"src":"648:1055:142","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":26503,"src":"238:1468:142"}],"src":"0:1708:142"},"id":142},"contracts/pangolin-periphery/test/BridgeToken.sol":{"ast":{"absolutePath":"contracts/pangolin-periphery/test/BridgeToken.sol","exportedSymbols":{"BridgeToken":[27015],"Context":[27038],"ERC20":[27541],"ERC20Burnable":[27601],"IERC20":[27679],"OpenZeppelinSafeMath":[28034],"Roles":[26320]},"id":27016,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":26504,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:143"},{"absolutePath":"contracts/pangolin-periphery/test/library/openzeppelin/ERC20Burnable.sol","file":"./library/openzeppelin/ERC20Burnable.sol","id":26505,"nodeType":"ImportDirective","scope":27016,"sourceUnit":27602,"src":"60:50:143","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/pangolin-periphery/libraries/Roles.sol","file":"../libraries/Roles.sol","id":26506,"nodeType":"ImportDirective","scope":27016,"sourceUnit":26321,"src":"112:32:143","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":26507,"name":"ERC20Burnable","nodeType":"UserDefinedTypeName","referencedDeclaration":27601,"src":"172:13:143","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Burnable_$27601","typeString":"contract ERC20Burnable"}},"id":26508,"nodeType":"InheritanceSpecifier","src":"172:13:143"}],"contractDependencies":[27038,27541,27601,27679],"contractKind":"contract","fullyImplemented":true,"id":27015,"linearizedBaseContracts":[27015,27601,27541,27679,27038],"name":"BridgeToken","nodeType":"ContractDefinition","nodes":[{"id":26511,"libraryName":{"id":26509,"name":"Roles","nodeType":"UserDefinedTypeName","referencedDeclaration":26320,"src":"199:5:143","typeDescriptions":{"typeIdentifier":"t_contract$_Roles_$26320","typeString":"library Roles"}},"nodeType":"UsingForDirective","src":"193:27:143","typeName":{"id":26510,"name":"Roles.Role","nodeType":"UserDefinedTypeName","referencedDeclaration":26242,"src":"209:10:143","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage_ptr","typeString":"struct Roles.Role"}}},{"constant":false,"id":26513,"mutability":"mutable","name":"bridgeRoles","nodeType":"VariableDeclaration","scope":27015,"src":"228:30:143","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage","typeString":"struct Roles.Role"},"typeName":{"id":26512,"name":"Roles.Role","nodeType":"UserDefinedTypeName","referencedDeclaration":26242,"src":"228:10:143","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage_ptr","typeString":"struct Roles.Role"}},"visibility":"private"},{"constant":true,"id":26516,"mutability":"constant","name":"TOKEN_NAME","nodeType":"VariableDeclaration","scope":27015,"src":"267:52:143","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":26514,"name":"string","nodeType":"ElementaryTypeName","src":"267:6:143","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4578616d706c6520546f6b656e","id":26515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"304:15:143","typeDescriptions":{"typeIdentifier":"t_stringliteral_ee91e1b219a7e0d5035a50ca5bbf5771c3e24e997d7ea18b9e0dd6ad88b10f0d","typeString":"literal_string \"Example Token\""},"value":"Example Token"},"visibility":"private"},{"constant":true,"id":26519,"mutability":"constant","name":"TOKEN_SYMBOL","nodeType":"VariableDeclaration","scope":27015,"src":"326:47:143","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":26517,"name":"string","nodeType":"ElementaryTypeName","src":"326:6:143","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"45584d502e65","id":26518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"365:8:143","typeDescriptions":{"typeIdentifier":"t_stringliteral_8401af355fdafb8ae738decc5218df0c9e4aaf2933846c883cebd46b9f44b659","typeString":"literal_string \"EXMP.e\""},"value":"EXMP.e"},"visibility":"private"},{"constant":true,"id":26522,"mutability":"constant","name":"TOKEN_DECIMALS","nodeType":"VariableDeclaration","scope":27015,"src":"380:42:143","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":26520,"name":"uint8","nodeType":"ElementaryTypeName","src":"380:5:143","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3138","id":26521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"420:2:143","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"visibility":"private"},{"canonicalName":"BridgeToken.SwapToken","id":26527,"members":[{"constant":false,"id":26524,"mutability":"mutable","name":"tokenContract","nodeType":"VariableDeclaration","scope":26527,"src":"459:21:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26523,"name":"address","nodeType":"ElementaryTypeName","src":"459:7:143","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26526,"mutability":"mutable","name":"supply","nodeType":"VariableDeclaration","scope":26527,"src":"491:14:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26525,"name":"uint256","nodeType":"ElementaryTypeName","src":"491:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"SwapToken","nodeType":"StructDefinition","scope":27015,"src":"431:82:143","visibility":"public"},{"constant":false,"id":26531,"mutability":"mutable","name":"swapTokens","nodeType":"VariableDeclaration","scope":27015,"src":"519:40:143","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SwapToken_$26527_storage_$","typeString":"mapping(address => struct BridgeToken.SwapToken)"},"typeName":{"id":26530,"keyType":{"id":26528,"name":"address","nodeType":"ElementaryTypeName","src":"527:7:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"519:29:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SwapToken_$26527_storage_$","typeString":"mapping(address => struct BridgeToken.SwapToken)"},"valueType":{"id":26529,"name":"SwapToken","nodeType":"UserDefinedTypeName","referencedDeclaration":26527,"src":"538:9:143","typeDescriptions":{"typeIdentifier":"t_struct$_SwapToken_$26527_storage_ptr","typeString":"struct BridgeToken.SwapToken"}}},"visibility":"internal"},{"constant":false,"functionSelector":"21d93090","id":26535,"mutability":"mutable","name":"chainIds","nodeType":"VariableDeclaration","scope":27015,"src":"568:40:143","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":26534,"keyType":{"id":26532,"name":"uint256","nodeType":"ElementaryTypeName","src":"576:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"568:24:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueType":{"id":26533,"name":"bool","nodeType":"ElementaryTypeName","src":"587:4:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"anonymous":false,"id":26547,"name":"Mint","nodeType":"EventDefinition","parameters":{"id":26546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26537,"indexed":false,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":26547,"src":"638:10:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26536,"name":"address","nodeType":"ElementaryTypeName","src":"638:7:143","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26539,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":26547,"src":"659:14:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26538,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":26541,"indexed":false,"mutability":"mutable","name":"feeAddress","nodeType":"VariableDeclaration","scope":26547,"src":"684:18:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26540,"name":"address","nodeType":"ElementaryTypeName","src":"684:7:143","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26543,"indexed":false,"mutability":"mutable","name":"feeAmount","nodeType":"VariableDeclaration","scope":26547,"src":"713:17:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26542,"name":"uint256","nodeType":"ElementaryTypeName","src":"713:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":26545,"indexed":false,"mutability":"mutable","name":"originTxId","nodeType":"VariableDeclaration","scope":26547,"src":"741:18:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":26544,"name":"bytes32","nodeType":"ElementaryTypeName","src":"741:7:143","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"627:139:143"},"src":"617:150:143"},{"anonymous":false,"id":26553,"name":"Unwrap","nodeType":"EventDefinition","parameters":{"id":26552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26549,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":26553,"src":"786:14:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26548,"name":"uint256","nodeType":"ElementaryTypeName","src":"786:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":26551,"indexed":false,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":26553,"src":"802:15:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26550,"name":"uint256","nodeType":"ElementaryTypeName","src":"802:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"785:33:143"},"src":"773:46:143"},{"anonymous":false,"id":26557,"name":"AddSupportedChainId","nodeType":"EventDefinition","parameters":{"id":26556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26555,"indexed":false,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":26557,"src":"851:15:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26554,"name":"uint256","nodeType":"ElementaryTypeName","src":"851:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"850:17:143"},"src":"825:43:143"},{"anonymous":false,"id":26561,"name":"MigrateBridgeRole","nodeType":"EventDefinition","parameters":{"id":26560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26559,"indexed":false,"mutability":"mutable","name":"newBridgeRoleAddress","nodeType":"VariableDeclaration","scope":26561,"src":"898:28:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26558,"name":"address","nodeType":"ElementaryTypeName","src":"898:7:143","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"897:30:143"},"src":"874:54:143"},{"anonymous":false,"id":26567,"name":"AddSwapToken","nodeType":"EventDefinition","parameters":{"id":26566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26563,"indexed":false,"mutability":"mutable","name":"contractAddress","nodeType":"VariableDeclaration","scope":26567,"src":"953:23:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26562,"name":"address","nodeType":"ElementaryTypeName","src":"953:7:143","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26565,"indexed":false,"mutability":"mutable","name":"supplyIncrement","nodeType":"VariableDeclaration","scope":26567,"src":"978:23:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26564,"name":"uint256","nodeType":"ElementaryTypeName","src":"978:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"952:50:143"},"src":"934:69:143"},{"anonymous":false,"id":26573,"name":"RemoveSwapToken","nodeType":"EventDefinition","parameters":{"id":26572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26569,"indexed":false,"mutability":"mutable","name":"contractAddress","nodeType":"VariableDeclaration","scope":26573,"src":"1031:23:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26568,"name":"address","nodeType":"ElementaryTypeName","src":"1031:7:143","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26571,"indexed":false,"mutability":"mutable","name":"supplyDecrement","nodeType":"VariableDeclaration","scope":26573,"src":"1056:23:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26570,"name":"uint256","nodeType":"ElementaryTypeName","src":"1056:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1030:50:143"},"src":"1009:72:143"},{"anonymous":false,"id":26579,"name":"Swap","nodeType":"EventDefinition","parameters":{"id":26578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26575,"indexed":false,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":26579,"src":"1098:13:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26574,"name":"address","nodeType":"ElementaryTypeName","src":"1098:7:143","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26577,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":26579,"src":"1113:14:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26576,"name":"uint256","nodeType":"ElementaryTypeName","src":"1113:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1097:31:143"},"src":"1087:42:143"},{"body":{"id":26599,"nodeType":"Block","src":"1183:75:143","statements":[{"expression":{"arguments":[{"expression":{"id":26589,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1210:3:143","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":26590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1210:10:143","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":26586,"name":"bridgeRoles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26513,"src":"1194:11:143","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage","typeString":"struct Roles.Role storage ref"}},"id":26588,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":26268,"src":"1194:15:143","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Role_$26242_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$26242_storage_ptr_$","typeString":"function (struct Roles.Role storage pointer,address)"}},"id":26591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1194:27:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26592,"nodeType":"ExpressionStatement","src":"1194:27:143"},{"expression":{"id":26597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":26593,"name":"chainIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26535,"src":"1232:8:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":26595,"indexExpression":{"hexValue":"30","id":26594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1241:1:143","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1232:11:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":26596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1246:4:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1232:18:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":26598,"nodeType":"ExpressionStatement","src":"1232:18:143"}]},"id":26600,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":26582,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26516,"src":"1157:10:143","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":26583,"name":"TOKEN_SYMBOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26519,"src":"1169:12:143","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":26584,"modifierName":{"id":26581,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27541,"src":"1151:5:143","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$27541_$","typeString":"type(contract ERC20)"}},"nodeType":"ModifierInvocation","src":"1151:31:143"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":26580,"nodeType":"ParameterList","parameters":[],"src":"1148:2:143"},"returnParameters":{"id":26585,"nodeType":"ParameterList","parameters":[],"src":"1183:0:143"},"scope":27015,"src":"1137:121:143","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[27117],"body":{"id":26608,"nodeType":"Block","src":"1331:40:143","statements":[{"expression":{"id":26606,"name":"TOKEN_DECIMALS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26522,"src":"1349:14:143","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":26605,"id":26607,"nodeType":"Return","src":"1342:21:143"}]},"functionSelector":"313ce567","id":26609,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nodeType":"FunctionDefinition","overrides":{"id":26602,"nodeType":"OverrideSpecifier","overrides":[],"src":"1306:8:143"},"parameters":{"id":26601,"nodeType":"ParameterList","parameters":[],"src":"1283:2:143"},"returnParameters":{"id":26605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26604,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":26609,"src":"1324:5:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":26603,"name":"uint8","nodeType":"ElementaryTypeName","src":"1324:5:143","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1323:7:143"},"scope":27015,"src":"1266:105:143","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":26655,"nodeType":"Block","src":"2069:251:143","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":26626,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2104:3:143","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":26627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2104:10:143","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":26624,"name":"bridgeRoles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26513,"src":"2088:11:143","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage","typeString":"struct Roles.Role storage ref"}},"id":26625,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"has","nodeType":"MemberAccess","referencedDeclaration":26319,"src":"2088:15:143","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Role_$26242_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$26242_storage_ptr_$","typeString":"function (struct Roles.Role storage pointer,address) view returns (bool)"}},"id":26628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2088:27:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e617574686f72697a65642e","id":26629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2117:15:143","typeDescriptions":{"typeIdentifier":"t_stringliteral_8aac2af0f774d3d92b3b1534edbfa4297c564e32014762bd9446ba4e8ae4e18e","typeString":"literal_string \"Unauthorized.\""},"value":"Unauthorized."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8aac2af0f774d3d92b3b1534edbfa4297c564e32014762bd9446ba4e8ae4e18e","typeString":"literal_string \"Unauthorized.\""}],"id":26623,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2080:7:143","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2080:53:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26631,"nodeType":"ExpressionStatement","src":"2080:53:143"},{"expression":{"arguments":[{"id":26633,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26612,"src":"2150:2:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":26634,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26614,"src":"2154:6:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26632,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27417,"src":"2144:5:143","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":26635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2144:17:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26636,"nodeType":"ExpressionStatement","src":"2144:17:143"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26637,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26618,"src":"2176:9:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":26638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2188:1:143","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2176:13:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":26646,"nodeType":"IfStatement","src":"2172:74:143","trueBody":{"id":26645,"nodeType":"Block","src":"2191:55:143","statements":[{"expression":{"arguments":[{"id":26641,"name":"feeAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26616,"src":"2212:10:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":26642,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26618,"src":"2224:9:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26640,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27417,"src":"2206:5:143","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":26643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2206:28:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26644,"nodeType":"ExpressionStatement","src":"2206:28:143"}]}},{"eventCall":{"arguments":[{"id":26648,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26612,"src":"2266:2:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":26649,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26614,"src":"2270:6:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":26650,"name":"feeAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26616,"src":"2278:10:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":26651,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26618,"src":"2290:9:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":26652,"name":"originTxId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26620,"src":"2301:10:143","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":26647,"name":"Mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26547,"src":"2261:4:143","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (address,uint256,address,uint256,bytes32)"}},"id":26653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2261:51:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26654,"nodeType":"EmitStatement","src":"2256:56:143"}]},"documentation":{"id":26610,"nodeType":"StructuredDocumentation","src":"1379:524:143","text":" @dev Mint function used by bridge. Optional FeeAddress and FeeAmount parameters used to mint small percentage of transfered assets directly to bridge.\n @param to Address to mint funds to.\n @param amount Amount of funds to mint.\n @param feeAddress Address to mint bridge fees to.\n @param feeAmount Amount to mint as bridge fees.\n @param feeAmount Amount to mint as bridge fees.\n @param originTxId Transaction ID from external network that triggered this minting."},"functionSelector":"67fc19bb","id":26656,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":26621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26612,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":26656,"src":"1933:10:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26611,"name":"address","nodeType":"ElementaryTypeName","src":"1933:7:143","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26614,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":26656,"src":"1954:14:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26613,"name":"uint256","nodeType":"ElementaryTypeName","src":"1954:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":26616,"mutability":"mutable","name":"feeAddress","nodeType":"VariableDeclaration","scope":26656,"src":"1979:18:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26615,"name":"address","nodeType":"ElementaryTypeName","src":"1979:7:143","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26618,"mutability":"mutable","name":"feeAmount","nodeType":"VariableDeclaration","scope":26656,"src":"2008:17:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26617,"name":"uint256","nodeType":"ElementaryTypeName","src":"2008:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":26620,"mutability":"mutable","name":"originTxId","nodeType":"VariableDeclaration","scope":26656,"src":"2036:18:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":26619,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2036:7:143","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1922:139:143"},"returnParameters":{"id":26622,"nodeType":"ParameterList","parameters":[],"src":"2069:0:143"},"scope":27015,"src":"1909:411:143","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":26700,"nodeType":"Block","src":"2493:534:143","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":26665,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2528:3:143","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":26666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2528:10:143","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":26663,"name":"bridgeRoles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26513,"src":"2512:11:143","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage","typeString":"struct Roles.Role storage ref"}},"id":26664,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"has","nodeType":"MemberAccess","referencedDeclaration":26319,"src":"2512:15:143","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Role_$26242_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$26242_storage_ptr_$","typeString":"function (struct Roles.Role storage pointer,address) view returns (bool)"}},"id":26667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2512:27:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e617574686f72697a65642e","id":26668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2541:15:143","typeDescriptions":{"typeIdentifier":"t_stringliteral_8aac2af0f774d3d92b3b1534edbfa4297c564e32014762bd9446ba4e8ae4e18e","typeString":"literal_string \"Unauthorized.\""},"value":"Unauthorized."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8aac2af0f774d3d92b3b1534edbfa4297c564e32014762bd9446ba4e8ae4e18e","typeString":"literal_string \"Unauthorized.\""}],"id":26662,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2504:7:143","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2504:53:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26670,"nodeType":"ExpressionStatement","src":"2504:53:143"},{"assignments":[26672],"declarations":[{"constant":false,"id":26672,"mutability":"mutable","name":"currentChainId","nodeType":"VariableDeclaration","scope":26700,"src":"2653:22:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26671,"name":"uint256","nodeType":"ElementaryTypeName","src":"2653:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":26673,"nodeType":"VariableDeclarationStatement","src":"2653:22:143"},{"AST":{"nodeType":"YulBlock","src":"2695:53:143","statements":[{"nodeType":"YulAssignment","src":"2710:27:143","value":{"arguments":[],"functionName":{"name":"chainid","nodeType":"YulIdentifier","src":"2728:7:143"},"nodeType":"YulFunctionCall","src":"2728:9:143"},"variableNames":[{"name":"currentChainId","nodeType":"YulIdentifier","src":"2710:14:143"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":26672,"isOffset":false,"isSlot":false,"src":"2710:14:143","valueSize":1}],"id":26674,"nodeType":"InlineAssembly","src":"2686:62:143"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26676,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26659,"src":"2766:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":26677,"name":"currentChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26672,"src":"2777:14:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2766:25:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f74206164642063757272656e7420636861696e2049442e","id":26679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2793:30:143","typeDescriptions":{"typeIdentifier":"t_stringliteral_d4347e853352fc6112fc4868eb8ca646e3e53fd238f8466a81e4e72b3a336e37","typeString":"literal_string \"Cannot add current chain ID.\""},"value":"Cannot add current chain ID."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d4347e853352fc6112fc4868eb8ca646e3e53fd238f8466a81e4e72b3a336e37","typeString":"literal_string \"Cannot add current chain ID.\""}],"id":26675,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2758:7:143","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2758:66:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26681,"nodeType":"ExpressionStatement","src":"2758:66:143"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":26686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":26682,"name":"chainIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26535,"src":"2879:8:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":26684,"indexExpression":{"id":26683,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26659,"src":"2888:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2879:17:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"74727565","id":26685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2900:4:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2879:25:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":26689,"nodeType":"IfStatement","src":"2875:64:143","trueBody":{"id":26688,"nodeType":"Block","src":"2906:33:143","statements":[{"functionReturnParameters":26661,"id":26687,"nodeType":"Return","src":"2921:7:143"}]}},{"expression":{"id":26694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":26690,"name":"chainIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26535,"src":"2951:8:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":26692,"indexExpression":{"id":26691,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26659,"src":"2960:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2951:17:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":26693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2971:4:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2951:24:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":26695,"nodeType":"ExpressionStatement","src":"2951:24:143"},{"eventCall":{"arguments":[{"id":26697,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26659,"src":"3011:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26696,"name":"AddSupportedChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26557,"src":"2991:19:143","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":26698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2991:28:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26699,"nodeType":"EmitStatement","src":"2986:33:143"}]},"documentation":{"id":26657,"nodeType":"StructuredDocumentation","src":"2328:106:143","text":" @dev Add new chainId to list of supported Ids.\n @param chainId ChainId to add."},"functionSelector":"66de3b36","id":26701,"implemented":true,"kind":"function","modifiers":[],"name":"addSupportedChainId","nodeType":"FunctionDefinition","parameters":{"id":26660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26659,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":26701,"src":"2469:15:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26658,"name":"uint256","nodeType":"ElementaryTypeName","src":"2469:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2468:17:143"},"returnParameters":{"id":26661,"nodeType":"ParameterList","parameters":[],"src":"2493:0:143"},"scope":27015,"src":"2440:587:143","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":26738,"nodeType":"Block","src":"3457:231:143","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"id":26714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":26710,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"3476:2:143","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":26711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"origin","nodeType":"MemberAccess","src":"3476:9:143","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":26712,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3489:3:143","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":26713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3489:10:143","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3476:23:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436f6e74726163742063616c6c73206e6f7420737570706f727465642e","id":26715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3501:31:143","typeDescriptions":{"typeIdentifier":"t_stringliteral_08fbf4982d3e7cb593323873d51752457503c546b991daf1b4ff182b255ed8e6","typeString":"literal_string \"Contract calls not supported.\""},"value":"Contract calls not supported."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_08fbf4982d3e7cb593323873d51752457503c546b991daf1b4ff182b255ed8e6","typeString":"literal_string \"Contract calls not supported.\""}],"id":26709,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3468:7:143","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3468:65:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26717,"nodeType":"ExpressionStatement","src":"3468:65:143"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":26723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":26719,"name":"chainIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26535,"src":"3552:8:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":26721,"indexExpression":{"id":26720,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26706,"src":"3561:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3552:17:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"74727565","id":26722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3573:4:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3552:25:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436861696e204944206e6f7420737570706f727465642e","id":26724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3579:25:143","typeDescriptions":{"typeIdentifier":"t_stringliteral_793c9892b686151c2016bd69162cce60f79273ec65974a99cbe11bccb27809bb","typeString":"literal_string \"Chain ID not supported.\""},"value":"Chain ID not supported."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_793c9892b686151c2016bd69162cce60f79273ec65974a99cbe11bccb27809bb","typeString":"literal_string \"Chain ID not supported.\""}],"id":26718,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3544:7:143","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3544:61:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26726,"nodeType":"ExpressionStatement","src":"3544:61:143"},{"expression":{"arguments":[{"expression":{"id":26728,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3622:3:143","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":26729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3622:10:143","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":26730,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26704,"src":"3634:6:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26727,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27473,"src":"3616:5:143","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":26731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3616:25:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26732,"nodeType":"ExpressionStatement","src":"3616:25:143"},{"eventCall":{"arguments":[{"id":26734,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26704,"src":"3664:6:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":26735,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26706,"src":"3672:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26733,"name":"Unwrap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26553,"src":"3657:6:143","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":26736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3657:23:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26737,"nodeType":"EmitStatement","src":"3652:28:143"}]},"documentation":{"id":26702,"nodeType":"StructuredDocumentation","src":"3035:360:143","text":" @dev Burns assets and signals bridge to migrate funds to the same address on the provided chainId.\n @param amount Amount of asset to unwrap.\n @param chainId ChainId to unwrap or migrate funds to. Only used for multi-network bridge deployment.\n                Zero by default for bridge deployment with only 2 networks."},"functionSelector":"6e286671","id":26739,"implemented":true,"kind":"function","modifiers":[],"name":"unwrap","nodeType":"FunctionDefinition","parameters":{"id":26707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26704,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":26739,"src":"3417:14:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26703,"name":"uint256","nodeType":"ElementaryTypeName","src":"3417:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":26706,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":26739,"src":"3433:15:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26705,"name":"uint256","nodeType":"ElementaryTypeName","src":"3433:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3416:33:143"},"returnParameters":{"id":26708,"nodeType":"ParameterList","parameters":[],"src":"3457:0:143"},"scope":27015,"src":"3401:287:143","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":26771,"nodeType":"Block","src":"3901:216:143","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":26748,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3936:3:143","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":26749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3936:10:143","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":26746,"name":"bridgeRoles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26513,"src":"3920:11:143","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage","typeString":"struct Roles.Role storage ref"}},"id":26747,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"has","nodeType":"MemberAccess","referencedDeclaration":26319,"src":"3920:15:143","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Role_$26242_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$26242_storage_ptr_$","typeString":"function (struct Roles.Role storage pointer,address) view returns (bool)"}},"id":26750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3920:27:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e617574686f72697a65642e","id":26751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3949:15:143","typeDescriptions":{"typeIdentifier":"t_stringliteral_8aac2af0f774d3d92b3b1534edbfa4297c564e32014762bd9446ba4e8ae4e18e","typeString":"literal_string \"Unauthorized.\""},"value":"Unauthorized."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8aac2af0f774d3d92b3b1534edbfa4297c564e32014762bd9446ba4e8ae4e18e","typeString":"literal_string \"Unauthorized.\""}],"id":26745,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3912:7:143","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3912:53:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26753,"nodeType":"ExpressionStatement","src":"3912:53:143"},{"expression":{"arguments":[{"expression":{"id":26757,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3995:3:143","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":26758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3995:10:143","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":26754,"name":"bridgeRoles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26513,"src":"3976:11:143","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage","typeString":"struct Roles.Role storage ref"}},"id":26756,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":26293,"src":"3976:18:143","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Role_$26242_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$26242_storage_ptr_$","typeString":"function (struct Roles.Role storage pointer,address)"}},"id":26759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3976:30:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26760,"nodeType":"ExpressionStatement","src":"3976:30:143"},{"expression":{"arguments":[{"id":26764,"name":"newBridgeRoleAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26742,"src":"4033:20:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":26761,"name":"bridgeRoles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26513,"src":"4017:11:143","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage","typeString":"struct Roles.Role storage ref"}},"id":26763,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":26268,"src":"4017:15:143","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Role_$26242_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$26242_storage_ptr_$","typeString":"function (struct Roles.Role storage pointer,address)"}},"id":26765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4017:37:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26766,"nodeType":"ExpressionStatement","src":"4017:37:143"},{"eventCall":{"arguments":[{"id":26768,"name":"newBridgeRoleAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26742,"src":"4088:20:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26767,"name":"MigrateBridgeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26561,"src":"4070:17:143","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":26769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4070:39:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26770,"nodeType":"EmitStatement","src":"4065:44:143"}]},"documentation":{"id":26740,"nodeType":"StructuredDocumentation","src":"3696:135:143","text":" @dev Provide Bridge Role (Admin Role) to new address.\n @param newBridgeRoleAddress New bridge role address."},"functionSelector":"5d9898d3","id":26772,"implemented":true,"kind":"function","modifiers":[],"name":"migrateBridgeRole","nodeType":"FunctionDefinition","parameters":{"id":26743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26742,"mutability":"mutable","name":"newBridgeRoleAddress","nodeType":"VariableDeclaration","scope":26772,"src":"3864:28:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26741,"name":"address","nodeType":"ElementaryTypeName","src":"3864:7:143","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3863:30:143"},"returnParameters":{"id":26744,"nodeType":"ParameterList","parameters":[],"src":"3901:0:143"},"scope":27015,"src":"3837:280:143","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":26834,"nodeType":"Block","src":"4491:770:143","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":26783,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4526:3:143","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":26784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4526:10:143","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":26781,"name":"bridgeRoles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26513,"src":"4510:11:143","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage","typeString":"struct Roles.Role storage ref"}},"id":26782,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"has","nodeType":"MemberAccess","referencedDeclaration":26319,"src":"4510:15:143","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Role_$26242_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$26242_storage_ptr_$","typeString":"function (struct Roles.Role storage pointer,address) view returns (bool)"}},"id":26785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4510:27:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e617574686f72697a65642e","id":26786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4539:15:143","typeDescriptions":{"typeIdentifier":"t_stringliteral_8aac2af0f774d3d92b3b1534edbfa4297c564e32014762bd9446ba4e8ae4e18e","typeString":"literal_string \"Unauthorized.\""},"value":"Unauthorized."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8aac2af0f774d3d92b3b1534edbfa4297c564e32014762bd9446ba4e8ae4e18e","typeString":"literal_string \"Unauthorized.\""}],"id":26780,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4502:7:143","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4502:53:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26788,"nodeType":"ExpressionStatement","src":"4502:53:143"},{"expression":{"arguments":[{"arguments":[{"id":26791,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26775,"src":"4585:15:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26790,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27014,"src":"4574:10:143","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":26792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4574:27:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"41646472657373206973206e6f7420636f6e74726163742e","id":26793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4603:26:143","typeDescriptions":{"typeIdentifier":"t_stringliteral_9a6dd94caa598fe86c617cecfe9289af5dbadedbe077dcdbd38fdf5418b1f3a5","typeString":"literal_string \"Address is not contract.\""},"value":"Address is not contract."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9a6dd94caa598fe86c617cecfe9289af5dbadedbe077dcdbd38fdf5418b1f3a5","typeString":"literal_string \"Address is not contract.\""}],"id":26789,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4566:7:143","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4566:64:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26795,"nodeType":"ExpressionStatement","src":"4566:64:143"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":26804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":26796,"name":"swapTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26531,"src":"4805:10:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SwapToken_$26527_storage_$","typeString":"mapping(address => struct BridgeToken.SwapToken storage ref)"}},"id":26798,"indexExpression":{"id":26797,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26775,"src":"4816:15:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4805:27:143","typeDescriptions":{"typeIdentifier":"t_struct$_SwapToken_$26527_storage","typeString":"struct BridgeToken.SwapToken storage ref"}},"id":26799,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenContract","nodeType":"MemberAccess","referencedDeclaration":26524,"src":"4805:41:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":26802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4858:1:143","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":26801,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4850:7:143","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":26800,"name":"address","nodeType":"ElementaryTypeName","src":"4850:7:143","typeDescriptions":{}}},"id":26803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4850:10:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4805:55:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":26827,"nodeType":"Block","src":"5042:150:143","statements":[{"expression":{"id":26825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":26815,"name":"swapTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26531,"src":"5057:10:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SwapToken_$26527_storage_$","typeString":"mapping(address => struct BridgeToken.SwapToken storage ref)"}},"id":26817,"indexExpression":{"id":26816,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26775,"src":"5068:15:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5057:27:143","typeDescriptions":{"typeIdentifier":"t_struct$_SwapToken_$26527_storage","typeString":"struct BridgeToken.SwapToken storage ref"}},"id":26818,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"supply","nodeType":"MemberAccess","referencedDeclaration":26526,"src":"5057:34:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":26819,"name":"swapTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26531,"src":"5111:10:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SwapToken_$26527_storage_$","typeString":"mapping(address => struct BridgeToken.SwapToken storage ref)"}},"id":26821,"indexExpression":{"id":26820,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26775,"src":"5122:15:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5111:27:143","typeDescriptions":{"typeIdentifier":"t_struct$_SwapToken_$26527_storage","typeString":"struct BridgeToken.SwapToken storage ref"}},"id":26822,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"supply","nodeType":"MemberAccess","referencedDeclaration":26526,"src":"5111:34:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":26823,"name":"supplyIncrement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26777,"src":"5165:15:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5111:69:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5057:123:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26826,"nodeType":"ExpressionStatement","src":"5057:123:143"}]},"id":26828,"nodeType":"IfStatement","src":"4801:391:143","trueBody":{"id":26814,"nodeType":"Block","src":"4862:174:143","statements":[{"expression":{"id":26812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":26805,"name":"swapTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26531,"src":"4877:10:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SwapToken_$26527_storage_$","typeString":"mapping(address => struct BridgeToken.SwapToken storage ref)"}},"id":26807,"indexExpression":{"id":26806,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26775,"src":"4888:15:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4877:27:143","typeDescriptions":{"typeIdentifier":"t_struct$_SwapToken_$26527_storage","typeString":"struct BridgeToken.SwapToken storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":26809,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26775,"src":"4951:15:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":26810,"name":"supplyIncrement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26777,"src":"4993:15:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26808,"name":"SwapToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26527,"src":"4907:9:143","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapToken_$26527_storage_ptr_$","typeString":"type(struct BridgeToken.SwapToken storage pointer)"}},"id":26811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["tokenContract","supply"],"nodeType":"FunctionCall","src":"4907:117:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapToken_$26527_memory_ptr","typeString":"struct BridgeToken.SwapToken memory"}},"src":"4877:147:143","typeDescriptions":{"typeIdentifier":"t_struct$_SwapToken_$26527_storage","typeString":"struct BridgeToken.SwapToken storage ref"}},"id":26813,"nodeType":"ExpressionStatement","src":"4877:147:143"}]}},{"eventCall":{"arguments":[{"id":26830,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26775,"src":"5220:15:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":26831,"name":"supplyIncrement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26777,"src":"5237:15:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26829,"name":"AddSwapToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26567,"src":"5207:12:143","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":26832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5207:46:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26833,"nodeType":"EmitStatement","src":"5202:51:143"}]},"documentation":{"id":26773,"nodeType":"StructuredDocumentation","src":"4125:267:143","text":" @dev Add Token to accept swaps from or increase supply of existing swap token.\n @param contractAddress Token Address to allow swaps.\n @param supplyIncrement Amount of assets allowed to be swapped (or incremental increase in amount)."},"functionSelector":"eff03830","id":26835,"implemented":true,"kind":"function","modifiers":[],"name":"addSwapToken","nodeType":"FunctionDefinition","parameters":{"id":26778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26775,"mutability":"mutable","name":"contractAddress","nodeType":"VariableDeclaration","scope":26835,"src":"4420:23:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26774,"name":"address","nodeType":"ElementaryTypeName","src":"4420:7:143","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26777,"mutability":"mutable","name":"supplyIncrement","nodeType":"VariableDeclaration","scope":26835,"src":"4445:23:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26776,"name":"uint256","nodeType":"ElementaryTypeName","src":"4445:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4419:50:143"},"returnParameters":{"id":26779,"nodeType":"ParameterList","parameters":[],"src":"4491:0:143"},"scope":27015,"src":"4398:863:143","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":26903,"nodeType":"Block","src":"5591:852:143","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":26846,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5626:3:143","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":26847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5626:10:143","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":26844,"name":"bridgeRoles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26513,"src":"5610:11:143","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$26242_storage","typeString":"struct Roles.Role storage ref"}},"id":26845,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"has","nodeType":"MemberAccess","referencedDeclaration":26319,"src":"5610:15:143","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Role_$26242_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$26242_storage_ptr_$","typeString":"function (struct Roles.Role storage pointer,address) view returns (bool)"}},"id":26848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5610:27:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e617574686f72697a6564","id":26849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5639:14:143","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":26843,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5602:7:143","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5602:52:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26851,"nodeType":"ExpressionStatement","src":"5602:52:143"},{"expression":{"arguments":[{"arguments":[{"id":26854,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26838,"src":"5684:15:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26853,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27014,"src":"5673:10:143","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":26855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5673:27:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"41646472657373206973206e6f7420636f6e74726163742e","id":26856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5702:26:143","typeDescriptions":{"typeIdentifier":"t_stringliteral_9a6dd94caa598fe86c617cecfe9289af5dbadedbe077dcdbd38fdf5418b1f3a5","typeString":"literal_string \"Address is not contract.\""},"value":"Address is not contract."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9a6dd94caa598fe86c617cecfe9289af5dbadedbe077dcdbd38fdf5418b1f3a5","typeString":"literal_string \"Address is not contract.\""}],"id":26852,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5665:7:143","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5665:64:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26858,"nodeType":"ExpressionStatement","src":"5665:64:143"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":26868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":26860,"name":"swapTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26531,"src":"5762:10:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SwapToken_$26527_storage_$","typeString":"mapping(address => struct BridgeToken.SwapToken storage ref)"}},"id":26862,"indexExpression":{"id":26861,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26838,"src":"5773:15:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5762:27:143","typeDescriptions":{"typeIdentifier":"t_struct$_SwapToken_$26527_storage","typeString":"struct BridgeToken.SwapToken storage ref"}},"id":26863,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenContract","nodeType":"MemberAccess","referencedDeclaration":26524,"src":"5762:41:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":26866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5815:1:143","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":26865,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5807:7:143","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":26864,"name":"address","nodeType":"ElementaryTypeName","src":"5807:7:143","typeDescriptions":{}}},"id":26867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5807:10:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"5762:55:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5377617020746f6b656e206e6f7420737570706f72746564","id":26869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5832:26:143","typeDescriptions":{"typeIdentifier":"t_stringliteral_aa084ce74a15e67c878ead08a50e6a44f4a15241cc280067bab192b4a67e6e54","typeString":"literal_string \"Swap token not supported\""},"value":"Swap token not supported"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_aa084ce74a15e67c878ead08a50e6a44f4a15241cc280067bab192b4a67e6e54","typeString":"literal_string \"Swap token not supported\""}],"id":26859,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5740:7:143","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5740:129:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26871,"nodeType":"ExpressionStatement","src":"5740:129:143"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":26872,"name":"swapTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26531,"src":"6100:10:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SwapToken_$26527_storage_$","typeString":"mapping(address => struct BridgeToken.SwapToken storage ref)"}},"id":26874,"indexExpression":{"id":26873,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26838,"src":"6111:15:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6100:27:143","typeDescriptions":{"typeIdentifier":"t_struct$_SwapToken_$26527_storage","typeString":"struct BridgeToken.SwapToken storage ref"}},"id":26875,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"supply","nodeType":"MemberAccess","referencedDeclaration":26526,"src":"6100:34:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":26876,"name":"supplyDecrement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26840,"src":"6137:15:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6100:52:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":26896,"nodeType":"Block","src":"6310:61:143","statements":[{"expression":{"id":26894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"6325:34:143","subExpression":{"baseExpression":{"id":26891,"name":"swapTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26531,"src":"6332:10:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SwapToken_$26527_storage_$","typeString":"mapping(address => struct BridgeToken.SwapToken storage ref)"}},"id":26893,"indexExpression":{"id":26892,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26838,"src":"6343:15:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6332:27:143","typeDescriptions":{"typeIdentifier":"t_struct$_SwapToken_$26527_storage","typeString":"struct BridgeToken.SwapToken storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26895,"nodeType":"ExpressionStatement","src":"6325:34:143"}]},"id":26897,"nodeType":"IfStatement","src":"6096:275:143","trueBody":{"id":26890,"nodeType":"Block","src":"6154:150:143","statements":[{"expression":{"id":26888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":26878,"name":"swapTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26531,"src":"6169:10:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SwapToken_$26527_storage_$","typeString":"mapping(address => struct BridgeToken.SwapToken storage ref)"}},"id":26880,"indexExpression":{"id":26879,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26838,"src":"6180:15:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6169:27:143","typeDescriptions":{"typeIdentifier":"t_struct$_SwapToken_$26527_storage","typeString":"struct BridgeToken.SwapToken storage ref"}},"id":26881,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"supply","nodeType":"MemberAccess","referencedDeclaration":26526,"src":"6169:34:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":26882,"name":"swapTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26531,"src":"6223:10:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SwapToken_$26527_storage_$","typeString":"mapping(address => struct BridgeToken.SwapToken storage ref)"}},"id":26884,"indexExpression":{"id":26883,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26838,"src":"6234:15:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6223:27:143","typeDescriptions":{"typeIdentifier":"t_struct$_SwapToken_$26527_storage","typeString":"struct BridgeToken.SwapToken storage ref"}},"id":26885,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"supply","nodeType":"MemberAccess","referencedDeclaration":26526,"src":"6223:34:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":26886,"name":"supplyDecrement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26840,"src":"6277:15:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6223:69:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6169:123:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26889,"nodeType":"ExpressionStatement","src":"6169:123:143"}]}},{"eventCall":{"arguments":[{"id":26899,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26838,"src":"6402:15:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":26900,"name":"supplyDecrement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26840,"src":"6419:15:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26898,"name":"RemoveSwapToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26573,"src":"6386:15:143","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":26901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6386:49:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26902,"nodeType":"EmitStatement","src":"6381:54:143"}]},"documentation":{"id":26836,"nodeType":"StructuredDocumentation","src":"5269:220:143","text":" @dev Remove amount of swaps allowed from existing swap token.\n @param contractAddress Token Address to remove swap amount.\n @param supplyDecrement Amount to remove from the swap supply."},"functionSelector":"7c38b457","id":26904,"implemented":true,"kind":"function","modifiers":[],"name":"removeSwapToken","nodeType":"FunctionDefinition","parameters":{"id":26841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26838,"mutability":"mutable","name":"contractAddress","nodeType":"VariableDeclaration","scope":26904,"src":"5520:23:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26837,"name":"address","nodeType":"ElementaryTypeName","src":"5520:7:143","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26840,"mutability":"mutable","name":"supplyDecrement","nodeType":"VariableDeclaration","scope":26904,"src":"5545:23:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26839,"name":"uint256","nodeType":"ElementaryTypeName","src":"5545:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5519:50:143"},"returnParameters":{"id":26842,"nodeType":"ParameterList","parameters":[],"src":"5591:0:143"},"scope":27015,"src":"5495:948:143","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":26917,"nodeType":"Block","src":"6687:50:143","statements":[{"expression":{"expression":{"baseExpression":{"id":26912,"name":"swapTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26531,"src":"6705:10:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SwapToken_$26527_storage_$","typeString":"mapping(address => struct BridgeToken.SwapToken storage ref)"}},"id":26914,"indexExpression":{"id":26913,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26907,"src":"6716:5:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6705:17:143","typeDescriptions":{"typeIdentifier":"t_struct$_SwapToken_$26527_storage","typeString":"struct BridgeToken.SwapToken storage ref"}},"id":26915,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"supply","nodeType":"MemberAccess","referencedDeclaration":26526,"src":"6705:24:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":26911,"id":26916,"nodeType":"Return","src":"6698:31:143"}]},"documentation":{"id":26905,"nodeType":"StructuredDocumentation","src":"6451:165:143","text":" @dev Fetch the remaining amount allowed for a swap token.\n @param token Address of swap token.\n @return amount of swaps remaining."},"functionSelector":"ab32dbb7","id":26918,"implemented":true,"kind":"function","modifiers":[],"name":"swapSupply","nodeType":"FunctionDefinition","parameters":{"id":26908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26907,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":26918,"src":"6642:13:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26906,"name":"address","nodeType":"ElementaryTypeName","src":"6642:7:143","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6641:15:143"},"returnParameters":{"id":26911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26910,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":26918,"src":"6678:7:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26909,"name":"uint256","nodeType":"ElementaryTypeName","src":"6678:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6677:9:143"},"scope":27015,"src":"6622:115:143","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":26996,"nodeType":"Block","src":"6948:749:143","statements":[{"expression":{"arguments":[{"arguments":[{"id":26928,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26921,"src":"6978:5:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26927,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27014,"src":"6967:10:143","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":26929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6967:17:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6b656e206973206e6f74206120636f6e74726163742e","id":26930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6986:26:143","typeDescriptions":{"typeIdentifier":"t_stringliteral_ee340fba1b4c7192bd5dfb879232df43762c487de65079751851ef3bdc40e308","typeString":"literal_string \"Token is not a contract.\""},"value":"Token is not a contract."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ee340fba1b4c7192bd5dfb879232df43762c487de65079751851ef3bdc40e308","typeString":"literal_string \"Token is not a contract.\""}],"id":26926,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6959:7:143","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6959:54:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26932,"nodeType":"ExpressionStatement","src":"6959:54:143"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":26942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":26934,"name":"swapTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26531,"src":"7046:10:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SwapToken_$26527_storage_$","typeString":"mapping(address => struct BridgeToken.SwapToken storage ref)"}},"id":26936,"indexExpression":{"id":26935,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26921,"src":"7057:5:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7046:17:143","typeDescriptions":{"typeIdentifier":"t_struct$_SwapToken_$26527_storage","typeString":"struct BridgeToken.SwapToken storage ref"}},"id":26937,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenContract","nodeType":"MemberAccess","referencedDeclaration":26524,"src":"7046:31:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":26940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7089:1:143","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":26939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7081:7:143","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":26938,"name":"address","nodeType":"ElementaryTypeName","src":"7081:7:143","typeDescriptions":{}}},"id":26941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7081:10:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7046:45:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5377617020746f6b656e206973206e6f74206120636f6e74726163742e","id":26943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7106:31:143","typeDescriptions":{"typeIdentifier":"t_stringliteral_dd0704970159de00957960bde429dd2af6ac97b776b9c4fea3dfc9baf5e52c05","typeString":"literal_string \"Swap token is not a contract.\""},"value":"Swap token is not a contract."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dd0704970159de00957960bde429dd2af6ac97b776b9c4fea3dfc9baf5e52c05","typeString":"literal_string \"Swap token is not a contract.\""}],"id":26933,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7024:7:143","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7024:124:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26945,"nodeType":"ExpressionStatement","src":"7024:124:143"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26947,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26923,"src":"7181:6:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"baseExpression":{"id":26948,"name":"swapTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26531,"src":"7191:10:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SwapToken_$26527_storage_$","typeString":"mapping(address => struct BridgeToken.SwapToken storage ref)"}},"id":26950,"indexExpression":{"id":26949,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26921,"src":"7202:5:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7191:17:143","typeDescriptions":{"typeIdentifier":"t_struct$_SwapToken_$26527_storage","typeString":"struct BridgeToken.SwapToken storage ref"}},"id":26951,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"supply","nodeType":"MemberAccess","referencedDeclaration":26526,"src":"7191:24:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7181:34:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5377617020616d6f756e74206973206d6f7265207468616e20737570706c792e","id":26953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7230:34:143","typeDescriptions":{"typeIdentifier":"t_stringliteral_53aeeada353d4267a2ac2ed0982a7fd501c98a1df926f527e855f97a4ffc1c2c","typeString":"literal_string \"Swap amount is more than supply.\""},"value":"Swap amount is more than supply."}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_53aeeada353d4267a2ac2ed0982a7fd501c98a1df926f527e855f97a4ffc1c2c","typeString":"literal_string \"Swap amount is more than supply.\""}],"id":26946,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7159:7:143","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":26954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7159:116:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26955,"nodeType":"ExpressionStatement","src":"7159:116:143"},{"expression":{"id":26966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":26956,"name":"swapTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26531,"src":"7332:10:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SwapToken_$26527_storage_$","typeString":"mapping(address => struct BridgeToken.SwapToken storage ref)"}},"id":26958,"indexExpression":{"id":26957,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26921,"src":"7343:5:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7332:17:143","typeDescriptions":{"typeIdentifier":"t_struct$_SwapToken_$26527_storage","typeString":"struct BridgeToken.SwapToken storage ref"}},"id":26959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"supply","nodeType":"MemberAccess","referencedDeclaration":26526,"src":"7332:24:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":26960,"name":"swapTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26531,"src":"7359:10:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SwapToken_$26527_storage_$","typeString":"mapping(address => struct BridgeToken.SwapToken storage ref)"}},"id":26962,"indexExpression":{"id":26961,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26921,"src":"7370:5:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7359:17:143","typeDescriptions":{"typeIdentifier":"t_struct$_SwapToken_$26527_storage","typeString":"struct BridgeToken.SwapToken storage ref"}},"id":26963,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"supply","nodeType":"MemberAccess","referencedDeclaration":26526,"src":"7359:24:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":26964,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26923,"src":"7386:6:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7359:33:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7332:60:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26967,"nodeType":"ExpressionStatement","src":"7332:60:143"},{"assignments":[26969],"declarations":[{"constant":false,"id":26969,"mutability":"mutable","name":"swapToken","nodeType":"VariableDeclaration","scope":26996,"src":"7437:23:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Burnable_$27601","typeString":"contract ERC20Burnable"},"typeName":{"id":26968,"name":"ERC20Burnable","nodeType":"UserDefinedTypeName","referencedDeclaration":27601,"src":"7437:13:143","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Burnable_$27601","typeString":"contract ERC20Burnable"}},"visibility":"internal"}],"id":26976,"initialValue":{"arguments":[{"expression":{"baseExpression":{"id":26971,"name":"swapTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26531,"src":"7491:10:143","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SwapToken_$26527_storage_$","typeString":"mapping(address => struct BridgeToken.SwapToken storage ref)"}},"id":26973,"indexExpression":{"id":26972,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26921,"src":"7502:5:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7491:17:143","typeDescriptions":{"typeIdentifier":"t_struct$_SwapToken_$26527_storage","typeString":"struct BridgeToken.SwapToken storage ref"}},"id":26974,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenContract","nodeType":"MemberAccess","referencedDeclaration":26524,"src":"7491:31:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26970,"name":"ERC20Burnable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27601,"src":"7463:13:143","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20Burnable_$27601_$","typeString":"type(contract ERC20Burnable)"}},"id":26975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7463:70:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Burnable_$27601","typeString":"contract ERC20Burnable"}},"nodeType":"VariableDeclarationStatement","src":"7437:96:143"},{"expression":{"arguments":[{"expression":{"id":26980,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7563:3:143","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":26981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7563:10:143","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":26982,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26923,"src":"7575:6:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":26977,"name":"swapToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26969,"src":"7544:9:143","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Burnable_$27601","typeString":"contract ERC20Burnable"}},"id":26979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burnFrom","nodeType":"MemberAccess","referencedDeclaration":27600,"src":"7544:18:143","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":26983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7544:38:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26984,"nodeType":"ExpressionStatement","src":"7544:38:143"},{"expression":{"arguments":[{"expression":{"id":26986,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7633:3:143","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":26987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7633:10:143","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":26988,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26923,"src":"7645:6:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26985,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27417,"src":"7627:5:143","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":26989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7627:25:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26990,"nodeType":"ExpressionStatement","src":"7627:25:143"},{"eventCall":{"arguments":[{"id":26992,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26921,"src":"7675:5:143","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":26993,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26923,"src":"7682:6:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26991,"name":"Swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26579,"src":"7670:4:143","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":26994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7670:19:143","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26995,"nodeType":"EmitStatement","src":"7665:24:143"}]},"documentation":{"id":26919,"nodeType":"StructuredDocumentation","src":"6745:145:143","text":" @dev Perform Swap.\n @param token Address of token to be swapped.\n @param amount Amount of token to be swapped."},"functionSelector":"d004f0f7","id":26997,"implemented":true,"kind":"function","modifiers":[],"name":"swap","nodeType":"FunctionDefinition","parameters":{"id":26924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26921,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":26997,"src":"6910:13:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26920,"name":"address","nodeType":"ElementaryTypeName","src":"6910:7:143","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26923,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":26997,"src":"6925:14:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26922,"name":"uint256","nodeType":"ElementaryTypeName","src":"6925:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6909:31:143"},"returnParameters":{"id":26925,"nodeType":"ParameterList","parameters":[],"src":"6948:0:143"},"scope":27015,"src":"6896:801:143","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":27013,"nodeType":"Block","src":"7909:133:143","statements":[{"assignments":[27006],"declarations":[{"constant":false,"id":27006,"mutability":"mutable","name":"length","nodeType":"VariableDeclaration","scope":27013,"src":"7920:14:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27005,"name":"uint256","nodeType":"ElementaryTypeName","src":"7920:7:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":27007,"nodeType":"VariableDeclarationStatement","src":"7920:14:143"},{"AST":{"nodeType":"YulBlock","src":"7954:53:143","statements":[{"nodeType":"YulAssignment","src":"7969:27:143","value":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"7991:4:143"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"7979:11:143"},"nodeType":"YulFunctionCall","src":"7979:17:143"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"7969:6:143"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":27000,"isOffset":false,"isSlot":false,"src":"7991:4:143","valueSize":1},{"declaration":27006,"isOffset":false,"isSlot":false,"src":"7969:6:143","valueSize":1}],"id":27008,"nodeType":"InlineAssembly","src":"7945:62:143"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27009,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27006,"src":"8024:6:143","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":27010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8033:1:143","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8024:10:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":27004,"id":27012,"nodeType":"Return","src":"8017:17:143"}]},"documentation":{"id":26998,"nodeType":"StructuredDocumentation","src":"7705:128:143","text":" @dev Check if provided address is a contract.\n @param addr Address to check.\n @return hasCode"},"id":27014,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nodeType":"FunctionDefinition","parameters":{"id":27001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27000,"mutability":"mutable","name":"addr","nodeType":"VariableDeclaration","scope":27014,"src":"7859:12:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26999,"name":"address","nodeType":"ElementaryTypeName","src":"7859:7:143","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7858:14:143"},"returnParameters":{"id":27004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27003,"mutability":"mutable","name":"hasCode","nodeType":"VariableDeclaration","scope":27014,"src":"7895:12:143","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27002,"name":"bool","nodeType":"ElementaryTypeName","src":"7895:4:143","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7894:14:143"},"scope":27015,"src":"7839:203:143","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":27016,"src":"148:7897:143"}],"src":"33:8014:143"},"id":143},"contracts/pangolin-periphery/test/library/openzeppelin/Context.sol":{"ast":{"absolutePath":"contracts/pangolin-periphery/test/library/openzeppelin/Context.sol","exportedSymbols":{"Context":[27038]},"id":27039,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":27017,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"35:31:144"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":27038,"linearizedBaseContracts":[27038],"name":"Context","nodeType":"ContractDefinition","nodes":[{"body":{"id":27025,"nodeType":"Block","src":"683:36:144","statements":[{"expression":{"expression":{"id":27022,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"701:3:144","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":27023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"701:10:144","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":27021,"id":27024,"nodeType":"Return","src":"694:17:144"}]},"id":27026,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nodeType":"FunctionDefinition","parameters":{"id":27018,"nodeType":"ParameterList","parameters":[],"src":"632:2:144"},"returnParameters":{"id":27021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27020,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27026,"src":"666:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":27019,"name":"address","nodeType":"ElementaryTypeName","src":"666:15:144","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"665:17:144"},"scope":27038,"src":"613:106:144","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":27036,"nodeType":"Block","src":"792:168:144","statements":[{"expression":{"id":27031,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"803:4:144","typeDescriptions":{"typeIdentifier":"t_contract$_Context_$27038","typeString":"contract Context"}},"id":27032,"nodeType":"ExpressionStatement","src":"803:4:144"},{"expression":{"expression":{"id":27033,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"944:3:144","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":27034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","src":"944:8:144","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":27030,"id":27035,"nodeType":"Return","src":"937:15:144"}]},"id":27037,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nodeType":"FunctionDefinition","parameters":{"id":27027,"nodeType":"ParameterList","parameters":[],"src":"744:2:144"},"returnParameters":{"id":27030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27029,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27037,"src":"778:12:144","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":27028,"name":"bytes","nodeType":"ElementaryTypeName","src":"778:5:144","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"777:14:144"},"scope":27038,"src":"727:233:144","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":27039,"src":"580:383:144"}],"src":"35:930:144"},"id":144},"contracts/pangolin-periphery/test/library/openzeppelin/ERC20.sol":{"ast":{"absolutePath":"contracts/pangolin-periphery/test/library/openzeppelin/ERC20.sol","exportedSymbols":{"Context":[27038],"ERC20":[27541],"IERC20":[27679],"OpenZeppelinSafeMath":[28034]},"id":27542,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":27040,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"35:31:145"},{"absolutePath":"contracts/pangolin-periphery/test/library/openzeppelin/Context.sol","file":"./Context.sol","id":27041,"nodeType":"ImportDirective","scope":27542,"sourceUnit":27039,"src":"70:23:145","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/pangolin-periphery/test/library/openzeppelin/IERC20.sol","file":"./IERC20.sol","id":27042,"nodeType":"ImportDirective","scope":27542,"sourceUnit":27680,"src":"95:22:145","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/pangolin-periphery/test/library/openzeppelin/OpenZeppelinSafeMath.sol","file":"./OpenZeppelinSafeMath.sol","id":27043,"nodeType":"ImportDirective","scope":27542,"sourceUnit":28035,"src":"119:36:145","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":27045,"name":"Context","nodeType":"UserDefinedTypeName","referencedDeclaration":27038,"src":"1364:7:145","typeDescriptions":{"typeIdentifier":"t_contract$_Context_$27038","typeString":"contract Context"}},"id":27046,"nodeType":"InheritanceSpecifier","src":"1364:7:145"},{"baseName":{"id":27047,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":27679,"src":"1373:6:145","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$27679","typeString":"contract IERC20"}},"id":27048,"nodeType":"InheritanceSpecifier","src":"1373:6:145"}],"contractDependencies":[27038,27679],"contractKind":"contract","documentation":{"id":27044,"nodeType":"StructuredDocumentation","src":"159:1185:145","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":27541,"linearizedBaseContracts":[27541,27679,27038],"name":"ERC20","nodeType":"ContractDefinition","nodes":[{"id":27051,"libraryName":{"id":27049,"name":"OpenZeppelinSafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":28034,"src":"1393:20:145","typeDescriptions":{"typeIdentifier":"t_contract$_OpenZeppelinSafeMath_$28034","typeString":"library OpenZeppelinSafeMath"}},"nodeType":"UsingForDirective","src":"1387:39:145","typeName":{"id":27050,"name":"uint256","nodeType":"ElementaryTypeName","src":"1418:7:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":27055,"mutability":"mutable","name":"_balances","nodeType":"VariableDeclaration","scope":27541,"src":"1434:46:145","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":27054,"keyType":{"id":27052,"name":"address","nodeType":"ElementaryTypeName","src":"1443:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1434:28:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":27053,"name":"uint256","nodeType":"ElementaryTypeName","src":"1454:7:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":27061,"mutability":"mutable","name":"_allowances","nodeType":"VariableDeclaration","scope":27541,"src":"1489:69:145","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":27060,"keyType":{"id":27056,"name":"address","nodeType":"ElementaryTypeName","src":"1498:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1489:49:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":27059,"keyType":{"id":27057,"name":"address","nodeType":"ElementaryTypeName","src":"1518:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1509:28:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":27058,"name":"uint256","nodeType":"ElementaryTypeName","src":"1529:7:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":27063,"mutability":"mutable","name":"_totalSupply","nodeType":"VariableDeclaration","scope":27541,"src":"1567:28:145","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27062,"name":"uint256","nodeType":"ElementaryTypeName","src":"1567:7:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":27065,"mutability":"mutable","name":"_name","nodeType":"VariableDeclaration","scope":27541,"src":"1604:20:145","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":27064,"name":"string","nodeType":"ElementaryTypeName","src":"1604:6:145","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":27067,"mutability":"mutable","name":"_symbol","nodeType":"VariableDeclaration","scope":27541,"src":"1631:22:145","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":27066,"name":"string","nodeType":"ElementaryTypeName","src":"1631:6:145","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":27069,"mutability":"mutable","name":"_decimals","nodeType":"VariableDeclaration","scope":27541,"src":"1660:23:145","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":27068,"name":"uint8","nodeType":"ElementaryTypeName","src":"1660:5:145","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"body":{"id":27089,"nodeType":"Block","src":"2081:85:145","statements":[{"expression":{"id":27079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":27077,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27065,"src":"2092:5:145","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":27078,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27072,"src":"2100:5:145","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2092:13:145","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":27080,"nodeType":"ExpressionStatement","src":"2092:13:145"},{"expression":{"id":27083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":27081,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27067,"src":"2116:7:145","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":27082,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27074,"src":"2126:7:145","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2116:17:145","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":27084,"nodeType":"ExpressionStatement","src":"2116:17:145"},{"expression":{"id":27087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":27085,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27069,"src":"2144:9:145","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3138","id":27086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2156:2:145","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"2144:14:145","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":27088,"nodeType":"ExpressionStatement","src":"2144:14:145"}]},"documentation":{"id":27070,"nodeType":"StructuredDocumentation","src":"1692:319:145","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":27090,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":27075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27072,"mutability":"mutable","name":"name_","nodeType":"VariableDeclaration","scope":27090,"src":"2030:19:145","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":27071,"name":"string","nodeType":"ElementaryTypeName","src":"2030:6:145","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":27074,"mutability":"mutable","name":"symbol_","nodeType":"VariableDeclaration","scope":27090,"src":"2051:21:145","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":27073,"name":"string","nodeType":"ElementaryTypeName","src":"2051:6:145","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2029:44:145"},"returnParameters":{"id":27076,"nodeType":"ParameterList","parameters":[],"src":"2081:0:145"},"scope":27541,"src":"2017:149:145","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":27098,"nodeType":"Block","src":"2296:31:145","statements":[{"expression":{"id":27096,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27065,"src":"2314:5:145","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":27095,"id":27097,"nodeType":"Return","src":"2307:12:145"}]},"documentation":{"id":27091,"nodeType":"StructuredDocumentation","src":"2174:56:145","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":27099,"implemented":true,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","parameters":{"id":27092,"nodeType":"ParameterList","parameters":[],"src":"2249:2:145"},"returnParameters":{"id":27095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27094,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27099,"src":"2281:13:145","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":27093,"name":"string","nodeType":"ElementaryTypeName","src":"2281:6:145","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2280:15:145"},"scope":27541,"src":"2236:91:145","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":27107,"nodeType":"Block","src":"2508:33:145","statements":[{"expression":{"id":27105,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27067,"src":"2526:7:145","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":27104,"id":27106,"nodeType":"Return","src":"2519:14:145"}]},"documentation":{"id":27100,"nodeType":"StructuredDocumentation","src":"2335:105:145","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":27108,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","parameters":{"id":27101,"nodeType":"ParameterList","parameters":[],"src":"2461:2:145"},"returnParameters":{"id":27104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27103,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27108,"src":"2493:13:145","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":27102,"name":"string","nodeType":"ElementaryTypeName","src":"2493:6:145","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2492:15:145"},"scope":27541,"src":"2446:95:145","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":27116,"nodeType":"Block","src":"3235:35:145","statements":[{"expression":{"id":27114,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27069,"src":"3253:9:145","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":27113,"id":27115,"nodeType":"Return","src":"3246:16:145"}]},"documentation":{"id":27109,"nodeType":"StructuredDocumentation","src":"2549:624:145","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":27117,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nodeType":"FunctionDefinition","parameters":{"id":27110,"nodeType":"ParameterList","parameters":[],"src":"3196:2:145"},"returnParameters":{"id":27113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27112,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27117,"src":"3228:5:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":27111,"name":"uint8","nodeType":"ElementaryTypeName","src":"3228:5:145","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3227:7:145"},"scope":27541,"src":"3179:91:145","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[27610],"body":{"id":27126,"nodeType":"Block","src":"3405:38:145","statements":[{"expression":{"id":27124,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27063,"src":"3423:12:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":27123,"id":27125,"nodeType":"Return","src":"3416:19:145"}]},"documentation":{"id":27118,"nodeType":"StructuredDocumentation","src":"3278:51:145","text":" @dev See {IERC20-totalSupply}."},"functionSelector":"18160ddd","id":27127,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","overrides":{"id":27120,"nodeType":"OverrideSpecifier","overrides":[],"src":"3378:8:145"},"parameters":{"id":27119,"nodeType":"ParameterList","parameters":[],"src":"3355:2:145"},"returnParameters":{"id":27123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27122,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27127,"src":"3396:7:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27121,"name":"uint256","nodeType":"ElementaryTypeName","src":"3396:7:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3395:9:145"},"scope":27541,"src":"3335:108:145","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[27618],"body":{"id":27140,"nodeType":"Block","src":"3589:44:145","statements":[{"expression":{"baseExpression":{"id":27136,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27055,"src":"3607:9:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":27138,"indexExpression":{"id":27137,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27130,"src":"3617:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3607:18:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":27135,"id":27139,"nodeType":"Return","src":"3600:25:145"}]},"documentation":{"id":27128,"nodeType":"StructuredDocumentation","src":"3451:49:145","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":27141,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","overrides":{"id":27132,"nodeType":"OverrideSpecifier","overrides":[],"src":"3562:8:145"},"parameters":{"id":27131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27130,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":27141,"src":"3525:15:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27129,"name":"address","nodeType":"ElementaryTypeName","src":"3525:7:145","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3524:17:145"},"returnParameters":{"id":27135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27134,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27141,"src":"3580:7:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27133,"name":"uint256","nodeType":"ElementaryTypeName","src":"3580:7:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3579:9:145"},"scope":27541,"src":"3506:127:145","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[27628],"body":{"id":27161,"nodeType":"Block","src":"3938:83:145","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":27153,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27026,"src":"3959:10:145","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":27154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3959:12:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":27155,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27144,"src":"3973:9:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27156,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27146,"src":"3984:6:145","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":27152,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27362,"src":"3949:9:145","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":27157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3949:42:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27158,"nodeType":"ExpressionStatement","src":"3949:42:145"},{"expression":{"hexValue":"74727565","id":27159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4009:4:145","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":27151,"id":27160,"nodeType":"Return","src":"4002:11:145"}]},"documentation":{"id":27142,"nodeType":"StructuredDocumentation","src":"3641:199:145","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":27162,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","overrides":{"id":27148,"nodeType":"OverrideSpecifier","overrides":[],"src":"3914:8:145"},"parameters":{"id":27147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27144,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":27162,"src":"3864:17:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27143,"name":"address","nodeType":"ElementaryTypeName","src":"3864:7:145","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27146,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":27162,"src":"3883:14:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27145,"name":"uint256","nodeType":"ElementaryTypeName","src":"3883:7:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3863:35:145"},"returnParameters":{"id":27151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27150,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27162,"src":"3932:4:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27149,"name":"bool","nodeType":"ElementaryTypeName","src":"3932:4:145","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3931:6:145"},"scope":27541,"src":"3846:175:145","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[27638],"body":{"id":27179,"nodeType":"Block","src":"4182:53:145","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":27173,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27061,"src":"4200:11:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":27175,"indexExpression":{"id":27174,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27165,"src":"4212:5:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4200:18:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":27177,"indexExpression":{"id":27176,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27167,"src":"4219:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4200:27:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":27172,"id":27178,"nodeType":"Return","src":"4193:34:145"}]},"documentation":{"id":27163,"nodeType":"StructuredDocumentation","src":"4029:49:145","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":27180,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","overrides":{"id":27169,"nodeType":"OverrideSpecifier","overrides":[],"src":"4155:8:145"},"parameters":{"id":27168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27165,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":27180,"src":"4103:13:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27164,"name":"address","nodeType":"ElementaryTypeName","src":"4103:7:145","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27167,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":27180,"src":"4118:15:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27166,"name":"address","nodeType":"ElementaryTypeName","src":"4118:7:145","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4102:32:145"},"returnParameters":{"id":27172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27171,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27180,"src":"4173:7:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27170,"name":"uint256","nodeType":"ElementaryTypeName","src":"4173:7:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4172:9:145"},"scope":27541,"src":"4084:151:145","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[27648],"body":{"id":27200,"nodeType":"Block","src":"4471:80:145","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":27192,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27026,"src":"4491:10:145","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":27193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4491:12:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":27194,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27183,"src":"4505:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27195,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27185,"src":"4514:6:145","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":27191,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27518,"src":"4482:8:145","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":27196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4482:39:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27197,"nodeType":"ExpressionStatement","src":"4482:39:145"},{"expression":{"hexValue":"74727565","id":27198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4539:4:145","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":27190,"id":27199,"nodeType":"Return","src":"4532:11:145"}]},"documentation":{"id":27181,"nodeType":"StructuredDocumentation","src":"4243:133:145","text":" @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":27201,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":{"id":27187,"nodeType":"OverrideSpecifier","overrides":[],"src":"4447:8:145"},"parameters":{"id":27186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27183,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":27201,"src":"4399:15:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27182,"name":"address","nodeType":"ElementaryTypeName","src":"4399:7:145","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27185,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":27201,"src":"4416:14:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27184,"name":"uint256","nodeType":"ElementaryTypeName","src":"4416:7:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4398:33:145"},"returnParameters":{"id":27190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27189,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27201,"src":"4465:4:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27188,"name":"bool","nodeType":"ElementaryTypeName","src":"4465:4:145","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4464:6:145"},"scope":27541,"src":"4382:169:145","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[27660],"body":{"id":27238,"nodeType":"Block","src":"5145:209:145","statements":[{"expression":{"arguments":[{"id":27215,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27204,"src":"5166:6:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27216,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27206,"src":"5174:9:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27217,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27208,"src":"5185:6:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":27214,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27362,"src":"5156:9:145","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":27218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5156:36:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27219,"nodeType":"ExpressionStatement","src":"5156:36:145"},{"expression":{"arguments":[{"id":27221,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27204,"src":"5212:6:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":27222,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27026,"src":"5220:10:145","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":27223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5220:12:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":27231,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27208,"src":"5272:6:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365","id":27232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5280:42:145","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":27224,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27061,"src":"5234:11:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":27226,"indexExpression":{"id":27225,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27204,"src":"5246:6:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5234:19:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":27229,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":27227,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27026,"src":"5254:10:145","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":27228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5254:12:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5234:33:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":27985,"src":"5234:37:145","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":27233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5234:89:145","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":27220,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27518,"src":"5203:8:145","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":27234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5203:121:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27235,"nodeType":"ExpressionStatement","src":"5203:121:145"},{"expression":{"hexValue":"74727565","id":27236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5342:4:145","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":27213,"id":27237,"nodeType":"Return","src":"5335:11:145"}]},"documentation":{"id":27202,"nodeType":"StructuredDocumentation","src":"4559:468:145","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":27239,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":{"id":27210,"nodeType":"OverrideSpecifier","overrides":[],"src":"5121:8:145"},"parameters":{"id":27209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27204,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":27239,"src":"5055:14:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27203,"name":"address","nodeType":"ElementaryTypeName","src":"5055:7:145","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27206,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":27239,"src":"5071:17:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27205,"name":"address","nodeType":"ElementaryTypeName","src":"5071:7:145","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27208,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":27239,"src":"5090:14:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27207,"name":"uint256","nodeType":"ElementaryTypeName","src":"5090:7:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5054:51:145"},"returnParameters":{"id":27213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27212,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27239,"src":"5139:4:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27211,"name":"bool","nodeType":"ElementaryTypeName","src":"5139:4:145","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5138:6:145"},"scope":27541,"src":"5033:321:145","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":27266,"nodeType":"Block","src":"5857:124:145","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":27250,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27026,"src":"5877:10:145","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":27251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5877:12:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":27252,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27242,"src":"5891:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":27260,"name":"addedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27244,"src":"5939:10:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"baseExpression":{"id":27253,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27061,"src":"5900:11:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":27256,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":27254,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27026,"src":"5912:10:145","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":27255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5912:12:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5900:25:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":27258,"indexExpression":{"id":27257,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27242,"src":"5926:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5900:34:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":27861,"src":"5900:38:145","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":27261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5900:50:145","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":27249,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27518,"src":"5868:8:145","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":27262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5868:83:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27263,"nodeType":"ExpressionStatement","src":"5868:83:145"},{"expression":{"hexValue":"74727565","id":27264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5969:4:145","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":27248,"id":27265,"nodeType":"Return","src":"5962:11:145"}]},"documentation":{"id":27240,"nodeType":"StructuredDocumentation","src":"5362:395:145","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":27267,"implemented":true,"kind":"function","modifiers":[],"name":"increaseAllowance","nodeType":"FunctionDefinition","parameters":{"id":27245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27242,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":27267,"src":"5790:15:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27241,"name":"address","nodeType":"ElementaryTypeName","src":"5790:7:145","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27244,"mutability":"mutable","name":"addedValue","nodeType":"VariableDeclaration","scope":27267,"src":"5807:18:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27243,"name":"uint256","nodeType":"ElementaryTypeName","src":"5807:7:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5789:37:145"},"returnParameters":{"id":27248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27247,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27267,"src":"5851:4:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27246,"name":"bool","nodeType":"ElementaryTypeName","src":"5851:4:145","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5850:6:145"},"scope":27541,"src":"5763:218:145","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":27295,"nodeType":"Block","src":"6583:170:145","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":27278,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27026,"src":"6603:10:145","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":27279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6603:12:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":27280,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27270,"src":"6617:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":27288,"name":"subtractedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27272,"src":"6665:15:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":27289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6682:39:145","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":27281,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27061,"src":"6626:11:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":27284,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":27282,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27026,"src":"6638:10:145","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":27283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6638:12:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6626:25:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":27286,"indexExpression":{"id":27285,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27270,"src":"6652:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6626:34:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":27985,"src":"6626:38:145","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":27290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6626:96:145","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":27277,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27518,"src":"6594:8:145","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":27291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6594:129:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27292,"nodeType":"ExpressionStatement","src":"6594:129:145"},{"expression":{"hexValue":"74727565","id":27293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6741:4:145","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":27276,"id":27294,"nodeType":"Return","src":"6734:11:145"}]},"documentation":{"id":27268,"nodeType":"StructuredDocumentation","src":"5989:489:145","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":27296,"implemented":true,"kind":"function","modifiers":[],"name":"decreaseAllowance","nodeType":"FunctionDefinition","parameters":{"id":27273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27270,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":27296,"src":"6511:15:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27269,"name":"address","nodeType":"ElementaryTypeName","src":"6511:7:145","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27272,"mutability":"mutable","name":"subtractedValue","nodeType":"VariableDeclaration","scope":27296,"src":"6528:23:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27271,"name":"uint256","nodeType":"ElementaryTypeName","src":"6528:7:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6510:42:145"},"returnParameters":{"id":27276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27275,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27296,"src":"6577:4:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27274,"name":"bool","nodeType":"ElementaryTypeName","src":"6577:4:145","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6576:6:145"},"scope":27541,"src":"6484:269:145","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":27361,"nodeType":"Block","src":"7330:452:145","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":27312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27307,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27299,"src":"7349:6:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":27310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7367:1:145","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":27309,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7359:7:145","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":27308,"name":"address","nodeType":"ElementaryTypeName","src":"7359:7:145","typeDescriptions":{}}},"id":27311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7359:10:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7349:20:145","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373","id":27313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7371:39:145","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":27306,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7341:7:145","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":27314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7341:70:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27315,"nodeType":"ExpressionStatement","src":"7341:70:145"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":27322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27317,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27301,"src":"7430:9:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":27320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7451:1:145","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":27319,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7443:7:145","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":27318,"name":"address","nodeType":"ElementaryTypeName","src":"7443:7:145","typeDescriptions":{}}},"id":27321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7443:10:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7430:23:145","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e7366657220746f20746865207a65726f2061646472657373","id":27323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7455:37:145","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":27316,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7422:7:145","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":27324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7422:71:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27325,"nodeType":"ExpressionStatement","src":"7422:71:145"},{"expression":{"arguments":[{"id":27327,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27299,"src":"7527:6:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27328,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27301,"src":"7535:9:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27329,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27303,"src":"7546:6:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":27326,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27540,"src":"7506:20:145","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":27330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7506:47:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27331,"nodeType":"ExpressionStatement","src":"7506:47:145"},{"expression":{"id":27342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":27332,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27055,"src":"7566:9:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":27334,"indexExpression":{"id":27333,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27299,"src":"7576:6:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7566:17:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":27339,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27303,"src":"7608:6:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365","id":27340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7616:40:145","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":27335,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27055,"src":"7586:9:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":27337,"indexExpression":{"id":27336,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27299,"src":"7596:6:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7586:17:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":27985,"src":"7586:21:145","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":27341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7586:71:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7566:91:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27343,"nodeType":"ExpressionStatement","src":"7566:91:145"},{"expression":{"id":27353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":27344,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27055,"src":"7668:9:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":27346,"indexExpression":{"id":27345,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27301,"src":"7678:9:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7668:20:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":27351,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27303,"src":"7716:6:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":27347,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27055,"src":"7691:9:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":27349,"indexExpression":{"id":27348,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27301,"src":"7701:9:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7691:20:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":27861,"src":"7691:24:145","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":27352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7691:32:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7668:55:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27354,"nodeType":"ExpressionStatement","src":"7668:55:145"},{"eventCall":{"arguments":[{"id":27356,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27299,"src":"7748:6:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27357,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27301,"src":"7756:9:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27358,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27303,"src":"7767:6:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":27355,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27669,"src":"7739:8:145","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":27359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7739:35:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27360,"nodeType":"EmitStatement","src":"7734:40:145"}]},"documentation":{"id":27297,"nodeType":"StructuredDocumentation","src":"6761:476:145","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":27362,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nodeType":"FunctionDefinition","parameters":{"id":27304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27299,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":27362,"src":"7262:14:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27298,"name":"address","nodeType":"ElementaryTypeName","src":"7262:7:145","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27301,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":27362,"src":"7278:17:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27300,"name":"address","nodeType":"ElementaryTypeName","src":"7278:7:145","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27303,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":27362,"src":"7297:14:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27302,"name":"uint256","nodeType":"ElementaryTypeName","src":"7297:7:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7261:51:145"},"returnParameters":{"id":27305,"nodeType":"ParameterList","parameters":[],"src":"7330:0:145"},"scope":27541,"src":"7243:539:145","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":27416,"nodeType":"Block","src":"8129:313:145","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":27376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27371,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27365,"src":"8148:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":27374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8167:1:145","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":27373,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8159:7:145","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":27372,"name":"address","nodeType":"ElementaryTypeName","src":"8159:7:145","typeDescriptions":{}}},"id":27375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8159:10:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"8148:21:145","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206d696e7420746f20746865207a65726f2061646472657373","id":27377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8171:33:145","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":27370,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8140:7:145","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":27378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8140:65:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27379,"nodeType":"ExpressionStatement","src":"8140:65:145"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":27383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8247:1:145","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":27382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8239:7:145","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":27381,"name":"address","nodeType":"ElementaryTypeName","src":"8239:7:145","typeDescriptions":{}}},"id":27384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8239:10:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":27385,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27365,"src":"8251:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27386,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27367,"src":"8260:6:145","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":27380,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27540,"src":"8218:20:145","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":27387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8218:49:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27388,"nodeType":"ExpressionStatement","src":"8218:49:145"},{"expression":{"id":27394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":27389,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27063,"src":"8280:12:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":27392,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27367,"src":"8312:6:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":27390,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27063,"src":"8295:12:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":27861,"src":"8295:16:145","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":27393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8295:24:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8280:39:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27395,"nodeType":"ExpressionStatement","src":"8280:39:145"},{"expression":{"id":27405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":27396,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27055,"src":"8330:9:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":27398,"indexExpression":{"id":27397,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27365,"src":"8340:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8330:18:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":27403,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27367,"src":"8374:6:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":27399,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27055,"src":"8351:9:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":27401,"indexExpression":{"id":27400,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27365,"src":"8361:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8351:18:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":27861,"src":"8351:22:145","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":27404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8351:30:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8330:51:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27406,"nodeType":"ExpressionStatement","src":"8330:51:145"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":27410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8414:1:145","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":27409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8406:7:145","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":27408,"name":"address","nodeType":"ElementaryTypeName","src":"8406:7:145","typeDescriptions":{}}},"id":27411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8406:10:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":27412,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27365,"src":"8418:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27413,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27367,"src":"8427:6:145","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":27407,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27669,"src":"8397:8:145","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":27414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8397:37:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27415,"nodeType":"EmitStatement","src":"8392:42:145"}]},"documentation":{"id":27363,"nodeType":"StructuredDocumentation","src":"7790:268:145","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":27417,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nodeType":"FunctionDefinition","parameters":{"id":27368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27365,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":27417,"src":"8079:15:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27364,"name":"address","nodeType":"ElementaryTypeName","src":"8079:7:145","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27367,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":27417,"src":"8096:14:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27366,"name":"uint256","nodeType":"ElementaryTypeName","src":"8096:7:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8078:33:145"},"returnParameters":{"id":27369,"nodeType":"ParameterList","parameters":[],"src":"8129:0:145"},"scope":27541,"src":"8064:378:145","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":27472,"nodeType":"Block","src":"8840:353:145","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":27431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27426,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27420,"src":"8859:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":27429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8878:1:145","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":27428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8870:7:145","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":27427,"name":"address","nodeType":"ElementaryTypeName","src":"8870:7:145","typeDescriptions":{}}},"id":27430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8870:10:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"8859:21:145","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206275726e2066726f6d20746865207a65726f2061646472657373","id":27432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8882:35:145","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":27425,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8851:7:145","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":27433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8851:67:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27434,"nodeType":"ExpressionStatement","src":"8851:67:145"},{"expression":{"arguments":[{"id":27436,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27420,"src":"8952:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":27439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8969:1:145","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":27438,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8961:7:145","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":27437,"name":"address","nodeType":"ElementaryTypeName","src":"8961:7:145","typeDescriptions":{}}},"id":27440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8961:10:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":27441,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27422,"src":"8973:6:145","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":27435,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27540,"src":"8931:20:145","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":27442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8931:49:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27443,"nodeType":"ExpressionStatement","src":"8931:49:145"},{"expression":{"id":27454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":27444,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27055,"src":"8993:9:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":27446,"indexExpression":{"id":27445,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27420,"src":"9003:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8993:18:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":27451,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27422,"src":"9037:6:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365","id":27452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9045:36:145","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":27447,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27055,"src":"9014:9:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":27449,"indexExpression":{"id":27448,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27420,"src":"9024:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9014:18:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":27985,"src":"9014:22:145","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":27453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9014:68:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8993:89:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27455,"nodeType":"ExpressionStatement","src":"8993:89:145"},{"expression":{"id":27461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":27456,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27063,"src":"9093:12:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":27459,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27422,"src":"9125:6:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":27457,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27063,"src":"9108:12:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":27883,"src":"9108:16:145","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":27460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9108:24:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9093:39:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27462,"nodeType":"ExpressionStatement","src":"9093:39:145"},{"eventCall":{"arguments":[{"id":27464,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27420,"src":"9157:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":27467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9174:1:145","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":27466,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9166:7:145","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":27465,"name":"address","nodeType":"ElementaryTypeName","src":"9166:7:145","typeDescriptions":{}}},"id":27468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9166:10:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":27469,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27422,"src":"9178:6:145","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":27463,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27669,"src":"9148:8:145","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":27470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9148:37:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27471,"nodeType":"EmitStatement","src":"9143:42:145"}]},"documentation":{"id":27418,"nodeType":"StructuredDocumentation","src":"8450:319:145","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":27473,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nodeType":"FunctionDefinition","parameters":{"id":27423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27420,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":27473,"src":"8790:15:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27419,"name":"address","nodeType":"ElementaryTypeName","src":"8790:7:145","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27422,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":27473,"src":"8807:14:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27421,"name":"uint256","nodeType":"ElementaryTypeName","src":"8807:7:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8789:33:145"},"returnParameters":{"id":27424,"nodeType":"ParameterList","parameters":[],"src":"8840:0:145"},"scope":27541,"src":"8775:418:145","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":27517,"nodeType":"Block","src":"9714:263:145","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":27489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27484,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27476,"src":"9733:5:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":27487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9750:1:145","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":27486,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9742:7:145","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":27485,"name":"address","nodeType":"ElementaryTypeName","src":"9742:7:145","typeDescriptions":{}}},"id":27488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9742:10:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"9733:19:145","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373","id":27490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9754:38:145","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":27483,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9725:7:145","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":27491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9725:68:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27492,"nodeType":"ExpressionStatement","src":"9725:68:145"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":27499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27494,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27478,"src":"9812:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":27497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9831:1:145","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":27496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9823:7:145","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":27495,"name":"address","nodeType":"ElementaryTypeName","src":"9823:7:145","typeDescriptions":{}}},"id":27498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9823:10:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"9812:21:145","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20617070726f766520746f20746865207a65726f2061646472657373","id":27500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9835:36:145","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":27493,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9804:7:145","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":27501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9804:68:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27502,"nodeType":"ExpressionStatement","src":"9804:68:145"},{"expression":{"id":27509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":27503,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27061,"src":"9885:11:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":27506,"indexExpression":{"id":27504,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27476,"src":"9897:5:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9885:18:145","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":27507,"indexExpression":{"id":27505,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27478,"src":"9904:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9885:27:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":27508,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27480,"src":"9915:6:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9885:36:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27510,"nodeType":"ExpressionStatement","src":"9885:36:145"},{"eventCall":{"arguments":[{"id":27512,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27476,"src":"9946:5:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27513,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27478,"src":"9953:7:145","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27514,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27480,"src":"9962:6:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":27511,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27678,"src":"9937:8:145","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":27515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9937:32:145","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27516,"nodeType":"EmitStatement","src":"9932:37:145"}]},"documentation":{"id":27474,"nodeType":"StructuredDocumentation","src":"9201:424:145","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":27518,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nodeType":"FunctionDefinition","parameters":{"id":27481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27476,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":27518,"src":"9649:13:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27475,"name":"address","nodeType":"ElementaryTypeName","src":"9649:7:145","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27478,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":27518,"src":"9664:15:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27477,"name":"address","nodeType":"ElementaryTypeName","src":"9664:7:145","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27480,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":27518,"src":"9681:14:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27479,"name":"uint256","nodeType":"ElementaryTypeName","src":"9681:7:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9648:48:145"},"returnParameters":{"id":27482,"nodeType":"ParameterList","parameters":[],"src":"9714:0:145"},"scope":27541,"src":"9631:346:145","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":27528,"nodeType":"Block","src":"10367:40:145","statements":[{"expression":{"id":27526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":27524,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27069,"src":"10378:9:145","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":27525,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27521,"src":"10390:9:145","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10378:21:145","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":27527,"nodeType":"ExpressionStatement","src":"10378:21:145"}]},"documentation":{"id":27519,"nodeType":"StructuredDocumentation","src":"9985:318:145","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":27529,"implemented":true,"kind":"function","modifiers":[],"name":"_setupDecimals","nodeType":"FunctionDefinition","parameters":{"id":27522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27521,"mutability":"mutable","name":"decimals_","nodeType":"VariableDeclaration","scope":27529,"src":"10333:15:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":27520,"name":"uint8","nodeType":"ElementaryTypeName","src":"10333:5:145","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"10332:17:145"},"returnParameters":{"id":27523,"nodeType":"ParameterList","parameters":[],"src":"10367:0:145"},"scope":27541,"src":"10309:98:145","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":27539,"nodeType":"Block","src":"11099:3:145","statements":[]},"documentation":{"id":27530,"nodeType":"StructuredDocumentation","src":"10415:589:145","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":27540,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nodeType":"FunctionDefinition","parameters":{"id":27537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27532,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":27540,"src":"11040:12:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27531,"name":"address","nodeType":"ElementaryTypeName","src":"11040:7:145","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27534,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":27540,"src":"11054:10:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27533,"name":"address","nodeType":"ElementaryTypeName","src":"11054:7:145","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27536,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":27540,"src":"11066:14:145","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27535,"name":"uint256","nodeType":"ElementaryTypeName","src":"11066:7:145","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11039:42:145"},"returnParameters":{"id":27538,"nodeType":"ParameterList","parameters":[],"src":"11099:0:145"},"scope":27541,"src":"11010:92:145","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":27542,"src":"1346:9759:145"}],"src":"35:11072:145"},"id":145},"contracts/pangolin-periphery/test/library/openzeppelin/ERC20Burnable.sol":{"ast":{"absolutePath":"contracts/pangolin-periphery/test/library/openzeppelin/ERC20Burnable.sol","exportedSymbols":{"Context":[27038],"ERC20":[27541],"ERC20Burnable":[27601],"IERC20":[27679],"OpenZeppelinSafeMath":[28034]},"id":27602,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":27543,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"35:31:146"},{"absolutePath":"contracts/pangolin-periphery/test/library/openzeppelin/Context.sol","file":"./Context.sol","id":27544,"nodeType":"ImportDirective","scope":27602,"sourceUnit":27039,"src":"70:23:146","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/pangolin-periphery/test/library/openzeppelin/ERC20.sol","file":"./ERC20.sol","id":27545,"nodeType":"ImportDirective","scope":27602,"sourceUnit":27542,"src":"95:21:146","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/pangolin-periphery/test/library/openzeppelin/OpenZeppelinSafeMath.sol","file":"./OpenZeppelinSafeMath.sol","id":27546,"nodeType":"ImportDirective","scope":27602,"sourceUnit":28035,"src":"118:36:146","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":27548,"name":"Context","nodeType":"UserDefinedTypeName","referencedDeclaration":27038,"src":"407:7:146","typeDescriptions":{"typeIdentifier":"t_contract$_Context_$27038","typeString":"contract Context"}},"id":27549,"nodeType":"InheritanceSpecifier","src":"407:7:146"},{"baseName":{"id":27550,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":27541,"src":"416:5:146","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$27541","typeString":"contract ERC20"}},"id":27551,"nodeType":"InheritanceSpecifier","src":"416:5:146"}],"contractDependencies":[27038,27541,27679],"contractKind":"contract","documentation":{"id":27547,"nodeType":"StructuredDocumentation","src":"158:212:146","text":" @dev Extension of {ERC20} that allows token holders to destroy both their own\n tokens and those that they have an allowance for, in a way that can be\n recognized off-chain (via event analysis)."},"fullyImplemented":false,"id":27601,"linearizedBaseContracts":[27601,27541,27679,27038],"name":"ERC20Burnable","nodeType":"ContractDefinition","nodes":[{"id":27554,"libraryName":{"id":27552,"name":"OpenZeppelinSafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":28034,"src":"435:20:146","typeDescriptions":{"typeIdentifier":"t_contract$_OpenZeppelinSafeMath_$28034","typeString":"library OpenZeppelinSafeMath"}},"nodeType":"UsingForDirective","src":"429:39:146","typeName":{"id":27553,"name":"uint256","nodeType":"ElementaryTypeName","src":"460:7:146","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"body":{"id":27566,"nodeType":"Block","src":"629:46:146","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":27561,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27026,"src":"646:10:146","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":27562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"646:12:146","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":27563,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27557,"src":"660:6:146","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":27560,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27473,"src":"640:5:146","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":27564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"640:27:146","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27565,"nodeType":"ExpressionStatement","src":"640:27:146"}]},"documentation":{"id":27555,"nodeType":"StructuredDocumentation","src":"476:102:146","text":" @dev Destroys `amount` tokens from the caller.\n See {ERC20-_burn}."},"functionSelector":"42966c68","id":27567,"implemented":true,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":27558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27557,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":27567,"src":"598:14:146","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27556,"name":"uint256","nodeType":"ElementaryTypeName","src":"598:7:146","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"597:16:146"},"returnParameters":{"id":27559,"nodeType":"ParameterList","parameters":[],"src":"629:0:146"},"scope":27601,"src":"584:91:146","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":27599,"nodeType":"Block","src":"1060:229:146","statements":[{"assignments":[27576],"declarations":[{"constant":false,"id":27576,"mutability":"mutable","name":"decreasedAllowance","nodeType":"VariableDeclaration","scope":27599,"src":"1071:26:146","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27575,"name":"uint256","nodeType":"ElementaryTypeName","src":"1071:7:146","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":27586,"initialValue":{"arguments":[{"id":27583,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27572,"src":"1137:6:146","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e6365","id":27584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1145:38:146","typeDescriptions":{"typeIdentifier":"t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db","typeString":"literal_string \"ERC20: burn amount exceeds allowance\""},"value":"ERC20: burn amount exceeds allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db","typeString":"literal_string \"ERC20: burn amount exceeds allowance\""}],"expression":{"arguments":[{"id":27578,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27570,"src":"1110:7:146","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":27579,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27026,"src":"1119:10:146","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":27580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1119:12:146","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":27577,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27180,"src":"1100:9:146","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":27581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1100:32:146","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":27985,"src":"1100:36:146","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":27585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1100:84:146","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1071:113:146"},{"expression":{"arguments":[{"id":27588,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27570,"src":"1206:7:146","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":27589,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27026,"src":"1215:10:146","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":27590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1215:12:146","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":27591,"name":"decreasedAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27576,"src":"1229:18:146","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":27587,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27518,"src":"1197:8:146","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":27592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1197:51:146","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27593,"nodeType":"ExpressionStatement","src":"1197:51:146"},{"expression":{"arguments":[{"id":27595,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27570,"src":"1265:7:146","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27596,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27572,"src":"1274:6:146","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":27594,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27473,"src":"1259:5:146","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":27597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1259:22:146","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27598,"nodeType":"ExpressionStatement","src":"1259:22:146"}]},"documentation":{"id":27568,"nodeType":"StructuredDocumentation","src":"683:305:146","text":" @dev Destroys `amount` tokens from `account`, deducting from the caller's\n allowance.\n See {ERC20-_burn} and {ERC20-allowance}.\n Requirements:\n - the caller must have allowance for ``accounts``'s tokens of at least\n `amount`."},"functionSelector":"79cc6790","id":27600,"implemented":true,"kind":"function","modifiers":[],"name":"burnFrom","nodeType":"FunctionDefinition","parameters":{"id":27573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27570,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":27600,"src":"1012:15:146","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27569,"name":"address","nodeType":"ElementaryTypeName","src":"1012:7:146","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27572,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":27600,"src":"1029:14:146","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27571,"name":"uint256","nodeType":"ElementaryTypeName","src":"1029:7:146","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1011:33:146"},"returnParameters":{"id":27574,"nodeType":"ParameterList","parameters":[],"src":"1060:0:146"},"scope":27601,"src":"994:295:146","stateMutability":"nonpayable","virtual":true,"visibility":"public"}],"scope":27602,"src":"372:920:146"}],"src":"35:1259:146"},"id":146},"contracts/pangolin-periphery/test/library/openzeppelin/IERC20.sol":{"ast":{"absolutePath":"contracts/pangolin-periphery/test/library/openzeppelin/IERC20.sol","exportedSymbols":{"IERC20":[27679]},"id":27680,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":27603,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"35:31:147"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":27604,"nodeType":"StructuredDocumentation","src":"70:72:147","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":27679,"linearizedBaseContracts":[27679],"name":"IERC20","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":27605,"nodeType":"StructuredDocumentation","src":"168:68:147","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":27610,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":27606,"nodeType":"ParameterList","parameters":[],"src":"262:2:147"},"returnParameters":{"id":27609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27608,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27610,"src":"288:7:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27607,"name":"uint256","nodeType":"ElementaryTypeName","src":"288:7:147","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"287:9:147"},"scope":27679,"src":"242:55:147","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":27611,"nodeType":"StructuredDocumentation","src":"305:74:147","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":27618,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":27614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27613,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":27618,"src":"404:15:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27612,"name":"address","nodeType":"ElementaryTypeName","src":"404:7:147","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"403:17:147"},"returnParameters":{"id":27617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27616,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27618,"src":"444:7:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27615,"name":"uint256","nodeType":"ElementaryTypeName","src":"444:7:147","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"443:9:147"},"scope":27679,"src":"385:68:147","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":27619,"nodeType":"StructuredDocumentation","src":"461:215:147","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":27628,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":27624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27621,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":27628,"src":"700:17:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27620,"name":"address","nodeType":"ElementaryTypeName","src":"700:7:147","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27623,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":27628,"src":"719:14:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27622,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:147","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"699:35:147"},"returnParameters":{"id":27627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27626,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27628,"src":"753:4:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27625,"name":"bool","nodeType":"ElementaryTypeName","src":"753:4:147","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"752:6:147"},"scope":27679,"src":"682:77:147","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":27629,"nodeType":"StructuredDocumentation","src":"767:270:147","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":27638,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":27634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27631,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":27638,"src":"1062:13:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27630,"name":"address","nodeType":"ElementaryTypeName","src":"1062:7:147","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27633,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":27638,"src":"1077:15:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27632,"name":"address","nodeType":"ElementaryTypeName","src":"1077:7:147","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1061:32:147"},"returnParameters":{"id":27637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27636,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27638,"src":"1117:7:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27635,"name":"uint256","nodeType":"ElementaryTypeName","src":"1117:7:147","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1116:9:147"},"scope":27679,"src":"1043:83:147","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":27639,"nodeType":"StructuredDocumentation","src":"1134:655:147","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":27648,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":27644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27641,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":27648,"src":"1812:15:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27640,"name":"address","nodeType":"ElementaryTypeName","src":"1812:7:147","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27643,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":27648,"src":"1829:14:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27642,"name":"uint256","nodeType":"ElementaryTypeName","src":"1829:7:147","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1811:33:147"},"returnParameters":{"id":27647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27646,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27648,"src":"1863:4:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27645,"name":"bool","nodeType":"ElementaryTypeName","src":"1863:4:147","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1862:6:147"},"scope":27679,"src":"1795:74:147","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":27649,"nodeType":"StructuredDocumentation","src":"1877:304:147","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":27660,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":27656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27651,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":27660,"src":"2209:14:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27650,"name":"address","nodeType":"ElementaryTypeName","src":"2209:7:147","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27653,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":27660,"src":"2225:17:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27652,"name":"address","nodeType":"ElementaryTypeName","src":"2225:7:147","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27655,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":27660,"src":"2244:14:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27654,"name":"uint256","nodeType":"ElementaryTypeName","src":"2244:7:147","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2208:51:147"},"returnParameters":{"id":27659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27658,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27660,"src":"2278:4:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27657,"name":"bool","nodeType":"ElementaryTypeName","src":"2278:4:147","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2277:6:147"},"scope":27679,"src":"2187:97:147","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":27661,"nodeType":"StructuredDocumentation","src":"2292:163:147","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"id":27669,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":27668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27663,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":27669,"src":"2476:20:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27662,"name":"address","nodeType":"ElementaryTypeName","src":"2476:7:147","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27665,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":27669,"src":"2498:18:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27664,"name":"address","nodeType":"ElementaryTypeName","src":"2498:7:147","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27667,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":27669,"src":"2518:13:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27666,"name":"uint256","nodeType":"ElementaryTypeName","src":"2518:7:147","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2475:57:147"},"src":"2461:72:147"},{"anonymous":false,"documentation":{"id":27670,"nodeType":"StructuredDocumentation","src":"2541:151:147","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":27678,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":27677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27672,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":27678,"src":"2713:21:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27671,"name":"address","nodeType":"ElementaryTypeName","src":"2713:7:147","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27674,"indexed":true,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":27678,"src":"2736:23:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27673,"name":"address","nodeType":"ElementaryTypeName","src":"2736:7:147","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27676,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":27678,"src":"2761:13:147","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27675,"name":"uint256","nodeType":"ElementaryTypeName","src":"2761:7:147","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2712:63:147"},"src":"2698:78:147"}],"scope":27680,"src":"144:2635:147"}],"src":"35:2746:147"},"id":147},"contracts/pangolin-periphery/test/library/openzeppelin/OpenZeppelinSafeMath.sol":{"ast":{"absolutePath":"contracts/pangolin-periphery/test/library/openzeppelin/OpenZeppelinSafeMath.sol","exportedSymbols":{"OpenZeppelinSafeMath":[28034]},"id":28035,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":27681,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"35:31:148"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":27682,"nodeType":"StructuredDocumentation","src":"70:575:148","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":28034,"linearizedBaseContracts":[28034],"name":"OpenZeppelinSafeMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":27712,"nodeType":"Block","src":"900:102:148","statements":[{"assignments":[27695],"declarations":[{"constant":false,"id":27695,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":27712,"src":"911:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27694,"name":"uint256","nodeType":"ElementaryTypeName","src":"911:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":27699,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27696,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27685,"src":"923:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":27697,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27687,"src":"927:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"923:5:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"911:17:148"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27700,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27695,"src":"943:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":27701,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27685,"src":"947:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"943:5:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27707,"nodeType":"IfStatement","src":"939:28:148","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":27703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"958:5:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":27704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"965:1:148","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":27705,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"957:10:148","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":27693,"id":27706,"nodeType":"Return","src":"950:17:148"}},{"expression":{"components":[{"hexValue":"74727565","id":27708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"986:4:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":27709,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27695,"src":"992:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":27710,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"985:9:148","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":27693,"id":27711,"nodeType":"Return","src":"978:16:148"}]},"documentation":{"id":27683,"nodeType":"StructuredDocumentation","src":"683:135:148","text":" @dev Returns the addition of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":27713,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nodeType":"FunctionDefinition","parameters":{"id":27688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27685,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":27713,"src":"840:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27684,"name":"uint256","nodeType":"ElementaryTypeName","src":"840:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27687,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":27713,"src":"851:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27686,"name":"uint256","nodeType":"ElementaryTypeName","src":"851:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"839:22:148"},"returnParameters":{"id":27693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27690,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27713,"src":"885:4:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27689,"name":"bool","nodeType":"ElementaryTypeName","src":"885:4:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":27692,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27713,"src":"891:7:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27691,"name":"uint256","nodeType":"ElementaryTypeName","src":"891:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"884:15:148"},"scope":28034,"src":"824:178:148","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":27739,"nodeType":"Block","src":"1231:78:148","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27725,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27718,"src":"1246:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":27726,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27716,"src":"1250:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1246:5:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27732,"nodeType":"IfStatement","src":"1242:28:148","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":27728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1261:5:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":27729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1268:1:148","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":27730,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1260:10:148","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":27724,"id":27731,"nodeType":"Return","src":"1253:17:148"}},{"expression":{"components":[{"hexValue":"74727565","id":27733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1289:4:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27734,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27716,"src":"1295:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":27735,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27718,"src":"1299:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1295:5:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":27737,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1288:13:148","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":27724,"id":27738,"nodeType":"Return","src":"1281:20:148"}]},"documentation":{"id":27714,"nodeType":"StructuredDocumentation","src":"1010:139:148","text":" @dev Returns the substraction of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":27740,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nodeType":"FunctionDefinition","parameters":{"id":27719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27716,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":27740,"src":"1171:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27715,"name":"uint256","nodeType":"ElementaryTypeName","src":"1171:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27718,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":27740,"src":"1182:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27717,"name":"uint256","nodeType":"ElementaryTypeName","src":"1182:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1170:22:148"},"returnParameters":{"id":27724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27721,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27740,"src":"1216:4:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27720,"name":"bool","nodeType":"ElementaryTypeName","src":"1216:4:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":27723,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27740,"src":"1222:7:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27722,"name":"uint256","nodeType":"ElementaryTypeName","src":"1222:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1215:15:148"},"scope":28034,"src":"1155:154:148","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":27780,"nodeType":"Block","src":"1540:367:148","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27752,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27743,"src":"1776:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":27753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1781:1:148","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1776:6:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27759,"nodeType":"IfStatement","src":"1772:28:148","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":27755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1792:4:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":27756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1798:1:148","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":27757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1791:9:148","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":27751,"id":27758,"nodeType":"Return","src":"1784:16:148"}},{"assignments":[27761],"declarations":[{"constant":false,"id":27761,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":27780,"src":"1811:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27760,"name":"uint256","nodeType":"ElementaryTypeName","src":"1811:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":27765,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27762,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27743,"src":"1823:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":27763,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27745,"src":"1827:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1823:5:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1811:17:148"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27766,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27761,"src":"1843:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":27767,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27743,"src":"1847:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1843:5:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":27769,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27745,"src":"1852:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1843:10:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27775,"nodeType":"IfStatement","src":"1839:33:148","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":27771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1863:5:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":27772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1870:1:148","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":27773,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1862:10:148","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":27751,"id":27774,"nodeType":"Return","src":"1855:17:148"}},{"expression":{"components":[{"hexValue":"74727565","id":27776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1891:4:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":27777,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27761,"src":"1897:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":27778,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1890:9:148","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":27751,"id":27779,"nodeType":"Return","src":"1883:16:148"}]},"documentation":{"id":27741,"nodeType":"StructuredDocumentation","src":"1317:141:148","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":27781,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nodeType":"FunctionDefinition","parameters":{"id":27746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27743,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":27781,"src":"1480:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27742,"name":"uint256","nodeType":"ElementaryTypeName","src":"1480:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27745,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":27781,"src":"1491:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27744,"name":"uint256","nodeType":"ElementaryTypeName","src":"1491:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1479:22:148"},"returnParameters":{"id":27751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27748,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27781,"src":"1525:4:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27747,"name":"bool","nodeType":"ElementaryTypeName","src":"1525:4:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":27750,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27781,"src":"1531:7:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27749,"name":"uint256","nodeType":"ElementaryTypeName","src":"1531:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1524:15:148"},"scope":28034,"src":"1464:443:148","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":27807,"nodeType":"Block","src":"2139:79:148","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27793,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27786,"src":"2154:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":27794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2159:1:148","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2154:6:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27800,"nodeType":"IfStatement","src":"2150:29:148","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":27796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2170:5:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":27797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2177:1:148","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":27798,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2169:10:148","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":27792,"id":27799,"nodeType":"Return","src":"2162:17:148"}},{"expression":{"components":[{"hexValue":"74727565","id":27801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2198:4:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27802,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27784,"src":"2204:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":27803,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27786,"src":"2208:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2204:5:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":27805,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2197:13:148","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":27792,"id":27806,"nodeType":"Return","src":"2190:20:148"}]},"documentation":{"id":27782,"nodeType":"StructuredDocumentation","src":"1915:142:148","text":" @dev Returns the division of two unsigned integers, with a division by zero flag.\n _Available since v3.4._"},"id":27808,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nodeType":"FunctionDefinition","parameters":{"id":27787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27784,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":27808,"src":"2079:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27783,"name":"uint256","nodeType":"ElementaryTypeName","src":"2079:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27786,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":27808,"src":"2090:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27785,"name":"uint256","nodeType":"ElementaryTypeName","src":"2090:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2078:22:148"},"returnParameters":{"id":27792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27789,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27808,"src":"2124:4:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27788,"name":"bool","nodeType":"ElementaryTypeName","src":"2124:4:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":27791,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27808,"src":"2130:7:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27790,"name":"uint256","nodeType":"ElementaryTypeName","src":"2130:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2123:15:148"},"scope":28034,"src":"2063:155:148","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":27834,"nodeType":"Block","src":"2460:79:148","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27820,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27813,"src":"2475:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":27821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2480:1:148","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2475:6:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27827,"nodeType":"IfStatement","src":"2471:29:148","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":27823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2491:5:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":27824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2498:1:148","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":27825,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2490:10:148","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":27819,"id":27826,"nodeType":"Return","src":"2483:17:148"}},{"expression":{"components":[{"hexValue":"74727565","id":27828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2519:4:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27829,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27811,"src":"2525:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":27830,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27813,"src":"2529:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2525:5:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":27832,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2518:13:148","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":27819,"id":27833,"nodeType":"Return","src":"2511:20:148"}]},"documentation":{"id":27809,"nodeType":"StructuredDocumentation","src":"2226:152:148","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n _Available since v3.4._"},"id":27835,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nodeType":"FunctionDefinition","parameters":{"id":27814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27811,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":27835,"src":"2400:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27810,"name":"uint256","nodeType":"ElementaryTypeName","src":"2400:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27813,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":27835,"src":"2411:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27812,"name":"uint256","nodeType":"ElementaryTypeName","src":"2411:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2399:22:148"},"returnParameters":{"id":27819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27816,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27835,"src":"2445:4:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27815,"name":"bool","nodeType":"ElementaryTypeName","src":"2445:4:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":27818,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27835,"src":"2451:7:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27817,"name":"uint256","nodeType":"ElementaryTypeName","src":"2451:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2444:15:148"},"scope":28034,"src":"2384:155:148","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":27860,"nodeType":"Block","src":"2853:112:148","statements":[{"assignments":[27846],"declarations":[{"constant":false,"id":27846,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":27860,"src":"2864:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27845,"name":"uint256","nodeType":"ElementaryTypeName","src":"2864:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":27850,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27847,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27838,"src":"2876:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":27848,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27840,"src":"2880:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2876:5:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2864:17:148"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27852,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27846,"src":"2900:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":27853,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27838,"src":"2905:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2900:6:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206164646974696f6e206f766572666c6f77","id":27855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2908:29:148","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":27851,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2892:7:148","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":27856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2892:46:148","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27857,"nodeType":"ExpressionStatement","src":"2892:46:148"},{"expression":{"id":27858,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27846,"src":"2956:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":27844,"id":27859,"nodeType":"Return","src":"2949:8:148"}]},"documentation":{"id":27836,"nodeType":"StructuredDocumentation","src":"2547:233:148","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":27861,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":27841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27838,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":27861,"src":"2799:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27837,"name":"uint256","nodeType":"ElementaryTypeName","src":"2799:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27840,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":27861,"src":"2810:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27839,"name":"uint256","nodeType":"ElementaryTypeName","src":"2810:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2798:22:148"},"returnParameters":{"id":27844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27843,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27861,"src":"2844:7:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27842,"name":"uint256","nodeType":"ElementaryTypeName","src":"2844:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2843:9:148"},"scope":28034,"src":"2786:179:148","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":27882,"nodeType":"Block","src":"3315:91:148","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27872,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27866,"src":"3334:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":27873,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27864,"src":"3339:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3334:6:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","id":27875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3342:32:148","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":27871,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3326:7:148","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":27876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3326:49:148","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27877,"nodeType":"ExpressionStatement","src":"3326:49:148"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27878,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27864,"src":"3393:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":27879,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27866,"src":"3397:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3393:5:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":27870,"id":27881,"nodeType":"Return","src":"3386:12:148"}]},"documentation":{"id":27862,"nodeType":"StructuredDocumentation","src":"2973:269:148","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":27883,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":27867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27864,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":27883,"src":"3261:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27863,"name":"uint256","nodeType":"ElementaryTypeName","src":"3261:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27866,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":27883,"src":"3272:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27865,"name":"uint256","nodeType":"ElementaryTypeName","src":"3272:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3260:22:148"},"returnParameters":{"id":27870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27869,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27883,"src":"3306:7:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27868,"name":"uint256","nodeType":"ElementaryTypeName","src":"3306:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3305:9:148"},"scope":28034,"src":"3248:158:148","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":27916,"nodeType":"Block","src":"3732:153:148","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27893,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27886,"src":"3747:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":27894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3752:1:148","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3747:6:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27898,"nodeType":"IfStatement","src":"3743:20:148","trueBody":{"expression":{"hexValue":"30","id":27896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3762:1:148","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":27892,"id":27897,"nodeType":"Return","src":"3755:8:148"}},{"assignments":[27900],"declarations":[{"constant":false,"id":27900,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":27916,"src":"3774:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27899,"name":"uint256","nodeType":"ElementaryTypeName","src":"3774:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":27904,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27901,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27886,"src":"3786:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":27902,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27888,"src":"3790:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3786:5:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3774:17:148"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27906,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27900,"src":"3810:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":27907,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27886,"src":"3814:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3810:5:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":27909,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27888,"src":"3819:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3810:10:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","id":27911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3822:35:148","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":27905,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3802:7:148","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":27912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3802:56:148","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27913,"nodeType":"ExpressionStatement","src":"3802:56:148"},{"expression":{"id":27914,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27900,"src":"3876:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":27892,"id":27915,"nodeType":"Return","src":"3869:8:148"}]},"documentation":{"id":27884,"nodeType":"StructuredDocumentation","src":"3414:245:148","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":27917,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":27889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27886,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":27917,"src":"3678:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27885,"name":"uint256","nodeType":"ElementaryTypeName","src":"3678:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27888,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":27917,"src":"3689:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27887,"name":"uint256","nodeType":"ElementaryTypeName","src":"3689:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3677:22:148"},"returnParameters":{"id":27892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27891,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27917,"src":"3723:7:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27890,"name":"uint256","nodeType":"ElementaryTypeName","src":"3723:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3722:9:148"},"scope":28034,"src":"3665:220:148","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":27938,"nodeType":"Block","src":"4430:86:148","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27928,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27922,"src":"4449:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":27929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4453:1:148","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4449:5:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206469766973696f6e206279207a65726f","id":27931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4456:28:148","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":27927,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4441:7:148","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":27932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4441:44:148","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27933,"nodeType":"ExpressionStatement","src":"4441:44:148"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27934,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27920,"src":"4503:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":27935,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27922,"src":"4507:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4503:5:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":27926,"id":27937,"nodeType":"Return","src":"4496:12:148"}]},"documentation":{"id":27918,"nodeType":"StructuredDocumentation","src":"3893:464:148","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":27939,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":27923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27920,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":27939,"src":"4376:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27919,"name":"uint256","nodeType":"ElementaryTypeName","src":"4376:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27922,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":27939,"src":"4387:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27921,"name":"uint256","nodeType":"ElementaryTypeName","src":"4387:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4375:22:148"},"returnParameters":{"id":27926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27925,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27939,"src":"4421:7:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27924,"name":"uint256","nodeType":"ElementaryTypeName","src":"4421:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4420:9:148"},"scope":28034,"src":"4363:153:148","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":27960,"nodeType":"Block","src":"5050:84:148","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27950,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27944,"src":"5069:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":27951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5073:1:148","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5069:5:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206d6f64756c6f206279207a65726f","id":27953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5076:26:148","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":27949,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5061:7:148","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":27954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5061:42:148","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27955,"nodeType":"ExpressionStatement","src":"5061:42:148"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27956,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27942,"src":"5121:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":27957,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27944,"src":"5125:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5121:5:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":27948,"id":27959,"nodeType":"Return","src":"5114:12:148"}]},"documentation":{"id":27940,"nodeType":"StructuredDocumentation","src":"4524:453:148","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":27961,"implemented":true,"kind":"function","modifiers":[],"name":"mod","nodeType":"FunctionDefinition","parameters":{"id":27945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27942,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":27961,"src":"4996:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27941,"name":"uint256","nodeType":"ElementaryTypeName","src":"4996:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27944,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":27961,"src":"5007:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27943,"name":"uint256","nodeType":"ElementaryTypeName","src":"5007:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4995:22:148"},"returnParameters":{"id":27948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27947,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27961,"src":"5041:7:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27946,"name":"uint256","nodeType":"ElementaryTypeName","src":"5041:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5040:9:148"},"scope":28034,"src":"4983:151:148","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":27984,"nodeType":"Block","src":"5708:71:148","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27974,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27966,"src":"5727:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":27975,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27964,"src":"5732:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5727:6:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":27977,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27968,"src":"5735:12:148","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":27973,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5719:7:148","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":27978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5719:29:148","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27979,"nodeType":"ExpressionStatement","src":"5719:29:148"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27980,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27964,"src":"5766:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":27981,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27966,"src":"5770:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5766:5:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":27972,"id":27983,"nodeType":"Return","src":"5759:12:148"}]},"documentation":{"id":27962,"nodeType":"StructuredDocumentation","src":"5142:465:148","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":27985,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":27969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27964,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":27985,"src":"5626:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27963,"name":"uint256","nodeType":"ElementaryTypeName","src":"5626:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27966,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":27985,"src":"5637:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27965,"name":"uint256","nodeType":"ElementaryTypeName","src":"5637:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27968,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":27985,"src":"5648:26:148","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":27967,"name":"string","nodeType":"ElementaryTypeName","src":"5648:6:148","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5625:50:148"},"returnParameters":{"id":27972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27971,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27985,"src":"5699:7:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27970,"name":"uint256","nodeType":"ElementaryTypeName","src":"5699:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5698:9:148"},"scope":28034,"src":"5613:166:148","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28008,"nodeType":"Block","src":"6548:70:148","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27998,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27990,"src":"6567:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":27999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6571:1:148","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6567:5:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":28001,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27992,"src":"6574:12:148","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":27997,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6559:7:148","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":28002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6559:28:148","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28003,"nodeType":"ExpressionStatement","src":"6559:28:148"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28004,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27988,"src":"6605:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":28005,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27990,"src":"6609:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6605:5:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":27996,"id":28007,"nodeType":"Return","src":"6598:12:148"}]},"documentation":{"id":27986,"nodeType":"StructuredDocumentation","src":"5787:660:148","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":28009,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":27993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27988,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":28009,"src":"6466:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27987,"name":"uint256","nodeType":"ElementaryTypeName","src":"6466:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27990,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":28009,"src":"6477:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27989,"name":"uint256","nodeType":"ElementaryTypeName","src":"6477:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27992,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":28009,"src":"6488:26:148","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":27991,"name":"string","nodeType":"ElementaryTypeName","src":"6488:6:148","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6465:50:148"},"returnParameters":{"id":27996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27995,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28009,"src":"6539:7:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27994,"name":"uint256","nodeType":"ElementaryTypeName","src":"6539:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6538:9:148"},"scope":28034,"src":"6453:165:148","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28032,"nodeType":"Block","src":"7376:70:148","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28022,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28014,"src":"7395:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":28023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7399:1:148","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7395:5:148","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":28025,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28016,"src":"7402:12:148","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":28021,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7387:7:148","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":28026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7387:28:148","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28027,"nodeType":"ExpressionStatement","src":"7387:28:148"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28028,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28012,"src":"7433:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":28029,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28014,"src":"7437:1:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7433:5:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":28020,"id":28031,"nodeType":"Return","src":"7426:12:148"}]},"documentation":{"id":28010,"nodeType":"StructuredDocumentation","src":"6626:649:148","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":28033,"implemented":true,"kind":"function","modifiers":[],"name":"mod","nodeType":"FunctionDefinition","parameters":{"id":28017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28012,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":28033,"src":"7294:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28011,"name":"uint256","nodeType":"ElementaryTypeName","src":"7294:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28014,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":28033,"src":"7305:9:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28013,"name":"uint256","nodeType":"ElementaryTypeName","src":"7305:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28016,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":28033,"src":"7316:26:148","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":28015,"name":"string","nodeType":"ElementaryTypeName","src":"7316:6:148","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7293:50:148"},"returnParameters":{"id":28020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28019,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28033,"src":"7367:7:148","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28018,"name":"uint256","nodeType":"ElementaryTypeName","src":"7367:7:148","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7366:9:148"},"scope":28034,"src":"7281:165:148","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":28035,"src":"647:6802:148"}],"src":"35:7416:148"},"id":148},"contracts/pangolin-token/IPangolinERC20.sol":{"ast":{"absolutePath":"contracts/pangolin-token/IPangolinERC20.sol","exportedSymbols":{"IPangolinERC20":[28152]},"id":28153,"nodeType":"SourceUnit","nodes":[{"id":28036,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"0:24:149"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":28152,"linearizedBaseContracts":[28152],"name":"IPangolinERC20","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":28044,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":28043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28038,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":28044,"src":"75:21:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28037,"name":"address","nodeType":"ElementaryTypeName","src":"75:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28040,"indexed":true,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":28044,"src":"98:23:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28039,"name":"address","nodeType":"ElementaryTypeName","src":"98:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28042,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":28044,"src":"123:10:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28041,"name":"uint","nodeType":"ElementaryTypeName","src":"123:4:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"74:60:149"},"src":"60:75:149"},{"anonymous":false,"id":28052,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":28051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28046,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":28052,"src":"156:20:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28045,"name":"address","nodeType":"ElementaryTypeName","src":"156:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28048,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":28052,"src":"178:18:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28047,"name":"address","nodeType":"ElementaryTypeName","src":"178:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28050,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":28052,"src":"198:10:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28049,"name":"uint","nodeType":"ElementaryTypeName","src":"198:4:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"155:54:149"},"src":"141:69:149"},{"functionSelector":"06fdde03","id":28057,"implemented":false,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","parameters":{"id":28053,"nodeType":"ParameterList","parameters":[],"src":"231:2:149"},"returnParameters":{"id":28056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28055,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28057,"src":"257:13:149","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":28054,"name":"string","nodeType":"ElementaryTypeName","src":"257:6:149","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"256:15:149"},"scope":28152,"src":"218:54:149","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"95d89b41","id":28062,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","parameters":{"id":28058,"nodeType":"ParameterList","parameters":[],"src":"293:2:149"},"returnParameters":{"id":28061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28060,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28062,"src":"319:13:149","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":28059,"name":"string","nodeType":"ElementaryTypeName","src":"319:6:149","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"318:15:149"},"scope":28152,"src":"278:56:149","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"313ce567","id":28067,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nodeType":"FunctionDefinition","parameters":{"id":28063,"nodeType":"ParameterList","parameters":[],"src":"357:2:149"},"returnParameters":{"id":28066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28065,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28067,"src":"383:5:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":28064,"name":"uint8","nodeType":"ElementaryTypeName","src":"383:5:149","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"382:7:149"},"scope":28152,"src":"340:50:149","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"18160ddd","id":28072,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":28068,"nodeType":"ParameterList","parameters":[],"src":"416:2:149"},"returnParameters":{"id":28071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28070,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28072,"src":"442:4:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28069,"name":"uint","nodeType":"ElementaryTypeName","src":"442:4:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"441:6:149"},"scope":28152,"src":"396:52:149","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"70a08231","id":28079,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":28075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28074,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":28079,"src":"473:13:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28073,"name":"address","nodeType":"ElementaryTypeName","src":"473:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"472:15:149"},"returnParameters":{"id":28078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28077,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28079,"src":"511:4:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28076,"name":"uint","nodeType":"ElementaryTypeName","src":"511:4:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"510:6:149"},"scope":28152,"src":"454:63:149","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"dd62ed3e","id":28088,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":28084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28081,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":28088,"src":"542:13:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28080,"name":"address","nodeType":"ElementaryTypeName","src":"542:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28083,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":28088,"src":"557:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28082,"name":"address","nodeType":"ElementaryTypeName","src":"557:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"541:32:149"},"returnParameters":{"id":28087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28086,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28088,"src":"597:4:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28085,"name":"uint","nodeType":"ElementaryTypeName","src":"597:4:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"596:6:149"},"scope":28152,"src":"523:80:149","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"095ea7b3","id":28097,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":28093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28090,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":28097,"src":"628:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28089,"name":"address","nodeType":"ElementaryTypeName","src":"628:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28092,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":28097,"src":"645:10:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28091,"name":"uint","nodeType":"ElementaryTypeName","src":"645:4:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"627:29:149"},"returnParameters":{"id":28096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28095,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28097,"src":"675:4:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28094,"name":"bool","nodeType":"ElementaryTypeName","src":"675:4:149","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"674:6:149"},"scope":28152,"src":"611:70:149","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a9059cbb","id":28106,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":28102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28099,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":28106,"src":"705:10:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28098,"name":"address","nodeType":"ElementaryTypeName","src":"705:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28101,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":28106,"src":"717:10:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28100,"name":"uint","nodeType":"ElementaryTypeName","src":"717:4:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"704:24:149"},"returnParameters":{"id":28105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28104,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28106,"src":"747:4:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28103,"name":"bool","nodeType":"ElementaryTypeName","src":"747:4:149","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"746:6:149"},"scope":28152,"src":"687:66:149","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"23b872dd","id":28117,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":28113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28108,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":28117,"src":"781:12:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28107,"name":"address","nodeType":"ElementaryTypeName","src":"781:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28110,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":28117,"src":"795:10:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28109,"name":"address","nodeType":"ElementaryTypeName","src":"795:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28112,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":28117,"src":"807:10:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28111,"name":"uint","nodeType":"ElementaryTypeName","src":"807:4:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"780:38:149"},"returnParameters":{"id":28116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28115,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28117,"src":"837:4:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28114,"name":"bool","nodeType":"ElementaryTypeName","src":"837:4:149","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"836:6:149"},"scope":28152,"src":"759:84:149","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3644e515","id":28122,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","parameters":{"id":28118,"nodeType":"ParameterList","parameters":[],"src":"876:2:149"},"returnParameters":{"id":28121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28120,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28122,"src":"902:7:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":28119,"name":"bytes32","nodeType":"ElementaryTypeName","src":"902:7:149","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"901:9:149"},"scope":28152,"src":"851:60:149","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"30adf81f","id":28127,"implemented":false,"kind":"function","modifiers":[],"name":"PERMIT_TYPEHASH","nodeType":"FunctionDefinition","parameters":{"id":28123,"nodeType":"ParameterList","parameters":[],"src":"941:2:149"},"returnParameters":{"id":28126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28125,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28127,"src":"967:7:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":28124,"name":"bytes32","nodeType":"ElementaryTypeName","src":"967:7:149","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"966:9:149"},"scope":28152,"src":"917:59:149","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"7ecebe00","id":28134,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nodeType":"FunctionDefinition","parameters":{"id":28130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28129,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":28134,"src":"998:13:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28128,"name":"address","nodeType":"ElementaryTypeName","src":"998:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"997:15:149"},"returnParameters":{"id":28133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28132,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28134,"src":"1036:4:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28131,"name":"uint","nodeType":"ElementaryTypeName","src":"1036:4:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1035:6:149"},"scope":28152,"src":"982:60:149","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d505accf","id":28151,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":28149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28136,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":28151,"src":"1066:13:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28135,"name":"address","nodeType":"ElementaryTypeName","src":"1066:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28138,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":28151,"src":"1081:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28137,"name":"address","nodeType":"ElementaryTypeName","src":"1081:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28140,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":28151,"src":"1098:10:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28139,"name":"uint","nodeType":"ElementaryTypeName","src":"1098:4:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28142,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":28151,"src":"1110:13:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28141,"name":"uint","nodeType":"ElementaryTypeName","src":"1110:4:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28144,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":28151,"src":"1125:7:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":28143,"name":"uint8","nodeType":"ElementaryTypeName","src":"1125:5:149","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":28146,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":28151,"src":"1134:9:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":28145,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1134:7:149","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":28148,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":28151,"src":"1145:9:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":28147,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1145:7:149","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1065:90:149"},"returnParameters":{"id":28150,"nodeType":"ParameterList","parameters":[],"src":"1164:0:149"},"scope":28152,"src":"1050:115:149","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":28153,"src":"28:1140:149"}],"src":"0:1170:149"},"id":149},"contracts/staking-rewards/StakingRewards.sol":{"ast":{"absolutePath":"contracts/staking-rewards/StakingRewards.sol","exportedSymbols":{"Address":[29920],"Context":[28828],"IERC20":[29463],"IPangolinERC20":[28152],"Math":[29010],"Ownable":[28937],"ReentrancyGuard":[29960],"SafeERC20":[29676],"SafeMath":[29206],"StakingRewards":[28805]},"id":28806,"nodeType":"SourceUnit","nodes":[{"id":28154,"literals":["solidity","^","0.7",".6"],"nodeType":"PragmaDirective","src":"0:23:150"},{"absolutePath":"openzeppelin-contracts-legacy/access/Ownable.sol","file":"openzeppelin-contracts-legacy/access/Ownable.sol","id":28155,"nodeType":"ImportDirective","scope":28806,"sourceUnit":28938,"src":"27:58:150","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-legacy/math/Math.sol","file":"openzeppelin-contracts-legacy/math/Math.sol","id":28156,"nodeType":"ImportDirective","scope":28806,"sourceUnit":29011,"src":"87:53:150","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-legacy/math/SafeMath.sol","file":"openzeppelin-contracts-legacy/math/SafeMath.sol","id":28157,"nodeType":"ImportDirective","scope":28806,"sourceUnit":29207,"src":"142:57:150","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-legacy/token/ERC20/SafeERC20.sol","file":"openzeppelin-contracts-legacy/token/ERC20/SafeERC20.sol","id":28158,"nodeType":"ImportDirective","scope":28806,"sourceUnit":29677,"src":"201:65:150","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-legacy/utils/ReentrancyGuard.sol","file":"openzeppelin-contracts-legacy/utils/ReentrancyGuard.sol","id":28159,"nodeType":"ImportDirective","scope":28806,"sourceUnit":29961,"src":"268:65:150","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/pangolin-token/IPangolinERC20.sol","file":"../pangolin-token/IPangolinERC20.sol","id":28160,"nodeType":"ImportDirective","scope":28806,"sourceUnit":28153,"src":"337:46:150","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":28161,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":29960,"src":"488:15:150","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$29960","typeString":"contract ReentrancyGuard"}},"id":28162,"nodeType":"InheritanceSpecifier","src":"488:15:150"},{"baseName":{"id":28163,"name":"Ownable","nodeType":"UserDefinedTypeName","referencedDeclaration":28937,"src":"505:7:150","typeDescriptions":{"typeIdentifier":"t_contract$_Ownable_$28937","typeString":"contract Ownable"}},"id":28164,"nodeType":"InheritanceSpecifier","src":"505:7:150"}],"contractDependencies":[28828,28937,29960],"contractKind":"contract","fullyImplemented":true,"id":28805,"linearizedBaseContracts":[28805,28937,28828,29960],"name":"StakingRewards","nodeType":"ContractDefinition","nodes":[{"id":28167,"libraryName":{"id":28165,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":29206,"src":"526:8:150","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$29206","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"520:27:150","typeName":{"id":28166,"name":"uint256","nodeType":"ElementaryTypeName","src":"539:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":28170,"libraryName":{"id":28168,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":29676,"src":"559:9:150","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$29676","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"553:27:150","typeName":{"id":28169,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":29463,"src":"573:6:150","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}}},{"constant":false,"functionSelector":"d1af0c7d","id":28172,"mutability":"mutable","name":"rewardsToken","nodeType":"VariableDeclaration","scope":28805,"src":"639:26:150","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"},"typeName":{"id":28171,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":29463,"src":"639:6:150","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"visibility":"public"},{"constant":false,"functionSelector":"72f702f3","id":28174,"mutability":"mutable","name":"stakingToken","nodeType":"VariableDeclaration","scope":28805,"src":"672:26:150","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"},"typeName":{"id":28173,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":29463,"src":"672:6:150","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"visibility":"public"},{"constant":false,"functionSelector":"ebe2b12b","id":28177,"mutability":"mutable","name":"periodFinish","nodeType":"VariableDeclaration","scope":28805,"src":"705:31:150","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28175,"name":"uint256","nodeType":"ElementaryTypeName","src":"705:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":28176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"735:1:150","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"public"},{"constant":false,"functionSelector":"7b0a47ee","id":28180,"mutability":"mutable","name":"rewardRate","nodeType":"VariableDeclaration","scope":28805,"src":"743:29:150","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28178,"name":"uint256","nodeType":"ElementaryTypeName","src":"743:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":28179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"771:1:150","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"public"},{"constant":false,"functionSelector":"386a9525","id":28183,"mutability":"mutable","name":"rewardsDuration","nodeType":"VariableDeclaration","scope":28805,"src":"779:39:150","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28181,"name":"uint256","nodeType":"ElementaryTypeName","src":"779:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":28182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"812:6:150","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"},"value":"1"},"visibility":"public"},{"constant":false,"functionSelector":"c8f33c91","id":28185,"mutability":"mutable","name":"lastUpdateTime","nodeType":"VariableDeclaration","scope":28805,"src":"825:29:150","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28184,"name":"uint256","nodeType":"ElementaryTypeName","src":"825:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"df136d65","id":28187,"mutability":"mutable","name":"rewardPerTokenStored","nodeType":"VariableDeclaration","scope":28805,"src":"861:35:150","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28186,"name":"uint256","nodeType":"ElementaryTypeName","src":"861:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"8b876347","id":28191,"mutability":"mutable","name":"userRewardPerTokenPaid","nodeType":"VariableDeclaration","scope":28805,"src":"905:57:150","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":28190,"keyType":{"id":28188,"name":"address","nodeType":"ElementaryTypeName","src":"913:7:150","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"905:27:150","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":28189,"name":"uint256","nodeType":"ElementaryTypeName","src":"924:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"constant":false,"functionSelector":"0700037d","id":28195,"mutability":"mutable","name":"rewards","nodeType":"VariableDeclaration","scope":28805,"src":"969:42:150","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":28194,"keyType":{"id":28192,"name":"address","nodeType":"ElementaryTypeName","src":"977:7:150","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"969:27:150","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":28193,"name":"uint256","nodeType":"ElementaryTypeName","src":"988:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"constant":false,"id":28197,"mutability":"mutable","name":"_totalSupply","nodeType":"VariableDeclaration","scope":28805,"src":"1020:28:150","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28196,"name":"uint256","nodeType":"ElementaryTypeName","src":"1020:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":28201,"mutability":"mutable","name":"_balances","nodeType":"VariableDeclaration","scope":28805,"src":"1055:45:150","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":28200,"keyType":{"id":28198,"name":"address","nodeType":"ElementaryTypeName","src":"1063:7:150","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1055:27:150","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":28199,"name":"uint256","nodeType":"ElementaryTypeName","src":"1074:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"body":{"id":28220,"nodeType":"Block","src":"1246:102:150","statements":[{"expression":{"id":28212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":28208,"name":"rewardsToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28172,"src":"1257:12:150","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":28210,"name":"_rewardsToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28203,"src":"1279:13:150","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":28209,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29463,"src":"1272:6:150","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$29463_$","typeString":"type(contract IERC20)"}},"id":28211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1272:21:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"src":"1257:36:150","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"id":28213,"nodeType":"ExpressionStatement","src":"1257:36:150"},{"expression":{"id":28218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":28214,"name":"stakingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28174,"src":"1304:12:150","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":28216,"name":"_stakingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28205,"src":"1326:13:150","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":28215,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29463,"src":"1319:6:150","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$29463_$","typeString":"type(contract IERC20)"}},"id":28217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1319:21:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"src":"1304:36:150","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"id":28219,"nodeType":"ExpressionStatement","src":"1304:36:150"}]},"id":28221,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":28206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28203,"mutability":"mutable","name":"_rewardsToken","nodeType":"VariableDeclaration","scope":28221,"src":"1178:21:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28202,"name":"address","nodeType":"ElementaryTypeName","src":"1178:7:150","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28205,"mutability":"mutable","name":"_stakingToken","nodeType":"VariableDeclaration","scope":28221,"src":"1210:21:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28204,"name":"address","nodeType":"ElementaryTypeName","src":"1210:7:150","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1167:71:150"},"returnParameters":{"id":28207,"nodeType":"ParameterList","parameters":[],"src":"1246:0:150"},"scope":28805,"src":"1156:192:150","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":28228,"nodeType":"Block","src":"1452:38:150","statements":[{"expression":{"id":28226,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28197,"src":"1470:12:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":28225,"id":28227,"nodeType":"Return","src":"1463:19:150"}]},"functionSelector":"18160ddd","id":28229,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":28222,"nodeType":"ParameterList","parameters":[],"src":"1417:2:150"},"returnParameters":{"id":28225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28224,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28229,"src":"1443:7:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28223,"name":"uint256","nodeType":"ElementaryTypeName","src":"1443:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1442:9:150"},"scope":28805,"src":"1397:93:150","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":28240,"nodeType":"Block","src":"1566:44:150","statements":[{"expression":{"baseExpression":{"id":28236,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28201,"src":"1584:9:150","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":28238,"indexExpression":{"id":28237,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28231,"src":"1594:7:150","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1584:18:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":28235,"id":28239,"nodeType":"Return","src":"1577:25:150"}]},"functionSelector":"70a08231","id":28241,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":28232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28231,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":28241,"src":"1517:15:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28230,"name":"address","nodeType":"ElementaryTypeName","src":"1517:7:150","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1516:17:150"},"returnParameters":{"id":28235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28234,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28241,"src":"1557:7:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28233,"name":"uint256","nodeType":"ElementaryTypeName","src":"1557:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1556:9:150"},"scope":28805,"src":"1498:112:150","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":28253,"nodeType":"Block","src":"1684:65:150","statements":[{"expression":{"arguments":[{"expression":{"id":28248,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1711:5:150","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":28249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"1711:15:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":28250,"name":"periodFinish","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28177,"src":"1728:12:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":28246,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29010,"src":"1702:4:150","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$29010_$","typeString":"type(library Math)"}},"id":28247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"min","nodeType":"MemberAccess","referencedDeclaration":28976,"src":"1702:8:150","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":28251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1702:39:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":28245,"id":28252,"nodeType":"Return","src":"1695:46:150"}]},"functionSelector":"80faa57d","id":28254,"implemented":true,"kind":"function","modifiers":[],"name":"lastTimeRewardApplicable","nodeType":"FunctionDefinition","parameters":{"id":28242,"nodeType":"ParameterList","parameters":[],"src":"1651:2:150"},"returnParameters":{"id":28245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28244,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28254,"src":"1675:7:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28243,"name":"uint256","nodeType":"ElementaryTypeName","src":"1675:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1674:9:150"},"scope":28805,"src":"1618:131:150","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":28284,"nodeType":"Block","src":"1813:274:150","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28259,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28197,"src":"1828:12:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":28260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1844:1:150","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1828:17:150","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":28265,"nodeType":"IfStatement","src":"1824:77:150","trueBody":{"id":28264,"nodeType":"Block","src":"1847:54:150","statements":[{"expression":{"id":28262,"name":"rewardPerTokenStored","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28187,"src":"1869:20:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":28258,"id":28263,"nodeType":"Return","src":"1862:27:150"}]}},{"expression":{"arguments":[{"arguments":[{"id":28280,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28197,"src":"2051:12:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"hexValue":"31653138","id":28277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2041:4:150","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"arguments":[{"id":28274,"name":"rewardRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28180,"src":"2025:10:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":28271,"name":"lastUpdateTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28185,"src":"2005:14:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":28268,"name":"lastTimeRewardApplicable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28254,"src":"1974:24:150","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":28269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1974:26:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":29056,"src":"1974:30:150","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":28272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1974:46:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":29119,"src":"1974:50:150","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":28275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1974:62:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":29119,"src":"1974:66:150","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":28278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1974:72:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":29136,"src":"1974:76:150","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":28281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1974:90:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":28266,"name":"rewardPerTokenStored","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28187,"src":"1931:20:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":29039,"src":"1931:24:150","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":28282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1931:148:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":28258,"id":28283,"nodeType":"Return","src":"1911:168:150"}]},"functionSelector":"cd3daf9d","id":28285,"implemented":true,"kind":"function","modifiers":[],"name":"rewardPerToken","nodeType":"FunctionDefinition","parameters":{"id":28255,"nodeType":"ParameterList","parameters":[],"src":"1780:2:150"},"returnParameters":{"id":28258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28257,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28285,"src":"1804:7:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28256,"name":"uint256","nodeType":"ElementaryTypeName","src":"1804:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1803:9:150"},"scope":28805,"src":"1757:330:150","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":28313,"nodeType":"Block","src":"2158:135:150","statements":[{"expression":{"arguments":[{"baseExpression":{"id":28308,"name":"rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28195,"src":"2268:7:150","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":28310,"indexExpression":{"id":28309,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28287,"src":"2276:7:150","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2268:16:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"hexValue":"31653138","id":28305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2258:4:150","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":28299,"name":"userRewardPerTokenPaid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28191,"src":"2220:22:150","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":28301,"indexExpression":{"id":28300,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28287,"src":"2243:7:150","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2220:31:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":28296,"name":"rewardPerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28285,"src":"2199:14:150","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":28297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2199:16:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":29056,"src":"2199:20:150","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":28302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2199:53:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":28292,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28201,"src":"2176:9:150","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":28294,"indexExpression":{"id":28293,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28287,"src":"2186:7:150","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2176:18:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":29119,"src":"2176:22:150","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":28303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2176:77:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":29136,"src":"2176:81:150","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":28306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2176:87:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":29039,"src":"2176:91:150","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":28311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2176:109:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":28291,"id":28312,"nodeType":"Return","src":"2169:116:150"}]},"functionSelector":"008cc262","id":28314,"implemented":true,"kind":"function","modifiers":[],"name":"earned","nodeType":"FunctionDefinition","parameters":{"id":28288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28287,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":28314,"src":"2111:15:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28286,"name":"address","nodeType":"ElementaryTypeName","src":"2111:7:150","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2110:17:150"},"returnParameters":{"id":28291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28290,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28314,"src":"2149:7:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28289,"name":"uint256","nodeType":"ElementaryTypeName","src":"2149:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2148:9:150"},"scope":28805,"src":"2095:198:150","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":28324,"nodeType":"Block","src":"2365:57:150","statements":[{"expression":{"arguments":[{"id":28321,"name":"rewardsDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28183,"src":"2398:15:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":28319,"name":"rewardRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28180,"src":"2383:10:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":29119,"src":"2383:14:150","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":28322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2383:31:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":28318,"id":28323,"nodeType":"Return","src":"2376:38:150"}]},"functionSelector":"1c1f78eb","id":28325,"implemented":true,"kind":"function","modifiers":[],"name":"getRewardForDuration","nodeType":"FunctionDefinition","parameters":{"id":28315,"nodeType":"ParameterList","parameters":[],"src":"2330:2:150"},"returnParameters":{"id":28318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28317,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28325,"src":"2356:7:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28316,"name":"uint256","nodeType":"ElementaryTypeName","src":"2356:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2355:9:150"},"scope":28805,"src":"2301:121:150","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":28409,"nodeType":"Block","src":"2618:423:150","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28345,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28327,"src":"2637:6:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":28346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2646:1:150","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2637:10:150","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f74207374616b652030","id":28348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2649:16:150","typeDescriptions":{"typeIdentifier":"t_stringliteral_2972ce884b95fc24c703b7f04fae79e4ca7287e77fa26ed09d1faa4263e887ab","typeString":"literal_string \"Cannot stake 0\""},"value":"Cannot stake 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2972ce884b95fc24c703b7f04fae79e4ca7287e77fa26ed09d1faa4263e887ab","typeString":"literal_string \"Cannot stake 0\""}],"id":28344,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2629:7:150","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":28349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2629:37:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28350,"nodeType":"ExpressionStatement","src":"2629:37:150"},{"expression":{"id":28356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":28351,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28197,"src":"2677:12:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":28354,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28327,"src":"2709:6:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":28352,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28197,"src":"2692:12:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":29039,"src":"2692:16:150","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":28355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2692:24:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2677:39:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28357,"nodeType":"ExpressionStatement","src":"2677:39:150"},{"expression":{"id":28369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":28358,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28201,"src":"2727:9:150","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":28361,"indexExpression":{"expression":{"id":28359,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2737:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2737:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2727:21:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":28367,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28327,"src":"2777:6:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":28362,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28201,"src":"2751:9:150","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":28365,"indexExpression":{"expression":{"id":28363,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2761:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2761:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2751:21:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":29039,"src":"2751:25:150","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":28368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2751:33:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2727:57:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28370,"nodeType":"ExpressionStatement","src":"2727:57:150"},{"expression":{"arguments":[{"expression":{"id":28378,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2861:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2861:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":28382,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2881:4:150","typeDescriptions":{"typeIdentifier":"t_contract$_StakingRewards_$28805","typeString":"contract StakingRewards"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StakingRewards_$28805","typeString":"contract StakingRewards"}],"id":28381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2873:7:150","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":28380,"name":"address","nodeType":"ElementaryTypeName","src":"2873:7:150","typeDescriptions":{}}},"id":28383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2873:13:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":28384,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28327,"src":"2888:6:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":28385,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28329,"src":"2896:8:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":28386,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28331,"src":"2906:1:150","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":28387,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28333,"src":"2909:1:150","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":28388,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28335,"src":"2912:1:150","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":[{"arguments":[{"id":28374,"name":"stakingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28174,"src":"2839:12:150","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}],"id":28373,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2831:7:150","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":28372,"name":"address","nodeType":"ElementaryTypeName","src":"2831:7:150","typeDescriptions":{}}},"id":28375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2831:21:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":28371,"name":"IPangolinERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28152,"src":"2816:14:150","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPangolinERC20_$28152_$","typeString":"type(contract IPangolinERC20)"}},"id":28376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2816:37:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPangolinERC20_$28152","typeString":"contract IPangolinERC20"}},"id":28377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":28151,"src":"2816:44:150","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":28389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2816:98:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28390,"nodeType":"ExpressionStatement","src":"2816:98:150"},{"expression":{"arguments":[{"expression":{"id":28394,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2957:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2957:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":28398,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2977:4:150","typeDescriptions":{"typeIdentifier":"t_contract$_StakingRewards_$28805","typeString":"contract StakingRewards"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StakingRewards_$28805","typeString":"contract StakingRewards"}],"id":28397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2969:7:150","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":28396,"name":"address","nodeType":"ElementaryTypeName","src":"2969:7:150","typeDescriptions":{}}},"id":28399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2969:13:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":28400,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28327,"src":"2984:6:150","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":{"id":28391,"name":"stakingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28174,"src":"2927:12:150","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"id":28393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":29522,"src":"2927:29:150","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$29463_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$29463_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":28401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2927:64:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28402,"nodeType":"ExpressionStatement","src":"2927:64:150"},{"eventCall":{"arguments":[{"expression":{"id":28404,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3014:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3014:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":28406,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28327,"src":"3026:6:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":28403,"name":"Staked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28782,"src":"3007:6:150","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":28407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3007:26:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28408,"nodeType":"EmitStatement","src":"3002:31:150"}]},"functionSelector":"ecd9ba82","id":28410,"implemented":true,"kind":"function","modifiers":[{"id":28338,"modifierName":{"id":28337,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29959,"src":"2580:12:150","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2580:12:150"},{"arguments":[{"expression":{"id":28340,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2606:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2606:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"id":28342,"modifierName":{"id":28339,"name":"updateReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28772,"src":"2593:12:150","typeDescriptions":{"typeIdentifier":"t_modifier$_t_address_$","typeString":"modifier (address)"}},"nodeType":"ModifierInvocation","src":"2593:24:150"}],"name":"stakeWithPermit","nodeType":"FunctionDefinition","parameters":{"id":28336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28327,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":28410,"src":"2509:14:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28326,"name":"uint256","nodeType":"ElementaryTypeName","src":"2509:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28329,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":28410,"src":"2525:13:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28328,"name":"uint","nodeType":"ElementaryTypeName","src":"2525:4:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28331,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":28410,"src":"2540:7:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":28330,"name":"uint8","nodeType":"ElementaryTypeName","src":"2540:5:150","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":28333,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":28410,"src":"2549:9:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":28332,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2549:7:150","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":28335,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":28410,"src":"2560:9:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":28334,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2560:7:150","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2508:62:150"},"returnParameters":{"id":28343,"nodeType":"ParameterList","parameters":[],"src":"2618:0:150"},"scope":28805,"src":"2484:557:150","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":28466,"nodeType":"Block","src":"3127:291:150","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28422,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28412,"src":"3146:6:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":28423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3155:1:150","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3146:10:150","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f74207374616b652030","id":28425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3158:16:150","typeDescriptions":{"typeIdentifier":"t_stringliteral_2972ce884b95fc24c703b7f04fae79e4ca7287e77fa26ed09d1faa4263e887ab","typeString":"literal_string \"Cannot stake 0\""},"value":"Cannot stake 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2972ce884b95fc24c703b7f04fae79e4ca7287e77fa26ed09d1faa4263e887ab","typeString":"literal_string \"Cannot stake 0\""}],"id":28421,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3138:7:150","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":28426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3138:37:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28427,"nodeType":"ExpressionStatement","src":"3138:37:150"},{"expression":{"id":28433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":28428,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28197,"src":"3186:12:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":28431,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28412,"src":"3218:6:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":28429,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28197,"src":"3201:12:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":29039,"src":"3201:16:150","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":28432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3201:24:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3186:39:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28434,"nodeType":"ExpressionStatement","src":"3186:39:150"},{"expression":{"id":28446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":28435,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28201,"src":"3236:9:150","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":28438,"indexExpression":{"expression":{"id":28436,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3246:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3246:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3236:21:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":28444,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28412,"src":"3286:6:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":28439,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28201,"src":"3260:9:150","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":28442,"indexExpression":{"expression":{"id":28440,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3270:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3270:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3260:21:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":29039,"src":"3260:25:150","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":28445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3260:33:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3236:57:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28447,"nodeType":"ExpressionStatement","src":"3236:57:150"},{"expression":{"arguments":[{"expression":{"id":28451,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3334:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3334:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":28455,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3354:4:150","typeDescriptions":{"typeIdentifier":"t_contract$_StakingRewards_$28805","typeString":"contract StakingRewards"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StakingRewards_$28805","typeString":"contract StakingRewards"}],"id":28454,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3346:7:150","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":28453,"name":"address","nodeType":"ElementaryTypeName","src":"3346:7:150","typeDescriptions":{}}},"id":28456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3346:13:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":28457,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28412,"src":"3361:6:150","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":{"id":28448,"name":"stakingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28174,"src":"3304:12:150","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"id":28450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":29522,"src":"3304:29:150","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$29463_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$29463_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":28458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3304:64:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28459,"nodeType":"ExpressionStatement","src":"3304:64:150"},{"eventCall":{"arguments":[{"expression":{"id":28461,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3391:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3391:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":28463,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28412,"src":"3403:6:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":28460,"name":"Staked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28782,"src":"3384:6:150","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":28464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3384:26:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28465,"nodeType":"EmitStatement","src":"3379:31:150"}]},"functionSelector":"a694fc3a","id":28467,"implemented":true,"kind":"function","modifiers":[{"id":28415,"modifierName":{"id":28414,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29959,"src":"3089:12:150","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3089:12:150"},{"arguments":[{"expression":{"id":28417,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3115:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3115:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"id":28419,"modifierName":{"id":28416,"name":"updateReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28772,"src":"3102:12:150","typeDescriptions":{"typeIdentifier":"t_modifier$_t_address_$","typeString":"modifier (address)"}},"nodeType":"ModifierInvocation","src":"3102:24:150"}],"name":"stake","nodeType":"FunctionDefinition","parameters":{"id":28413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28412,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":28467,"src":"3064:14:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28411,"name":"uint256","nodeType":"ElementaryTypeName","src":"3064:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3063:16:150"},"returnParameters":{"id":28420,"nodeType":"ParameterList","parameters":[],"src":"3127:0:150"},"scope":28805,"src":"3049:369:150","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":28519,"nodeType":"Block","src":"3505:278:150","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28479,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28469,"src":"3524:6:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":28480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3533:1:150","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3524:10:150","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f742077697468647261772030","id":28482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3536:19:150","typeDescriptions":{"typeIdentifier":"t_stringliteral_8d85b8e7f4404d04d93e8d532ad219ceeba0becfbc18622bad46b31e08b1f0b0","typeString":"literal_string \"Cannot withdraw 0\""},"value":"Cannot withdraw 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8d85b8e7f4404d04d93e8d532ad219ceeba0becfbc18622bad46b31e08b1f0b0","typeString":"literal_string \"Cannot withdraw 0\""}],"id":28478,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3516:7:150","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":28483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3516:40:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28484,"nodeType":"ExpressionStatement","src":"3516:40:150"},{"expression":{"id":28490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":28485,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28197,"src":"3567:12:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":28488,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28469,"src":"3599:6:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":28486,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28197,"src":"3582:12:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":29056,"src":"3582:16:150","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":28489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3582:24:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3567:39:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28491,"nodeType":"ExpressionStatement","src":"3567:39:150"},{"expression":{"id":28503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":28492,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28201,"src":"3617:9:150","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":28495,"indexExpression":{"expression":{"id":28493,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3627:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3627:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3617:21:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":28501,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28469,"src":"3667:6:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":28496,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28201,"src":"3641:9:150","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":28499,"indexExpression":{"expression":{"id":28497,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3651:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3651:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3641:21:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":29056,"src":"3641:25:150","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":28502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3641:33:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3617:57:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28504,"nodeType":"ExpressionStatement","src":"3617:57:150"},{"expression":{"arguments":[{"expression":{"id":28508,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3711:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3711:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":28510,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28469,"src":"3723:6:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":28505,"name":"stakingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28174,"src":"3685:12:150","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"id":28507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":29497,"src":"3685:25:150","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$29463_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$29463_$","typeString":"function (contract IERC20,address,uint256)"}},"id":28511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3685:45:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28512,"nodeType":"ExpressionStatement","src":"3685:45:150"},{"eventCall":{"arguments":[{"expression":{"id":28514,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3756:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3756:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":28516,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28469,"src":"3768:6:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":28513,"name":"Withdrawn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28788,"src":"3746:9:150","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":28517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3746:29:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28518,"nodeType":"EmitStatement","src":"3741:34:150"}]},"functionSelector":"2e1a7d4d","id":28520,"implemented":true,"kind":"function","modifiers":[{"id":28472,"modifierName":{"id":28471,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29959,"src":"3467:12:150","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3467:12:150"},{"arguments":[{"expression":{"id":28474,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3493:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3493:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"id":28476,"modifierName":{"id":28473,"name":"updateReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28772,"src":"3480:12:150","typeDescriptions":{"typeIdentifier":"t_modifier$_t_address_$","typeString":"modifier (address)"}},"nodeType":"ModifierInvocation","src":"3480:24:150"}],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":28470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28469,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":28520,"src":"3444:14:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28468,"name":"uint256","nodeType":"ElementaryTypeName","src":"3444:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3443:16:150"},"returnParameters":{"id":28477,"nodeType":"ParameterList","parameters":[],"src":"3505:0:150"},"scope":28805,"src":"3426:357:150","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":28562,"nodeType":"Block","src":"3857:241:150","statements":[{"assignments":[28530],"declarations":[{"constant":false,"id":28530,"mutability":"mutable","name":"reward","nodeType":"VariableDeclaration","scope":28562,"src":"3868:14:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28529,"name":"uint256","nodeType":"ElementaryTypeName","src":"3868:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":28535,"initialValue":{"baseExpression":{"id":28531,"name":"rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28195,"src":"3885:7:150","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":28534,"indexExpression":{"expression":{"id":28532,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3893:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3893:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3885:19:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3868:36:150"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28536,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28530,"src":"3919:6:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":28537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3928:1:150","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3919:10:150","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":28561,"nodeType":"IfStatement","src":"3915:176:150","trueBody":{"id":28560,"nodeType":"Block","src":"3931:160:150","statements":[{"expression":{"id":28544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":28539,"name":"rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28195,"src":"3946:7:150","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":28542,"indexExpression":{"expression":{"id":28540,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3954:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3954:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3946:19:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":28543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3968:1:150","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3946:23:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28545,"nodeType":"ExpressionStatement","src":"3946:23:150"},{"expression":{"arguments":[{"expression":{"id":28549,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4010:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4010:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":28551,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28530,"src":"4022:6:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":28546,"name":"rewardsToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28172,"src":"3984:12:150","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"id":28548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":29497,"src":"3984:25:150","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$29463_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$29463_$","typeString":"function (contract IERC20,address,uint256)"}},"id":28552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3984:45:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28553,"nodeType":"ExpressionStatement","src":"3984:45:150"},{"eventCall":{"arguments":[{"expression":{"id":28555,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4060:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4060:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":28557,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28530,"src":"4072:6:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":28554,"name":"RewardPaid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28794,"src":"4049:10:150","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":28558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4049:30:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28559,"nodeType":"EmitStatement","src":"4044:35:150"}]}}]},"functionSelector":"3d18b912","id":28563,"implemented":true,"kind":"function","modifiers":[{"id":28523,"modifierName":{"id":28522,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29959,"src":"3819:12:150","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3819:12:150"},{"arguments":[{"expression":{"id":28525,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3845:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3845:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"id":28527,"modifierName":{"id":28524,"name":"updateReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28772,"src":"3832:12:150","typeDescriptions":{"typeIdentifier":"t_modifier$_t_address_$","typeString":"modifier (address)"}},"nodeType":"ModifierInvocation","src":"3832:24:150"}],"name":"getReward","nodeType":"FunctionDefinition","parameters":{"id":28521,"nodeType":"ParameterList","parameters":[],"src":"3809:2:150"},"returnParameters":{"id":28528,"nodeType":"ParameterList","parameters":[],"src":"3857:0:150"},"scope":28805,"src":"3791:307:150","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":28576,"nodeType":"Block","src":"4131:72:150","statements":[{"expression":{"arguments":[{"baseExpression":{"id":28567,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28201,"src":"4151:9:150","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":28570,"indexExpression":{"expression":{"id":28568,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4161:3:150","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4161:10:150","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4151:21:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":28566,"name":"withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28520,"src":"4142:8:150","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":28571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4142:31:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28572,"nodeType":"ExpressionStatement","src":"4142:31:150"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":28573,"name":"getReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28563,"src":"4184:9:150","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":28574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4184:11:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28575,"nodeType":"ExpressionStatement","src":"4184:11:150"}]},"functionSelector":"e9fad8ee","id":28577,"implemented":true,"kind":"function","modifiers":[],"name":"exit","nodeType":"FunctionDefinition","parameters":{"id":28564,"nodeType":"ParameterList","parameters":[],"src":"4119:2:150"},"returnParameters":{"id":28565,"nodeType":"ParameterList","parameters":[],"src":"4131:0:150"},"scope":28805,"src":"4106:97:150","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":28666,"nodeType":"Block","src":"4439:981:150","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":28590,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4454:5:150","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":28591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"4454:15:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":28592,"name":"periodFinish","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28177,"src":"4473:12:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4454:31:150","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":28627,"nodeType":"Block","src":"4560:208:150","statements":[{"assignments":[28603],"declarations":[{"constant":false,"id":28603,"mutability":"mutable","name":"remaining","nodeType":"VariableDeclaration","scope":28627,"src":"4575:17:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28602,"name":"uint256","nodeType":"ElementaryTypeName","src":"4575:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":28609,"initialValue":{"arguments":[{"expression":{"id":28606,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4612:5:150","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":28607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"4612:15:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":28604,"name":"periodFinish","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28177,"src":"4595:12:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":29056,"src":"4595:16:150","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":28608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4595:33:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4575:53:150"},{"assignments":[28611],"declarations":[{"constant":false,"id":28611,"mutability":"mutable","name":"leftover","nodeType":"VariableDeclaration","scope":28627,"src":"4643:16:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28610,"name":"uint256","nodeType":"ElementaryTypeName","src":"4643:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":28616,"initialValue":{"arguments":[{"id":28614,"name":"rewardRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28180,"src":"4676:10:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":28612,"name":"remaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28603,"src":"4662:9:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":29119,"src":"4662:13:150","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":28615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4662:25:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4643:44:150"},{"expression":{"id":28625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":28617,"name":"rewardRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28180,"src":"4702:10:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":28623,"name":"rewardsDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28183,"src":"4740:15:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":28620,"name":"leftover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28611,"src":"4726:8:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":28618,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28579,"src":"4715:6:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":29039,"src":"4715:10:150","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":28621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4715:20:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":29136,"src":"4715:24:150","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":28624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4715:41:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4702:54:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28626,"nodeType":"ExpressionStatement","src":"4702:54:150"}]},"id":28628,"nodeType":"IfStatement","src":"4450:318:150","trueBody":{"id":28601,"nodeType":"Block","src":"4487:67:150","statements":[{"expression":{"id":28599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":28594,"name":"rewardRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28180,"src":"4502:10:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":28597,"name":"rewardsDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28183,"src":"4526:15:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":28595,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28579,"src":"4515:6:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":29136,"src":"4515:10:150","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":28598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4515:27:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4502:40:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28600,"nodeType":"ExpressionStatement","src":"4502:40:150"}]}},{"assignments":[28630],"declarations":[{"constant":false,"id":28630,"mutability":"mutable","name":"balance","nodeType":"VariableDeclaration","scope":28666,"src":"5128:12:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28629,"name":"uint","nodeType":"ElementaryTypeName","src":"5128:4:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":28638,"initialValue":{"arguments":[{"arguments":[{"id":28635,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5174:4:150","typeDescriptions":{"typeIdentifier":"t_contract$_StakingRewards_$28805","typeString":"contract StakingRewards"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StakingRewards_$28805","typeString":"contract StakingRewards"}],"id":28634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5166:7:150","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":28633,"name":"address","nodeType":"ElementaryTypeName","src":"5166:7:150","typeDescriptions":{}}},"id":28636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5166:13:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":28631,"name":"rewardsToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28172,"src":"5143:12:150","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"id":28632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":29402,"src":"5143:22:150","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":28637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5143:37:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5128:52:150"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28640,"name":"rewardRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28180,"src":"5199:10:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":28643,"name":"rewardsDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28183,"src":"5225:15:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":28641,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28630,"src":"5213:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":29136,"src":"5213:11:150","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":28644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5213:28:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5199:42:150","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f76696465642072657761726420746f6f2068696768","id":28646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5243:26:150","typeDescriptions":{"typeIdentifier":"t_stringliteral_af294828ccb7807394ab9c640e14eb2534ed0e75bb2e1346f1bb81dd84cda810","typeString":"literal_string \"Provided reward too high\""},"value":"Provided reward too high"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_af294828ccb7807394ab9c640e14eb2534ed0e75bb2e1346f1bb81dd84cda810","typeString":"literal_string \"Provided reward too high\""}],"id":28639,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5191:7:150","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":28647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5191:79:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28648,"nodeType":"ExpressionStatement","src":"5191:79:150"},{"expression":{"id":28652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":28649,"name":"lastUpdateTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28185,"src":"5283:14:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":28650,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5300:5:150","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":28651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"5300:15:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5283:32:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28653,"nodeType":"ExpressionStatement","src":"5283:32:150"},{"expression":{"id":28660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":28654,"name":"periodFinish","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28177,"src":"5326:12:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":28658,"name":"rewardsDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28183,"src":"5361:15:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":28655,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5341:5:150","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":28656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"5341:15:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":29039,"src":"5341:19:150","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":28659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5341:36:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5326:51:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28661,"nodeType":"ExpressionStatement","src":"5326:51:150"},{"eventCall":{"arguments":[{"id":28663,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28579,"src":"5405:6:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":28662,"name":"RewardAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28776,"src":"5393:11:150","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":28664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5393:19:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28665,"nodeType":"EmitStatement","src":"5388:24:150"}]},"functionSelector":"3c6b16ab","id":28667,"implemented":true,"kind":"function","modifiers":[{"id":28582,"modifierName":{"id":28581,"name":"onlyOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28886,"src":"4404:9:150","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4404:9:150"},{"arguments":[{"arguments":[{"hexValue":"30","id":28586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4435:1:150","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":28585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4427:7:150","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":28584,"name":"address","nodeType":"ElementaryTypeName","src":"4427:7:150","typeDescriptions":{}}},"id":28587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4427:10:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"id":28588,"modifierName":{"id":28583,"name":"updateReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28772,"src":"4414:12:150","typeDescriptions":{"typeIdentifier":"t_modifier$_t_address_$","typeString":"modifier (address)"}},"nodeType":"ModifierInvocation","src":"4414:24:150"}],"name":"notifyRewardAmount","nodeType":"FunctionDefinition","parameters":{"id":28580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28579,"mutability":"mutable","name":"reward","nodeType":"VariableDeclaration","scope":28667,"src":"4379:14:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28578,"name":"uint256","nodeType":"ElementaryTypeName","src":"4379:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4378:16:150"},"returnParameters":{"id":28589,"nodeType":"ParameterList","parameters":[],"src":"4439:0:150"},"scope":28805,"src":"4351:1069:150","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":28702,"nodeType":"Block","src":"5632:220:150","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":28684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28679,"name":"tokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28669,"src":"5651:12:150","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":28682,"name":"stakingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28174,"src":"5675:12:150","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}],"id":28681,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5667:7:150","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":28680,"name":"address","nodeType":"ElementaryTypeName","src":"5667:7:150","typeDescriptions":{}}},"id":28683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5667:21:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5651:37:150","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f7420776974686472617720746865207374616b696e6720746f6b656e","id":28685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5690:35:150","typeDescriptions":{"typeIdentifier":"t_stringliteral_f43de9f2a3539b2ac9cf1844588e9cc0acd1b2bdb1ec43734f76440993ede0a9","typeString":"literal_string \"Cannot withdraw the staking token\""},"value":"Cannot withdraw the staking token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f43de9f2a3539b2ac9cf1844588e9cc0acd1b2bdb1ec43734f76440993ede0a9","typeString":"literal_string \"Cannot withdraw the staking token\""}],"id":28678,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5643:7:150","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":28686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5643:83:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28687,"nodeType":"ExpressionStatement","src":"5643:83:150"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":28692,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28873,"src":"5771:5:150","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":28693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5771:7:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":28694,"name":"tokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28671,"src":"5780:11:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":28689,"name":"tokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28669,"src":"5744:12:150","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":28688,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29463,"src":"5737:6:150","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$29463_$","typeString":"type(contract IERC20)"}},"id":28690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5737:20:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"id":28691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":29497,"src":"5737:33:150","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$29463_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$29463_$","typeString":"function (contract IERC20,address,uint256)"}},"id":28695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5737:55:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28696,"nodeType":"ExpressionStatement","src":"5737:55:150"},{"eventCall":{"arguments":[{"id":28698,"name":"tokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28669,"src":"5818:12:150","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":28699,"name":"tokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28671,"src":"5832:11:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":28697,"name":"Recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28804,"src":"5808:9:150","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":28700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5808:36:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28701,"nodeType":"EmitStatement","src":"5803:41:150"}]},"functionSelector":"8980f11f","id":28703,"implemented":true,"kind":"function","modifiers":[{"id":28674,"modifierName":{"id":28673,"name":"onlyOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28886,"src":"5609:9:150","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"5609:9:150"},{"id":28676,"modifierName":{"id":28675,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29959,"src":"5619:12:150","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"5619:12:150"}],"name":"recoverERC20","nodeType":"FunctionDefinition","parameters":{"id":28672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28669,"mutability":"mutable","name":"tokenAddress","nodeType":"VariableDeclaration","scope":28703,"src":"5557:20:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28668,"name":"address","nodeType":"ElementaryTypeName","src":"5557:7:150","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28671,"mutability":"mutable","name":"tokenAmount","nodeType":"VariableDeclaration","scope":28703,"src":"5579:19:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28670,"name":"uint256","nodeType":"ElementaryTypeName","src":"5579:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5556:43:150"},"returnParameters":{"id":28677,"nodeType":"ParameterList","parameters":[],"src":"5632:0:150"},"scope":28805,"src":"5535:317:150","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":28733,"nodeType":"Block","src":"5933:360:150","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":28711,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5966:5:150","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":28712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"5966:15:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":28713,"name":"periodFinish","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28177,"src":"5984:12:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5966:30:150","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726576696f7573207265776172647320706572696f64206d75737420626520636f6d706c657465206265666f7265206368616e67696e6720746865206475726174696f6e20666f7220746865206e657720706572696f64","id":28715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6011:90:150","typeDescriptions":{"typeIdentifier":"t_stringliteral_07f2725172f5941b576a01ec7036d341e0c837e280f27b110cb3e6fd2f2c4a56","typeString":"literal_string \"Previous rewards period must be complete before changing the duration for the new period\""},"value":"Previous rewards period must be complete before changing the duration for the new period"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_07f2725172f5941b576a01ec7036d341e0c837e280f27b110cb3e6fd2f2c4a56","typeString":"literal_string \"Previous rewards period must be complete before changing the duration for the new period\""}],"id":28710,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5944:7:150","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":28716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5944:168:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28717,"nodeType":"ExpressionStatement","src":"5944:168:150"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28719,"name":"_rewardsDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28705,"src":"6131:16:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":28720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6150:1:150","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6131:20:150","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"526577617264206475726174696f6e2063616e2774206265207a65726f","id":28722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6153:31:150","typeDescriptions":{"typeIdentifier":"t_stringliteral_cfaf9ef34f14c515de496896d3fc709059a94896dea7c1a1a9a1d952aace9405","typeString":"literal_string \"Reward duration can't be zero\""},"value":"Reward duration can't be zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cfaf9ef34f14c515de496896d3fc709059a94896dea7c1a1a9a1d952aace9405","typeString":"literal_string \"Reward duration can't be zero\""}],"id":28718,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6123:7:150","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":28723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6123:62:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28724,"nodeType":"ExpressionStatement","src":"6123:62:150"},{"expression":{"id":28727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":28725,"name":"rewardsDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28183,"src":"6196:15:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":28726,"name":"_rewardsDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28705,"src":"6214:16:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6196:34:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28728,"nodeType":"ExpressionStatement","src":"6196:34:150"},{"eventCall":{"arguments":[{"id":28730,"name":"rewardsDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28183,"src":"6269:15:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":28729,"name":"RewardsDurationUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28798,"src":"6246:22:150","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":28731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6246:39:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28732,"nodeType":"EmitStatement","src":"6241:44:150"}]},"functionSelector":"cc1a378f","id":28734,"implemented":true,"kind":"function","modifiers":[{"id":28708,"modifierName":{"id":28707,"name":"onlyOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28886,"src":"5923:9:150","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"5923:9:150"}],"name":"setRewardsDuration","nodeType":"FunctionDefinition","parameters":{"id":28706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28705,"mutability":"mutable","name":"_rewardsDuration","nodeType":"VariableDeclaration","scope":28734,"src":"5888:24:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28704,"name":"uint256","nodeType":"ElementaryTypeName","src":"5888:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5887:26:150"},"returnParameters":{"id":28709,"nodeType":"ParameterList","parameters":[],"src":"5933:0:150"},"scope":28805,"src":"5860:433:150","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":28771,"nodeType":"Block","src":"6385:291:150","statements":[{"expression":{"id":28741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":28738,"name":"rewardPerTokenStored","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28187,"src":"6396:20:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":28739,"name":"rewardPerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28285,"src":"6419:14:150","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":28740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6419:16:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6396:39:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28742,"nodeType":"ExpressionStatement","src":"6396:39:150"},{"expression":{"id":28746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":28743,"name":"lastUpdateTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28185,"src":"6446:14:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":28744,"name":"lastTimeRewardApplicable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28254,"src":"6463:24:150","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":28745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6463:26:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6446:43:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28747,"nodeType":"ExpressionStatement","src":"6446:43:150"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":28753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28748,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28736,"src":"6504:7:150","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":28751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6523:1:150","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":28750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6515:7:150","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":28749,"name":"address","nodeType":"ElementaryTypeName","src":"6515:7:150","typeDescriptions":{}}},"id":28752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6515:10:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"6504:21:150","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":28769,"nodeType":"IfStatement","src":"6500:157:150","trueBody":{"id":28768,"nodeType":"Block","src":"6527:130:150","statements":[{"expression":{"id":28760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":28754,"name":"rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28195,"src":"6542:7:150","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":28756,"indexExpression":{"id":28755,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28736,"src":"6550:7:150","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6542:16:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":28758,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28736,"src":"6568:7:150","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":28757,"name":"earned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28314,"src":"6561:6:150","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":28759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6561:15:150","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6542:34:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28761,"nodeType":"ExpressionStatement","src":"6542:34:150"},{"expression":{"id":28766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":28762,"name":"userRewardPerTokenPaid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28191,"src":"6591:22:150","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":28764,"indexExpression":{"id":28763,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28736,"src":"6614:7:150","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6591:31:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":28765,"name":"rewardPerTokenStored","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28187,"src":"6625:20:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6591:54:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28767,"nodeType":"ExpressionStatement","src":"6591:54:150"}]}},{"id":28770,"nodeType":"PlaceholderStatement","src":"6667:1:150"}]},"id":28772,"name":"updateReward","nodeType":"ModifierDefinition","parameters":{"id":28737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28736,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":28772,"src":"6368:15:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28735,"name":"address","nodeType":"ElementaryTypeName","src":"6368:7:150","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6367:17:150"},"src":"6346:330:150","virtual":false,"visibility":"internal"},{"anonymous":false,"id":28776,"name":"RewardAdded","nodeType":"EventDefinition","parameters":{"id":28775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28774,"indexed":false,"mutability":"mutable","name":"reward","nodeType":"VariableDeclaration","scope":28776,"src":"6744:14:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28773,"name":"uint256","nodeType":"ElementaryTypeName","src":"6744:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6743:16:150"},"src":"6726:34:150"},{"anonymous":false,"id":28782,"name":"Staked","nodeType":"EventDefinition","parameters":{"id":28781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28778,"indexed":true,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":28782,"src":"6779:20:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28777,"name":"address","nodeType":"ElementaryTypeName","src":"6779:7:150","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28780,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":28782,"src":"6801:14:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28779,"name":"uint256","nodeType":"ElementaryTypeName","src":"6801:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6778:38:150"},"src":"6766:51:150"},{"anonymous":false,"id":28788,"name":"Withdrawn","nodeType":"EventDefinition","parameters":{"id":28787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28784,"indexed":true,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":28788,"src":"6839:20:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28783,"name":"address","nodeType":"ElementaryTypeName","src":"6839:7:150","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28786,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":28788,"src":"6861:14:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28785,"name":"uint256","nodeType":"ElementaryTypeName","src":"6861:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6838:38:150"},"src":"6823:54:150"},{"anonymous":false,"id":28794,"name":"RewardPaid","nodeType":"EventDefinition","parameters":{"id":28793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28790,"indexed":true,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":28794,"src":"6900:20:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28789,"name":"address","nodeType":"ElementaryTypeName","src":"6900:7:150","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28792,"indexed":false,"mutability":"mutable","name":"reward","nodeType":"VariableDeclaration","scope":28794,"src":"6922:14:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28791,"name":"uint256","nodeType":"ElementaryTypeName","src":"6922:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6899:38:150"},"src":"6883:55:150"},{"anonymous":false,"id":28798,"name":"RewardsDurationUpdated","nodeType":"EventDefinition","parameters":{"id":28797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28796,"indexed":false,"mutability":"mutable","name":"newDuration","nodeType":"VariableDeclaration","scope":28798,"src":"6973:19:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28795,"name":"uint256","nodeType":"ElementaryTypeName","src":"6973:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6972:21:150"},"src":"6944:50:150"},{"anonymous":false,"id":28804,"name":"Recovered","nodeType":"EventDefinition","parameters":{"id":28803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28800,"indexed":false,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":28804,"src":"7016:13:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28799,"name":"address","nodeType":"ElementaryTypeName","src":"7016:7:150","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28802,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":28804,"src":"7031:14:150","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28801,"name":"uint256","nodeType":"ElementaryTypeName","src":"7031:7:150","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7015:31:150"},"src":"7000:47:150"}],"scope":28806,"src":"461:6589:150"}],"src":"0:7054:150"},"id":150},"openzeppelin-contracts-legacy/GSN/Context.sol":{"ast":{"absolutePath":"openzeppelin-contracts-legacy/GSN/Context.sol","exportedSymbols":{"Context":[28828]},"id":28829,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":28807,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:151"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":28828,"linearizedBaseContracts":[28828],"name":"Context","nodeType":"ContractDefinition","nodes":[{"body":{"id":28815,"nodeType":"Block","src":"668:34:151","statements":[{"expression":{"expression":{"id":28812,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"685:3:151","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"685:10:151","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":28811,"id":28814,"nodeType":"Return","src":"678:17:151"}]},"id":28816,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nodeType":"FunctionDefinition","parameters":{"id":28808,"nodeType":"ParameterList","parameters":[],"src":"617:2:151"},"returnParameters":{"id":28811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28810,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28816,"src":"651:15:151","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":28809,"name":"address","nodeType":"ElementaryTypeName","src":"651:15:151","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"650:17:151"},"scope":28828,"src":"598:104:151","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":28826,"nodeType":"Block","src":"773:165:151","statements":[{"expression":{"id":28821,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"783:4:151","typeDescriptions":{"typeIdentifier":"t_contract$_Context_$28828","typeString":"contract Context"}},"id":28822,"nodeType":"ExpressionStatement","src":"783:4:151"},{"expression":{"expression":{"id":28823,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"923:3:151","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","src":"923:8:151","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":28820,"id":28825,"nodeType":"Return","src":"916:15:151"}]},"id":28827,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nodeType":"FunctionDefinition","parameters":{"id":28817,"nodeType":"ParameterList","parameters":[],"src":"725:2:151"},"returnParameters":{"id":28820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28819,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28827,"src":"759:12:151","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":28818,"name":"bytes","nodeType":"ElementaryTypeName","src":"759:5:151","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"758:14:151"},"scope":28828,"src":"708:230:151","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":28829,"src":"566:374:151"}],"src":"33:908:151"},"id":151},"openzeppelin-contracts-legacy/access/Ownable.sol":{"ast":{"absolutePath":"openzeppelin-contracts-legacy/access/Ownable.sol","exportedSymbols":{"Context":[28828],"Ownable":[28937]},"id":28938,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":28830,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:152"},{"absolutePath":"openzeppelin-contracts-legacy/GSN/Context.sol","file":"../GSN/Context.sol","id":28831,"nodeType":"ImportDirective","scope":28938,"sourceUnit":28829,"src":"66:28:152","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":28833,"name":"Context","nodeType":"UserDefinedTypeName","referencedDeclaration":28828,"src":"619:7:152","typeDescriptions":{"typeIdentifier":"t_contract$_Context_$28828","typeString":"contract Context"}},"id":28834,"nodeType":"InheritanceSpecifier","src":"619:7:152"}],"contractDependencies":[28828],"contractKind":"contract","documentation":{"id":28832,"nodeType":"StructuredDocumentation","src":"95:494:152","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":28937,"linearizedBaseContracts":[28937,28828],"name":"Ownable","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":28836,"mutability":"mutable","name":"_owner","nodeType":"VariableDeclaration","scope":28937,"src":"633:22:152","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28835,"name":"address","nodeType":"ElementaryTypeName","src":"633:7:152","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"id":28842,"name":"OwnershipTransferred","nodeType":"EventDefinition","parameters":{"id":28841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28838,"indexed":true,"mutability":"mutable","name":"previousOwner","nodeType":"VariableDeclaration","scope":28842,"src":"689:29:152","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28837,"name":"address","nodeType":"ElementaryTypeName","src":"689:7:152","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28840,"indexed":true,"mutability":"mutable","name":"newOwner","nodeType":"VariableDeclaration","scope":28842,"src":"720:24:152","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28839,"name":"address","nodeType":"ElementaryTypeName","src":"720:7:152","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"688:57:152"},"src":"662:84:152"},{"body":{"id":28863,"nodeType":"Block","src":"872:135:152","statements":[{"assignments":[28847],"declarations":[{"constant":false,"id":28847,"mutability":"mutable","name":"msgSender","nodeType":"VariableDeclaration","scope":28863,"src":"882:17:152","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28846,"name":"address","nodeType":"ElementaryTypeName","src":"882:7:152","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":28850,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":28848,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28816,"src":"902:10:152","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":28849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"902:12:152","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"882:32:152"},{"expression":{"id":28853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":28851,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28836,"src":"924:6:152","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":28852,"name":"msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28847,"src":"933:9:152","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"924:18:152","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":28854,"nodeType":"ExpressionStatement","src":"924:18:152"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":28858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"986:1:152","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":28857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"978:7:152","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":28856,"name":"address","nodeType":"ElementaryTypeName","src":"978:7:152","typeDescriptions":{}}},"id":28859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"978:10:152","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":28860,"name":"msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28847,"src":"990:9:152","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":28855,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28842,"src":"957:20:152","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":28861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"957:43:152","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28862,"nodeType":"EmitStatement","src":"952:48:152"}]},"documentation":{"id":28843,"nodeType":"StructuredDocumentation","src":"752:91:152","text":" @dev Initializes the contract setting the deployer as the initial owner."},"id":28864,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":28844,"nodeType":"ParameterList","parameters":[],"src":"860:2:152"},"returnParameters":{"id":28845,"nodeType":"ParameterList","parameters":[],"src":"872:0:152"},"scope":28937,"src":"848:159:152","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":28872,"nodeType":"Block","src":"1130:30:152","statements":[{"expression":{"id":28870,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28836,"src":"1147:6:152","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":28869,"id":28871,"nodeType":"Return","src":"1140:13:152"}]},"documentation":{"id":28865,"nodeType":"StructuredDocumentation","src":"1013:65:152","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":28873,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nodeType":"FunctionDefinition","parameters":{"id":28866,"nodeType":"ParameterList","parameters":[],"src":"1097:2:152"},"returnParameters":{"id":28869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28868,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28873,"src":"1121:7:152","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28867,"name":"address","nodeType":"ElementaryTypeName","src":"1121:7:152","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1120:9:152"},"scope":28937,"src":"1083:77:152","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":28885,"nodeType":"Block","src":"1269:95:152","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":28880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28877,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28836,"src":"1287:6:152","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":28878,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28816,"src":"1297:10:152","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":28879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1297:12:152","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1287:22:152","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":28881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1311:34:152","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":28876,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1279:7:152","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":28882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1279:67:152","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28883,"nodeType":"ExpressionStatement","src":"1279:67:152"},{"id":28884,"nodeType":"PlaceholderStatement","src":"1356:1:152"}]},"documentation":{"id":28874,"nodeType":"StructuredDocumentation","src":"1166:77:152","text":" @dev Throws if called by any account other than the owner."},"id":28886,"name":"onlyOwner","nodeType":"ModifierDefinition","parameters":{"id":28875,"nodeType":"ParameterList","parameters":[],"src":"1266:2:152"},"src":"1248:116:152","virtual":false,"visibility":"internal"},{"body":{"id":28907,"nodeType":"Block","src":"1760:91:152","statements":[{"eventCall":{"arguments":[{"id":28893,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28836,"src":"1796:6:152","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":28896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1812:1:152","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":28895,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1804:7:152","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":28894,"name":"address","nodeType":"ElementaryTypeName","src":"1804:7:152","typeDescriptions":{}}},"id":28897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1804:10:152","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":28892,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28842,"src":"1775:20:152","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":28898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1775:40:152","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28899,"nodeType":"EmitStatement","src":"1770:45:152"},{"expression":{"id":28905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":28900,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28836,"src":"1825:6:152","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":28903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1842:1:152","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":28902,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1834:7:152","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":28901,"name":"address","nodeType":"ElementaryTypeName","src":"1834:7:152","typeDescriptions":{}}},"id":28904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1834:10:152","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1825:19:152","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":28906,"nodeType":"ExpressionStatement","src":"1825:19:152"}]},"documentation":{"id":28887,"nodeType":"StructuredDocumentation","src":"1370:331:152","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."},"functionSelector":"715018a6","id":28908,"implemented":true,"kind":"function","modifiers":[{"id":28890,"modifierName":{"id":28889,"name":"onlyOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28886,"src":"1750:9:152","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"1750:9:152"}],"name":"renounceOwnership","nodeType":"FunctionDefinition","parameters":{"id":28888,"nodeType":"ParameterList","parameters":[],"src":"1732:2:152"},"returnParameters":{"id":28891,"nodeType":"ParameterList","parameters":[],"src":"1760:0:152"},"scope":28937,"src":"1706:145:152","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":28935,"nodeType":"Block","src":"2070:170:152","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":28922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28917,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28911,"src":"2088:8:152","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":28920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2108:1:152","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":28919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2100:7:152","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":28918,"name":"address","nodeType":"ElementaryTypeName","src":"2100:7:152","typeDescriptions":{}}},"id":28921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2100:10:152","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2088:22:152","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":28923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2112:40:152","typeDescriptions":{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""},"value":"Ownable: new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""}],"id":28916,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2080:7:152","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":28924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2080:73:152","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28925,"nodeType":"ExpressionStatement","src":"2080:73:152"},{"eventCall":{"arguments":[{"id":28927,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28836,"src":"2189:6:152","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":28928,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28911,"src":"2197:8:152","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":28926,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28842,"src":"2168:20:152","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":28929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2168:38:152","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28930,"nodeType":"EmitStatement","src":"2163:43:152"},{"expression":{"id":28933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":28931,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28836,"src":"2216:6:152","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":28932,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28911,"src":"2225:8:152","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2216:17:152","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":28934,"nodeType":"ExpressionStatement","src":"2216:17:152"}]},"documentation":{"id":28909,"nodeType":"StructuredDocumentation","src":"1857:138:152","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":28936,"implemented":true,"kind":"function","modifiers":[{"id":28914,"modifierName":{"id":28913,"name":"onlyOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28886,"src":"2060:9:152","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2060:9:152"}],"name":"transferOwnership","nodeType":"FunctionDefinition","parameters":{"id":28912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28911,"mutability":"mutable","name":"newOwner","nodeType":"VariableDeclaration","scope":28936,"src":"2027:16:152","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28910,"name":"address","nodeType":"ElementaryTypeName","src":"2027:7:152","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2026:18:152"},"returnParameters":{"id":28915,"nodeType":"ParameterList","parameters":[],"src":"2070:0:152"},"scope":28937,"src":"2000:240:152","stateMutability":"nonpayable","virtual":true,"visibility":"public"}],"scope":28938,"src":"590:1652:152"}],"src":"33:2210:152"},"id":152},"openzeppelin-contracts-legacy/math/Math.sol":{"ast":{"absolutePath":"openzeppelin-contracts-legacy/math/Math.sol","exportedSymbols":{"Math":[29010]},"id":29011,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":28939,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:153"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":28940,"nodeType":"StructuredDocumentation","src":"66:73:153","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":29010,"linearizedBaseContracts":[29010],"name":"Math","nodeType":"ContractDefinition","nodes":[{"body":{"id":28957,"nodeType":"Block","src":"290:38:153","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28950,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28943,"src":"307:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":28951,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28945,"src":"312:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"307:6:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":28954,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28945,"src":"320:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"307:14:153","trueExpression":{"id":28953,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28943,"src":"316:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":28949,"id":28956,"nodeType":"Return","src":"300:21:153"}]},"documentation":{"id":28941,"nodeType":"StructuredDocumentation","src":"159:59:153","text":" @dev Returns the largest of two numbers."},"id":28958,"implemented":true,"kind":"function","modifiers":[],"name":"max","nodeType":"FunctionDefinition","parameters":{"id":28946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28943,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":28958,"src":"236:9:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28942,"name":"uint256","nodeType":"ElementaryTypeName","src":"236:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28945,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":28958,"src":"247:9:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28944,"name":"uint256","nodeType":"ElementaryTypeName","src":"247:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"235:22:153"},"returnParameters":{"id":28949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28948,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28958,"src":"281:7:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28947,"name":"uint256","nodeType":"ElementaryTypeName","src":"281:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"280:9:153"},"scope":29010,"src":"223:105:153","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28975,"nodeType":"Block","src":"466:37:153","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28968,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28961,"src":"483:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":28969,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28963,"src":"487:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"483:5:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":28972,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28963,"src":"495:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"483:13:153","trueExpression":{"id":28971,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28961,"src":"491:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":28967,"id":28974,"nodeType":"Return","src":"476:20:153"}]},"documentation":{"id":28959,"nodeType":"StructuredDocumentation","src":"334:60:153","text":" @dev Returns the smallest of two numbers."},"id":28976,"implemented":true,"kind":"function","modifiers":[],"name":"min","nodeType":"FunctionDefinition","parameters":{"id":28964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28961,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":28976,"src":"412:9:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28960,"name":"uint256","nodeType":"ElementaryTypeName","src":"412:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28963,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":28976,"src":"423:9:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28962,"name":"uint256","nodeType":"ElementaryTypeName","src":"423:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"411:22:153"},"returnParameters":{"id":28967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28966,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28976,"src":"457:7:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28965,"name":"uint256","nodeType":"ElementaryTypeName","src":"457:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"456:9:153"},"scope":29010,"src":"399:104:153","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29008,"nodeType":"Block","src":"687:119:153","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28986,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28979,"src":"759:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":28987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"763:1:153","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"759:5:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":28989,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"758:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28990,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28981,"src":"769:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":28991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"773:1:153","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"769:5:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":28993,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"768:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"758:17:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28995,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28979,"src":"780:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":28996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"784:1:153","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"780:5:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28998,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28981,"src":"788:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":28999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"792:1:153","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"788:5:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"780:13:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":29002,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"779:15:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":29003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"797:1:153","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"779:19:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":29005,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"778:21:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"758:41:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":28985,"id":29007,"nodeType":"Return","src":"751:48:153"}]},"documentation":{"id":28977,"nodeType":"StructuredDocumentation","src":"509:102:153","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":29009,"implemented":true,"kind":"function","modifiers":[],"name":"average","nodeType":"FunctionDefinition","parameters":{"id":28982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28979,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":29009,"src":"633:9:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28978,"name":"uint256","nodeType":"ElementaryTypeName","src":"633:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28981,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":29009,"src":"644:9:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28980,"name":"uint256","nodeType":"ElementaryTypeName","src":"644:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"632:22:153"},"returnParameters":{"id":28985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28984,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29009,"src":"678:7:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28983,"name":"uint256","nodeType":"ElementaryTypeName","src":"678:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"677:9:153"},"scope":29010,"src":"616:190:153","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":29011,"src":"140:668:153"}],"src":"33:776:153"},"id":153},"openzeppelin-contracts-legacy/math/SafeMath.sol":{"ast":{"absolutePath":"openzeppelin-contracts-legacy/math/SafeMath.sol","exportedSymbols":{"SafeMath":[29206]},"id":29207,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":29012,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:154"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":29013,"nodeType":"StructuredDocumentation","src":"66:563:154","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":29206,"linearizedBaseContracts":[29206],"name":"SafeMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":29038,"nodeType":"Block","src":"949:109:154","statements":[{"assignments":[29024],"declarations":[{"constant":false,"id":29024,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":29038,"src":"959:9:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29023,"name":"uint256","nodeType":"ElementaryTypeName","src":"959:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":29028,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29025,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29016,"src":"971:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":29026,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29018,"src":"975:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"971:5:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"959:17:154"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29030,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29024,"src":"994:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":29031,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29016,"src":"999:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"994:6:154","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206164646974696f6e206f766572666c6f77","id":29033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1002:29:154","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":29029,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"986:7:154","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":29034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"986:46:154","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29035,"nodeType":"ExpressionStatement","src":"986:46:154"},{"expression":{"id":29036,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29024,"src":"1050:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":29022,"id":29037,"nodeType":"Return","src":"1043:8:154"}]},"documentation":{"id":29014,"nodeType":"StructuredDocumentation","src":"653:224:154","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":29039,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":29019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29016,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":29039,"src":"895:9:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29015,"name":"uint256","nodeType":"ElementaryTypeName","src":"895:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":29018,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":29039,"src":"906:9:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29017,"name":"uint256","nodeType":"ElementaryTypeName","src":"906:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"894:22:154"},"returnParameters":{"id":29022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29021,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29039,"src":"940:7:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29020,"name":"uint256","nodeType":"ElementaryTypeName","src":"940:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"939:9:154"},"scope":29206,"src":"882:176:154","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29055,"nodeType":"Block","src":"1396:67:154","statements":[{"expression":{"arguments":[{"id":29050,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29042,"src":"1417:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":29051,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29044,"src":"1420:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","id":29052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1423:32:154","typeDescriptions":{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""},"value":"SafeMath: subtraction overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"id":29049,"name":"sub","nodeType":"Identifier","overloadedDeclarations":[29056,29084],"referencedDeclaration":29084,"src":"1413:3:154","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":29053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1413:43:154","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":29048,"id":29054,"nodeType":"Return","src":"1406:50:154"}]},"documentation":{"id":29040,"nodeType":"StructuredDocumentation","src":"1064:260:154","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":29056,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":29045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29042,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":29056,"src":"1342:9:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29041,"name":"uint256","nodeType":"ElementaryTypeName","src":"1342:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":29044,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":29056,"src":"1353:9:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29043,"name":"uint256","nodeType":"ElementaryTypeName","src":"1353:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1341:22:154"},"returnParameters":{"id":29048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29047,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29056,"src":"1387:7:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29046,"name":"uint256","nodeType":"ElementaryTypeName","src":"1387:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1386:9:154"},"scope":29206,"src":"1329:134:154","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29083,"nodeType":"Block","src":"1849:92:154","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29069,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29061,"src":"1867:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":29070,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29059,"src":"1872:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1867:6:154","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":29072,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29063,"src":"1875:12:154","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":29068,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1859:7:154","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":29073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1859:29:154","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29074,"nodeType":"ExpressionStatement","src":"1859:29:154"},{"assignments":[29076],"declarations":[{"constant":false,"id":29076,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":29083,"src":"1898:9:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29075,"name":"uint256","nodeType":"ElementaryTypeName","src":"1898:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":29080,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29077,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29059,"src":"1910:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":29078,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29061,"src":"1914:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1910:5:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1898:17:154"},{"expression":{"id":29081,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29076,"src":"1933:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":29067,"id":29082,"nodeType":"Return","src":"1926:8:154"}]},"documentation":{"id":29057,"nodeType":"StructuredDocumentation","src":"1469:280:154","text":" @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"id":29084,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":29064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29059,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":29084,"src":"1767:9:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29058,"name":"uint256","nodeType":"ElementaryTypeName","src":"1767:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":29061,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":29084,"src":"1778:9:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29060,"name":"uint256","nodeType":"ElementaryTypeName","src":"1778:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":29063,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":29084,"src":"1789:26:154","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":29062,"name":"string","nodeType":"ElementaryTypeName","src":"1789:6:154","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1766:50:154"},"returnParameters":{"id":29067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29066,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29084,"src":"1840:7:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29065,"name":"uint256","nodeType":"ElementaryTypeName","src":"1840:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1839:9:154"},"scope":29206,"src":"1754:187:154","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29118,"nodeType":"Block","src":"2255:392:154","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29094,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29087,"src":"2487:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":29095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2492:1:154","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2487:6:154","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":29100,"nodeType":"IfStatement","src":"2483:45:154","trueBody":{"id":29099,"nodeType":"Block","src":"2495:33:154","statements":[{"expression":{"hexValue":"30","id":29097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2516:1:154","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":29093,"id":29098,"nodeType":"Return","src":"2509:8:154"}]}},{"assignments":[29102],"declarations":[{"constant":false,"id":29102,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":29118,"src":"2538:9:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29101,"name":"uint256","nodeType":"ElementaryTypeName","src":"2538:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":29106,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29103,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29087,"src":"2550:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":29104,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29089,"src":"2554:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2550:5:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2538:17:154"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29108,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29102,"src":"2573:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":29109,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29087,"src":"2577:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2573:5:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":29111,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29089,"src":"2582:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2573:10:154","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","id":29113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2585:35:154","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":29107,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2565:7:154","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":29114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2565:56:154","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29115,"nodeType":"ExpressionStatement","src":"2565:56:154"},{"expression":{"id":29116,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29102,"src":"2639:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":29093,"id":29117,"nodeType":"Return","src":"2632:8:154"}]},"documentation":{"id":29085,"nodeType":"StructuredDocumentation","src":"1947:236:154","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":29119,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":29090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29087,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":29119,"src":"2201:9:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29086,"name":"uint256","nodeType":"ElementaryTypeName","src":"2201:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":29089,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":29119,"src":"2212:9:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29088,"name":"uint256","nodeType":"ElementaryTypeName","src":"2212:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2200:22:154"},"returnParameters":{"id":29093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29092,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29119,"src":"2246:7:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29091,"name":"uint256","nodeType":"ElementaryTypeName","src":"2246:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2245:9:154"},"scope":29206,"src":"2188:459:154","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29135,"nodeType":"Block","src":"3176:63:154","statements":[{"expression":{"arguments":[{"id":29130,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29122,"src":"3197:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":29131,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29124,"src":"3200:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"536166654d6174683a206469766973696f6e206279207a65726f","id":29132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3203:28:154","typeDescriptions":{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""},"value":"SafeMath: division by zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"id":29129,"name":"div","nodeType":"Identifier","overloadedDeclarations":[29136,29164],"referencedDeclaration":29164,"src":"3193:3:154","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":29133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3193:39:154","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":29128,"id":29134,"nodeType":"Return","src":"3186:46:154"}]},"documentation":{"id":29120,"nodeType":"StructuredDocumentation","src":"2653:451:154","text":" @dev Returns the integer division of two unsigned 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":29136,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":29125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29122,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":29136,"src":"3122:9:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29121,"name":"uint256","nodeType":"ElementaryTypeName","src":"3122:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":29124,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":29136,"src":"3133:9:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29123,"name":"uint256","nodeType":"ElementaryTypeName","src":"3133:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3121:22:154"},"returnParameters":{"id":29128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29127,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29136,"src":"3167:7:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29126,"name":"uint256","nodeType":"ElementaryTypeName","src":"3167:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3166:9:154"},"scope":29206,"src":"3109:130:154","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29163,"nodeType":"Block","src":"3816:177:154","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"3834:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":29150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3838:1:154","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3834:5:154","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":29152,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29143,"src":"3841:12:154","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":29148,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3826:7:154","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":29153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3826:28:154","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29154,"nodeType":"ExpressionStatement","src":"3826:28:154"},{"assignments":[29156],"declarations":[{"constant":false,"id":29156,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":29163,"src":"3864:9:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29155,"name":"uint256","nodeType":"ElementaryTypeName","src":"3864:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":29160,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29157,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29139,"src":"3876:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":29158,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"3880:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3876:5:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3864:17:154"},{"expression":{"id":29161,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29156,"src":"3985:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":29147,"id":29162,"nodeType":"Return","src":"3978:8:154"}]},"documentation":{"id":29137,"nodeType":"StructuredDocumentation","src":"3245:471:154","text":" @dev Returns the integer division of two unsigned integers. Reverts with custom message 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":29164,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":29144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29139,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":29164,"src":"3734:9:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29138,"name":"uint256","nodeType":"ElementaryTypeName","src":"3734:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":29141,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":29164,"src":"3745:9:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29140,"name":"uint256","nodeType":"ElementaryTypeName","src":"3745:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":29143,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":29164,"src":"3756:26:154","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":29142,"name":"string","nodeType":"ElementaryTypeName","src":"3756:6:154","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3733:50:154"},"returnParameters":{"id":29147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29146,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29164,"src":"3807:7:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29145,"name":"uint256","nodeType":"ElementaryTypeName","src":"3807:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3806:9:154"},"scope":29206,"src":"3721:272:154","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29180,"nodeType":"Block","src":"4511:61:154","statements":[{"expression":{"arguments":[{"id":29175,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29167,"src":"4532:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":29176,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29169,"src":"4535:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"536166654d6174683a206d6f64756c6f206279207a65726f","id":29177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4538:26:154","typeDescriptions":{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""},"value":"SafeMath: modulo by zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"id":29174,"name":"mod","nodeType":"Identifier","overloadedDeclarations":[29181,29205],"referencedDeclaration":29205,"src":"4528:3:154","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":29178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4528:37:154","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":29173,"id":29179,"nodeType":"Return","src":"4521:44:154"}]},"documentation":{"id":29165,"nodeType":"StructuredDocumentation","src":"3999:440:154","text":" @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n Reverts 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":29181,"implemented":true,"kind":"function","modifiers":[],"name":"mod","nodeType":"FunctionDefinition","parameters":{"id":29170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29167,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":29181,"src":"4457:9:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29166,"name":"uint256","nodeType":"ElementaryTypeName","src":"4457:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":29169,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":29181,"src":"4468:9:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29168,"name":"uint256","nodeType":"ElementaryTypeName","src":"4468:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4456:22:154"},"returnParameters":{"id":29173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29172,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29181,"src":"4502:7:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29171,"name":"uint256","nodeType":"ElementaryTypeName","src":"4502:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4501:9:154"},"scope":29206,"src":"4444:128:154","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29204,"nodeType":"Block","src":"5138:68:154","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29194,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29186,"src":"5156:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":29195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5161:1:154","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5156:6:154","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":29197,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29188,"src":"5164:12:154","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":29193,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5148:7:154","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":29198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5148:29:154","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29199,"nodeType":"ExpressionStatement","src":"5148:29:154"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29200,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29184,"src":"5194:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":29201,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29186,"src":"5198:1:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5194:5:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":29192,"id":29203,"nodeType":"Return","src":"5187:12:154"}]},"documentation":{"id":29182,"nodeType":"StructuredDocumentation","src":"4578:460:154","text":" @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n Reverts with custom message 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":29205,"implemented":true,"kind":"function","modifiers":[],"name":"mod","nodeType":"FunctionDefinition","parameters":{"id":29189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29184,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":29205,"src":"5056:9:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29183,"name":"uint256","nodeType":"ElementaryTypeName","src":"5056:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":29186,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":29205,"src":"5067:9:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29185,"name":"uint256","nodeType":"ElementaryTypeName","src":"5067:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":29188,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":29205,"src":"5078:26:154","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":29187,"name":"string","nodeType":"ElementaryTypeName","src":"5078:6:154","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5055:50:154"},"returnParameters":{"id":29192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29191,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29205,"src":"5129:7:154","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29190,"name":"uint256","nodeType":"ElementaryTypeName","src":"5129:7:154","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5128:9:154"},"scope":29206,"src":"5043:163:154","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":29207,"src":"630:4578:154"}],"src":"33:5176:154"},"id":154},"openzeppelin-contracts-legacy/math/SignedSafeMath.sol":{"ast":{"absolutePath":"openzeppelin-contracts-legacy/math/SignedSafeMath.sol","exportedSymbols":{"SignedSafeMath":[29385]},"id":29386,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":29208,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:155"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":29209,"nodeType":"StructuredDocumentation","src":"66:104:155","text":" @title SignedSafeMath\n @dev Signed math operations with safety checks that revert on error."},"fullyImplemented":true,"id":29385,"linearizedBaseContracts":[29385],"name":"SignedSafeMath","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":29215,"mutability":"constant","name":"_INT256_MIN","nodeType":"VariableDeclaration","scope":29385,"src":"200:45:155","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":29210,"name":"int256","nodeType":"ElementaryTypeName","src":"200:6:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"commonType":{"typeIdentifier":"t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const -578...(70 digits omitted)...9968"},"id":29214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29212,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"238:2:155","subExpression":{"hexValue":"32","id":29211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"239:1:155","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":29213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"242:3:155","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"238:7:155","typeDescriptions":{"typeIdentifier":"t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const -578...(70 digits omitted)...9968"}},"visibility":"private"},{"body":{"id":29263,"nodeType":"Block","src":"555:490:155","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":29227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29225,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29218,"src":"787:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":29226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"792:1:155","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"787:6:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":29231,"nodeType":"IfStatement","src":"783:45:155","trueBody":{"id":29230,"nodeType":"Block","src":"795:33:155","statements":[{"expression":{"hexValue":"30","id":29228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"816:1:155","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":29224,"id":29229,"nodeType":"Return","src":"809:8:155"}]}},{"expression":{"arguments":[{"id":29242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"846:30:155","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":29240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":29236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29233,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29218,"src":"848:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":29235,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"853:2:155","subExpression":{"hexValue":"31","id":29234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"854:1:155","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":"848:7:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":29239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29237,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29220,"src":"859:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":29238,"name":"_INT256_MIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29215,"src":"864:11:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"859:16:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"848:27:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":29241,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"847:29:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","id":29243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"878:41:155","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":29232,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"838:7:155","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":29244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"838:82:155","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29245,"nodeType":"ExpressionStatement","src":"838:82:155"},{"assignments":[29247],"declarations":[{"constant":false,"id":29247,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":29263,"src":"931:8:155","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":29246,"name":"int256","nodeType":"ElementaryTypeName","src":"931:6:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":29251,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":29250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29248,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29218,"src":"942:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":29249,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29220,"src":"946:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"942:5:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"931:16:155"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":29257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":29255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29253,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29247,"src":"965:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":29254,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29218,"src":"969:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"965:5:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":29256,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29220,"src":"974:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"965:10:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","id":29258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"977:41:155","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":29252,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"957:7:155","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":29259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"957:62:155","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29260,"nodeType":"ExpressionStatement","src":"957:62:155"},{"expression":{"id":29261,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29247,"src":"1037:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":29224,"id":29262,"nodeType":"Return","src":"1030:8:155"}]},"documentation":{"id":29216,"nodeType":"StructuredDocumentation","src":"252:234:155","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":29264,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":29221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29218,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":29264,"src":"504:8:155","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":29217,"name":"int256","nodeType":"ElementaryTypeName","src":"504:6:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":29220,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":29264,"src":"514:8:155","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":29219,"name":"int256","nodeType":"ElementaryTypeName","src":"514:6:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"503:20:155"},"returnParameters":{"id":29224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29223,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29264,"src":"547:6:155","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":29222,"name":"int256","nodeType":"ElementaryTypeName","src":"547:6:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"546:8:155"},"scope":29385,"src":"491:554:155","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29303,"nodeType":"Block","src":"1569:200:155","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":29277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29275,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29269,"src":"1587:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":29276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1592:1:155","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1587:6:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e6564536166654d6174683a206469766973696f6e206279207a65726f","id":29278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1595:34:155","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":29274,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1579:7:155","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":29279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1579:51:155","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29280,"nodeType":"ExpressionStatement","src":"1579:51:155"},{"expression":{"arguments":[{"id":29291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1648:30:155","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":29289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":29285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29282,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29269,"src":"1650:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":29284,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1655:2:155","subExpression":{"hexValue":"31","id":29283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1656:1:155","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":"1650:7:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":29288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29286,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29267,"src":"1661:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":29287,"name":"_INT256_MIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29215,"src":"1666:11:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1661:16:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1650:27:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":29290,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1649:29:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f77","id":29292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1680:35:155","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":29281,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1640:7:155","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":29293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1640:76:155","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29294,"nodeType":"ExpressionStatement","src":"1640:76:155"},{"assignments":[29296],"declarations":[{"constant":false,"id":29296,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":29303,"src":"1727:8:155","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":29295,"name":"int256","nodeType":"ElementaryTypeName","src":"1727:6:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":29300,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":29299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29297,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29267,"src":"1738:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":29298,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29269,"src":"1742:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1738:5:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"1727:16:155"},{"expression":{"id":29301,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29296,"src":"1761:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":29273,"id":29302,"nodeType":"Return","src":"1754:8:155"}]},"documentation":{"id":29265,"nodeType":"StructuredDocumentation","src":"1051:449:155","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":29304,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":29270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29267,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":29304,"src":"1518:8:155","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":29266,"name":"int256","nodeType":"ElementaryTypeName","src":"1518:6:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":29269,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":29304,"src":"1528:8:155","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":29268,"name":"int256","nodeType":"ElementaryTypeName","src":"1528:6:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1517:20:155"},"returnParameters":{"id":29273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29272,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29304,"src":"1561:6:155","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":29271,"name":"int256","nodeType":"ElementaryTypeName","src":"1561:6:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1560:8:155"},"scope":29385,"src":"1505:264:155","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29343,"nodeType":"Block","src":"2072:149:155","statements":[{"assignments":[29315],"declarations":[{"constant":false,"id":29315,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":29343,"src":"2082:8:155","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":29314,"name":"int256","nodeType":"ElementaryTypeName","src":"2082:6:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":29319,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":29318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29316,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29307,"src":"2093:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":29317,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29309,"src":"2097:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2093:5:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"2082:16:155"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":29337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":29327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":29323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29321,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29309,"src":"2117:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":29322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2122:1:155","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2117:6:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":29326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29324,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29315,"src":"2127:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":29325,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29307,"src":"2132:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2127:6:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2117:16:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":29328,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2116:18:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":29335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":29331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29329,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29309,"src":"2139:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":29330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2143:1:155","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2139:5:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":29334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29332,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29315,"src":"2148:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":29333,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29307,"src":"2152:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2148:5:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2139:14:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":29336,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2138:16:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2116:38:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77","id":29338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2156:38:155","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":29320,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2108:7:155","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":29339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2108:87:155","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29340,"nodeType":"ExpressionStatement","src":"2108:87:155"},{"expression":{"id":29341,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29315,"src":"2213:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":29313,"id":29342,"nodeType":"Return","src":"2206:8:155"}]},"documentation":{"id":29305,"nodeType":"StructuredDocumentation","src":"1775:228:155","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":29344,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":29310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29307,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":29344,"src":"2021:8:155","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":29306,"name":"int256","nodeType":"ElementaryTypeName","src":"2021:6:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":29309,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":29344,"src":"2031:8:155","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":29308,"name":"int256","nodeType":"ElementaryTypeName","src":"2031:6:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2020:20:155"},"returnParameters":{"id":29313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29312,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29344,"src":"2064:6:155","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":29311,"name":"int256","nodeType":"ElementaryTypeName","src":"2064:6:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2063:8:155"},"scope":29385,"src":"2008:213:155","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29383,"nodeType":"Block","src":"2518:146:155","statements":[{"assignments":[29355],"declarations":[{"constant":false,"id":29355,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":29383,"src":"2528:8:155","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":29354,"name":"int256","nodeType":"ElementaryTypeName","src":"2528:6:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":29359,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":29358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29356,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29347,"src":"2539:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":29357,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29349,"src":"2543:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2539:5:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"2528:16:155"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":29377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":29367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":29363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29361,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29349,"src":"2563:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":29362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2568:1:155","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2563:6:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":29366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29364,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29355,"src":"2573:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":29365,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29347,"src":"2578:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2573:6:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2563:16:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":29368,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2562:18:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":29375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":29371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29369,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29349,"src":"2585:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":29370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2589:1:155","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2585:5:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":29374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29372,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29355,"src":"2594:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":29373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29347,"src":"2598:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2594:5:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2585:14:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":29376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2584:16:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2562:38:155","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77","id":29378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2602:35:155","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":29360,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2554:7:155","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":29379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2554:84:155","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29380,"nodeType":"ExpressionStatement","src":"2554:84:155"},{"expression":{"id":29381,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29355,"src":"2656:1:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":29353,"id":29382,"nodeType":"Return","src":"2649:8:155"}]},"documentation":{"id":29345,"nodeType":"StructuredDocumentation","src":"2227:222:155","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":29384,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":29350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29347,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":29384,"src":"2467:8:155","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":29346,"name":"int256","nodeType":"ElementaryTypeName","src":"2467:6:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":29349,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":29384,"src":"2477:8:155","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":29348,"name":"int256","nodeType":"ElementaryTypeName","src":"2477:6:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2466:20:155"},"returnParameters":{"id":29353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29352,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29384,"src":"2510:6:155","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":29351,"name":"int256","nodeType":"ElementaryTypeName","src":"2510:6:155","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2509:8:155"},"scope":29385,"src":"2454:210:155","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":29386,"src":"171:2495:155"}],"src":"33:2634:155"},"id":155},"openzeppelin-contracts-legacy/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"openzeppelin-contracts-legacy/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[29463]},"id":29464,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":29387,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:156"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":29388,"nodeType":"StructuredDocumentation","src":"66:70:156","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":29463,"linearizedBaseContracts":[29463],"name":"IERC20","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":29389,"nodeType":"StructuredDocumentation","src":"160:66:156","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":29394,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":29390,"nodeType":"ParameterList","parameters":[],"src":"251:2:156"},"returnParameters":{"id":29393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29392,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29394,"src":"277:7:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29391,"name":"uint256","nodeType":"ElementaryTypeName","src":"277:7:156","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"276:9:156"},"scope":29463,"src":"231:55:156","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":29395,"nodeType":"StructuredDocumentation","src":"292:72:156","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":29402,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":29398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29397,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":29402,"src":"388:15:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29396,"name":"address","nodeType":"ElementaryTypeName","src":"388:7:156","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"387:17:156"},"returnParameters":{"id":29401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29400,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29402,"src":"428:7:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29399,"name":"uint256","nodeType":"ElementaryTypeName","src":"428:7:156","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"427:9:156"},"scope":29463,"src":"369:68:156","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":29403,"nodeType":"StructuredDocumentation","src":"443:209:156","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":29412,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":29408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29405,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":29412,"src":"675:17:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29404,"name":"address","nodeType":"ElementaryTypeName","src":"675:7:156","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29407,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":29412,"src":"694:14:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29406,"name":"uint256","nodeType":"ElementaryTypeName","src":"694:7:156","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"674:35:156"},"returnParameters":{"id":29411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29410,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29412,"src":"728:4:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29409,"name":"bool","nodeType":"ElementaryTypeName","src":"728:4:156","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"727:6:156"},"scope":29463,"src":"657:77:156","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":29413,"nodeType":"StructuredDocumentation","src":"740:264:156","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":29422,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":29418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29415,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":29422,"src":"1028:13:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29414,"name":"address","nodeType":"ElementaryTypeName","src":"1028:7:156","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29417,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":29422,"src":"1043:15:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29416,"name":"address","nodeType":"ElementaryTypeName","src":"1043:7:156","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1027:32:156"},"returnParameters":{"id":29421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29420,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29422,"src":"1083:7:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29419,"name":"uint256","nodeType":"ElementaryTypeName","src":"1083:7:156","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1082:9:156"},"scope":29463,"src":"1009:83:156","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":29423,"nodeType":"StructuredDocumentation","src":"1098:642:156","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":29432,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":29428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29425,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":29432,"src":"1762:15:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29424,"name":"address","nodeType":"ElementaryTypeName","src":"1762:7:156","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29427,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":29432,"src":"1779:14:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29426,"name":"uint256","nodeType":"ElementaryTypeName","src":"1779:7:156","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1761:33:156"},"returnParameters":{"id":29431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29430,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29432,"src":"1813:4:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29429,"name":"bool","nodeType":"ElementaryTypeName","src":"1813:4:156","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1812:6:156"},"scope":29463,"src":"1745:74:156","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":29433,"nodeType":"StructuredDocumentation","src":"1825:296:156","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":29444,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":29440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29435,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":29444,"src":"2148:14:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29434,"name":"address","nodeType":"ElementaryTypeName","src":"2148:7:156","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29437,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":29444,"src":"2164:17:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29436,"name":"address","nodeType":"ElementaryTypeName","src":"2164:7:156","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29439,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":29444,"src":"2183:14:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29438,"name":"uint256","nodeType":"ElementaryTypeName","src":"2183:7:156","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2147:51:156"},"returnParameters":{"id":29443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29442,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29444,"src":"2217:4:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29441,"name":"bool","nodeType":"ElementaryTypeName","src":"2217:4:156","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2216:6:156"},"scope":29463,"src":"2126:97:156","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":29445,"nodeType":"StructuredDocumentation","src":"2229:158:156","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"id":29453,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":29452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29447,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":29453,"src":"2407:20:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29446,"name":"address","nodeType":"ElementaryTypeName","src":"2407:7:156","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29449,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":29453,"src":"2429:18:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29448,"name":"address","nodeType":"ElementaryTypeName","src":"2429:7:156","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29451,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":29453,"src":"2449:13:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29450,"name":"uint256","nodeType":"ElementaryTypeName","src":"2449:7:156","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2406:57:156"},"src":"2392:72:156"},{"anonymous":false,"documentation":{"id":29454,"nodeType":"StructuredDocumentation","src":"2470:148:156","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":29462,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":29461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29456,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":29462,"src":"2638:21:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29455,"name":"address","nodeType":"ElementaryTypeName","src":"2638:7:156","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29458,"indexed":true,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":29462,"src":"2661:23:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29457,"name":"address","nodeType":"ElementaryTypeName","src":"2661:7:156","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29460,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":29462,"src":"2686:13:156","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29459,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:156","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2637:63:156"},"src":"2623:78:156"}],"scope":29464,"src":"137:2566:156"}],"src":"33:2671:156"},"id":156},"openzeppelin-contracts-legacy/token/ERC20/SafeERC20.sol":{"ast":{"absolutePath":"openzeppelin-contracts-legacy/token/ERC20/SafeERC20.sol","exportedSymbols":{"Address":[29920],"IERC20":[29463],"SafeERC20":[29676],"SafeMath":[29206]},"id":29677,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":29465,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:157"},{"absolutePath":"openzeppelin-contracts-legacy/token/ERC20/IERC20.sol","file":"./IERC20.sol","id":29466,"nodeType":"ImportDirective","scope":29677,"sourceUnit":29464,"src":"66:22:157","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-legacy/math/SafeMath.sol","file":"../../math/SafeMath.sol","id":29467,"nodeType":"ImportDirective","scope":29677,"sourceUnit":29207,"src":"89:33:157","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-legacy/utils/Address.sol","file":"../../utils/Address.sol","id":29468,"nodeType":"ImportDirective","scope":29677,"sourceUnit":29921,"src":"123:33:157","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":29469,"nodeType":"StructuredDocumentation","src":"158:457:157","text":" @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":29676,"linearizedBaseContracts":[29676],"name":"SafeERC20","nodeType":"ContractDefinition","nodes":[{"id":29472,"libraryName":{"id":29470,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":29206,"src":"646:8:157","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$29206","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"640:27:157","typeName":{"id":29471,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":29475,"libraryName":{"id":29473,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":29920,"src":"678:7:157","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$29920","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"672:26:157","typeName":{"id":29474,"name":"address","nodeType":"ElementaryTypeName","src":"690:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"body":{"id":29496,"nodeType":"Block","src":"776:103:157","statements":[{"expression":{"arguments":[{"id":29485,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29477,"src":"806:5:157","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":29488,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29477,"src":"836:5:157","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"id":29489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":29412,"src":"836:14:157","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":29490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"836:23:157","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":29491,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29479,"src":"861:2:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":29492,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29481,"src":"865:5:157","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":29486,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"813:3:157","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":29487,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"813:22:157","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":29493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"813:58:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":29484,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29675,"src":"786:19:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$29463_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":29494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"786:86:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29495,"nodeType":"ExpressionStatement","src":"786:86:157"}]},"id":29497,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nodeType":"FunctionDefinition","parameters":{"id":29482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29477,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":29497,"src":"726:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"},"typeName":{"id":29476,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":29463,"src":"726:6:157","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":29479,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":29497,"src":"740:10:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29478,"name":"address","nodeType":"ElementaryTypeName","src":"740:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29481,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":29497,"src":"752:13:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29480,"name":"uint256","nodeType":"ElementaryTypeName","src":"752:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"725:41:157"},"returnParameters":{"id":29483,"nodeType":"ParameterList","parameters":[],"src":"776:0:157"},"scope":29676,"src":"704:175:157","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":29521,"nodeType":"Block","src":"975:113:157","statements":[{"expression":{"arguments":[{"id":29509,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29499,"src":"1005:5:157","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":29512,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29499,"src":"1035:5:157","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"id":29513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":29444,"src":"1035:18:157","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":29514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1035:27:157","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":29515,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29501,"src":"1064:4:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":29516,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29503,"src":"1070:2:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":29517,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29505,"src":"1074:5:157","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":29510,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1012:3:157","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":29511,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1012:22:157","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":29518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1012:68:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":29508,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29675,"src":"985:19:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$29463_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":29519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"985:96:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29520,"nodeType":"ExpressionStatement","src":"985:96:157"}]},"id":29522,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":29506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29499,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":29522,"src":"911:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"},"typeName":{"id":29498,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":29463,"src":"911:6:157","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":29501,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":29522,"src":"925:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29500,"name":"address","nodeType":"ElementaryTypeName","src":"925:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29503,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":29522,"src":"939:10:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29502,"name":"address","nodeType":"ElementaryTypeName","src":"939:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29505,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":29522,"src":"951:13:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29504,"name":"uint256","nodeType":"ElementaryTypeName","src":"951:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"910:55:157"},"returnParameters":{"id":29507,"nodeType":"ParameterList","parameters":[],"src":"975:0:157"},"scope":29676,"src":"885:203:157","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":29564,"nodeType":"Block","src":"1424:537:157","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":29548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29533,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29529,"src":"1713:5:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":29534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1722:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1713:10:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":29536,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1712:12:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":29541,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1753:4:157","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$29676","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$29676","typeString":"library SafeERC20"}],"id":29540,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1745:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":29539,"name":"address","nodeType":"ElementaryTypeName","src":"1745:7:157","typeDescriptions":{}}},"id":29542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1745:13:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":29543,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29527,"src":"1760:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":29537,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29525,"src":"1729:5:157","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"id":29538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":29422,"src":"1729:15:157","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":29544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1729:39:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":29545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1772:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1729:44:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":29547,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1728:46:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1712:62:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","id":29549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1788:56:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""},"value":"SafeERC20: approve from non-zero to non-zero allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"id":29532,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1704:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":29550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1704:150:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29551,"nodeType":"ExpressionStatement","src":"1704:150:157"},{"expression":{"arguments":[{"id":29553,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29525,"src":"1884:5:157","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":29556,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29525,"src":"1914:5:157","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"id":29557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":29432,"src":"1914:13:157","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":29558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1914:22:157","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":29559,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29527,"src":"1938:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":29560,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29529,"src":"1947:5:157","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":29554,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1891:3:157","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":29555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1891:22:157","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":29561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1891:62:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":29552,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29675,"src":"1864:19:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$29463_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":29562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1864:90:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29563,"nodeType":"ExpressionStatement","src":"1864:90:157"}]},"documentation":{"id":29523,"nodeType":"StructuredDocumentation","src":"1094:249:157","text":" @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead."},"id":29565,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nodeType":"FunctionDefinition","parameters":{"id":29530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29525,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":29565,"src":"1369:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"},"typeName":{"id":29524,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":29463,"src":"1369:6:157","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":29527,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":29565,"src":"1383:15:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29526,"name":"address","nodeType":"ElementaryTypeName","src":"1383:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29529,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":29565,"src":"1400:13:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29528,"name":"uint256","nodeType":"ElementaryTypeName","src":"1400:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1368:46:157"},"returnParameters":{"id":29531,"nodeType":"ParameterList","parameters":[],"src":"1424:0:157"},"scope":29676,"src":"1348:613:157","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":29600,"nodeType":"Block","src":"2053:197:157","statements":[{"assignments":[29575],"declarations":[{"constant":false,"id":29575,"mutability":"mutable","name":"newAllowance","nodeType":"VariableDeclaration","scope":29600,"src":"2063:20:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29574,"name":"uint256","nodeType":"ElementaryTypeName","src":"2063:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":29587,"initialValue":{"arguments":[{"id":29585,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29571,"src":"2130:5:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[{"id":29580,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2110:4:157","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$29676","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$29676","typeString":"library SafeERC20"}],"id":29579,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2102:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":29578,"name":"address","nodeType":"ElementaryTypeName","src":"2102:7:157","typeDescriptions":{}}},"id":29581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2102:13:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":29582,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29569,"src":"2117:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":29576,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29567,"src":"2086:5:157","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"id":29577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":29422,"src":"2086:15:157","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":29583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2086:39:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":29584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":29039,"src":"2086:43:157","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":29586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2086:50:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2063:73:157"},{"expression":{"arguments":[{"id":29589,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29567,"src":"2166:5:157","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":29592,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29567,"src":"2196:5:157","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"id":29593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":29432,"src":"2196:13:157","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":29594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"2196:22:157","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":29595,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29569,"src":"2220:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":29596,"name":"newAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29575,"src":"2229:12:157","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":29590,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2173:3:157","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":29591,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2173:22:157","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":29597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2173:69:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":29588,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29675,"src":"2146:19:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$29463_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":29598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2146:97:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29599,"nodeType":"ExpressionStatement","src":"2146:97:157"}]},"id":29601,"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nodeType":"FunctionDefinition","parameters":{"id":29572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29567,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":29601,"src":"1998:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"},"typeName":{"id":29566,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":29463,"src":"1998:6:157","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":29569,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":29601,"src":"2012:15:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29568,"name":"address","nodeType":"ElementaryTypeName","src":"2012:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29571,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":29601,"src":"2029:13:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29570,"name":"uint256","nodeType":"ElementaryTypeName","src":"2029:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1997:46:157"},"returnParameters":{"id":29573,"nodeType":"ParameterList","parameters":[],"src":"2053:0:157"},"scope":29676,"src":"1967:283:157","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":29637,"nodeType":"Block","src":"2342:242:157","statements":[{"assignments":[29611],"declarations":[{"constant":false,"id":29611,"mutability":"mutable","name":"newAllowance","nodeType":"VariableDeclaration","scope":29637,"src":"2352:20:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29610,"name":"uint256","nodeType":"ElementaryTypeName","src":"2352:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":29624,"initialValue":{"arguments":[{"id":29621,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29607,"src":"2419:5:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":29622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2426:43:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""},"value":"SafeERC20: decreased allowance below zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""}],"expression":{"arguments":[{"arguments":[{"id":29616,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2399:4:157","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$29676","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$29676","typeString":"library SafeERC20"}],"id":29615,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2391:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":29614,"name":"address","nodeType":"ElementaryTypeName","src":"2391:7:157","typeDescriptions":{}}},"id":29617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2391:13:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":29618,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29605,"src":"2406:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":29612,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29603,"src":"2375:5:157","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"id":29613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":29422,"src":"2375:15:157","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":29619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2375:39:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":29620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":29084,"src":"2375:43:157","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":29623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2375:95:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2352:118:157"},{"expression":{"arguments":[{"id":29626,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29603,"src":"2500:5:157","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":29629,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29603,"src":"2530:5:157","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"id":29630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":29432,"src":"2530:13:157","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":29631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"2530:22:157","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":29632,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29605,"src":"2554:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":29633,"name":"newAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29611,"src":"2563:12:157","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":29627,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2507:3:157","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":29628,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2507:22:157","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":29634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2507:69:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":29625,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29675,"src":"2480:19:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$29463_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":29635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2480:97:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29636,"nodeType":"ExpressionStatement","src":"2480:97:157"}]},"id":29638,"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nodeType":"FunctionDefinition","parameters":{"id":29608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29603,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":29638,"src":"2287:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"},"typeName":{"id":29602,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":29463,"src":"2287:6:157","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":29605,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":29638,"src":"2301:15:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29604,"name":"address","nodeType":"ElementaryTypeName","src":"2301:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29607,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":29638,"src":"2318:13:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29606,"name":"uint256","nodeType":"ElementaryTypeName","src":"2318:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2286:46:157"},"returnParameters":{"id":29609,"nodeType":"ParameterList","parameters":[],"src":"2342:0:157"},"scope":29676,"src":"2256:328:157","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":29674,"nodeType":"Block","src":"3037:681:157","statements":[{"assignments":[29647],"declarations":[{"constant":false,"id":29647,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":29674,"src":"3386:23:157","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":29646,"name":"bytes","nodeType":"ElementaryTypeName","src":"3386:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":29656,"initialValue":{"arguments":[{"id":29653,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29643,"src":"3440:4:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","id":29654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3446:34:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""},"value":"SafeERC20: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"expression":{"arguments":[{"id":29650,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29641,"src":"3420:5:157","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}],"id":29649,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3412:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":29648,"name":"address","nodeType":"ElementaryTypeName","src":"3412:7:157","typeDescriptions":{}}},"id":29651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3412:14:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":29652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":29767,"src":"3412:27:157","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":29655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3412:69:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3386:95:157"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":29657,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29647,"src":"3495:10:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":29658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3495:17:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":29659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3515:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3495:21:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":29673,"nodeType":"IfStatement","src":"3491:221:157","trueBody":{"id":29672,"nodeType":"Block","src":"3518:194:157","statements":[{"expression":{"arguments":[{"arguments":[{"id":29664,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29647,"src":"3635:10:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":29666,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3648:4:157","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":29665,"name":"bool","nodeType":"ElementaryTypeName","src":"3648:4:157","typeDescriptions":{}}}],"id":29667,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3647:6:157","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":29662,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3624:3:157","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":29663,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"3624:10:157","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":29668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3624:30:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","id":29669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3656:44:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""},"value":"SafeERC20: ERC20 operation did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"id":29661,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3616:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":29670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3616:85:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29671,"nodeType":"ExpressionStatement","src":"3616:85:157"}]}}]},"documentation":{"id":29639,"nodeType":"StructuredDocumentation","src":"2590:372:157","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)."},"id":29675,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nodeType":"FunctionDefinition","parameters":{"id":29644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29641,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":29675,"src":"2996:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"},"typeName":{"id":29640,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":29463,"src":"2996:6:157","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$29463","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":29643,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":29675,"src":"3010:17:157","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":29642,"name":"bytes","nodeType":"ElementaryTypeName","src":"3010:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2995:33:157"},"returnParameters":{"id":29645,"nodeType":"ParameterList","parameters":[],"src":"3037:0:157"},"scope":29676,"src":"2967:751:157","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":29677,"src":"616:3104:157"}],"src":"33:3688:157"},"id":157},"openzeppelin-contracts-legacy/utils/Address.sol":{"ast":{"absolutePath":"openzeppelin-contracts-legacy/utils/Address.sol","exportedSymbols":{"Address":[29920]},"id":29921,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":29678,"literals":["solidity",">=","0.6",".2","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:158"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":29679,"nodeType":"StructuredDocumentation","src":"66:67:158","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":29920,"linearizedBaseContracts":[29920],"name":"Address","nodeType":"ContractDefinition","nodes":[{"body":{"id":29695,"nodeType":"Block","src":"792:347:158","statements":[{"assignments":[29688],"declarations":[{"constant":false,"id":29688,"mutability":"mutable","name":"size","nodeType":"VariableDeclaration","scope":29695,"src":"989:12:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29687,"name":"uint256","nodeType":"ElementaryTypeName","src":"989:7:158","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":29689,"nodeType":"VariableDeclarationStatement","src":"989:12:158"},{"AST":{"nodeType":"YulBlock","src":"1076:32:158","statements":[{"nodeType":"YulAssignment","src":"1078:28:158","value":{"arguments":[{"name":"account","nodeType":"YulIdentifier","src":"1098:7:158"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"1086:11:158"},"nodeType":"YulFunctionCall","src":"1086:20:158"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1078:4:158"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":29682,"isOffset":false,"isSlot":false,"src":"1098:7:158","valueSize":1},{"declaration":29688,"isOffset":false,"isSlot":false,"src":"1078:4:158","valueSize":1}],"id":29690,"nodeType":"InlineAssembly","src":"1067:41:158"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29691,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29688,"src":"1124:4:158","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":29692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1131:1:158","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1124:8:158","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":29686,"id":29694,"nodeType":"Return","src":"1117:15:158"}]},"documentation":{"id":29680,"nodeType":"StructuredDocumentation","src":"156:565:158","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":29696,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nodeType":"FunctionDefinition","parameters":{"id":29683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29682,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":29696,"src":"746:15:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29681,"name":"address","nodeType":"ElementaryTypeName","src":"746:7:158","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"745:17:158"},"returnParameters":{"id":29686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29685,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29696,"src":"786:4:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29684,"name":"bool","nodeType":"ElementaryTypeName","src":"786:4:158","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"785:6:158"},"scope":29920,"src":"726:413:158","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":29729,"nodeType":"Block","src":"2127:320:158","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":29707,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2153:4:158","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$29920","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$29920","typeString":"library Address"}],"id":29706,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2145:7:158","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":29705,"name":"address","nodeType":"ElementaryTypeName","src":"2145:7:158","typeDescriptions":{}}},"id":29708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2145:13:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":29709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2145:21:158","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":29710,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29701,"src":"2170:6:158","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2145:31:158","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":29712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2178:31:158","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":29704,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2137:7:158","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":29713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2137:73:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29714,"nodeType":"ExpressionStatement","src":"2137:73:158"},{"assignments":[29716,null],"declarations":[{"constant":false,"id":29716,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":29729,"src":"2299:12:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29715,"name":"bool","nodeType":"ElementaryTypeName","src":"2299:4:158","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":29723,"initialValue":{"arguments":[{"hexValue":"","id":29721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2349:2:158","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":29717,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29699,"src":"2317:9:158","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":29718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2317:14:158","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":29720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":29719,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29701,"src":"2340:6:158","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2317:31:158","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":29722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2317:35:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2298:54:158"},{"expression":{"arguments":[{"id":29725,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29716,"src":"2370:7:158","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":29726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2379:60:158","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":29724,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2362:7:158","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":29727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2362:78:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29728,"nodeType":"ExpressionStatement","src":"2362:78:158"}]},"documentation":{"id":29697,"nodeType":"StructuredDocumentation","src":"1145:906:158","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":29730,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nodeType":"FunctionDefinition","parameters":{"id":29702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29699,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":29730,"src":"2075:25:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":29698,"name":"address","nodeType":"ElementaryTypeName","src":"2075:15:158","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":29701,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":29730,"src":"2102:14:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29700,"name":"uint256","nodeType":"ElementaryTypeName","src":"2102:7:158","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2074:43:158"},"returnParameters":{"id":29703,"nodeType":"ParameterList","parameters":[],"src":"2127:0:158"},"scope":29920,"src":"2056:391:158","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":29746,"nodeType":"Block","src":"3277:82:158","statements":[{"expression":{"arguments":[{"id":29741,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29733,"src":"3305:6:158","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":29742,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29735,"src":"3313:4:158","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":29743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3319:32:158","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":29740,"name":"functionCall","nodeType":"Identifier","overloadedDeclarations":[29747,29767],"referencedDeclaration":29767,"src":"3292:12:158","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":29744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3292:60:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":29739,"id":29745,"nodeType":"Return","src":"3285:67:158"}]},"documentation":{"id":29731,"nodeType":"StructuredDocumentation","src":"2453:730:158","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":29747,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nodeType":"FunctionDefinition","parameters":{"id":29736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29733,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":29747,"src":"3210:14:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29732,"name":"address","nodeType":"ElementaryTypeName","src":"3210:7:158","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29735,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":29747,"src":"3226:17:158","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":29734,"name":"bytes","nodeType":"ElementaryTypeName","src":"3226:5:158","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3209:35:158"},"returnParameters":{"id":29739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29738,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29747,"src":"3263:12:158","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":29737,"name":"bytes","nodeType":"ElementaryTypeName","src":"3263:5:158","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3262:14:158"},"scope":29920,"src":"3188:171:158","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":29766,"nodeType":"Block","src":"3698:76:158","statements":[{"expression":{"arguments":[{"id":29760,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29750,"src":"3737:6:158","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":29761,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29752,"src":"3745:4:158","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":29762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3751:1:158","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":29763,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29754,"src":"3754:12:158","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":29759,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[29787,29837],"referencedDeclaration":29837,"src":"3715:21:158","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":29764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3715:52:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":29758,"id":29765,"nodeType":"Return","src":"3708:59:158"}]},"documentation":{"id":29748,"nodeType":"StructuredDocumentation","src":"3365:211:158","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":29767,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nodeType":"FunctionDefinition","parameters":{"id":29755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29750,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":29767,"src":"3603:14:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29749,"name":"address","nodeType":"ElementaryTypeName","src":"3603:7:158","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29752,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":29767,"src":"3619:17:158","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":29751,"name":"bytes","nodeType":"ElementaryTypeName","src":"3619:5:158","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":29754,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":29767,"src":"3638:26:158","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":29753,"name":"string","nodeType":"ElementaryTypeName","src":"3638:6:158","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3602:63:158"},"returnParameters":{"id":29758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29757,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29767,"src":"3684:12:158","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":29756,"name":"bytes","nodeType":"ElementaryTypeName","src":"3684:5:158","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3683:14:158"},"scope":29920,"src":"3581:193:158","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":29786,"nodeType":"Block","src":"4249:111:158","statements":[{"expression":{"arguments":[{"id":29780,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29770,"src":"4288:6:158","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":29781,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29772,"src":"4296:4:158","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":29782,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29774,"src":"4302:5:158","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":29783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4309:43:158","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":29779,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[29787,29837],"referencedDeclaration":29837,"src":"4266:21:158","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":29784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4266:87:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":29778,"id":29785,"nodeType":"Return","src":"4259:94:158"}]},"documentation":{"id":29768,"nodeType":"StructuredDocumentation","src":"3780:351:158","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":29787,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nodeType":"FunctionDefinition","parameters":{"id":29775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29770,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":29787,"src":"4167:14:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29769,"name":"address","nodeType":"ElementaryTypeName","src":"4167:7:158","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29772,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":29787,"src":"4183:17:158","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":29771,"name":"bytes","nodeType":"ElementaryTypeName","src":"4183:5:158","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":29774,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":29787,"src":"4202:13:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29773,"name":"uint256","nodeType":"ElementaryTypeName","src":"4202:7:158","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4166:50:158"},"returnParameters":{"id":29778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29777,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29787,"src":"4235:12:158","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":29776,"name":"bytes","nodeType":"ElementaryTypeName","src":"4235:5:158","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4234:14:158"},"scope":29920,"src":"4136:224:158","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":29836,"nodeType":"Block","src":"4749:382:158","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":29804,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4775:4:158","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$29920","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$29920","typeString":"library Address"}],"id":29803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4767:7:158","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":29802,"name":"address","nodeType":"ElementaryTypeName","src":"4767:7:158","typeDescriptions":{}}},"id":29805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4767:13:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":29806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"4767:21:158","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":29807,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29794,"src":"4792:5:158","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4767:30:158","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":29809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4799:40:158","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":29801,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4759:7:158","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":29810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4759:81:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29811,"nodeType":"ExpressionStatement","src":"4759:81:158"},{"expression":{"arguments":[{"arguments":[{"id":29814,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29790,"src":"4869:6:158","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":29813,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29696,"src":"4858:10:158","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":29815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4858:18:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":29816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4878:31:158","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":29812,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4850:7:158","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":29817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4850:60:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29818,"nodeType":"ExpressionStatement","src":"4850:60:158"},{"assignments":[29820,29822],"declarations":[{"constant":false,"id":29820,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":29836,"src":"4981:12:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29819,"name":"bool","nodeType":"ElementaryTypeName","src":"4981:4:158","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":29822,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":29836,"src":"4995:23:158","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":29821,"name":"bytes","nodeType":"ElementaryTypeName","src":"4995:5:158","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":29829,"initialValue":{"arguments":[{"id":29827,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29792,"src":"5050:4:158","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":29823,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29790,"src":"5022:6:158","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":29824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"5022:11:158","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":29826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":29825,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29794,"src":"5042:5:158","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5022:27:158","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":29828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5022:33:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4980:75:158"},{"expression":{"arguments":[{"id":29831,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29820,"src":"5090:7:158","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":29832,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29822,"src":"5099:10:158","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":29833,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29796,"src":"5111:12:158","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":29830,"name":"_verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29919,"src":"5072:17:158","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":29834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5072:52:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":29800,"id":29835,"nodeType":"Return","src":"5065:59:158"}]},"documentation":{"id":29788,"nodeType":"StructuredDocumentation","src":"4366:237:158","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":29837,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nodeType":"FunctionDefinition","parameters":{"id":29797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29790,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":29837,"src":"4639:14:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29789,"name":"address","nodeType":"ElementaryTypeName","src":"4639:7:158","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29792,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":29837,"src":"4655:17:158","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":29791,"name":"bytes","nodeType":"ElementaryTypeName","src":"4655:5:158","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":29794,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":29837,"src":"4674:13:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29793,"name":"uint256","nodeType":"ElementaryTypeName","src":"4674:7:158","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":29796,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":29837,"src":"4689:26:158","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":29795,"name":"string","nodeType":"ElementaryTypeName","src":"4689:6:158","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4638:78:158"},"returnParameters":{"id":29800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29799,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29837,"src":"4735:12:158","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":29798,"name":"bytes","nodeType":"ElementaryTypeName","src":"4735:5:158","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4734:14:158"},"scope":29920,"src":"4608:523:158","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":29853,"nodeType":"Block","src":"5408:97:158","statements":[{"expression":{"arguments":[{"id":29848,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29840,"src":"5444:6:158","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":29849,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29842,"src":"5452:4:158","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":29850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5458:39:158","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":29847,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[29854,29889],"referencedDeclaration":29889,"src":"5425:18:158","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":29851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5425:73:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":29846,"id":29852,"nodeType":"Return","src":"5418:80:158"}]},"documentation":{"id":29838,"nodeType":"StructuredDocumentation","src":"5137:166:158","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":29854,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nodeType":"FunctionDefinition","parameters":{"id":29843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29840,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":29854,"src":"5336:14:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29839,"name":"address","nodeType":"ElementaryTypeName","src":"5336:7:158","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29842,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":29854,"src":"5352:17:158","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":29841,"name":"bytes","nodeType":"ElementaryTypeName","src":"5352:5:158","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5335:35:158"},"returnParameters":{"id":29846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29845,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29854,"src":"5394:12:158","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":29844,"name":"bytes","nodeType":"ElementaryTypeName","src":"5394:5:158","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5393:14:158"},"scope":29920,"src":"5308:197:158","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":29888,"nodeType":"Block","src":"5817:288:158","statements":[{"expression":{"arguments":[{"arguments":[{"id":29868,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29857,"src":"5846:6:158","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":29867,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29696,"src":"5835:10:158","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":29869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5835:18:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374","id":29870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5855:38:158","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":29866,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5827:7:158","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":29871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5827:67:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29872,"nodeType":"ExpressionStatement","src":"5827:67:158"},{"assignments":[29874,29876],"declarations":[{"constant":false,"id":29874,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":29888,"src":"5965:12:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29873,"name":"bool","nodeType":"ElementaryTypeName","src":"5965:4:158","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":29876,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":29888,"src":"5979:23:158","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":29875,"name":"bytes","nodeType":"ElementaryTypeName","src":"5979:5:158","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":29881,"initialValue":{"arguments":[{"id":29879,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29859,"src":"6024:4:158","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":29877,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29857,"src":"6006:6:158","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":29878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"staticcall","nodeType":"MemberAccess","src":"6006:17:158","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":29880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6006:23:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5964:65:158"},{"expression":{"arguments":[{"id":29883,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29874,"src":"6064:7:158","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":29884,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29876,"src":"6073:10:158","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":29885,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29861,"src":"6085:12:158","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":29882,"name":"_verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29919,"src":"6046:17:158","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":29886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6046:52:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":29865,"id":29887,"nodeType":"Return","src":"6039:59:158"}]},"documentation":{"id":29855,"nodeType":"StructuredDocumentation","src":"5511:173:158","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":29889,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nodeType":"FunctionDefinition","parameters":{"id":29862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29857,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":29889,"src":"5717:14:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29856,"name":"address","nodeType":"ElementaryTypeName","src":"5717:7:158","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":29859,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":29889,"src":"5733:17:158","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":29858,"name":"bytes","nodeType":"ElementaryTypeName","src":"5733:5:158","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":29861,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":29889,"src":"5752:26:158","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":29860,"name":"string","nodeType":"ElementaryTypeName","src":"5752:6:158","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5716:63:158"},"returnParameters":{"id":29865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29864,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29889,"src":"5803:12:158","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":29863,"name":"bytes","nodeType":"ElementaryTypeName","src":"5803:5:158","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5802:14:158"},"scope":29920,"src":"5689:416:158","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":29918,"nodeType":"Block","src":"6240:596:158","statements":[{"condition":{"id":29900,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29891,"src":"6254:7:158","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":29916,"nodeType":"Block","src":"6311:519:158","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":29904,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29893,"src":"6395:10:158","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":29905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6395:17:158","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":29906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6415:1:158","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6395:21:158","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":29914,"nodeType":"Block","src":"6767:53:158","statements":[{"expression":{"arguments":[{"id":29911,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29895,"src":"6792:12:158","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":29910,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"6785:6:158","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":29912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6785:20:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29913,"nodeType":"ExpressionStatement","src":"6785:20:158"}]},"id":29915,"nodeType":"IfStatement","src":"6391:429:158","trueBody":{"id":29909,"nodeType":"Block","src":"6418:343:158","statements":[{"AST":{"nodeType":"YulBlock","src":"6602:145:158","statements":[{"nodeType":"YulVariableDeclaration","src":"6624:40:158","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"6653:10:158"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6647:5:158"},"nodeType":"YulFunctionCall","src":"6647:17:158"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"6628:15:158","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6696:2:158","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"6700:10:158"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6692:3:158"},"nodeType":"YulFunctionCall","src":"6692:19:158"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"6713:15:158"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6685:6:158"},"nodeType":"YulFunctionCall","src":"6685:44:158"},"nodeType":"YulExpressionStatement","src":"6685:44:158"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":29893,"isOffset":false,"isSlot":false,"src":"6653:10:158","valueSize":1},{"declaration":29893,"isOffset":false,"isSlot":false,"src":"6700:10:158","valueSize":1}],"id":29908,"nodeType":"InlineAssembly","src":"6593:154:158"}]}}]},"id":29917,"nodeType":"IfStatement","src":"6250:580:158","trueBody":{"id":29903,"nodeType":"Block","src":"6263:42:158","statements":[{"expression":{"id":29901,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29893,"src":"6284:10:158","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":29899,"id":29902,"nodeType":"Return","src":"6277:17:158"}]}}]},"id":29919,"implemented":true,"kind":"function","modifiers":[],"name":"_verifyCallResult","nodeType":"FunctionDefinition","parameters":{"id":29896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29891,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":29919,"src":"6138:12:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29890,"name":"bool","nodeType":"ElementaryTypeName","src":"6138:4:158","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":29893,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":29919,"src":"6152:23:158","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":29892,"name":"bytes","nodeType":"ElementaryTypeName","src":"6152:5:158","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":29895,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":29919,"src":"6177:26:158","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":29894,"name":"string","nodeType":"ElementaryTypeName","src":"6177:6:158","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6137:67:158"},"returnParameters":{"id":29899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29898,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29919,"src":"6226:12:158","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":29897,"name":"bytes","nodeType":"ElementaryTypeName","src":"6226:5:158","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6225:14:158"},"scope":29920,"src":"6111:725:158","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":29921,"src":"134:6704:158"}],"src":"33:6806:158"},"id":158},"openzeppelin-contracts-legacy/utils/ReentrancyGuard.sol":{"ast":{"absolutePath":"openzeppelin-contracts-legacy/utils/ReentrancyGuard.sol","exportedSymbols":{"ReentrancyGuard":[29960]},"id":29961,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":29922,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:159"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":29923,"nodeType":"StructuredDocumentation","src":"66:750:159","text":" @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]."},"fullyImplemented":true,"id":29960,"linearizedBaseContracts":[29960],"name":"ReentrancyGuard","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":29926,"mutability":"constant","name":"_NOT_ENTERED","nodeType":"VariableDeclaration","scope":29960,"src":"1605:41:159","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29924,"name":"uint256","nodeType":"ElementaryTypeName","src":"1605:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":29925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1645:1:159","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":true,"id":29929,"mutability":"constant","name":"_ENTERED","nodeType":"VariableDeclaration","scope":29960,"src":"1652:37:159","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29927,"name":"uint256","nodeType":"ElementaryTypeName","src":"1652:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":29928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1688:1:159","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"constant":false,"id":29931,"mutability":"mutable","name":"_status","nodeType":"VariableDeclaration","scope":29960,"src":"1696:23:159","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29930,"name":"uint256","nodeType":"ElementaryTypeName","src":"1696:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":29938,"nodeType":"Block","src":"1750:39:159","statements":[{"expression":{"id":29936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":29934,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29931,"src":"1760:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":29935,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29926,"src":"1770:12:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1760:22:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":29937,"nodeType":"ExpressionStatement","src":"1760:22:159"}]},"id":29939,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":29932,"nodeType":"ParameterList","parameters":[],"src":"1738:2:159"},"returnParameters":{"id":29933,"nodeType":"ParameterList","parameters":[],"src":"1750:0:159"},"scope":29960,"src":"1726:63:159","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":29958,"nodeType":"Block","src":"2188:421:159","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29943,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29931,"src":"2277:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":29944,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29929,"src":"2288:8:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2277:19:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5265656e7472616e637947756172643a207265656e7472616e742063616c6c","id":29946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2298:33:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619","typeString":"literal_string \"ReentrancyGuard: reentrant call\""},"value":"ReentrancyGuard: reentrant call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619","typeString":"literal_string \"ReentrancyGuard: reentrant call\""}],"id":29942,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2269:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":29947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2269:63:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29948,"nodeType":"ExpressionStatement","src":"2269:63:159"},{"expression":{"id":29951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":29949,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29931,"src":"2407:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":29950,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29929,"src":"2417:8:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2407:18:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":29952,"nodeType":"ExpressionStatement","src":"2407:18:159"},{"id":29953,"nodeType":"PlaceholderStatement","src":"2436:1:159"},{"expression":{"id":29956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":29954,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29931,"src":"2580:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":29955,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29926,"src":"2590:12:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2580:22:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":29957,"nodeType":"ExpressionStatement","src":"2580:22:159"}]},"documentation":{"id":29940,"nodeType":"StructuredDocumentation","src":"1795:364:159","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and make it call a\n `private` function that does the actual work."},"id":29959,"name":"nonReentrant","nodeType":"ModifierDefinition","parameters":{"id":29941,"nodeType":"ParameterList","parameters":[],"src":"2185:2:159"},"src":"2164:445:159","virtual":false,"visibility":"internal"}],"scope":29961,"src":"817:1794:159"}],"src":"33:2579:159"},"id":159},"openzeppelin-contracts-legacy/utils/SafeCast.sol":{"ast":{"absolutePath":"openzeppelin-contracts-legacy/utils/SafeCast.sol","exportedSymbols":{"SafeCast":[30273]},"id":30274,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":29962,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:160"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":29963,"nodeType":"StructuredDocumentation","src":"67:709:160","text":" @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always.\n Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\n all math on `uint256` and `int256` and then downcasting."},"fullyImplemented":true,"id":30273,"linearizedBaseContracts":[30273],"name":"SafeCast","nodeType":"ContractDefinition","nodes":[{"body":{"id":29985,"nodeType":"Block","src":"1152:115:160","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29972,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29966,"src":"1170:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"id":29975,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":29973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1178:1:160","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"313238","id":29974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1181:3:160","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"1178:6:160","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}},"src":"1170:14:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203132382062697473","id":29977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1186:42:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_47a1e201974f94d3d1a31c8b08ae18c6966c758bdcd4400020012b98cc55426c","typeString":"literal_string \"SafeCast: value doesn't fit in 128 bits\""},"value":"SafeCast: value doesn't fit in 128 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47a1e201974f94d3d1a31c8b08ae18c6966c758bdcd4400020012b98cc55426c","typeString":"literal_string \"SafeCast: value doesn't fit in 128 bits\""}],"id":29971,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1162:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":29978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1162:67:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":29979,"nodeType":"ExpressionStatement","src":"1162:67:160"},{"expression":{"arguments":[{"id":29982,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29966,"src":"1254:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":29981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1246:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":29980,"name":"uint128","nodeType":"ElementaryTypeName","src":"1246:7:160","typeDescriptions":{}}},"id":29983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1246:14:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":29970,"id":29984,"nodeType":"Return","src":"1239:21:160"}]},"documentation":{"id":29964,"nodeType":"StructuredDocumentation","src":"801:280:160","text":" @dev Returns the downcasted uint128 from uint256, reverting on\n overflow (when the input is greater than largest uint128).\n Counterpart to Solidity's `uint128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":29986,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nodeType":"FunctionDefinition","parameters":{"id":29967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29966,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":29986,"src":"1105:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29965,"name":"uint256","nodeType":"ElementaryTypeName","src":"1105:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1104:15:160"},"returnParameters":{"id":29970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29969,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":29986,"src":"1143:7:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":29968,"name":"uint128","nodeType":"ElementaryTypeName","src":"1143:7:160","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1142:9:160"},"scope":30273,"src":"1086:181:160","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30008,"nodeType":"Block","src":"1618:112:160","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29995,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29989,"src":"1636:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"id":29998,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":29996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1644:1:160","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":29997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1647:2:160","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"1644:5:160","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}},"src":"1636:13:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2036342062697473","id":30000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1651:41:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_93ae0c6bf6ffaece591a770b1865daa9f65157e541970aa9d8dc5f89a9490939","typeString":"literal_string \"SafeCast: value doesn't fit in 64 bits\""},"value":"SafeCast: value doesn't fit in 64 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_93ae0c6bf6ffaece591a770b1865daa9f65157e541970aa9d8dc5f89a9490939","typeString":"literal_string \"SafeCast: value doesn't fit in 64 bits\""}],"id":29994,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1628:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1628:65:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30002,"nodeType":"ExpressionStatement","src":"1628:65:160"},{"expression":{"arguments":[{"id":30005,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29989,"src":"1717:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":30004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1710:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":30003,"name":"uint64","nodeType":"ElementaryTypeName","src":"1710:6:160","typeDescriptions":{}}},"id":30006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1710:13:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":29993,"id":30007,"nodeType":"Return","src":"1703:20:160"}]},"documentation":{"id":29987,"nodeType":"StructuredDocumentation","src":"1273:276:160","text":" @dev Returns the downcasted uint64 from uint256, reverting on\n overflow (when the input is greater than largest uint64).\n Counterpart to Solidity's `uint64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":30009,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nodeType":"FunctionDefinition","parameters":{"id":29990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29989,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":30009,"src":"1572:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29988,"name":"uint256","nodeType":"ElementaryTypeName","src":"1572:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1571:15:160"},"returnParameters":{"id":29993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29992,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30009,"src":"1610:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":29991,"name":"uint64","nodeType":"ElementaryTypeName","src":"1610:6:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1609:8:160"},"scope":30273,"src":"1554:176:160","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30031,"nodeType":"Block","src":"2081:112:160","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30012,"src":"2099:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":30021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":30019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2107:1:160","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":30020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2110:2:160","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"2107:5:160","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"2099:13:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2033322062697473","id":30023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2114:41:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19","typeString":"literal_string \"SafeCast: value doesn't fit in 32 bits\""},"value":"SafeCast: value doesn't fit in 32 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19","typeString":"literal_string \"SafeCast: value doesn't fit in 32 bits\""}],"id":30017,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2091:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2091:65:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30025,"nodeType":"ExpressionStatement","src":"2091:65:160"},{"expression":{"arguments":[{"id":30028,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30012,"src":"2180:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":30027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2173:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":30026,"name":"uint32","nodeType":"ElementaryTypeName","src":"2173:6:160","typeDescriptions":{}}},"id":30029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2173:13:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":30016,"id":30030,"nodeType":"Return","src":"2166:20:160"}]},"documentation":{"id":30010,"nodeType":"StructuredDocumentation","src":"1736:276:160","text":" @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":30032,"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nodeType":"FunctionDefinition","parameters":{"id":30013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30012,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":30032,"src":"2035:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30011,"name":"uint256","nodeType":"ElementaryTypeName","src":"2035:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2034:15:160"},"returnParameters":{"id":30016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30015,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30032,"src":"2073:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":30014,"name":"uint32","nodeType":"ElementaryTypeName","src":"2073:6:160","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2072:8:160"},"scope":30273,"src":"2017:176:160","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30054,"nodeType":"Block","src":"2544:112:160","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30041,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30035,"src":"2562:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"id":30044,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":30042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2570:1:160","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":30043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2573:2:160","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"2570:5:160","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}},"src":"2562:13:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2031362062697473","id":30046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2577:41:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_13d3a66f9e0e5c92bbe7743bcd3bdb4695009d5f3a96e5ff49718d715b484033","typeString":"literal_string \"SafeCast: value doesn't fit in 16 bits\""},"value":"SafeCast: value doesn't fit in 16 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_13d3a66f9e0e5c92bbe7743bcd3bdb4695009d5f3a96e5ff49718d715b484033","typeString":"literal_string \"SafeCast: value doesn't fit in 16 bits\""}],"id":30040,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2554:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2554:65:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30048,"nodeType":"ExpressionStatement","src":"2554:65:160"},{"expression":{"arguments":[{"id":30051,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30035,"src":"2643:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":30050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2636:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":30049,"name":"uint16","nodeType":"ElementaryTypeName","src":"2636:6:160","typeDescriptions":{}}},"id":30052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2636:13:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":30039,"id":30053,"nodeType":"Return","src":"2629:20:160"}]},"documentation":{"id":30033,"nodeType":"StructuredDocumentation","src":"2199:276:160","text":" @dev Returns the downcasted uint16 from uint256, reverting on\n overflow (when the input is greater than largest uint16).\n Counterpart to Solidity's `uint16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":30055,"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nodeType":"FunctionDefinition","parameters":{"id":30036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30035,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":30055,"src":"2498:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30034,"name":"uint256","nodeType":"ElementaryTypeName","src":"2498:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2497:15:160"},"returnParameters":{"id":30039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30038,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30055,"src":"2536:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":30037,"name":"uint16","nodeType":"ElementaryTypeName","src":"2536:6:160","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"2535:8:160"},"scope":30273,"src":"2480:176:160","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30077,"nodeType":"Block","src":"3002:109:160","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30058,"src":"3020:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":30067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":30065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3028:1:160","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":30066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3031:1:160","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"3028:4:160","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}},"src":"3020:12:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e20382062697473","id":30069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3034:40:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1","typeString":"literal_string \"SafeCast: value doesn't fit in 8 bits\""},"value":"SafeCast: value doesn't fit in 8 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1","typeString":"literal_string \"SafeCast: value doesn't fit in 8 bits\""}],"id":30063,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3012:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3012:63:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30071,"nodeType":"ExpressionStatement","src":"3012:63:160"},{"expression":{"arguments":[{"id":30074,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30058,"src":"3098:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":30073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3092:5:160","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":30072,"name":"uint8","nodeType":"ElementaryTypeName","src":"3092:5:160","typeDescriptions":{}}},"id":30075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3092:12:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":30062,"id":30076,"nodeType":"Return","src":"3085:19:160"}]},"documentation":{"id":30056,"nodeType":"StructuredDocumentation","src":"2662:273:160","text":" @dev Returns the downcasted uint8 from uint256, reverting on\n overflow (when the input is greater than largest uint8).\n Counterpart to Solidity's `uint8` operator.\n Requirements:\n - input must fit into 8 bits."},"id":30078,"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nodeType":"FunctionDefinition","parameters":{"id":30059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30058,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":30078,"src":"2957:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30057,"name":"uint256","nodeType":"ElementaryTypeName","src":"2957:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2956:15:160"},"returnParameters":{"id":30062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30061,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30078,"src":"2995:5:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":30060,"name":"uint8","nodeType":"ElementaryTypeName","src":"2995:5:160","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2994:7:160"},"scope":30273,"src":"2940:171:160","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30098,"nodeType":"Block","src":"3347:103:160","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30087,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30081,"src":"3365:5:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":30088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3374:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3365:10:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c7565206d75737420626520706f736974697665","id":30090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3377:34:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_74e6d3a4204092bea305532ded31d3763fc378e46be3884a93ceff08a0761807","typeString":"literal_string \"SafeCast: value must be positive\""},"value":"SafeCast: value must be positive"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_74e6d3a4204092bea305532ded31d3763fc378e46be3884a93ceff08a0761807","typeString":"literal_string \"SafeCast: value must be positive\""}],"id":30086,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3357:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3357:55:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30092,"nodeType":"ExpressionStatement","src":"3357:55:160"},{"expression":{"arguments":[{"id":30095,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30081,"src":"3437:5:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":30094,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3429:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":30093,"name":"uint256","nodeType":"ElementaryTypeName","src":"3429:7:160","typeDescriptions":{}}},"id":30096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3429:14:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":30085,"id":30097,"nodeType":"Return","src":"3422:21:160"}]},"documentation":{"id":30079,"nodeType":"StructuredDocumentation","src":"3117:160:160","text":" @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0."},"id":30099,"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nodeType":"FunctionDefinition","parameters":{"id":30082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30081,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":30099,"src":"3301:12:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30080,"name":"int256","nodeType":"ElementaryTypeName","src":"3301:6:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"3300:14:160"},"returnParameters":{"id":30085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30084,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30099,"src":"3338:7:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30083,"name":"uint256","nodeType":"ElementaryTypeName","src":"3338:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3337:9:160"},"scope":30273,"src":"3282:168:160","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30128,"nodeType":"Block","src":"3874:134:160","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":30119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30108,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30102,"src":"3892:5:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_minus_170141183460469231731687303715884105728_by_1","typeString":"int_const -170...(32 digits omitted)...5728"},"id":30112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":30110,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"3901:2:160","subExpression":{"hexValue":"32","id":30109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3902:1:160","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":"313237","id":30111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3905:3:160","typeDescriptions":{"typeIdentifier":"t_rational_127_by_1","typeString":"int_const 127"},"value":"127"},"src":"3901:7:160","typeDescriptions":{"typeIdentifier":"t_rational_minus_170141183460469231731687303715884105728_by_1","typeString":"int_const -170...(32 digits omitted)...5728"}},"src":"3892:16:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30114,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30102,"src":"3912:5:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_rational_170141183460469231731687303715884105728_by_1","typeString":"int_const 1701...(31 digits omitted)...5728"},"id":30117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":30115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3920:1:160","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"313237","id":30116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3923:3:160","typeDescriptions":{"typeIdentifier":"t_rational_127_by_1","typeString":"int_const 127"},"value":"127"},"src":"3920:6:160","typeDescriptions":{"typeIdentifier":"t_rational_170141183460469231731687303715884105728_by_1","typeString":"int_const 1701...(31 digits omitted)...5728"}},"src":"3912:14:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3892:34:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203132382062697473","id":30120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3928:42:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_47a1e201974f94d3d1a31c8b08ae18c6966c758bdcd4400020012b98cc55426c","typeString":"literal_string \"SafeCast: value doesn't fit in 128 bits\""},"value":"SafeCast: value doesn't fit in 128 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47a1e201974f94d3d1a31c8b08ae18c6966c758bdcd4400020012b98cc55426c","typeString":"literal_string \"SafeCast: value doesn't fit in 128 bits\""}],"id":30107,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3884:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3884:87:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30122,"nodeType":"ExpressionStatement","src":"3884:87:160"},{"expression":{"arguments":[{"id":30125,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30102,"src":"3995:5:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":30124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3988:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":30123,"name":"int128","nodeType":"ElementaryTypeName","src":"3988:6:160","typeDescriptions":{}}},"id":30126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3988:13:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"functionReturnParameters":30106,"id":30127,"nodeType":"Return","src":"3981:20:160"}]},"documentation":{"id":30100,"nodeType":"StructuredDocumentation","src":"3456:350:160","text":" @dev Returns the downcasted int128 from int256, reverting on\n overflow (when the input is less than smallest int128 or\n greater than largest int128).\n Counterpart to Solidity's `int128` operator.\n Requirements:\n - input must fit into 128 bits\n _Available since v3.1._"},"id":30129,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nodeType":"FunctionDefinition","parameters":{"id":30103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30102,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":30129,"src":"3829:12:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30101,"name":"int256","nodeType":"ElementaryTypeName","src":"3829:6:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"3828:14:160"},"returnParameters":{"id":30106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30105,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30129,"src":"3866:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":30104,"name":"int128","nodeType":"ElementaryTypeName","src":"3866:6:160","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"3865:8:160"},"scope":30273,"src":"3811:197:160","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30158,"nodeType":"Block","src":"4425:130:160","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":30149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30138,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30132,"src":"4443:5:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_minus_9223372036854775808_by_1","typeString":"int_const -9223372036854775808"},"id":30142,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":30140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"4452:2:160","subExpression":{"hexValue":"32","id":30139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4453:1:160","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":"3633","id":30141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4456:2:160","typeDescriptions":{"typeIdentifier":"t_rational_63_by_1","typeString":"int_const 63"},"value":"63"},"src":"4452:6:160","typeDescriptions":{"typeIdentifier":"t_rational_minus_9223372036854775808_by_1","typeString":"int_const -9223372036854775808"}},"src":"4443:15:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30144,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30132,"src":"4462:5:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_rational_9223372036854775808_by_1","typeString":"int_const 9223372036854775808"},"id":30147,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":30145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4470:1:160","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3633","id":30146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4473:2:160","typeDescriptions":{"typeIdentifier":"t_rational_63_by_1","typeString":"int_const 63"},"value":"63"},"src":"4470:5:160","typeDescriptions":{"typeIdentifier":"t_rational_9223372036854775808_by_1","typeString":"int_const 9223372036854775808"}},"src":"4462:13:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4443:32:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2036342062697473","id":30150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4477:41:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_93ae0c6bf6ffaece591a770b1865daa9f65157e541970aa9d8dc5f89a9490939","typeString":"literal_string \"SafeCast: value doesn't fit in 64 bits\""},"value":"SafeCast: value doesn't fit in 64 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_93ae0c6bf6ffaece591a770b1865daa9f65157e541970aa9d8dc5f89a9490939","typeString":"literal_string \"SafeCast: value doesn't fit in 64 bits\""}],"id":30137,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4435:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4435:84:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30152,"nodeType":"ExpressionStatement","src":"4435:84:160"},{"expression":{"arguments":[{"id":30155,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30132,"src":"4542:5:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":30154,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4536:5:160","typeDescriptions":{"typeIdentifier":"t_type$_t_int64_$","typeString":"type(int64)"},"typeName":{"id":30153,"name":"int64","nodeType":"ElementaryTypeName","src":"4536:5:160","typeDescriptions":{}}},"id":30156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4536:12:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"functionReturnParameters":30136,"id":30157,"nodeType":"Return","src":"4529:19:160"}]},"documentation":{"id":30130,"nodeType":"StructuredDocumentation","src":"4014:345:160","text":" @dev Returns the downcasted int64 from int256, reverting on\n overflow (when the input is less than smallest int64 or\n greater than largest int64).\n Counterpart to Solidity's `int64` operator.\n Requirements:\n - input must fit into 64 bits\n _Available since v3.1._"},"id":30159,"implemented":true,"kind":"function","modifiers":[],"name":"toInt64","nodeType":"FunctionDefinition","parameters":{"id":30133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30132,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":30159,"src":"4381:12:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30131,"name":"int256","nodeType":"ElementaryTypeName","src":"4381:6:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"4380:14:160"},"returnParameters":{"id":30136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30135,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30159,"src":"4418:5:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"},"typeName":{"id":30134,"name":"int64","nodeType":"ElementaryTypeName","src":"4418:5:160","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"visibility":"internal"}],"src":"4417:7:160"},"scope":30273,"src":"4364:191:160","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30188,"nodeType":"Block","src":"4972:130:160","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":30179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30168,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30162,"src":"4990:5:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_minus_2147483648_by_1","typeString":"int_const -2147483648"},"id":30172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":30170,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"4999:2:160","subExpression":{"hexValue":"32","id":30169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5000:1:160","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":"3331","id":30171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5003:2:160","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"31"},"src":"4999:6:160","typeDescriptions":{"typeIdentifier":"t_rational_minus_2147483648_by_1","typeString":"int_const -2147483648"}},"src":"4990:15:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30174,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30162,"src":"5009:5:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_rational_2147483648_by_1","typeString":"int_const 2147483648"},"id":30177,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":30175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5017:1:160","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3331","id":30176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5020:2:160","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"31"},"src":"5017:5:160","typeDescriptions":{"typeIdentifier":"t_rational_2147483648_by_1","typeString":"int_const 2147483648"}},"src":"5009:13:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4990:32:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2033322062697473","id":30180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5024:41:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19","typeString":"literal_string \"SafeCast: value doesn't fit in 32 bits\""},"value":"SafeCast: value doesn't fit in 32 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19","typeString":"literal_string \"SafeCast: value doesn't fit in 32 bits\""}],"id":30167,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4982:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4982:84:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30182,"nodeType":"ExpressionStatement","src":"4982:84:160"},{"expression":{"arguments":[{"id":30185,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30162,"src":"5089:5:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":30184,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5083:5:160","typeDescriptions":{"typeIdentifier":"t_type$_t_int32_$","typeString":"type(int32)"},"typeName":{"id":30183,"name":"int32","nodeType":"ElementaryTypeName","src":"5083:5:160","typeDescriptions":{}}},"id":30186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5083:12:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"functionReturnParameters":30166,"id":30187,"nodeType":"Return","src":"5076:19:160"}]},"documentation":{"id":30160,"nodeType":"StructuredDocumentation","src":"4561:345:160","text":" @dev Returns the downcasted int32 from int256, reverting on\n overflow (when the input is less than smallest int32 or\n greater than largest int32).\n Counterpart to Solidity's `int32` operator.\n Requirements:\n - input must fit into 32 bits\n _Available since v3.1._"},"id":30189,"implemented":true,"kind":"function","modifiers":[],"name":"toInt32","nodeType":"FunctionDefinition","parameters":{"id":30163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30162,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":30189,"src":"4928:12:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30161,"name":"int256","nodeType":"ElementaryTypeName","src":"4928:6:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"4927:14:160"},"returnParameters":{"id":30166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30165,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30189,"src":"4965:5:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"},"typeName":{"id":30164,"name":"int32","nodeType":"ElementaryTypeName","src":"4965:5:160","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"visibility":"internal"}],"src":"4964:7:160"},"scope":30273,"src":"4911:191:160","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30218,"nodeType":"Block","src":"5519:130:160","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":30209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30198,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30192,"src":"5537:5:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_minus_32768_by_1","typeString":"int_const -32768"},"id":30202,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":30200,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"5546:2:160","subExpression":{"hexValue":"32","id":30199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5547:1:160","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":"3135","id":30201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5550:2:160","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"15"},"src":"5546:6:160","typeDescriptions":{"typeIdentifier":"t_rational_minus_32768_by_1","typeString":"int_const -32768"}},"src":"5537:15:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30204,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30192,"src":"5556:5:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_rational_32768_by_1","typeString":"int_const 32768"},"id":30207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":30205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5564:1:160","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3135","id":30206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5567:2:160","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"15"},"src":"5564:5:160","typeDescriptions":{"typeIdentifier":"t_rational_32768_by_1","typeString":"int_const 32768"}},"src":"5556:13:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5537:32:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2031362062697473","id":30210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5571:41:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_13d3a66f9e0e5c92bbe7743bcd3bdb4695009d5f3a96e5ff49718d715b484033","typeString":"literal_string \"SafeCast: value doesn't fit in 16 bits\""},"value":"SafeCast: value doesn't fit in 16 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_13d3a66f9e0e5c92bbe7743bcd3bdb4695009d5f3a96e5ff49718d715b484033","typeString":"literal_string \"SafeCast: value doesn't fit in 16 bits\""}],"id":30197,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5529:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5529:84:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30212,"nodeType":"ExpressionStatement","src":"5529:84:160"},{"expression":{"arguments":[{"id":30215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30192,"src":"5636:5:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":30214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5630:5:160","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":30213,"name":"int16","nodeType":"ElementaryTypeName","src":"5630:5:160","typeDescriptions":{}}},"id":30216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5630:12:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"functionReturnParameters":30196,"id":30217,"nodeType":"Return","src":"5623:19:160"}]},"documentation":{"id":30190,"nodeType":"StructuredDocumentation","src":"5108:345:160","text":" @dev Returns the downcasted int16 from int256, reverting on\n overflow (when the input is less than smallest int16 or\n greater than largest int16).\n Counterpart to Solidity's `int16` operator.\n Requirements:\n - input must fit into 16 bits\n _Available since v3.1._"},"id":30219,"implemented":true,"kind":"function","modifiers":[],"name":"toInt16","nodeType":"FunctionDefinition","parameters":{"id":30193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30192,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":30219,"src":"5475:12:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30191,"name":"int256","nodeType":"ElementaryTypeName","src":"5475:6:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"5474:14:160"},"returnParameters":{"id":30196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30195,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30219,"src":"5512:5:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":30194,"name":"int16","nodeType":"ElementaryTypeName","src":"5512:5:160","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"5511:7:160"},"scope":30273,"src":"5458:191:160","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30248,"nodeType":"Block","src":"6060:126:160","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":30239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30228,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30222,"src":"6078:5:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_minus_128_by_1","typeString":"int_const -128"},"id":30232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":30230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"6087:2:160","subExpression":{"hexValue":"32","id":30229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6088:1:160","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":"37","id":30231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6091:1:160","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"6087:5:160","typeDescriptions":{"typeIdentifier":"t_rational_minus_128_by_1","typeString":"int_const -128"}},"src":"6078:14:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30234,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30222,"src":"6096:5:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"id":30237,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":30235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6104:1:160","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"37","id":30236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6107:1:160","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"6104:4:160","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"}},"src":"6096:12:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6078:30:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e20382062697473","id":30240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6110:40:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1","typeString":"literal_string \"SafeCast: value doesn't fit in 8 bits\""},"value":"SafeCast: value doesn't fit in 8 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1","typeString":"literal_string \"SafeCast: value doesn't fit in 8 bits\""}],"id":30227,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6070:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6070:81:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30242,"nodeType":"ExpressionStatement","src":"6070:81:160"},{"expression":{"arguments":[{"id":30245,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30222,"src":"6173:5:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":30244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6168:4:160","typeDescriptions":{"typeIdentifier":"t_type$_t_int8_$","typeString":"type(int8)"},"typeName":{"id":30243,"name":"int8","nodeType":"ElementaryTypeName","src":"6168:4:160","typeDescriptions":{}}},"id":30246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6168:11:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"functionReturnParameters":30226,"id":30247,"nodeType":"Return","src":"6161:18:160"}]},"documentation":{"id":30220,"nodeType":"StructuredDocumentation","src":"5655:341:160","text":" @dev Returns the downcasted int8 from int256, reverting on\n overflow (when the input is less than smallest int8 or\n greater than largest int8).\n Counterpart to Solidity's `int8` operator.\n Requirements:\n - input must fit into 8 bits.\n _Available since v3.1._"},"id":30249,"implemented":true,"kind":"function","modifiers":[],"name":"toInt8","nodeType":"FunctionDefinition","parameters":{"id":30223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30222,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":30249,"src":"6017:12:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30221,"name":"int256","nodeType":"ElementaryTypeName","src":"6017:6:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6016:14:160"},"returnParameters":{"id":30226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30225,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30249,"src":"6054:4:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":30224,"name":"int8","nodeType":"ElementaryTypeName","src":"6054:4:160","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"6053:6:160"},"scope":30273,"src":"6001:185:160","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30271,"nodeType":"Block","src":"6426:114:160","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30258,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30252,"src":"6444:5:160","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":30261,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":30259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6452:1:160","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"323535","id":30260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6455:3:160","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"6452:6:160","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"}},"src":"6444:14:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e74323536","id":30263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6460:42:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_d70dcf21692b3c91b4c5fbb89ed57f464aa42efbe5b0ea96c4acb7c080144227","typeString":"literal_string \"SafeCast: value doesn't fit in an int256\""},"value":"SafeCast: value doesn't fit in an int256"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d70dcf21692b3c91b4c5fbb89ed57f464aa42efbe5b0ea96c4acb7c080144227","typeString":"literal_string \"SafeCast: value doesn't fit in an int256\""}],"id":30257,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6436:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6436:67:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30265,"nodeType":"ExpressionStatement","src":"6436:67:160"},{"expression":{"arguments":[{"id":30268,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30252,"src":"6527:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":30267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6520:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":30266,"name":"int256","nodeType":"ElementaryTypeName","src":"6520:6:160","typeDescriptions":{}}},"id":30269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6520:13:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":30256,"id":30270,"nodeType":"Return","src":"6513:20:160"}]},"documentation":{"id":30250,"nodeType":"StructuredDocumentation","src":"6192:165:160","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256."},"id":30272,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nodeType":"FunctionDefinition","parameters":{"id":30253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30252,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":30272,"src":"6380:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30251,"name":"uint256","nodeType":"ElementaryTypeName","src":"6380:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6379:15:160"},"returnParameters":{"id":30256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30255,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30272,"src":"6418:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30254,"name":"int256","nodeType":"ElementaryTypeName","src":"6418:6:160","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6417:8:160"},"scope":30273,"src":"6362:178:160","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":30274,"src":"777:5765:160"}],"src":"33:6510:160"},"id":160},"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol","exportedSymbols":{"IERC20Permit":[30309]},"id":30310,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":30275,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:161"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":30276,"nodeType":"StructuredDocumentation","src":"66:482:161","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":30309,"linearizedBaseContracts":[30309],"name":"IERC20Permit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":30277,"nodeType":"StructuredDocumentation","src":"578:788:161","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":30294,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":30292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30279,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":30294,"src":"1387:13:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":30278,"name":"address","nodeType":"ElementaryTypeName","src":"1387:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":30281,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":30294,"src":"1402:15:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":30280,"name":"address","nodeType":"ElementaryTypeName","src":"1402:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":30283,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":30294,"src":"1419:13:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30282,"name":"uint256","nodeType":"ElementaryTypeName","src":"1419:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30285,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":30294,"src":"1434:16:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30284,"name":"uint256","nodeType":"ElementaryTypeName","src":"1434:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30287,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":30294,"src":"1452:7:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":30286,"name":"uint8","nodeType":"ElementaryTypeName","src":"1452:5:161","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":30289,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":30294,"src":"1461:9:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":30288,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1461:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":30291,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":30294,"src":"1472:9:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":30290,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1472:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1386:96:161"},"returnParameters":{"id":30293,"nodeType":"ParameterList","parameters":[],"src":"1491:0:161"},"scope":30309,"src":"1371:121:161","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":30295,"nodeType":"StructuredDocumentation","src":"1498:294:161","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":30302,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nodeType":"FunctionDefinition","parameters":{"id":30298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30297,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":30302,"src":"1813:13:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":30296,"name":"address","nodeType":"ElementaryTypeName","src":"1813:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1812:15:161"},"returnParameters":{"id":30301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30300,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30302,"src":"1851:7:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30299,"name":"uint256","nodeType":"ElementaryTypeName","src":"1851:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1850:9:161"},"scope":30309,"src":"1797:63:161","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":30303,"nodeType":"StructuredDocumentation","src":"1866:128:161","text":" @dev Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}."},"functionSelector":"3644e515","id":30308,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","parameters":{"id":30304,"nodeType":"ParameterList","parameters":[],"src":"2077:2:161"},"returnParameters":{"id":30307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30306,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30308,"src":"2103:7:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":30305,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2103:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2102:9:161"},"scope":30309,"src":"2052:60:161","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":30310,"src":"549:1565:161"}],"src":"33:2082:161"},"id":161},"openzeppelin-contracts-solc-0.7/introspection/ERC165.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/introspection/ERC165.sol","exportedSymbols":{"ERC165":[30366],"IERC165":[30378]},"id":30367,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":30311,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:162"},{"absolutePath":"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol","file":"./IERC165.sol","id":30312,"nodeType":"ImportDirective","scope":30367,"sourceUnit":30379,"src":"58:23:162","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":30314,"name":"IERC165","nodeType":"UserDefinedTypeName","referencedDeclaration":30378,"src":"283:7:162","typeDescriptions":{"typeIdentifier":"t_contract$_IERC165_$30378","typeString":"contract IERC165"}},"id":30315,"nodeType":"InheritanceSpecifier","src":"283:7:162"}],"contractDependencies":[30378],"contractKind":"contract","documentation":{"id":30313,"nodeType":"StructuredDocumentation","src":"83:171:162","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":30366,"linearizedBaseContracts":[30366,30378],"name":"ERC165","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":30318,"mutability":"constant","name":"_INTERFACE_ID_ERC165","nodeType":"VariableDeclaration","scope":30366,"src":"380:57:162","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":30316,"name":"bytes4","nodeType":"ElementaryTypeName","src":"380:6:162","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783031666663396137","id":30317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"427:10:162","typeDescriptions":{"typeIdentifier":"t_rational_33540519_by_1","typeString":"int_const 33540519"},"value":"0x01ffc9a7"},"visibility":"private"},{"constant":false,"documentation":{"id":30319,"nodeType":"StructuredDocumentation","src":"444:82:162","text":" @dev Mapping of interface ids to whether or not it's supported."},"id":30323,"mutability":"mutable","name":"_supportedInterfaces","nodeType":"VariableDeclaration","scope":30366,"src":"531:52:162","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"},"typeName":{"id":30322,"keyType":{"id":30320,"name":"bytes4","nodeType":"ElementaryTypeName","src":"539:6:162","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Mapping","src":"531:23:162","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"},"valueType":{"id":30321,"name":"bool","nodeType":"ElementaryTypeName","src":"549:4:162","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"body":{"id":30330,"nodeType":"Block","src":"605:193:162","statements":[{"expression":{"arguments":[{"id":30327,"name":"_INTERFACE_ID_ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30318,"src":"770:20:162","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":30326,"name":"_registerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30365,"src":"751:18:162","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4)"}},"id":30328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"751:40:162","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30329,"nodeType":"ExpressionStatement","src":"751:40:162"}]},"id":30331,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":30324,"nodeType":"ParameterList","parameters":[],"src":"602:2:162"},"returnParameters":{"id":30325,"nodeType":"ParameterList","parameters":[],"src":"605:0:162"},"scope":30366,"src":"590:208:162","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[30377],"body":{"id":30344,"nodeType":"Block","src":"1039:57:162","statements":[{"expression":{"baseExpression":{"id":30340,"name":"_supportedInterfaces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30323,"src":"1056:20:162","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":30342,"indexExpression":{"id":30341,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30334,"src":"1077:11:162","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1056:33:162","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":30339,"id":30343,"nodeType":"Return","src":"1049:40:162"}]},"documentation":{"id":30332,"nodeType":"StructuredDocumentation","src":"804:139:162","text":" @dev See {IERC165-supportsInterface}.\n Time complexity O(1), guaranteed to always use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":30345,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nodeType":"FunctionDefinition","overrides":{"id":30336,"nodeType":"OverrideSpecifier","overrides":[],"src":"1015:8:162"},"parameters":{"id":30335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30334,"mutability":"mutable","name":"interfaceId","nodeType":"VariableDeclaration","scope":30345,"src":"975:18:162","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":30333,"name":"bytes4","nodeType":"ElementaryTypeName","src":"975:6:162","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"974:20:162"},"returnParameters":{"id":30339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30338,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30345,"src":"1033:4:162","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":30337,"name":"bool","nodeType":"ElementaryTypeName","src":"1033:4:162","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1032:6:162"},"scope":30366,"src":"948:148:162","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":30364,"nodeType":"Block","src":"1555:133:162","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":30354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30352,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30348,"src":"1573:11:162","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30786666666666666666","id":30353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1588:10:162","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"1573:25:162","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433136353a20696e76616c696420696e74657266616365206964","id":30355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1600:30:162","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":30351,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1565:7:162","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1565:66:162","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30357,"nodeType":"ExpressionStatement","src":"1565:66:162"},{"expression":{"id":30362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":30358,"name":"_supportedInterfaces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30323,"src":"1641:20:162","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":30360,"indexExpression":{"id":30359,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30348,"src":"1662:11:162","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1641:33:162","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":30361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1677:4:162","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1641:40:162","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":30363,"nodeType":"ExpressionStatement","src":"1641:40:162"}]},"documentation":{"id":30346,"nodeType":"StructuredDocumentation","src":"1102:383:162","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":30365,"implemented":true,"kind":"function","modifiers":[],"name":"_registerInterface","nodeType":"FunctionDefinition","parameters":{"id":30349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30348,"mutability":"mutable","name":"interfaceId","nodeType":"VariableDeclaration","scope":30365,"src":"1518:18:162","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":30347,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1518:6:162","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1517:20:162"},"returnParameters":{"id":30350,"nodeType":"ParameterList","parameters":[],"src":"1555:0:162"},"scope":30366,"src":"1490:198:162","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":30367,"src":"255:1435:162"}],"src":"33:1658:162"},"id":162},"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol","exportedSymbols":{"IERC165":[30378]},"id":30379,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":30368,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:163"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":30369,"nodeType":"StructuredDocumentation","src":"58:279:163","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":30378,"linearizedBaseContracts":[30378],"name":"IERC165","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":30370,"nodeType":"StructuredDocumentation","src":"362:340:163","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":30377,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nodeType":"FunctionDefinition","parameters":{"id":30373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30372,"mutability":"mutable","name":"interfaceId","nodeType":"VariableDeclaration","scope":30377,"src":"734:18:163","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":30371,"name":"bytes4","nodeType":"ElementaryTypeName","src":"734:6:163","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"733:20:163"},"returnParameters":{"id":30376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30375,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30377,"src":"777:4:163","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":30374,"name":"bool","nodeType":"ElementaryTypeName","src":"777:4:163","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"776:6:163"},"scope":30378,"src":"707:76:163","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":30379,"src":"338:447:163"}],"src":"33:753:163"},"id":163},"openzeppelin-contracts-solc-0.7/math/SafeMath.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/math/SafeMath.sol","exportedSymbols":{"SafeMath":[30733]},"id":30734,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":30380,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:164"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":30381,"nodeType":"StructuredDocumentation","src":"58:563:164","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":30733,"linearizedBaseContracts":[30733],"name":"SafeMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":30411,"nodeType":"Block","src":"857:98:164","statements":[{"assignments":[30394],"declarations":[{"constant":false,"id":30394,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":30411,"src":"867:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30393,"name":"uint256","nodeType":"ElementaryTypeName","src":"867:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":30398,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30395,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30384,"src":"879:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":30396,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30386,"src":"883:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"879:5:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"867:17:164"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30399,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30394,"src":"898:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":30400,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30384,"src":"902:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"898:5:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":30406,"nodeType":"IfStatement","src":"894:28:164","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":30402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"913:5:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":30403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"920:1:164","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":30404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"912:10:164","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":30392,"id":30405,"nodeType":"Return","src":"905:17:164"}},{"expression":{"components":[{"hexValue":"74727565","id":30407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"940:4:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":30408,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30394,"src":"946:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":30409,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"939:9:164","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":30392,"id":30410,"nodeType":"Return","src":"932:16:164"}]},"documentation":{"id":30382,"nodeType":"StructuredDocumentation","src":"645:131:164","text":" @dev Returns the addition of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":30412,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nodeType":"FunctionDefinition","parameters":{"id":30387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30384,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":30412,"src":"797:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30383,"name":"uint256","nodeType":"ElementaryTypeName","src":"797:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30386,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":30412,"src":"808:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30385,"name":"uint256","nodeType":"ElementaryTypeName","src":"808:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"796:22:164"},"returnParameters":{"id":30392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30389,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30412,"src":"842:4:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":30388,"name":"bool","nodeType":"ElementaryTypeName","src":"842:4:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":30391,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30412,"src":"848:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30390,"name":"uint256","nodeType":"ElementaryTypeName","src":"848:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"841:15:164"},"scope":30733,"src":"781:174:164","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30438,"nodeType":"Block","src":"1177:75:164","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30424,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30417,"src":"1191:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":30425,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30415,"src":"1195:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1191:5:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":30431,"nodeType":"IfStatement","src":"1187:28:164","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":30427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1206:5:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":30428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1213:1:164","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":30429,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1205:10:164","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":30423,"id":30430,"nodeType":"Return","src":"1198:17:164"}},{"expression":{"components":[{"hexValue":"74727565","id":30432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1233:4:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30433,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30415,"src":"1239:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":30434,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30417,"src":"1243:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1239:5:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":30436,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1232:13:164","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":30423,"id":30437,"nodeType":"Return","src":"1225:20:164"}]},"documentation":{"id":30413,"nodeType":"StructuredDocumentation","src":"961:135:164","text":" @dev Returns the substraction of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":30439,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nodeType":"FunctionDefinition","parameters":{"id":30418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30415,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":30439,"src":"1117:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30414,"name":"uint256","nodeType":"ElementaryTypeName","src":"1117:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30417,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":30439,"src":"1128:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30416,"name":"uint256","nodeType":"ElementaryTypeName","src":"1128:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1116:22:164"},"returnParameters":{"id":30423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30420,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30439,"src":"1162:4:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":30419,"name":"bool","nodeType":"ElementaryTypeName","src":"1162:4:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":30422,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30439,"src":"1168:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30421,"name":"uint256","nodeType":"ElementaryTypeName","src":"1168:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1161:15:164"},"scope":30733,"src":"1101:151:164","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30479,"nodeType":"Block","src":"1476:359:164","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30451,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30442,"src":"1708:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":30452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1713:1:164","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1708:6:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":30458,"nodeType":"IfStatement","src":"1704:28:164","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":30454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1724:4:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":30455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1730:1:164","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":30456,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1723:9:164","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":30450,"id":30457,"nodeType":"Return","src":"1716:16:164"}},{"assignments":[30460],"declarations":[{"constant":false,"id":30460,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":30479,"src":"1742:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30459,"name":"uint256","nodeType":"ElementaryTypeName","src":"1742:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":30464,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30461,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30442,"src":"1754:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":30462,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30444,"src":"1758:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1754:5:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1742:17:164"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30465,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30460,"src":"1773:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":30466,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30442,"src":"1777:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1773:5:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":30468,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30444,"src":"1782:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1773:10:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":30474,"nodeType":"IfStatement","src":"1769:33:164","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":30470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1793:5:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":30471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1800:1:164","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":30472,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1792:10:164","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":30450,"id":30473,"nodeType":"Return","src":"1785:17:164"}},{"expression":{"components":[{"hexValue":"74727565","id":30475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1820:4:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":30476,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30460,"src":"1826:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":30477,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1819:9:164","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":30450,"id":30478,"nodeType":"Return","src":"1812:16:164"}]},"documentation":{"id":30440,"nodeType":"StructuredDocumentation","src":"1258:137:164","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":30480,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nodeType":"FunctionDefinition","parameters":{"id":30445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30442,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":30480,"src":"1416:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30441,"name":"uint256","nodeType":"ElementaryTypeName","src":"1416:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30444,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":30480,"src":"1427:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30443,"name":"uint256","nodeType":"ElementaryTypeName","src":"1427:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1415:22:164"},"returnParameters":{"id":30450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30447,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30480,"src":"1461:4:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":30446,"name":"bool","nodeType":"ElementaryTypeName","src":"1461:4:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":30449,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30480,"src":"1467:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30448,"name":"uint256","nodeType":"ElementaryTypeName","src":"1467:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1460:15:164"},"scope":30733,"src":"1400:435:164","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30506,"nodeType":"Block","src":"2060:76:164","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30492,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30485,"src":"2074:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":30493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2079:1:164","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2074:6:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":30499,"nodeType":"IfStatement","src":"2070:29:164","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":30495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2090:5:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":30496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2097:1:164","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":30497,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2089:10:164","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":30491,"id":30498,"nodeType":"Return","src":"2082:17:164"}},{"expression":{"components":[{"hexValue":"74727565","id":30500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2117:4:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30501,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30483,"src":"2123:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":30502,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30485,"src":"2127:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2123:5:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":30504,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2116:13:164","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":30491,"id":30505,"nodeType":"Return","src":"2109:20:164"}]},"documentation":{"id":30481,"nodeType":"StructuredDocumentation","src":"1841:138:164","text":" @dev Returns the division of two unsigned integers, with a division by zero flag.\n _Available since v3.4._"},"id":30507,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nodeType":"FunctionDefinition","parameters":{"id":30486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30483,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":30507,"src":"2000:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30482,"name":"uint256","nodeType":"ElementaryTypeName","src":"2000:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30485,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":30507,"src":"2011:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30484,"name":"uint256","nodeType":"ElementaryTypeName","src":"2011:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1999:22:164"},"returnParameters":{"id":30491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30488,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30507,"src":"2045:4:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":30487,"name":"bool","nodeType":"ElementaryTypeName","src":"2045:4:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":30490,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30507,"src":"2051:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30489,"name":"uint256","nodeType":"ElementaryTypeName","src":"2051:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2044:15:164"},"scope":30733,"src":"1984:152:164","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30533,"nodeType":"Block","src":"2371:76:164","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30519,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30512,"src":"2385:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":30520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2390:1:164","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2385:6:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":30526,"nodeType":"IfStatement","src":"2381:29:164","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":30522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2401:5:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":30523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2408:1:164","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":30524,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2400:10:164","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":30518,"id":30525,"nodeType":"Return","src":"2393:17:164"}},{"expression":{"components":[{"hexValue":"74727565","id":30527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2428:4:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30528,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30510,"src":"2434:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":30529,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30512,"src":"2438:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2434:5:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":30531,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2427:13:164","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":30518,"id":30532,"nodeType":"Return","src":"2420:20:164"}]},"documentation":{"id":30508,"nodeType":"StructuredDocumentation","src":"2142:148:164","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n _Available since v3.4._"},"id":30534,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nodeType":"FunctionDefinition","parameters":{"id":30513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30510,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":30534,"src":"2311:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30509,"name":"uint256","nodeType":"ElementaryTypeName","src":"2311:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30512,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":30534,"src":"2322:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30511,"name":"uint256","nodeType":"ElementaryTypeName","src":"2322:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2310:22:164"},"returnParameters":{"id":30518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30515,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30534,"src":"2356:4:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":30514,"name":"bool","nodeType":"ElementaryTypeName","src":"2356:4:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":30517,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30534,"src":"2362:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30516,"name":"uint256","nodeType":"ElementaryTypeName","src":"2362:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2355:15:164"},"scope":30733,"src":"2295:152:164","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30559,"nodeType":"Block","src":"2749:108:164","statements":[{"assignments":[30545],"declarations":[{"constant":false,"id":30545,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":30559,"src":"2759:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30544,"name":"uint256","nodeType":"ElementaryTypeName","src":"2759:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":30549,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30546,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30537,"src":"2771:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":30547,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30539,"src":"2775:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2771:5:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2759:17:164"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30551,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30545,"src":"2794:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":30552,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30537,"src":"2799:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2794:6:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206164646974696f6e206f766572666c6f77","id":30554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2802:29:164","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":30550,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2786:7:164","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2786:46:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30556,"nodeType":"ExpressionStatement","src":"2786:46:164"},{"expression":{"id":30557,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30545,"src":"2849:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":30543,"id":30558,"nodeType":"Return","src":"2842:8:164"}]},"documentation":{"id":30535,"nodeType":"StructuredDocumentation","src":"2453:224:164","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":30560,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":30540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30537,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":30560,"src":"2695:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30536,"name":"uint256","nodeType":"ElementaryTypeName","src":"2695:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30539,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":30560,"src":"2706:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30538,"name":"uint256","nodeType":"ElementaryTypeName","src":"2706:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2694:22:164"},"returnParameters":{"id":30543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30542,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30560,"src":"2740:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30541,"name":"uint256","nodeType":"ElementaryTypeName","src":"2740:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2739:9:164"},"scope":30733,"src":"2682:175:164","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30581,"nodeType":"Block","src":"3195:88:164","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30571,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30565,"src":"3213:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":30572,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30563,"src":"3218:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3213:6:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","id":30574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3221:32:164","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":30570,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3205:7:164","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3205:49:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30576,"nodeType":"ExpressionStatement","src":"3205:49:164"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30577,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30563,"src":"3271:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":30578,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30565,"src":"3275:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3271:5:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":30569,"id":30580,"nodeType":"Return","src":"3264:12:164"}]},"documentation":{"id":30561,"nodeType":"StructuredDocumentation","src":"2863:260:164","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":30582,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":30566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30563,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":30582,"src":"3141:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30562,"name":"uint256","nodeType":"ElementaryTypeName","src":"3141:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30565,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":30582,"src":"3152:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30564,"name":"uint256","nodeType":"ElementaryTypeName","src":"3152:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3140:22:164"},"returnParameters":{"id":30569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30568,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30582,"src":"3186:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30567,"name":"uint256","nodeType":"ElementaryTypeName","src":"3186:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3185:9:164"},"scope":30733,"src":"3128:155:164","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30615,"nodeType":"Block","src":"3597:148:164","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30592,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30585,"src":"3611:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":30593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3616:1:164","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3611:6:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":30597,"nodeType":"IfStatement","src":"3607:20:164","trueBody":{"expression":{"hexValue":"30","id":30595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3626:1:164","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":30591,"id":30596,"nodeType":"Return","src":"3619:8:164"}},{"assignments":[30599],"declarations":[{"constant":false,"id":30599,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":30615,"src":"3637:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30598,"name":"uint256","nodeType":"ElementaryTypeName","src":"3637:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":30603,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30600,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30585,"src":"3649:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":30601,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30587,"src":"3653:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3649:5:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3637:17:164"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30605,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30599,"src":"3672:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":30606,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30585,"src":"3676:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3672:5:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":30608,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30587,"src":"3681:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3672:10:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","id":30610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3684:35:164","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":30604,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3664:7:164","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3664:56:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30612,"nodeType":"ExpressionStatement","src":"3664:56:164"},{"expression":{"id":30613,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30599,"src":"3737:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":30591,"id":30614,"nodeType":"Return","src":"3730:8:164"}]},"documentation":{"id":30583,"nodeType":"StructuredDocumentation","src":"3289:236:164","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":30616,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":30588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30585,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":30616,"src":"3543:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30584,"name":"uint256","nodeType":"ElementaryTypeName","src":"3543:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30587,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":30616,"src":"3554:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30586,"name":"uint256","nodeType":"ElementaryTypeName","src":"3554:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3542:22:164"},"returnParameters":{"id":30591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30590,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30616,"src":"3588:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30589,"name":"uint256","nodeType":"ElementaryTypeName","src":"3588:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3587:9:164"},"scope":30733,"src":"3530:215:164","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30637,"nodeType":"Block","src":"4276:83:164","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30627,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30621,"src":"4294:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":30628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4298:1:164","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4294:5:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206469766973696f6e206279207a65726f","id":30630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4301:28:164","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":30626,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4286:7:164","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4286:44:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30632,"nodeType":"ExpressionStatement","src":"4286:44:164"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30633,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30619,"src":"4347:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":30634,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30621,"src":"4351:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4347:5:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":30625,"id":30636,"nodeType":"Return","src":"4340:12:164"}]},"documentation":{"id":30617,"nodeType":"StructuredDocumentation","src":"3751:453:164","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":30638,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":30622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30619,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":30638,"src":"4222:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30618,"name":"uint256","nodeType":"ElementaryTypeName","src":"4222:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30621,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":30638,"src":"4233:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30620,"name":"uint256","nodeType":"ElementaryTypeName","src":"4233:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4221:22:164"},"returnParameters":{"id":30625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30624,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30638,"src":"4267:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30623,"name":"uint256","nodeType":"ElementaryTypeName","src":"4267:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4266:9:164"},"scope":30733,"src":"4209:150:164","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30659,"nodeType":"Block","src":"4879:81:164","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30649,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30643,"src":"4897:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":30650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4901:1:164","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4897:5:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206d6f64756c6f206279207a65726f","id":30652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4904:26:164","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":30648,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4889:7:164","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4889:42:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30654,"nodeType":"ExpressionStatement","src":"4889:42:164"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30655,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30641,"src":"4948:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":30656,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30643,"src":"4952:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4948:5:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":30647,"id":30658,"nodeType":"Return","src":"4941:12:164"}]},"documentation":{"id":30639,"nodeType":"StructuredDocumentation","src":"4365:442:164","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":30660,"implemented":true,"kind":"function","modifiers":[],"name":"mod","nodeType":"FunctionDefinition","parameters":{"id":30644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30641,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":30660,"src":"4825:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30640,"name":"uint256","nodeType":"ElementaryTypeName","src":"4825:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30643,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":30660,"src":"4836:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30642,"name":"uint256","nodeType":"ElementaryTypeName","src":"4836:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4824:22:164"},"returnParameters":{"id":30647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30646,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30660,"src":"4870:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30645,"name":"uint256","nodeType":"ElementaryTypeName","src":"4870:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4869:9:164"},"scope":30733,"src":"4812:148:164","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30683,"nodeType":"Block","src":"5519:68:164","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30673,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30665,"src":"5537:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":30674,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30663,"src":"5542:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5537:6:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":30676,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30667,"src":"5545:12:164","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":30672,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5529:7:164","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5529:29:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30678,"nodeType":"ExpressionStatement","src":"5529:29:164"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30679,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30663,"src":"5575:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":30680,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30665,"src":"5579:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5575:5:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":30671,"id":30682,"nodeType":"Return","src":"5568:12:164"}]},"documentation":{"id":30661,"nodeType":"StructuredDocumentation","src":"4966:453:164","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":30684,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":30668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30663,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":30684,"src":"5437:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30662,"name":"uint256","nodeType":"ElementaryTypeName","src":"5437:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30665,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":30684,"src":"5448:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30664,"name":"uint256","nodeType":"ElementaryTypeName","src":"5448:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30667,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":30684,"src":"5459:26:164","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":30666,"name":"string","nodeType":"ElementaryTypeName","src":"5459:6:164","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5436:50:164"},"returnParameters":{"id":30671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30670,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30684,"src":"5510:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30669,"name":"uint256","nodeType":"ElementaryTypeName","src":"5510:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5509:9:164"},"scope":30733,"src":"5424:163:164","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30707,"nodeType":"Block","src":"6339:67:164","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30697,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30689,"src":"6357:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":30698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6361:1:164","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6357:5:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":30700,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30691,"src":"6364:12:164","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":30696,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6349:7:164","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6349:28:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30702,"nodeType":"ExpressionStatement","src":"6349:28:164"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30703,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30687,"src":"6394:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":30704,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30689,"src":"6398:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6394:5:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":30695,"id":30706,"nodeType":"Return","src":"6387:12:164"}]},"documentation":{"id":30685,"nodeType":"StructuredDocumentation","src":"5593:646:164","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":30708,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":30692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30687,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":30708,"src":"6257:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30686,"name":"uint256","nodeType":"ElementaryTypeName","src":"6257:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30689,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":30708,"src":"6268:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30688,"name":"uint256","nodeType":"ElementaryTypeName","src":"6268:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30691,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":30708,"src":"6279:26:164","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":30690,"name":"string","nodeType":"ElementaryTypeName","src":"6279:6:164","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6256:50:164"},"returnParameters":{"id":30695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30694,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30708,"src":"6330:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30693,"name":"uint256","nodeType":"ElementaryTypeName","src":"6330:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6329:9:164"},"scope":30733,"src":"6244:162:164","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30731,"nodeType":"Block","src":"7147:67:164","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30721,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30713,"src":"7165:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":30722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7169:1:164","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7165:5:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":30724,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30715,"src":"7172:12:164","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":30720,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7157:7:164","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7157:28:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30726,"nodeType":"ExpressionStatement","src":"7157:28:164"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30727,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30711,"src":"7202:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":30728,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30713,"src":"7206:1:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7202:5:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":30719,"id":30730,"nodeType":"Return","src":"7195:12:164"}]},"documentation":{"id":30709,"nodeType":"StructuredDocumentation","src":"6412:635:164","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":30732,"implemented":true,"kind":"function","modifiers":[],"name":"mod","nodeType":"FunctionDefinition","parameters":{"id":30716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30711,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":30732,"src":"7065:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30710,"name":"uint256","nodeType":"ElementaryTypeName","src":"7065:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30713,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":30732,"src":"7076:9:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30712,"name":"uint256","nodeType":"ElementaryTypeName","src":"7076:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30715,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":30732,"src":"7087:26:164","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":30714,"name":"string","nodeType":"ElementaryTypeName","src":"7087:6:164","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7064:50:164"},"returnParameters":{"id":30719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30718,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30732,"src":"7138:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30717,"name":"uint256","nodeType":"ElementaryTypeName","src":"7138:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7137:9:164"},"scope":30733,"src":"7052:162:164","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":30734,"src":"622:6594:164"}],"src":"33:7184:164"},"id":164},"openzeppelin-contracts-solc-0.7/math/SignedSafeMath.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/math/SignedSafeMath.sol","exportedSymbols":{"SignedSafeMath":[30912]},"id":30913,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":30735,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:165"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":30736,"nodeType":"StructuredDocumentation","src":"58:104:165","text":" @title SignedSafeMath\n @dev Signed math operations with safety checks that revert on error."},"fullyImplemented":true,"id":30912,"linearizedBaseContracts":[30912],"name":"SignedSafeMath","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":30742,"mutability":"constant","name":"_INT256_MIN","nodeType":"VariableDeclaration","scope":30912,"src":"192:45:165","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30737,"name":"int256","nodeType":"ElementaryTypeName","src":"192:6:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"commonType":{"typeIdentifier":"t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const -578...(70 digits omitted)...9968"},"id":30741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":30739,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"230:2:165","subExpression":{"hexValue":"32","id":30738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"231:1:165","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":30740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"234:3:165","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"230:7:165","typeDescriptions":{"typeIdentifier":"t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const -578...(70 digits omitted)...9968"}},"visibility":"private"},{"body":{"id":30790,"nodeType":"Block","src":"547:490:165","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30752,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30745,"src":"779:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":30753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"784:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"779:6:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":30758,"nodeType":"IfStatement","src":"775:45:165","trueBody":{"id":30757,"nodeType":"Block","src":"787:33:165","statements":[{"expression":{"hexValue":"30","id":30755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"808:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":30751,"id":30756,"nodeType":"Return","src":"801:8:165"}]}},{"expression":{"arguments":[{"id":30769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"838:30:165","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":30767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30760,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30745,"src":"840:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":30762,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"845:2:165","subExpression":{"hexValue":"31","id":30761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"846:1:165","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:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30764,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30747,"src":"851:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":30765,"name":"_INT256_MIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30742,"src":"856:11:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"851:16:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"840:27:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":30768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"839:29:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","id":30770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"870:41:165","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":30759,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"830:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"830:82:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30772,"nodeType":"ExpressionStatement","src":"830:82:165"},{"assignments":[30774],"declarations":[{"constant":false,"id":30774,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":30790,"src":"923:8:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30773,"name":"int256","nodeType":"ElementaryTypeName","src":"923:6:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":30778,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30745,"src":"934:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":30776,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30747,"src":"938:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"934:5:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"923:16:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30780,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30774,"src":"957:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":30781,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30745,"src":"961:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"957:5:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":30783,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30747,"src":"966:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"957:10:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","id":30785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"969:41:165","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":30779,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"949:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"949:62:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30787,"nodeType":"ExpressionStatement","src":"949:62:165"},{"expression":{"id":30788,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30774,"src":"1029:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":30751,"id":30789,"nodeType":"Return","src":"1022:8:165"}]},"documentation":{"id":30743,"nodeType":"StructuredDocumentation","src":"244:234:165","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":30791,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":30748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30745,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":30791,"src":"496:8:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30744,"name":"int256","nodeType":"ElementaryTypeName","src":"496:6:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":30747,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":30791,"src":"506:8:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30746,"name":"int256","nodeType":"ElementaryTypeName","src":"506:6:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"495:20:165"},"returnParameters":{"id":30751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30750,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30791,"src":"539:6:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30749,"name":"int256","nodeType":"ElementaryTypeName","src":"539:6:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"538:8:165"},"scope":30912,"src":"483:554:165","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30830,"nodeType":"Block","src":"1561:200:165","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30802,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30796,"src":"1579:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":30803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1584:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1579:6:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e6564536166654d6174683a206469766973696f6e206279207a65726f","id":30805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1587:34:165","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":30801,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1571:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1571:51:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30807,"nodeType":"ExpressionStatement","src":"1571:51:165"},{"expression":{"arguments":[{"id":30818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1640:30:165","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":30816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30809,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30796,"src":"1642:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":30811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1647:2:165","subExpression":{"hexValue":"31","id":30810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1648:1:165","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:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30813,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30794,"src":"1653:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":30814,"name":"_INT256_MIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30742,"src":"1658:11:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1653:16:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1642:27:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":30817,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1641:29:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f77","id":30819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1672:35:165","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":30808,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1632:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1632:76:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30821,"nodeType":"ExpressionStatement","src":"1632:76:165"},{"assignments":[30823],"declarations":[{"constant":false,"id":30823,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":30830,"src":"1719:8:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30822,"name":"int256","nodeType":"ElementaryTypeName","src":"1719:6:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":30827,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30824,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30794,"src":"1730:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":30825,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30796,"src":"1734:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1730:5:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"1719:16:165"},{"expression":{"id":30828,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30823,"src":"1753:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":30800,"id":30829,"nodeType":"Return","src":"1746:8:165"}]},"documentation":{"id":30792,"nodeType":"StructuredDocumentation","src":"1043:449:165","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":30831,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":30797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30794,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":30831,"src":"1510:8:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30793,"name":"int256","nodeType":"ElementaryTypeName","src":"1510:6:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":30796,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":30831,"src":"1520:8:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30795,"name":"int256","nodeType":"ElementaryTypeName","src":"1520:6:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1509:20:165"},"returnParameters":{"id":30800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30799,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30831,"src":"1553:6:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30798,"name":"int256","nodeType":"ElementaryTypeName","src":"1553:6:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1552:8:165"},"scope":30912,"src":"1497:264:165","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30870,"nodeType":"Block","src":"2064:149:165","statements":[{"assignments":[30842],"declarations":[{"constant":false,"id":30842,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":30870,"src":"2074:8:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30841,"name":"int256","nodeType":"ElementaryTypeName","src":"2074:6:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":30846,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30843,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30834,"src":"2085:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":30844,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30836,"src":"2089:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2085:5:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"2074:16:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":30864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":30854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30848,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30836,"src":"2109:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":30849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2114:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2109:6:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30851,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30842,"src":"2119:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":30852,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30834,"src":"2124:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2119:6:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2109:16:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":30855,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2108:18:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":30862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30856,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30836,"src":"2131:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":30857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2135:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2131:5:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30859,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30842,"src":"2140:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":30860,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30834,"src":"2144:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2140:5:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2131:14:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":30863,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2130:16:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2108:38:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77","id":30865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2148:38:165","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":30847,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2100:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2100:87:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30867,"nodeType":"ExpressionStatement","src":"2100:87:165"},{"expression":{"id":30868,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30842,"src":"2205:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":30840,"id":30869,"nodeType":"Return","src":"2198:8:165"}]},"documentation":{"id":30832,"nodeType":"StructuredDocumentation","src":"1767:228:165","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":30871,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":30837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30834,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":30871,"src":"2013:8:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30833,"name":"int256","nodeType":"ElementaryTypeName","src":"2013:6:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":30836,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":30871,"src":"2023:8:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30835,"name":"int256","nodeType":"ElementaryTypeName","src":"2023:6:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2012:20:165"},"returnParameters":{"id":30840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30839,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30871,"src":"2056:6:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30838,"name":"int256","nodeType":"ElementaryTypeName","src":"2056:6:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2055:8:165"},"scope":30912,"src":"2000:213:165","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30910,"nodeType":"Block","src":"2510:146:165","statements":[{"assignments":[30882],"declarations":[{"constant":false,"id":30882,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":30910,"src":"2520:8:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30881,"name":"int256","nodeType":"ElementaryTypeName","src":"2520:6:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":30886,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30883,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30874,"src":"2531:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":30884,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30876,"src":"2535:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2531:5:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"2520:16:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":30904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":30894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30888,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30876,"src":"2555:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":30889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2560:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2555:6:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30891,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30882,"src":"2565:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":30892,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30874,"src":"2570:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2565:6:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2555:16:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":30895,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2554:18:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":30902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30896,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30876,"src":"2577:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":30897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2581:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2577:5:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":30901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30899,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30882,"src":"2586:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":30900,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30874,"src":"2590:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2586:5:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2577:14:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":30903,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2576:16:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2554:38:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77","id":30905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2594:35:165","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":30887,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2546:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2546:84:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30907,"nodeType":"ExpressionStatement","src":"2546:84:165"},{"expression":{"id":30908,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30882,"src":"2648:1:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":30880,"id":30909,"nodeType":"Return","src":"2641:8:165"}]},"documentation":{"id":30872,"nodeType":"StructuredDocumentation","src":"2219:222:165","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":30911,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":30877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30874,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":30911,"src":"2459:8:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30873,"name":"int256","nodeType":"ElementaryTypeName","src":"2459:6:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":30876,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":30911,"src":"2469:8:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30875,"name":"int256","nodeType":"ElementaryTypeName","src":"2469:6:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2458:20:165"},"returnParameters":{"id":30880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30879,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":30911,"src":"2502:6:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":30878,"name":"int256","nodeType":"ElementaryTypeName","src":"2502:6:165","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2501:8:165"},"scope":30912,"src":"2446:210:165","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":30913,"src":"163:2495:165"}],"src":"33:2626:165"},"id":165},"openzeppelin-contracts-solc-0.7/proxy/Clones.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/proxy/Clones.sol","exportedSymbols":{"Clones":[30992]},"id":30993,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":30914,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:166"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":30915,"nodeType":"StructuredDocumentation","src":"66:629:166","text":" @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\n deploying minimal proxy contracts, also known as \"clones\".\n > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\n > a minimal bytecode implementation that delegates all calls to a known, fixed address.\n The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\n (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\n deterministic method.\n _Available since v3.4._"},"fullyImplemented":true,"id":30992,"linearizedBaseContracts":[30992],"name":"Clones","nodeType":"ContractDefinition","nodes":[{"body":{"id":30934,"nodeType":"Block","src":"973:488:166","statements":[{"AST":{"nodeType":"YulBlock","src":"1048:340:166","statements":[{"nodeType":"YulVariableDeclaration","src":"1062:22:166","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1079:4:166","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1073:5:166"},"nodeType":"YulFunctionCall","src":"1073:11:166"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"1066:3:166","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1104:3:166"},{"kind":"number","nodeType":"YulLiteral","src":"1109:66:166","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1097:6:166"},"nodeType":"YulFunctionCall","src":"1097:79:166"},"nodeType":"YulExpressionStatement","src":"1097:79:166"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1200:3:166"},{"kind":"number","nodeType":"YulLiteral","src":"1205:4:166","type":"","value":"0x14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1196:3:166"},"nodeType":"YulFunctionCall","src":"1196:14:166"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1216:4:166","type":"","value":"0x60"},{"name":"master","nodeType":"YulIdentifier","src":"1222:6:166"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1212:3:166"},"nodeType":"YulFunctionCall","src":"1212:17:166"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1189:6:166"},"nodeType":"YulFunctionCall","src":"1189:41:166"},"nodeType":"YulExpressionStatement","src":"1189:41:166"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1254:3:166"},{"kind":"number","nodeType":"YulLiteral","src":"1259:4:166","type":"","value":"0x28"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1250:3:166"},"nodeType":"YulFunctionCall","src":"1250:14:166"},{"kind":"number","nodeType":"YulLiteral","src":"1266:66:166","type":"","value":"0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1243:6:166"},"nodeType":"YulFunctionCall","src":"1243:90:166"},"nodeType":"YulExpressionStatement","src":"1243:90:166"},{"nodeType":"YulAssignment","src":"1346:32:166","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1365:1:166","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"1368:3:166"},{"kind":"number","nodeType":"YulLiteral","src":"1373:4:166","type":"","value":"0x37"}],"functionName":{"name":"create","nodeType":"YulIdentifier","src":"1358:6:166"},"nodeType":"YulFunctionCall","src":"1358:20:166"},"variableNames":[{"name":"instance","nodeType":"YulIdentifier","src":"1346:8:166"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":30921,"isOffset":false,"isSlot":false,"src":"1346:8:166","valueSize":1},{"declaration":30918,"isOffset":false,"isSlot":false,"src":"1222:6:166","valueSize":1}],"id":30923,"nodeType":"InlineAssembly","src":"1039:349:166"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":30930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30925,"name":"instance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30921,"src":"1405:8:166","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":30928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1425:1:166","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":30927,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1417:7:166","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":30926,"name":"address","nodeType":"ElementaryTypeName","src":"1417:7:166","typeDescriptions":{}}},"id":30929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1417:10:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1405:22:166","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313136373a20637265617465206661696c6564","id":30931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1429:24:166","typeDescriptions":{"typeIdentifier":"t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335","typeString":"literal_string \"ERC1167: create failed\""},"value":"ERC1167: create failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335","typeString":"literal_string \"ERC1167: create failed\""}],"id":30924,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1397:7:166","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1397:57:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30933,"nodeType":"ExpressionStatement","src":"1397:57:166"}]},"documentation":{"id":30916,"nodeType":"StructuredDocumentation","src":"717:184:166","text":" @dev Deploys and returns the address of a clone that mimics the behaviour of `master`.\n This function uses the create opcode, which should never revert."},"id":30935,"implemented":true,"kind":"function","modifiers":[],"name":"clone","nodeType":"FunctionDefinition","parameters":{"id":30919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30918,"mutability":"mutable","name":"master","nodeType":"VariableDeclaration","scope":30935,"src":"921:14:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":30917,"name":"address","nodeType":"ElementaryTypeName","src":"921:7:166","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"920:16:166"},"returnParameters":{"id":30922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30921,"mutability":"mutable","name":"instance","nodeType":"VariableDeclaration","scope":30935,"src":"955:16:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":30920,"name":"address","nodeType":"ElementaryTypeName","src":"955:7:166","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"954:18:166"},"scope":30992,"src":"906:555:166","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":30956,"nodeType":"Block","src":"1914:496:166","statements":[{"AST":{"nodeType":"YulBlock","src":"1989:347:166","statements":[{"nodeType":"YulVariableDeclaration","src":"2003:22:166","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2020:4:166","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2014:5:166"},"nodeType":"YulFunctionCall","src":"2014:11:166"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"2007:3:166","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2045:3:166"},{"kind":"number","nodeType":"YulLiteral","src":"2050:66:166","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2038:6:166"},"nodeType":"YulFunctionCall","src":"2038:79:166"},"nodeType":"YulExpressionStatement","src":"2038:79:166"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2141:3:166"},{"kind":"number","nodeType":"YulLiteral","src":"2146:4:166","type":"","value":"0x14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2137:3:166"},"nodeType":"YulFunctionCall","src":"2137:14:166"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2157:4:166","type":"","value":"0x60"},{"name":"master","nodeType":"YulIdentifier","src":"2163:6:166"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2153:3:166"},"nodeType":"YulFunctionCall","src":"2153:17:166"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2130:6:166"},"nodeType":"YulFunctionCall","src":"2130:41:166"},"nodeType":"YulExpressionStatement","src":"2130:41:166"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2195:3:166"},{"kind":"number","nodeType":"YulLiteral","src":"2200:4:166","type":"","value":"0x28"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2191:3:166"},"nodeType":"YulFunctionCall","src":"2191:14:166"},{"kind":"number","nodeType":"YulLiteral","src":"2207:66:166","type":"","value":"0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2184:6:166"},"nodeType":"YulFunctionCall","src":"2184:90:166"},"nodeType":"YulExpressionStatement","src":"2184:90:166"},{"nodeType":"YulAssignment","src":"2287:39:166","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2307:1:166","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"2310:3:166"},{"kind":"number","nodeType":"YulLiteral","src":"2315:4:166","type":"","value":"0x37"},{"name":"salt","nodeType":"YulIdentifier","src":"2321:4:166"}],"functionName":{"name":"create2","nodeType":"YulIdentifier","src":"2299:7:166"},"nodeType":"YulFunctionCall","src":"2299:27:166"},"variableNames":[{"name":"instance","nodeType":"YulIdentifier","src":"2287:8:166"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":30943,"isOffset":false,"isSlot":false,"src":"2287:8:166","valueSize":1},{"declaration":30938,"isOffset":false,"isSlot":false,"src":"2163:6:166","valueSize":1},{"declaration":30940,"isOffset":false,"isSlot":false,"src":"2321:4:166","valueSize":1}],"id":30945,"nodeType":"InlineAssembly","src":"1980:356:166"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":30952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30947,"name":"instance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30943,"src":"2353:8:166","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":30950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2373:1:166","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":30949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2365:7:166","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":30948,"name":"address","nodeType":"ElementaryTypeName","src":"2365:7:166","typeDescriptions":{}}},"id":30951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2365:10:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2353:22:166","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313136373a2063726561746532206661696c6564","id":30953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2377:25:166","typeDescriptions":{"typeIdentifier":"t_stringliteral_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73","typeString":"literal_string \"ERC1167: create2 failed\""},"value":"ERC1167: create2 failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73","typeString":"literal_string \"ERC1167: create2 failed\""}],"id":30946,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2345:7:166","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":30954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2345:58:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30955,"nodeType":"ExpressionStatement","src":"2345:58:166"}]},"documentation":{"id":30936,"nodeType":"StructuredDocumentation","src":"1467:348:166","text":" @dev Deploys and returns the address of a clone that mimics the behaviour of `master`.\n This function uses the create2 opcode and a `salt` to deterministically deploy\n the clone. Using the same `master` and `salt` multiple time will revert, since\n the clones cannot be deployed twice at the same address."},"id":30957,"implemented":true,"kind":"function","modifiers":[],"name":"cloneDeterministic","nodeType":"FunctionDefinition","parameters":{"id":30941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30938,"mutability":"mutable","name":"master","nodeType":"VariableDeclaration","scope":30957,"src":"1848:14:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":30937,"name":"address","nodeType":"ElementaryTypeName","src":"1848:7:166","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":30940,"mutability":"mutable","name":"salt","nodeType":"VariableDeclaration","scope":30957,"src":"1864:12:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":30939,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1864:7:166","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1847:30:166"},"returnParameters":{"id":30944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30943,"mutability":"mutable","name":"instance","nodeType":"VariableDeclaration","scope":30957,"src":"1896:16:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":30942,"name":"address","nodeType":"ElementaryTypeName","src":"1896:7:166","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1895:18:166"},"scope":30992,"src":"1820:590:166","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":30970,"nodeType":"Block","src":"2647:587:166","statements":[{"AST":{"nodeType":"YulBlock","src":"2722:506:166","statements":[{"nodeType":"YulVariableDeclaration","src":"2736:22:166","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2753:4:166","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2747:5:166"},"nodeType":"YulFunctionCall","src":"2747:11:166"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"2740:3:166","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2778:3:166"},{"kind":"number","nodeType":"YulLiteral","src":"2783:66:166","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2771:6:166"},"nodeType":"YulFunctionCall","src":"2771:79:166"},"nodeType":"YulExpressionStatement","src":"2771:79:166"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2874:3:166"},{"kind":"number","nodeType":"YulLiteral","src":"2879:4:166","type":"","value":"0x14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2870:3:166"},"nodeType":"YulFunctionCall","src":"2870:14:166"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2890:4:166","type":"","value":"0x60"},{"name":"master","nodeType":"YulIdentifier","src":"2896:6:166"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2886:3:166"},"nodeType":"YulFunctionCall","src":"2886:17:166"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2863:6:166"},"nodeType":"YulFunctionCall","src":"2863:41:166"},"nodeType":"YulExpressionStatement","src":"2863:41:166"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2928:3:166"},{"kind":"number","nodeType":"YulLiteral","src":"2933:4:166","type":"","value":"0x28"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2924:3:166"},"nodeType":"YulFunctionCall","src":"2924:14:166"},{"kind":"number","nodeType":"YulLiteral","src":"2940:66:166","type":"","value":"0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2917:6:166"},"nodeType":"YulFunctionCall","src":"2917:90:166"},"nodeType":"YulExpressionStatement","src":"2917:90:166"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3031:3:166"},{"kind":"number","nodeType":"YulLiteral","src":"3036:4:166","type":"","value":"0x38"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3027:3:166"},"nodeType":"YulFunctionCall","src":"3027:14:166"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3047:4:166","type":"","value":"0x60"},{"name":"deployer","nodeType":"YulIdentifier","src":"3053:8:166"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3043:3:166"},"nodeType":"YulFunctionCall","src":"3043:19:166"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3020:6:166"},"nodeType":"YulFunctionCall","src":"3020:43:166"},"nodeType":"YulExpressionStatement","src":"3020:43:166"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3087:3:166"},{"kind":"number","nodeType":"YulLiteral","src":"3092:4:166","type":"","value":"0x4c"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3083:3:166"},"nodeType":"YulFunctionCall","src":"3083:14:166"},{"name":"salt","nodeType":"YulIdentifier","src":"3099:4:166"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3076:6:166"},"nodeType":"YulFunctionCall","src":"3076:28:166"},"nodeType":"YulExpressionStatement","src":"3076:28:166"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3128:3:166"},{"kind":"number","nodeType":"YulLiteral","src":"3133:4:166","type":"","value":"0x6c"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3124:3:166"},"nodeType":"YulFunctionCall","src":"3124:14:166"},{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3150:3:166"},{"kind":"number","nodeType":"YulLiteral","src":"3155:4:166","type":"","value":"0x37"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"3140:9:166"},"nodeType":"YulFunctionCall","src":"3140:20:166"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3117:6:166"},"nodeType":"YulFunctionCall","src":"3117:44:166"},"nodeType":"YulExpressionStatement","src":"3117:44:166"},{"nodeType":"YulAssignment","src":"3174:44:166","value":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3201:3:166"},{"kind":"number","nodeType":"YulLiteral","src":"3206:4:166","type":"","value":"0x37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3197:3:166"},"nodeType":"YulFunctionCall","src":"3197:14:166"},{"kind":"number","nodeType":"YulLiteral","src":"3213:4:166","type":"","value":"0x55"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"3187:9:166"},"nodeType":"YulFunctionCall","src":"3187:31:166"},"variableNames":[{"name":"predicted","nodeType":"YulIdentifier","src":"3174:9:166"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":30964,"isOffset":false,"isSlot":false,"src":"3053:8:166","valueSize":1},{"declaration":30960,"isOffset":false,"isSlot":false,"src":"2896:6:166","valueSize":1},{"declaration":30967,"isOffset":false,"isSlot":false,"src":"3174:9:166","valueSize":1},{"declaration":30962,"isOffset":false,"isSlot":false,"src":"3099:4:166","valueSize":1}],"id":30969,"nodeType":"InlineAssembly","src":"2713:515:166"}]},"documentation":{"id":30958,"nodeType":"StructuredDocumentation","src":"2416:99:166","text":" @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}."},"id":30971,"implemented":true,"kind":"function","modifiers":[],"name":"predictDeterministicAddress","nodeType":"FunctionDefinition","parameters":{"id":30965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30960,"mutability":"mutable","name":"master","nodeType":"VariableDeclaration","scope":30971,"src":"2557:14:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":30959,"name":"address","nodeType":"ElementaryTypeName","src":"2557:7:166","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":30962,"mutability":"mutable","name":"salt","nodeType":"VariableDeclaration","scope":30971,"src":"2573:12:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":30961,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2573:7:166","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":30964,"mutability":"mutable","name":"deployer","nodeType":"VariableDeclaration","scope":30971,"src":"2587:16:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":30963,"name":"address","nodeType":"ElementaryTypeName","src":"2587:7:166","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2556:48:166"},"returnParameters":{"id":30968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30967,"mutability":"mutable","name":"predicted","nodeType":"VariableDeclaration","scope":30971,"src":"2628:17:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":30966,"name":"address","nodeType":"ElementaryTypeName","src":"2628:7:166","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2627:19:166"},"scope":30992,"src":"2520:714:166","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30990,"nodeType":"Block","src":"3453:80:166","statements":[{"expression":{"arguments":[{"id":30982,"name":"master","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30974,"src":"3498:6:166","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":30983,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30976,"src":"3506:4:166","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":30986,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3520:4:166","typeDescriptions":{"typeIdentifier":"t_contract$_Clones_$30992","typeString":"library Clones"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Clones_$30992","typeString":"library Clones"}],"id":30985,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3512:7:166","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":30984,"name":"address","nodeType":"ElementaryTypeName","src":"3512:7:166","typeDescriptions":{}}},"id":30987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3512:13:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":30981,"name":"predictDeterministicAddress","nodeType":"Identifier","overloadedDeclarations":[30971,30991],"referencedDeclaration":30971,"src":"3470:27:166","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_address_$returns$_t_address_$","typeString":"function (address,bytes32,address) pure returns (address)"}},"id":30988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3470:56:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":30980,"id":30989,"nodeType":"Return","src":"3463:63:166"}]},"documentation":{"id":30972,"nodeType":"StructuredDocumentation","src":"3240:99:166","text":" @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}."},"id":30991,"implemented":true,"kind":"function","modifiers":[],"name":"predictDeterministicAddress","nodeType":"FunctionDefinition","parameters":{"id":30977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30974,"mutability":"mutable","name":"master","nodeType":"VariableDeclaration","scope":30991,"src":"3381:14:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":30973,"name":"address","nodeType":"ElementaryTypeName","src":"3381:7:166","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":30976,"mutability":"mutable","name":"salt","nodeType":"VariableDeclaration","scope":30991,"src":"3397:12:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":30975,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3397:7:166","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3380:30:166"},"returnParameters":{"id":30980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30979,"mutability":"mutable","name":"predicted","nodeType":"VariableDeclaration","scope":30991,"src":"3434:17:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":30978,"name":"address","nodeType":"ElementaryTypeName","src":"3434:7:166","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3433:19:166"},"scope":30992,"src":"3344:189:166","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":30993,"src":"696:2839:166"}],"src":"33:3503:166"},"id":166},"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[31070]},"id":31071,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":30994,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:167"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":30995,"nodeType":"StructuredDocumentation","src":"58:70:167","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":31070,"linearizedBaseContracts":[31070],"name":"IERC20","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":30996,"nodeType":"StructuredDocumentation","src":"152:66:167","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":31001,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":30997,"nodeType":"ParameterList","parameters":[],"src":"243:2:167"},"returnParameters":{"id":31000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30999,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31001,"src":"269:7:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30998,"name":"uint256","nodeType":"ElementaryTypeName","src":"269:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"268:9:167"},"scope":31070,"src":"223:55:167","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":31002,"nodeType":"StructuredDocumentation","src":"284:72:167","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":31009,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":31005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31004,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":31009,"src":"380:15:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31003,"name":"address","nodeType":"ElementaryTypeName","src":"380:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"379:17:167"},"returnParameters":{"id":31008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31007,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31009,"src":"420:7:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31006,"name":"uint256","nodeType":"ElementaryTypeName","src":"420:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"419:9:167"},"scope":31070,"src":"361:68:167","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":31010,"nodeType":"StructuredDocumentation","src":"435:209:167","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":31019,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":31015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31012,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":31019,"src":"667:17:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31011,"name":"address","nodeType":"ElementaryTypeName","src":"667:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31014,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":31019,"src":"686:14:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31013,"name":"uint256","nodeType":"ElementaryTypeName","src":"686:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"666:35:167"},"returnParameters":{"id":31018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31017,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31019,"src":"720:4:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":31016,"name":"bool","nodeType":"ElementaryTypeName","src":"720:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"719:6:167"},"scope":31070,"src":"649:77:167","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":31020,"nodeType":"StructuredDocumentation","src":"732:264:167","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":31029,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":31025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31022,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":31029,"src":"1020:13:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31021,"name":"address","nodeType":"ElementaryTypeName","src":"1020:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31024,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":31029,"src":"1035:15:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31023,"name":"address","nodeType":"ElementaryTypeName","src":"1035:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1019:32:167"},"returnParameters":{"id":31028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31027,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31029,"src":"1075:7:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31026,"name":"uint256","nodeType":"ElementaryTypeName","src":"1075:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1074:9:167"},"scope":31070,"src":"1001:83:167","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":31030,"nodeType":"StructuredDocumentation","src":"1090:642:167","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":31039,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":31035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31032,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":31039,"src":"1754:15:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31031,"name":"address","nodeType":"ElementaryTypeName","src":"1754:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31034,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":31039,"src":"1771:14:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31033,"name":"uint256","nodeType":"ElementaryTypeName","src":"1771:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1753:33:167"},"returnParameters":{"id":31038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31037,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31039,"src":"1805:4:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":31036,"name":"bool","nodeType":"ElementaryTypeName","src":"1805:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1804:6:167"},"scope":31070,"src":"1737:74:167","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":31040,"nodeType":"StructuredDocumentation","src":"1817:296:167","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":31051,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":31047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31042,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":31051,"src":"2140:14:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31041,"name":"address","nodeType":"ElementaryTypeName","src":"2140:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31044,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":31051,"src":"2156:17:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31043,"name":"address","nodeType":"ElementaryTypeName","src":"2156:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31046,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":31051,"src":"2175:14:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31045,"name":"uint256","nodeType":"ElementaryTypeName","src":"2175:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2139:51:167"},"returnParameters":{"id":31050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31049,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31051,"src":"2209:4:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":31048,"name":"bool","nodeType":"ElementaryTypeName","src":"2209:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2208:6:167"},"scope":31070,"src":"2118:97:167","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":31052,"nodeType":"StructuredDocumentation","src":"2221:158:167","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"id":31060,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":31059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31054,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":31060,"src":"2399:20:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31053,"name":"address","nodeType":"ElementaryTypeName","src":"2399:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31056,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":31060,"src":"2421:18:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31055,"name":"address","nodeType":"ElementaryTypeName","src":"2421:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31058,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":31060,"src":"2441:13:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31057,"name":"uint256","nodeType":"ElementaryTypeName","src":"2441:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2398:57:167"},"src":"2384:72:167"},{"anonymous":false,"documentation":{"id":31061,"nodeType":"StructuredDocumentation","src":"2462:148:167","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":31069,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":31068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31063,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":31069,"src":"2630:21:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31062,"name":"address","nodeType":"ElementaryTypeName","src":"2630:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31065,"indexed":true,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":31069,"src":"2653:23:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31064,"name":"address","nodeType":"ElementaryTypeName","src":"2653:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31067,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":31069,"src":"2678:13:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31066,"name":"uint256","nodeType":"ElementaryTypeName","src":"2678:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2629:63:167"},"src":"2615:78:167"}],"scope":31071,"src":"129:2566:167"}],"src":"33:2663:167"},"id":167},"openzeppelin-contracts-solc-0.7/token/ERC721/ERC721.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/ERC721.sol","exportedSymbols":{"Address":[32502],"Context":[32525],"ERC165":[30366],"ERC721":[32014],"EnumerableMap":[33085],"EnumerableSet":[33577],"IERC165":[30378],"IERC721":[32130],"IERC721Enumerable":[32161],"IERC721Metadata":[32188],"IERC721Receiver":[32206],"SafeMath":[30733],"Strings":[33664]},"id":32015,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":31072,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:168"},{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/Context.sol","file":"../../utils/Context.sol","id":31073,"nodeType":"ImportDirective","scope":32015,"sourceUnit":32526,"src":"58:33:168","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol","file":"./IERC721.sol","id":31074,"nodeType":"ImportDirective","scope":32015,"sourceUnit":32131,"src":"92:23:168","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol","file":"./IERC721Metadata.sol","id":31075,"nodeType":"ImportDirective","scope":32015,"sourceUnit":32189,"src":"116:31:168","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol","file":"./IERC721Enumerable.sol","id":31076,"nodeType":"ImportDirective","scope":32015,"sourceUnit":32162,"src":"148:33:168","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Receiver.sol","file":"./IERC721Receiver.sol","id":31077,"nodeType":"ImportDirective","scope":32015,"sourceUnit":32207,"src":"182:31:168","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/introspection/ERC165.sol","file":"../../introspection/ERC165.sol","id":31078,"nodeType":"ImportDirective","scope":32015,"sourceUnit":30367,"src":"214:40:168","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/math/SafeMath.sol","file":"../../math/SafeMath.sol","id":31079,"nodeType":"ImportDirective","scope":32015,"sourceUnit":30734,"src":"255:33:168","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/Address.sol","file":"../../utils/Address.sol","id":31080,"nodeType":"ImportDirective","scope":32015,"sourceUnit":32503,"src":"289:33:168","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/EnumerableSet.sol","file":"../../utils/EnumerableSet.sol","id":31081,"nodeType":"ImportDirective","scope":32015,"sourceUnit":33578,"src":"323:39:168","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/EnumerableMap.sol","file":"../../utils/EnumerableMap.sol","id":31082,"nodeType":"ImportDirective","scope":32015,"sourceUnit":33086,"src":"363:39:168","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/Strings.sol","file":"../../utils/Strings.sol","id":31083,"nodeType":"ImportDirective","scope":32015,"sourceUnit":33665,"src":"403:33:168","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":31085,"name":"Context","nodeType":"UserDefinedTypeName","referencedDeclaration":32525,"src":"582:7:168","typeDescriptions":{"typeIdentifier":"t_contract$_Context_$32525","typeString":"contract Context"}},"id":31086,"nodeType":"InheritanceSpecifier","src":"582:7:168"},{"baseName":{"id":31087,"name":"ERC165","nodeType":"UserDefinedTypeName","referencedDeclaration":30366,"src":"591:6:168","typeDescriptions":{"typeIdentifier":"t_contract$_ERC165_$30366","typeString":"contract ERC165"}},"id":31088,"nodeType":"InheritanceSpecifier","src":"591:6:168"},{"baseName":{"id":31089,"name":"IERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":32130,"src":"599:7:168","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$32130","typeString":"contract IERC721"}},"id":31090,"nodeType":"InheritanceSpecifier","src":"599:7:168"},{"baseName":{"id":31091,"name":"IERC721Metadata","nodeType":"UserDefinedTypeName","referencedDeclaration":32188,"src":"608:15:168","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Metadata_$32188","typeString":"contract IERC721Metadata"}},"id":31092,"nodeType":"InheritanceSpecifier","src":"608:15:168"},{"baseName":{"id":31093,"name":"IERC721Enumerable","nodeType":"UserDefinedTypeName","referencedDeclaration":32161,"src":"625:17:168","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Enumerable_$32161","typeString":"contract IERC721Enumerable"}},"id":31094,"nodeType":"InheritanceSpecifier","src":"625:17:168"}],"contractDependencies":[30366,30378,32130,32161,32188,32525],"contractKind":"contract","documentation":{"id":31084,"nodeType":"StructuredDocumentation","src":"438:124:168","text":" @title ERC721 Non-Fungible Token Standard basic implementation\n @dev see https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":true,"id":32014,"linearizedBaseContracts":[32014,32161,32188,32130,30366,30378,32525],"name":"ERC721","nodeType":"ContractDefinition","nodes":[{"id":31097,"libraryName":{"id":31095,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":30733,"src":"655:8:168","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$30733","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"649:27:168","typeName":{"id":31096,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":31100,"libraryName":{"id":31098,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":32502,"src":"687:7:168","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$32502","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"681:26:168","typeName":{"id":31099,"name":"address","nodeType":"ElementaryTypeName","src":"699:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"id":31103,"libraryName":{"id":31101,"name":"EnumerableSet","nodeType":"UserDefinedTypeName","referencedDeclaration":33577,"src":"718:13:168","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableSet_$33577","typeString":"library EnumerableSet"}},"nodeType":"UsingForDirective","src":"712:46:168","typeName":{"id":31102,"name":"EnumerableSet.UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":33482,"src":"736:21:168","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage_ptr","typeString":"struct EnumerableSet.UintSet"}}},{"id":31106,"libraryName":{"id":31104,"name":"EnumerableMap","nodeType":"UserDefinedTypeName","referencedDeclaration":33085,"src":"769:13:168","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableMap_$33085","typeString":"library EnumerableMap"}},"nodeType":"UsingForDirective","src":"763:55:168","typeName":{"id":31105,"name":"EnumerableMap.UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":32859,"src":"787:30:168","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}}},{"id":31109,"libraryName":{"id":31107,"name":"Strings","nodeType":"UserDefinedTypeName","referencedDeclaration":33664,"src":"829:7:168","typeDescriptions":{"typeIdentifier":"t_contract$_Strings_$33664","typeString":"library Strings"}},"nodeType":"UsingForDirective","src":"823:26:168","typeName":{"id":31108,"name":"uint256","nodeType":"ElementaryTypeName","src":"841:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":31112,"mutability":"constant","name":"_ERC721_RECEIVED","nodeType":"VariableDeclaration","scope":32014,"src":"1027:53:168","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":31110,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1027:6:168","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783135306237613032","id":31111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1070:10:168","typeDescriptions":{"typeIdentifier":"t_rational_353073666_by_1","typeString":"int_const 353073666"},"value":"0x150b7a02"},"visibility":"private"},{"constant":false,"id":31116,"mutability":"mutable","name":"_holderTokens","nodeType":"VariableDeclaration","scope":32014,"src":"1164:64:168","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$33482_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet)"},"typeName":{"id":31115,"keyType":{"id":31113,"name":"address","nodeType":"ElementaryTypeName","src":"1173:7:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1164:42:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$33482_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet)"},"valueType":{"id":31114,"name":"EnumerableSet.UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":33482,"src":"1184:21:168","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage_ptr","typeString":"struct EnumerableSet.UintSet"}}},"visibility":"private"},{"constant":false,"id":31118,"mutability":"mutable","name":"_tokenOwners","nodeType":"VariableDeclaration","scope":32014,"src":"1292:51:168","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":31117,"name":"EnumerableMap.UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":32859,"src":"1292:30:168","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"private"},{"constant":false,"id":31122,"mutability":"mutable","name":"_tokenApprovals","nodeType":"VariableDeclaration","scope":32014,"src":"1399:52:168","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":31121,"keyType":{"id":31119,"name":"uint256","nodeType":"ElementaryTypeName","src":"1408:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1399:28:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":31120,"name":"address","nodeType":"ElementaryTypeName","src":"1419:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":31128,"mutability":"mutable","name":"_operatorApprovals","nodeType":"VariableDeclaration","scope":32014,"src":"1506:73:168","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":31127,"keyType":{"id":31123,"name":"address","nodeType":"ElementaryTypeName","src":"1515:7:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1506:46:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":31126,"keyType":{"id":31124,"name":"address","nodeType":"ElementaryTypeName","src":"1535:7:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1526:25:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":31125,"name":"bool","nodeType":"ElementaryTypeName","src":"1546:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"constant":false,"id":31130,"mutability":"mutable","name":"_name","nodeType":"VariableDeclaration","scope":32014,"src":"1604:20:168","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":31129,"name":"string","nodeType":"ElementaryTypeName","src":"1604:6:168","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":31132,"mutability":"mutable","name":"_symbol","nodeType":"VariableDeclaration","scope":32014,"src":"1651:22:168","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":31131,"name":"string","nodeType":"ElementaryTypeName","src":"1651:6:168","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":31136,"mutability":"mutable","name":"_tokenURIs","nodeType":"VariableDeclaration","scope":32014,"src":"1719:46:168","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string)"},"typeName":{"id":31135,"keyType":{"id":31133,"name":"uint256","nodeType":"ElementaryTypeName","src":"1728:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1719:27:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string)"},"valueType":{"id":31134,"name":"string","nodeType":"ElementaryTypeName","src":"1739:6:168","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"visibility":"private"},{"constant":false,"id":31138,"mutability":"mutable","name":"_baseURI","nodeType":"VariableDeclaration","scope":32014,"src":"1788:23:168","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":31137,"name":"string","nodeType":"ElementaryTypeName","src":"1788:6:168","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":true,"id":31141,"mutability":"constant","name":"_INTERFACE_ID_ERC721","nodeType":"VariableDeclaration","scope":32014,"src":"2687:57:168","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":31139,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2687:6:168","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783830616335386364","id":31140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2734:10:168","typeDescriptions":{"typeIdentifier":"t_rational_2158778573_by_1","typeString":"int_const 2158778573"},"value":"0x80ac58cd"},"visibility":"private"},{"constant":true,"id":31144,"mutability":"constant","name":"_INTERFACE_ID_ERC721_METADATA","nodeType":"VariableDeclaration","scope":32014,"src":"3010:66:168","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":31142,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3010:6:168","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783562356531333966","id":31143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3066:10:168","typeDescriptions":{"typeIdentifier":"t_rational_1532892063_by_1","typeString":"int_const 1532892063"},"value":"0x5b5e139f"},"visibility":"private"},{"constant":true,"id":31147,"mutability":"constant","name":"_INTERFACE_ID_ERC721_ENUMERABLE","nodeType":"VariableDeclaration","scope":32014,"src":"3381:68:168","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":31145,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3381:6:168","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783738306539643633","id":31146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3439:10:168","typeDescriptions":{"typeIdentifier":"t_rational_2014223715_by_1","typeString":"int_const 2014223715"},"value":"0x780e9d63"},"visibility":"private"},{"body":{"id":31175,"nodeType":"Block","src":"3626:305:168","statements":[{"expression":{"id":31157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":31155,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31130,"src":"3636:5:168","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":31156,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31150,"src":"3644:5:168","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3636:13:168","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":31158,"nodeType":"ExpressionStatement","src":"3636:13:168"},{"expression":{"id":31161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":31159,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31132,"src":"3659:7:168","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":31160,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31152,"src":"3669:7:168","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3659:17:168","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":31162,"nodeType":"ExpressionStatement","src":"3659:17:168"},{"expression":{"arguments":[{"id":31164,"name":"_INTERFACE_ID_ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31141,"src":"3783:20:168","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":31163,"name":"_registerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30365,"src":"3764:18:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4)"}},"id":31165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3764:40:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31166,"nodeType":"ExpressionStatement","src":"3764:40:168"},{"expression":{"arguments":[{"id":31168,"name":"_INTERFACE_ID_ERC721_METADATA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31144,"src":"3833:29:168","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":31167,"name":"_registerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30365,"src":"3814:18:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4)"}},"id":31169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3814:49:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31170,"nodeType":"ExpressionStatement","src":"3814:49:168"},{"expression":{"arguments":[{"id":31172,"name":"_INTERFACE_ID_ERC721_ENUMERABLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31147,"src":"3892:31:168","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":31171,"name":"_registerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30365,"src":"3873:18:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4)"}},"id":31173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3873:51:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31174,"nodeType":"ExpressionStatement","src":"3873:51:168"}]},"documentation":{"id":31148,"nodeType":"StructuredDocumentation","src":"3456:108:168","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"id":31176,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":31153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31150,"mutability":"mutable","name":"name_","nodeType":"VariableDeclaration","scope":31176,"src":"3582:19:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":31149,"name":"string","nodeType":"ElementaryTypeName","src":"3582:6:168","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":31152,"mutability":"mutable","name":"symbol_","nodeType":"VariableDeclaration","scope":31176,"src":"3603:21:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":31151,"name":"string","nodeType":"ElementaryTypeName","src":"3603:6:168","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3581:44:168"},"returnParameters":{"id":31154,"nodeType":"ParameterList","parameters":[],"src":"3626:0:168"},"scope":32014,"src":"3569:362:168","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[32055],"body":{"id":31201,"nodeType":"Block","src":"4071:137:168","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":31191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":31186,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31179,"src":"4089:5:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":31189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4106:1:168","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":31188,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4098:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31187,"name":"address","nodeType":"ElementaryTypeName","src":"4098:7:168","typeDescriptions":{}}},"id":31190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4098:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4089:19:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373","id":31192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4110:44:168","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":31185,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4081:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":31193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4081:74:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31194,"nodeType":"ExpressionStatement","src":"4081:74:168"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":31195,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31116,"src":"4172:13:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$33482_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":31197,"indexExpression":{"id":31196,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31179,"src":"4186:5:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4172:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":31198,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":33556,"src":"4172:27:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintSet_$33482_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_UintSet_$33482_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer) view returns (uint256)"}},"id":31199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4172:29:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":31184,"id":31200,"nodeType":"Return","src":"4165:36:168"}]},"documentation":{"id":31177,"nodeType":"StructuredDocumentation","src":"3937:48:168","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","id":31202,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","overrides":{"id":31181,"nodeType":"OverrideSpecifier","overrides":[],"src":"4044:8:168"},"parameters":{"id":31180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31179,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":31202,"src":"4009:13:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31178,"name":"address","nodeType":"ElementaryTypeName","src":"4009:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4008:15:168"},"returnParameters":{"id":31184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31183,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31202,"src":"4062:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31182,"name":"uint256","nodeType":"ElementaryTypeName","src":"4062:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4061:9:168"},"scope":32014,"src":"3990:218:168","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[32063],"body":{"id":31217,"nodeType":"Block","src":"4346:94:168","statements":[{"expression":{"arguments":[{"id":31213,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31205,"src":"4380:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e","id":31214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4389:43:168","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":31211,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31118,"src":"4363:12:168","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":31212,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"get","nodeType":"MemberAccess","referencedDeclaration":33084,"src":"4363:16:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintToAddressMap_$32859_storage_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_address_$bound_to$_t_struct$_UintToAddressMap_$32859_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,string memory) view returns (address)"}},"id":31215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4363:70:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":31210,"id":31216,"nodeType":"Return","src":"4356:77:168"}]},"documentation":{"id":31203,"nodeType":"StructuredDocumentation","src":"4214:46:168","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","id":31218,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nodeType":"FunctionDefinition","overrides":{"id":31207,"nodeType":"OverrideSpecifier","overrides":[],"src":"4319:8:168"},"parameters":{"id":31206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31205,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":31218,"src":"4282:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31204,"name":"uint256","nodeType":"ElementaryTypeName","src":"4282:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4281:17:168"},"returnParameters":{"id":31210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31209,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31218,"src":"4337:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31208,"name":"address","nodeType":"ElementaryTypeName","src":"4337:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4336:9:168"},"scope":32014,"src":"4265:175:168","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[32173],"body":{"id":31227,"nodeType":"Block","src":"4571:29:168","statements":[{"expression":{"id":31225,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31130,"src":"4588:5:168","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":31224,"id":31226,"nodeType":"Return","src":"4581:12:168"}]},"documentation":{"id":31219,"nodeType":"StructuredDocumentation","src":"4446:51:168","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","id":31228,"implemented":true,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","overrides":{"id":31221,"nodeType":"OverrideSpecifier","overrides":[],"src":"4538:8:168"},"parameters":{"id":31220,"nodeType":"ParameterList","parameters":[],"src":"4515:2:168"},"returnParameters":{"id":31224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31223,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31228,"src":"4556:13:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":31222,"name":"string","nodeType":"ElementaryTypeName","src":"4556:6:168","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4555:15:168"},"scope":32014,"src":"4502:98:168","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[32179],"body":{"id":31237,"nodeType":"Block","src":"4735:31:168","statements":[{"expression":{"id":31235,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31132,"src":"4752:7:168","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":31234,"id":31236,"nodeType":"Return","src":"4745:14:168"}]},"documentation":{"id":31229,"nodeType":"StructuredDocumentation","src":"4606:53:168","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","id":31238,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","overrides":{"id":31231,"nodeType":"OverrideSpecifier","overrides":[],"src":"4702:8:168"},"parameters":{"id":31230,"nodeType":"ParameterList","parameters":[],"src":"4679:2:168"},"returnParameters":{"id":31234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31233,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31238,"src":"4720:13:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":31232,"name":"string","nodeType":"ElementaryTypeName","src":"4720:6:168","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4719:15:168"},"scope":32014,"src":"4664:102:168","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[32187],"body":{"id":31305,"nodeType":"Block","src":"4920:688:168","statements":[{"expression":{"arguments":[{"arguments":[{"id":31249,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31241,"src":"4946:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":31248,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31601,"src":"4938:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":31250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4938:16:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e","id":31251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4956:49:168","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":31247,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4930:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":31252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4930:76:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31253,"nodeType":"ExpressionStatement","src":"4930:76:168"},{"assignments":[31255],"declarations":[{"constant":false,"id":31255,"mutability":"mutable","name":"_tokenURI","nodeType":"VariableDeclaration","scope":31305,"src":"5017:23:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":31254,"name":"string","nodeType":"ElementaryTypeName","src":"5017:6:168","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":31259,"initialValue":{"baseExpression":{"id":31256,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31136,"src":"5043:10:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":31258,"indexExpression":{"id":31257,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31241,"src":"5054:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5043:19:168","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"VariableDeclarationStatement","src":"5017:45:168"},{"assignments":[31261],"declarations":[{"constant":false,"id":31261,"mutability":"mutable","name":"base","nodeType":"VariableDeclaration","scope":31305,"src":"5072:18:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":31260,"name":"string","nodeType":"ElementaryTypeName","src":"5072:6:168","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":31264,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":31262,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31315,"src":"5093:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":31263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5093:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"5072:30:168"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":31271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":31267,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31261,"src":"5181:4:168","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":31266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5175:5:168","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":31265,"name":"bytes","nodeType":"ElementaryTypeName","src":"5175:5:168","typeDescriptions":{}}},"id":31268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5175:11:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":31269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5175:18:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":31270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5197:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5175:23:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31275,"nodeType":"IfStatement","src":"5171:70:168","trueBody":{"id":31274,"nodeType":"Block","src":"5200:41:168","statements":[{"expression":{"id":31272,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31255,"src":"5221:9:168","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":31246,"id":31273,"nodeType":"Return","src":"5214:16:168"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":31282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":31278,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31255,"src":"5349:9:168","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":31277,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5343:5:168","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":31276,"name":"bytes","nodeType":"ElementaryTypeName","src":"5343:5:168","typeDescriptions":{}}},"id":31279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5343:16:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":31280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5343:23:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":31281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5369:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5343:27:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31293,"nodeType":"IfStatement","src":"5339:106:168","trueBody":{"id":31292,"nodeType":"Block","src":"5372:73:168","statements":[{"expression":{"arguments":[{"arguments":[{"id":31287,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31261,"src":"5417:4:168","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":31288,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31255,"src":"5423:9:168","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":31285,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5400:3:168","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":31286,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"5400:16:168","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":31289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5400:33:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":31284,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5393:6:168","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":31283,"name":"string","nodeType":"ElementaryTypeName","src":"5393:6:168","typeDescriptions":{}}},"id":31290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5393:41:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":31246,"id":31291,"nodeType":"Return","src":"5386:48:168"}]}},{"expression":{"arguments":[{"arguments":[{"id":31298,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31261,"src":"5575:4:168","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":31299,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31241,"src":"5581:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":31300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":33663,"src":"5581:16:168","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":31301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5581:18:168","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":31296,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5558:3:168","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":31297,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"5558:16:168","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":31302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5558:42:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":31295,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5551:6:168","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":31294,"name":"string","nodeType":"ElementaryTypeName","src":"5551:6:168","typeDescriptions":{}}},"id":31303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5551:50:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":31246,"id":31304,"nodeType":"Return","src":"5544:57:168"}]},"documentation":{"id":31239,"nodeType":"StructuredDocumentation","src":"4772:55:168","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","id":31306,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nodeType":"FunctionDefinition","overrides":{"id":31243,"nodeType":"OverrideSpecifier","overrides":[],"src":"4887:8:168"},"parameters":{"id":31242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31241,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":31306,"src":"4850:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31240,"name":"uint256","nodeType":"ElementaryTypeName","src":"4850:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4849:17:168"},"returnParameters":{"id":31246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31245,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31306,"src":"4905:13:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":31244,"name":"string","nodeType":"ElementaryTypeName","src":"4905:6:168","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4904:15:168"},"scope":32014,"src":"4832:776:168","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":31314,"nodeType":"Block","src":"5903:32:168","statements":[{"expression":{"id":31312,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31138,"src":"5920:8:168","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":31311,"id":31313,"nodeType":"Return","src":"5913:15:168"}]},"documentation":{"id":31307,"nodeType":"StructuredDocumentation","src":"5614:221:168","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":31315,"implemented":true,"kind":"function","modifiers":[],"name":"baseURI","nodeType":"FunctionDefinition","parameters":{"id":31308,"nodeType":"ParameterList","parameters":[],"src":"5856:2:168"},"returnParameters":{"id":31311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31310,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31315,"src":"5888:13:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":31309,"name":"string","nodeType":"ElementaryTypeName","src":"5888:6:168","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5887:15:168"},"scope":32014,"src":"5840:95:168","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[32152],"body":{"id":31333,"nodeType":"Block","src":"6120:54:168","statements":[{"expression":{"arguments":[{"id":31330,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31320,"src":"6161:5:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":31326,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31116,"src":"6137:13:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$33482_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":31328,"indexExpression":{"id":31327,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31318,"src":"6151:5:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6137:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":31329,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":33576,"src":"6137:23:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintSet_$33482_storage_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_struct$_UintSet_$33482_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer,uint256) view returns (uint256)"}},"id":31331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6137:30:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":31325,"id":31332,"nodeType":"Return","src":"6130:37:168"}]},"documentation":{"id":31316,"nodeType":"StructuredDocumentation","src":"5941:68:168","text":" @dev See {IERC721Enumerable-tokenOfOwnerByIndex}."},"functionSelector":"2f745c59","id":31334,"implemented":true,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nodeType":"FunctionDefinition","overrides":{"id":31322,"nodeType":"OverrideSpecifier","overrides":[],"src":"6093:8:168"},"parameters":{"id":31321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31318,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":31334,"src":"6043:13:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31317,"name":"address","nodeType":"ElementaryTypeName","src":"6043:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31320,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":31334,"src":"6058:13:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31319,"name":"uint256","nodeType":"ElementaryTypeName","src":"6058:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6042:30:168"},"returnParameters":{"id":31325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31324,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31334,"src":"6111:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31323,"name":"uint256","nodeType":"ElementaryTypeName","src":"6111:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6110:9:168"},"scope":32014,"src":"6014:160:168","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[32142],"body":{"id":31345,"nodeType":"Block","src":"6315:138:168","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":31341,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31118,"src":"6425:12:168","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":31342,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":32945,"src":"6425:19:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintToAddressMap_$32859_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_UintToAddressMap_$32859_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer) view returns (uint256)"}},"id":31343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6425:21:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":31340,"id":31344,"nodeType":"Return","src":"6418:28:168"}]},"documentation":{"id":31335,"nodeType":"StructuredDocumentation","src":"6180:60:168","text":" @dev See {IERC721Enumerable-totalSupply}."},"functionSelector":"18160ddd","id":31346,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","overrides":{"id":31337,"nodeType":"OverrideSpecifier","overrides":[],"src":"6288:8:168"},"parameters":{"id":31336,"nodeType":"ParameterList","parameters":[],"src":"6265:2:168"},"returnParameters":{"id":31340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31339,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31346,"src":"6306:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31338,"name":"uint256","nodeType":"ElementaryTypeName","src":"6306:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6305:9:168"},"scope":32014,"src":"6245:208:168","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[32160],"body":{"id":31364,"nodeType":"Block","src":"6609:85:168","statements":[{"assignments":[31356,null],"declarations":[{"constant":false,"id":31356,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":31364,"src":"6620:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31355,"name":"uint256","nodeType":"ElementaryTypeName","src":"6620:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":31361,"initialValue":{"arguments":[{"id":31359,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31349,"src":"6657:5:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":31357,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31118,"src":"6641:12:168","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":31358,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":32984,"src":"6641:15:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintToAddressMap_$32859_storage_ptr_$_t_uint256_$returns$_t_uint256_$_t_address_$bound_to$_t_struct$_UintToAddressMap_$32859_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) view returns (uint256,address)"}},"id":31360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6641:22:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$","typeString":"tuple(uint256,address)"}},"nodeType":"VariableDeclarationStatement","src":"6619:44:168"},{"expression":{"id":31362,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31356,"src":"6680:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":31354,"id":31363,"nodeType":"Return","src":"6673:14:168"}]},"documentation":{"id":31347,"nodeType":"StructuredDocumentation","src":"6459:61:168","text":" @dev See {IERC721Enumerable-tokenByIndex}."},"functionSelector":"4f6ccce7","id":31365,"implemented":true,"kind":"function","modifiers":[],"name":"tokenByIndex","nodeType":"FunctionDefinition","overrides":{"id":31351,"nodeType":"OverrideSpecifier","overrides":[],"src":"6582:8:168"},"parameters":{"id":31350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31349,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":31365,"src":"6547:13:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31348,"name":"uint256","nodeType":"ElementaryTypeName","src":"6547:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6546:15:168"},"returnParameters":{"id":31354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31353,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31365,"src":"6600:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31352,"name":"uint256","nodeType":"ElementaryTypeName","src":"6600:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6599:9:168"},"scope":32014,"src":"6525:169:168","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[32091],"body":{"id":31408,"nodeType":"Block","src":"6821:325:168","statements":[{"assignments":[31375],"declarations":[{"constant":false,"id":31375,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":31408,"src":"6831:13:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31374,"name":"address","nodeType":"ElementaryTypeName","src":"6831:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":31380,"initialValue":{"arguments":[{"id":31378,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31370,"src":"6862:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":31376,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32014,"src":"6847:6:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$32014_$","typeString":"type(contract ERC721)"}},"id":31377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":31218,"src":"6847:14:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":31379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6847:23:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6831:39:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":31384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":31382,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31368,"src":"6888:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":31383,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31375,"src":"6894:5:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6888:11:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572","id":31385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6901:35:168","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":31381,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6880:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":31386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6880:57:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31387,"nodeType":"ExpressionStatement","src":"6880:57:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":31399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":31392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":31389,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32513,"src":"6956:10:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":31390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6956:12:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":31391,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31375,"src":"6972:5:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6956:21:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":31395,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31375,"src":"7005:5:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":31396,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32513,"src":"7012:10:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":31397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7012:12:168","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":31393,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32014,"src":"6981:6:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$32014_$","typeString":"type(contract ERC721)"}},"id":31394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isApprovedForAll","nodeType":"MemberAccess","referencedDeclaration":31482,"src":"6981:23:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":31398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6981:44:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6956:69:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c","id":31400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7039:58:168","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":31388,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6948:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":31401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6948:159:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31402,"nodeType":"ExpressionStatement","src":"6948:159:168"},{"expression":{"arguments":[{"id":31404,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31368,"src":"7127:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31405,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31370,"src":"7131:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":31403,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32002,"src":"7118:8:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":31406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7118:21:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31407,"nodeType":"ExpressionStatement","src":"7118:21:168"}]},"documentation":{"id":31366,"nodeType":"StructuredDocumentation","src":"6700:46:168","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","id":31409,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":{"id":31372,"nodeType":"OverrideSpecifier","overrides":[],"src":"6812:8:168"},"parameters":{"id":31371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31368,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":31409,"src":"6768:10:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31367,"name":"address","nodeType":"ElementaryTypeName","src":"6768:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31370,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":31409,"src":"6780:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31369,"name":"uint256","nodeType":"ElementaryTypeName","src":"6780:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6767:29:168"},"returnParameters":{"id":31373,"nodeType":"ParameterList","parameters":[],"src":"6821:0:168"},"scope":32014,"src":"6751:395:168","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[32099],"body":{"id":31429,"nodeType":"Block","src":"7292:132:168","statements":[{"expression":{"arguments":[{"arguments":[{"id":31420,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31412,"src":"7318:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":31419,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31601,"src":"7310:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":31421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7310:16:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e","id":31422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7328:46:168","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":31418,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7302:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":31423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7302:73:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31424,"nodeType":"ExpressionStatement","src":"7302:73:168"},{"expression":{"baseExpression":{"id":31425,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31122,"src":"7393:15:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":31427,"indexExpression":{"id":31426,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31412,"src":"7409:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7393:24:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":31417,"id":31428,"nodeType":"Return","src":"7386:31:168"}]},"documentation":{"id":31410,"nodeType":"StructuredDocumentation","src":"7152:50:168","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","id":31430,"implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nodeType":"FunctionDefinition","overrides":{"id":31414,"nodeType":"OverrideSpecifier","overrides":[],"src":"7265:8:168"},"parameters":{"id":31413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31412,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":31430,"src":"7228:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31411,"name":"uint256","nodeType":"ElementaryTypeName","src":"7228:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7227:17:168"},"returnParameters":{"id":31417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31416,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31430,"src":"7283:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31415,"name":"address","nodeType":"ElementaryTypeName","src":"7283:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7282:9:168"},"scope":32014,"src":"7207:217:168","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[32107],"body":{"id":31463,"nodeType":"Block","src":"7575:206:168","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":31443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":31440,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31433,"src":"7593:8:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":31441,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32513,"src":"7605:10:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":31442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7605:12:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7593:24:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","id":31444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7619:27:168","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":31439,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7585:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":31445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7585:62:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31446,"nodeType":"ExpressionStatement","src":"7585:62:168"},{"expression":{"id":31454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":31447,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31128,"src":"7658:18:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":31451,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":31448,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32513,"src":"7677:10:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":31449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7677:12:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7658:32:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":31452,"indexExpression":{"id":31450,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31433,"src":"7691:8:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7658:42:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":31453,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31435,"src":"7703:8:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7658:53:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31455,"nodeType":"ExpressionStatement","src":"7658:53:168"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":31457,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32513,"src":"7741:10:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":31458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7741:12:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":31459,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31433,"src":"7755:8:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31460,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31435,"src":"7765:8:168","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":31456,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32047,"src":"7726:14:168","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":31461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7726:48:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31462,"nodeType":"EmitStatement","src":"7721:53:168"}]},"documentation":{"id":31431,"nodeType":"StructuredDocumentation","src":"7430:56:168","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","id":31464,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nodeType":"FunctionDefinition","overrides":{"id":31437,"nodeType":"OverrideSpecifier","overrides":[],"src":"7566:8:168"},"parameters":{"id":31436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31433,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":31464,"src":"7518:16:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31432,"name":"address","nodeType":"ElementaryTypeName","src":"7518:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31435,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":31464,"src":"7536:13:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":31434,"name":"bool","nodeType":"ElementaryTypeName","src":"7536:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7517:33:168"},"returnParameters":{"id":31438,"nodeType":"ParameterList","parameters":[],"src":"7575:0:168"},"scope":32014,"src":"7491:290:168","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[32117],"body":{"id":31481,"nodeType":"Block","src":"7950:59:168","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":31475,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31128,"src":"7967:18:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":31477,"indexExpression":{"id":31476,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31467,"src":"7986:5:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7967:25:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":31479,"indexExpression":{"id":31478,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31469,"src":"7993:8:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7967:35:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":31474,"id":31480,"nodeType":"Return","src":"7960:42:168"}]},"documentation":{"id":31465,"nodeType":"StructuredDocumentation","src":"7787:55:168","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","id":31482,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nodeType":"FunctionDefinition","overrides":{"id":31471,"nodeType":"OverrideSpecifier","overrides":[],"src":"7926:8:168"},"parameters":{"id":31470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31467,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":31482,"src":"7873:13:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31466,"name":"address","nodeType":"ElementaryTypeName","src":"7873:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31469,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":31482,"src":"7888:16:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31468,"name":"address","nodeType":"ElementaryTypeName","src":"7888:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7872:33:168"},"returnParameters":{"id":31474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31473,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31482,"src":"7944:4:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":31472,"name":"bool","nodeType":"ElementaryTypeName","src":"7944:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7943:6:168"},"scope":32014,"src":"7847:162:168","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[32083],"body":{"id":31508,"nodeType":"Block","src":"8160:211:168","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":31495,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32513,"src":"8249:10:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":31496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8249:12:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":31497,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31489,"src":"8263:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":31494,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31643,"src":"8230:18:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":31498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8230:41:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564","id":31499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8273:51:168","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":31493,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8222:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":31500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8222:103:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31501,"nodeType":"ExpressionStatement","src":"8222:103:168"},{"expression":{"arguments":[{"id":31503,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31485,"src":"8346:4:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31504,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31487,"src":"8352:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31505,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31489,"src":"8356:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":31502,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31887,"src":"8336:9:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":31506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8336:28:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31507,"nodeType":"ExpressionStatement","src":"8336:28:168"}]},"documentation":{"id":31483,"nodeType":"StructuredDocumentation","src":"8015:51:168","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","id":31509,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":{"id":31491,"nodeType":"OverrideSpecifier","overrides":[],"src":"8151:8:168"},"parameters":{"id":31490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31485,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":31509,"src":"8093:12:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31484,"name":"address","nodeType":"ElementaryTypeName","src":"8093:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31487,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":31509,"src":"8107:10:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31486,"name":"address","nodeType":"ElementaryTypeName","src":"8107:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31489,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":31509,"src":"8119:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31488,"name":"uint256","nodeType":"ElementaryTypeName","src":"8119:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8092:43:168"},"returnParameters":{"id":31492,"nodeType":"ParameterList","parameters":[],"src":"8160:0:168"},"scope":32014,"src":"8071:300:168","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[32073],"body":{"id":31527,"nodeType":"Block","src":"8530:56:168","statements":[{"expression":{"arguments":[{"id":31521,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31512,"src":"8557:4:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31522,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31514,"src":"8563:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31523,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31516,"src":"8567:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":31524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8576:2:168","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":31520,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[31528,31558],"referencedDeclaration":31558,"src":"8540:16:168","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":31525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8540:39:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31526,"nodeType":"ExpressionStatement","src":"8540:39:168"}]},"documentation":{"id":31510,"nodeType":"StructuredDocumentation","src":"8377:55:168","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","id":31528,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","overrides":{"id":31518,"nodeType":"OverrideSpecifier","overrides":[],"src":"8521:8:168"},"parameters":{"id":31517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31512,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":31528,"src":"8463:12:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31511,"name":"address","nodeType":"ElementaryTypeName","src":"8463:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31514,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":31528,"src":"8477:10:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31513,"name":"address","nodeType":"ElementaryTypeName","src":"8477:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31516,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":31528,"src":"8489:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31515,"name":"uint256","nodeType":"ElementaryTypeName","src":"8489:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8462:43:168"},"returnParameters":{"id":31519,"nodeType":"ParameterList","parameters":[],"src":"8530:0:168"},"scope":32014,"src":"8437:149:168","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[32129],"body":{"id":31557,"nodeType":"Block","src":"8765:169:168","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":31543,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32513,"src":"8802:10:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":31544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8802:12:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":31545,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31535,"src":"8816:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":31542,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31643,"src":"8783:18:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":31546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8783:41:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564","id":31547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8826:51:168","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":31541,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8775:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":31548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8775:103:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31549,"nodeType":"ExpressionStatement","src":"8775:103:168"},{"expression":{"arguments":[{"id":31551,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31531,"src":"8902:4:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31552,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31533,"src":"8908:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31553,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31535,"src":"8912:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":31554,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31537,"src":"8921:5:168","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":31550,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31587,"src":"8888:13:168","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":31555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8888:39:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31556,"nodeType":"ExpressionStatement","src":"8888:39:168"}]},"documentation":{"id":31529,"nodeType":"StructuredDocumentation","src":"8592:55:168","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","id":31558,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","overrides":{"id":31539,"nodeType":"OverrideSpecifier","overrides":[],"src":"8756:8:168"},"parameters":{"id":31538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31531,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":31558,"src":"8678:12:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31530,"name":"address","nodeType":"ElementaryTypeName","src":"8678:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31533,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":31558,"src":"8692:10:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31532,"name":"address","nodeType":"ElementaryTypeName","src":"8692:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31535,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":31558,"src":"8704:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31534,"name":"uint256","nodeType":"ElementaryTypeName","src":"8704:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":31537,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":31558,"src":"8721:18:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":31536,"name":"bytes","nodeType":"ElementaryTypeName","src":"8721:5:168","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8677:63:168"},"returnParameters":{"id":31540,"nodeType":"ParameterList","parameters":[],"src":"8765:0:168"},"scope":32014,"src":"8652:282:168","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":31586,"nodeType":"Block","src":"9899:166:168","statements":[{"expression":{"arguments":[{"id":31571,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31561,"src":"9919:4:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31572,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31563,"src":"9925:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31573,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31565,"src":"9929:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":31570,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31887,"src":"9909:9:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":31574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9909:28:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31575,"nodeType":"ExpressionStatement","src":"9909:28:168"},{"expression":{"arguments":[{"arguments":[{"id":31578,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31561,"src":"9978:4:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31579,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31563,"src":"9984:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31580,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31565,"src":"9988:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":31581,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31567,"src":"9997:5:168","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":31577,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31978,"src":"9955:22:168","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":31582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9955:48:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":31583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10005:52:168","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":31576,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9947:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":31584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9947:111:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31585,"nodeType":"ExpressionStatement","src":"9947:111:168"}]},"documentation":{"id":31559,"nodeType":"StructuredDocumentation","src":"8940:851:168","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":31587,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nodeType":"FunctionDefinition","parameters":{"id":31568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31561,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":31587,"src":"9819:12:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31560,"name":"address","nodeType":"ElementaryTypeName","src":"9819:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31563,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":31587,"src":"9833:10:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31562,"name":"address","nodeType":"ElementaryTypeName","src":"9833:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31565,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":31587,"src":"9845:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31564,"name":"uint256","nodeType":"ElementaryTypeName","src":"9845:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":31567,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":31587,"src":"9862:18:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":31566,"name":"bytes","nodeType":"ElementaryTypeName","src":"9862:5:168","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9818:63:168"},"returnParameters":{"id":31569,"nodeType":"ParameterList","parameters":[],"src":"9899:0:168"},"scope":32014,"src":"9796:269:168","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":31600,"nodeType":"Block","src":"10439:54:168","statements":[{"expression":{"arguments":[{"id":31597,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31590,"src":"10478:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":31595,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31118,"src":"10456:12:168","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":31596,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":32931,"src":"10456:21:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintToAddressMap_$32859_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$32859_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) view returns (bool)"}},"id":31598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10456:30:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":31594,"id":31599,"nodeType":"Return","src":"10449:37:168"}]},"documentation":{"id":31588,"nodeType":"StructuredDocumentation","src":"10071:292:168","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":31601,"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nodeType":"FunctionDefinition","parameters":{"id":31591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31590,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":31601,"src":"10385:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31589,"name":"uint256","nodeType":"ElementaryTypeName","src":"10385:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10384:17:168"},"returnParameters":{"id":31594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31593,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31601,"src":"10433:4:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":31592,"name":"bool","nodeType":"ElementaryTypeName","src":"10433:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10432:6:168"},"scope":32014,"src":"10368:125:168","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":31642,"nodeType":"Block","src":"10750:252:168","statements":[{"expression":{"arguments":[{"arguments":[{"id":31613,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31606,"src":"10776:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":31612,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31601,"src":"10768:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":31614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10768:16:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e","id":31615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10786:46:168","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":31611,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10760:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":31616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10760:73:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31617,"nodeType":"ExpressionStatement","src":"10760:73:168"},{"assignments":[31619],"declarations":[{"constant":false,"id":31619,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":31642,"src":"10843:13:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31618,"name":"address","nodeType":"ElementaryTypeName","src":"10843:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":31624,"initialValue":{"arguments":[{"id":31622,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31606,"src":"10874:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":31620,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32014,"src":"10859:6:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$32014_$","typeString":"type(contract ERC721)"}},"id":31621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":31218,"src":"10859:14:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":31623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10859:23:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10843:39:168"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":31639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":31633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":31627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":31625,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31604,"src":"10900:7:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":31626,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31619,"src":"10911:5:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10900:16:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":31632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":31629,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31606,"src":"10932:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":31628,"name":"getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31430,"src":"10920:11:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":31630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10920:20:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":31631,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31604,"src":"10944:7:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10920:31:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10900:51:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":31636,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31619,"src":"10979:5:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31637,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31604,"src":"10986:7:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":31634,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32014,"src":"10955:6:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$32014_$","typeString":"type(contract ERC721)"}},"id":31635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isApprovedForAll","nodeType":"MemberAccess","referencedDeclaration":31482,"src":"10955:23:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":31638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10955:39:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10900:94:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":31640,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10899:96:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":31610,"id":31641,"nodeType":"Return","src":"10892:103:168"}]},"documentation":{"id":31602,"nodeType":"StructuredDocumentation","src":"10499:147:168","text":" @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."},"id":31643,"implemented":true,"kind":"function","modifiers":[],"name":"_isApprovedOrOwner","nodeType":"FunctionDefinition","parameters":{"id":31607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31604,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":31643,"src":"10679:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31603,"name":"address","nodeType":"ElementaryTypeName","src":"10679:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31606,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":31643,"src":"10696:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31605,"name":"uint256","nodeType":"ElementaryTypeName","src":"10696:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10678:34:168"},"returnParameters":{"id":31610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31609,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31643,"src":"10744:4:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":31608,"name":"bool","nodeType":"ElementaryTypeName","src":"10744:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10743:6:168"},"scope":32014,"src":"10651:351:168","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":31657,"nodeType":"Block","src":"11398:43:168","statements":[{"expression":{"arguments":[{"id":31652,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31646,"src":"11418:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31653,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31648,"src":"11422:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":31654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11431:2:168","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":31651,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[31658,31687],"referencedDeclaration":31687,"src":"11408:9:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":31655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11408:26:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31656,"nodeType":"ExpressionStatement","src":"11408:26:168"}]},"documentation":{"id":31644,"nodeType":"StructuredDocumentation","src":"11008:320:168","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":31658,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nodeType":"FunctionDefinition","parameters":{"id":31649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31646,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":31658,"src":"11352:10:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31645,"name":"address","nodeType":"ElementaryTypeName","src":"11352:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31648,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":31658,"src":"11364:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31647,"name":"uint256","nodeType":"ElementaryTypeName","src":"11364:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11351:29:168"},"returnParameters":{"id":31650,"nodeType":"ParameterList","parameters":[],"src":"11398:0:168"},"scope":32014,"src":"11333:108:168","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":31686,"nodeType":"Block","src":"11747:162:168","statements":[{"expression":{"arguments":[{"id":31669,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31661,"src":"11763:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31663,"src":"11767:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":31668,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31746,"src":"11757:5:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":31671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11757:18:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31672,"nodeType":"ExpressionStatement","src":"11757:18:168"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":31677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11824:1:168","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":31676,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11816:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31675,"name":"address","nodeType":"ElementaryTypeName","src":"11816:7:168","typeDescriptions":{}}},"id":31678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11816:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":31679,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31661,"src":"11828:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31663,"src":"11832:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":31681,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31665,"src":"11841:5:168","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":31674,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31978,"src":"11793:22:168","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":31682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11793:54:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":31683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11849:52:168","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":31673,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11785:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":31684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11785:117:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31685,"nodeType":"ExpressionStatement","src":"11785:117:168"}]},"documentation":{"id":31659,"nodeType":"StructuredDocumentation","src":"11447:210:168","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":31687,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nodeType":"FunctionDefinition","parameters":{"id":31666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31661,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":31687,"src":"11681:10:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31660,"name":"address","nodeType":"ElementaryTypeName","src":"11681:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31663,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":31687,"src":"11693:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31662,"name":"uint256","nodeType":"ElementaryTypeName","src":"11693:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":31665,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":31687,"src":"11710:18:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":31664,"name":"bytes","nodeType":"ElementaryTypeName","src":"11710:5:168","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11680:49:168"},"returnParameters":{"id":31667,"nodeType":"ParameterList","parameters":[],"src":"11747:0:168"},"scope":32014,"src":"11662:247:168","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":31745,"nodeType":"Block","src":"12292:332:168","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":31701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":31696,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31690,"src":"12310:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":31699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12324:1:168","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":31698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12316:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31697,"name":"address","nodeType":"ElementaryTypeName","src":"12316:7:168","typeDescriptions":{}}},"id":31700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12316:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"12310:16:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","id":31702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12328:34:168","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":31695,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12302:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":31703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12302:61:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31704,"nodeType":"ExpressionStatement","src":"12302:61:168"},{"expression":{"arguments":[{"id":31709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12381:17:168","subExpression":{"arguments":[{"id":31707,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31692,"src":"12390:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":31706,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31601,"src":"12382:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":31708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12382:16:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":31710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12400:30:168","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":31705,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12373:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":31711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12373:58:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31712,"nodeType":"ExpressionStatement","src":"12373:58:168"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":31716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12471:1:168","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":31715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12463:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31714,"name":"address","nodeType":"ElementaryTypeName","src":"12463:7:168","typeDescriptions":{}}},"id":31717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12463:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":31718,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31690,"src":"12475:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31719,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31692,"src":"12479:7:168","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":31713,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32013,"src":"12442:20:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":31720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12442:45:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31721,"nodeType":"ExpressionStatement","src":"12442:45:168"},{"expression":{"arguments":[{"id":31726,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31692,"src":"12520:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":31722,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31116,"src":"12498:13:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$33482_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":31724,"indexExpression":{"id":31723,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31690,"src":"12512:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12498:17:168","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":31725,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":33502,"src":"12498:21:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintSet_$33482_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$33482_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)"}},"id":31727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12498:30:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31728,"nodeType":"ExpressionStatement","src":"12498:30:168"},{"expression":{"arguments":[{"id":31732,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31692,"src":"12556:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":31733,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31690,"src":"12565:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":31729,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31118,"src":"12539:12:168","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":31731,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"set","nodeType":"MemberAccess","referencedDeclaration":32891,"src":"12539:16:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$32859_storage_ptr_$_t_uint256_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$32859_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,address) returns (bool)"}},"id":31734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12539:29:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31735,"nodeType":"ExpressionStatement","src":"12539:29:168"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":31739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12601:1:168","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":31738,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12593:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31737,"name":"address","nodeType":"ElementaryTypeName","src":"12593:7:168","typeDescriptions":{}}},"id":31740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12593:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":31741,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31690,"src":"12605:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31742,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31692,"src":"12609:7:168","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":31736,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32029,"src":"12584:8:168","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":31743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12584:33:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31744,"nodeType":"EmitStatement","src":"12579:38:168"}]},"documentation":{"id":31688,"nodeType":"StructuredDocumentation","src":"11915:311:168","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":31746,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nodeType":"FunctionDefinition","parameters":{"id":31693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31690,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":31746,"src":"12246:10:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31689,"name":"address","nodeType":"ElementaryTypeName","src":"12246:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31692,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":31746,"src":"12258:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31691,"name":"uint256","nodeType":"ElementaryTypeName","src":"12258:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12245:29:168"},"returnParameters":{"id":31694,"nodeType":"ParameterList","parameters":[],"src":"12292:0:168"},"scope":32014,"src":"12231:393:168","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":31814,"nodeType":"Block","src":"12890:478:168","statements":[{"assignments":[31753],"declarations":[{"constant":false,"id":31753,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":31814,"src":"12900:13:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31752,"name":"address","nodeType":"ElementaryTypeName","src":"12900:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":31758,"initialValue":{"arguments":[{"id":31756,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31749,"src":"12931:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":31754,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32014,"src":"12916:6:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$32014_$","typeString":"type(contract ERC721)"}},"id":31755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":31218,"src":"12916:14:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":31757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12916:23:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12900:39:168"},{"expression":{"arguments":[{"id":31760,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31753,"src":"12989:5:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":31763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13004:1:168","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":31762,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12996:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31761,"name":"address","nodeType":"ElementaryTypeName","src":"12996:7:168","typeDescriptions":{}}},"id":31764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12996:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":31765,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31749,"src":"13008:7:168","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":31759,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32013,"src":"12968:20:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":31766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12968:48:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31767,"nodeType":"ExpressionStatement","src":"12968:48:168"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":31771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13071:1:168","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":31770,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13063:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31769,"name":"address","nodeType":"ElementaryTypeName","src":"13063:7:168","typeDescriptions":{}}},"id":31772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13063:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":31773,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31749,"src":"13075:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":31768,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32002,"src":"13054:8:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":31774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13054:29:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31775,"nodeType":"ExpressionStatement","src":"13054:29:168"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":31784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"baseExpression":{"id":31778,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31136,"src":"13139:10:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":31780,"indexExpression":{"id":31779,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31749,"src":"13150:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13139:19:168","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"id":31777,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13133:5:168","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":31776,"name":"bytes","nodeType":"ElementaryTypeName","src":"13133:5:168","typeDescriptions":{}}},"id":31781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13133:26:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes storage pointer"}},"id":31782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13133:33:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":31783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13170:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13133:38:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31791,"nodeType":"IfStatement","src":"13129:95:168","trueBody":{"id":31790,"nodeType":"Block","src":"13173:51:168","statements":[{"expression":{"id":31788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"13187:26:168","subExpression":{"baseExpression":{"id":31785,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31136,"src":"13194:10:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":31787,"indexExpression":{"id":31786,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31749,"src":"13205:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13194:19:168","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31789,"nodeType":"ExpressionStatement","src":"13187:26:168"}]}},{"expression":{"arguments":[{"id":31796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31749,"src":"13262:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":31792,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31116,"src":"13234:13:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$33482_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":31794,"indexExpression":{"id":31793,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31753,"src":"13248:5:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13234:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":31795,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":33522,"src":"13234:27:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintSet_$33482_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$33482_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)"}},"id":31797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13234:36:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31798,"nodeType":"ExpressionStatement","src":"13234:36:168"},{"expression":{"arguments":[{"id":31802,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31749,"src":"13301:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":31799,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31118,"src":"13281:12:168","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":31801,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":32911,"src":"13281:19:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$32859_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$32859_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) returns (bool)"}},"id":31803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13281:28:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31804,"nodeType":"ExpressionStatement","src":"13281:28:168"},{"eventCall":{"arguments":[{"id":31806,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31753,"src":"13334:5:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":31809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13349:1:168","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":31808,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13341:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31807,"name":"address","nodeType":"ElementaryTypeName","src":"13341:7:168","typeDescriptions":{}}},"id":31810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13341:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":31811,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31749,"src":"13353:7:168","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":31805,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32029,"src":"13325:8:168","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":31812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13325:36:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31813,"nodeType":"EmitStatement","src":"13320:41:168"}]},"documentation":{"id":31747,"nodeType":"StructuredDocumentation","src":"12630:206:168","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":31815,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nodeType":"FunctionDefinition","parameters":{"id":31750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31749,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":31815,"src":"12856:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31748,"name":"uint256","nodeType":"ElementaryTypeName","src":"12856:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12855:17:168"},"returnParameters":{"id":31751,"nodeType":"ParameterList","parameters":[],"src":"12890:0:168"},"scope":32014,"src":"12841:527:168","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":31886,"nodeType":"Block","src":"13771:505:168","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":31831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":31828,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31822,"src":"13804:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":31826,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32014,"src":"13789:6:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$32014_$","typeString":"type(contract ERC721)"}},"id":31827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":31218,"src":"13789:14:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":31829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13789:23:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":31830,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31818,"src":"13816:4:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13789:31:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e","id":31832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13822:43:168","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":31825,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13781:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":31833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13781:85:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31834,"nodeType":"ExpressionStatement","src":"13781:85:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":31841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":31836,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31820,"src":"13902:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":31839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13916:1:168","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":31838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13908:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31837,"name":"address","nodeType":"ElementaryTypeName","src":"13908:7:168","typeDescriptions":{}}},"id":31840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13908:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"13902:16:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373","id":31842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13920:38:168","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":31835,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13894:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":31843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13894:65:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31844,"nodeType":"ExpressionStatement","src":"13894:65:168"},{"expression":{"arguments":[{"id":31846,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31818,"src":"13991:4:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31847,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31820,"src":"13997:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31848,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31822,"src":"14001:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":31845,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32013,"src":"13970:20:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":31849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13970:39:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31850,"nodeType":"ExpressionStatement","src":"13970:39:168"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":31854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14088:1:168","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":31853,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14080:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31852,"name":"address","nodeType":"ElementaryTypeName","src":"14080:7:168","typeDescriptions":{}}},"id":31855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14080:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":31856,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31822,"src":"14092:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":31851,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32002,"src":"14071:8:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":31857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14071:29:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31858,"nodeType":"ExpressionStatement","src":"14071:29:168"},{"expression":{"arguments":[{"id":31863,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31822,"src":"14138:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":31859,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31116,"src":"14111:13:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$33482_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":31861,"indexExpression":{"id":31860,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31818,"src":"14125:4:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14111:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":31862,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":33522,"src":"14111:26:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintSet_$33482_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$33482_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)"}},"id":31864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14111:35:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31865,"nodeType":"ExpressionStatement","src":"14111:35:168"},{"expression":{"arguments":[{"id":31870,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31822,"src":"14178:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":31866,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31116,"src":"14156:13:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$33482_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":31868,"indexExpression":{"id":31867,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31820,"src":"14170:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14156:17:168","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":31869,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":33502,"src":"14156:21:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintSet_$33482_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$33482_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)"}},"id":31871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14156:30:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31872,"nodeType":"ExpressionStatement","src":"14156:30:168"},{"expression":{"arguments":[{"id":31876,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31822,"src":"14214:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":31877,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31820,"src":"14223:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":31873,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31118,"src":"14197:12:168","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":31875,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"set","nodeType":"MemberAccess","referencedDeclaration":32891,"src":"14197:16:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$32859_storage_ptr_$_t_uint256_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$32859_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,address) returns (bool)"}},"id":31878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14197:29:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31879,"nodeType":"ExpressionStatement","src":"14197:29:168"},{"eventCall":{"arguments":[{"id":31881,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31818,"src":"14251:4:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31882,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31820,"src":"14257:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31883,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31822,"src":"14261:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":31880,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32029,"src":"14242:8:168","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":31884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14242:27:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31885,"nodeType":"EmitStatement","src":"14237:32:168"}]},"documentation":{"id":31816,"nodeType":"StructuredDocumentation","src":"13374:313:168","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":31887,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nodeType":"FunctionDefinition","parameters":{"id":31823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31818,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":31887,"src":"13711:12:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31817,"name":"address","nodeType":"ElementaryTypeName","src":"13711:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31820,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":31887,"src":"13725:10:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31819,"name":"address","nodeType":"ElementaryTypeName","src":"13725:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31822,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":31887,"src":"13737:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31821,"name":"uint256","nodeType":"ElementaryTypeName","src":"13737:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13710:43:168"},"returnParameters":{"id":31824,"nodeType":"ParameterList","parameters":[],"src":"13771:0:168"},"scope":32014,"src":"13692:584:168","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":31908,"nodeType":"Block","src":"14504:131:168","statements":[{"expression":{"arguments":[{"arguments":[{"id":31897,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31890,"src":"14530:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":31896,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31601,"src":"14522:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":31898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14522:16:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e","id":31899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14540:46:168","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":31895,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14514:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":31900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14514:73:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31901,"nodeType":"ExpressionStatement","src":"14514:73:168"},{"expression":{"id":31906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":31902,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31136,"src":"14597:10:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":31904,"indexExpression":{"id":31903,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31890,"src":"14608:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14597:19:168","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":31905,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31892,"src":"14619:9:168","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"14597:31:168","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":31907,"nodeType":"ExpressionStatement","src":"14597:31:168"}]},"documentation":{"id":31888,"nodeType":"StructuredDocumentation","src":"14282:136:168","text":" @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n Requirements:\n - `tokenId` must exist."},"id":31909,"implemented":true,"kind":"function","modifiers":[],"name":"_setTokenURI","nodeType":"FunctionDefinition","parameters":{"id":31893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31890,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":31909,"src":"14445:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31889,"name":"uint256","nodeType":"ElementaryTypeName","src":"14445:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":31892,"mutability":"mutable","name":"_tokenURI","nodeType":"VariableDeclaration","scope":31909,"src":"14462:23:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":31891,"name":"string","nodeType":"ElementaryTypeName","src":"14462:6:168","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"14444:42:168"},"returnParameters":{"id":31894,"nodeType":"ParameterList","parameters":[],"src":"14504:0:168"},"scope":32014,"src":"14423:212:168","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":31919,"nodeType":"Block","src":"14920:36:168","statements":[{"expression":{"id":31917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":31915,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31138,"src":"14930:8:168","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":31916,"name":"baseURI_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31912,"src":"14941:8:168","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"14930:19:168","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":31918,"nodeType":"ExpressionStatement","src":"14930:19:168"}]},"documentation":{"id":31910,"nodeType":"StructuredDocumentation","src":"14641:212:168","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":31920,"implemented":true,"kind":"function","modifiers":[],"name":"_setBaseURI","nodeType":"FunctionDefinition","parameters":{"id":31913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31912,"mutability":"mutable","name":"baseURI_","nodeType":"VariableDeclaration","scope":31920,"src":"14879:22:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":31911,"name":"string","nodeType":"ElementaryTypeName","src":"14879:6:168","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"14878:24:168"},"returnParameters":{"id":31914,"nodeType":"ParameterList","parameters":[],"src":"14920:0:168"},"scope":32014,"src":"14858:98:168","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":31977,"nodeType":"Block","src":"15639:459:168","statements":[{"condition":{"id":31937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15653:16:168","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":31934,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31925,"src":"15654:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":31935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":32226,"src":"15654:13:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":31936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15654:15:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31941,"nodeType":"IfStatement","src":"15649:58:168","trueBody":{"id":31940,"nodeType":"Block","src":"15671:36:168","statements":[{"expression":{"hexValue":"74727565","id":31938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15692:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":31933,"id":31939,"nodeType":"Return","src":"15685:11:168"}]}},{"assignments":[31943],"declarations":[{"constant":false,"id":31943,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":31977,"src":"15716:23:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":31942,"name":"bytes","nodeType":"ElementaryTypeName","src":"15716:5:168","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":31961,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"arguments":[{"id":31949,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31925,"src":"15810:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":31948,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32206,"src":"15794:15:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$32206_$","typeString":"type(contract IERC721Receiver)"}},"id":31950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15794:19:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$32206","typeString":"contract IERC721Receiver"}},"id":31951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":32205,"src":"15794:36:168","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":31952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"15794:45:168","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"arguments":[],"expression":{"argumentTypes":[],"id":31953,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32513,"src":"15853:10:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":31954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15853:12:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":31955,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31923,"src":"15879:4:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31956,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31927,"src":"15897:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":31957,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31929,"src":"15918:5:168","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":31946,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15758:3:168","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":31947,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"15758:22:168","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":31958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15758:175:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":31959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15935:52:168","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":31944,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31925,"src":"15742:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":31945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":32297,"src":"15742:15:168","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":31960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15742:246:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"15716:272:168"},{"assignments":[31963],"declarations":[{"constant":false,"id":31963,"mutability":"mutable","name":"retval","nodeType":"VariableDeclaration","scope":31977,"src":"15998:13:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":31962,"name":"bytes4","nodeType":"ElementaryTypeName","src":"15998:6:168","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":31971,"initialValue":{"arguments":[{"id":31966,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31943,"src":"16025:10:168","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":31968,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16038:6:168","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":31967,"name":"bytes4","nodeType":"ElementaryTypeName","src":"16038:6:168","typeDescriptions":{}}}],"id":31969,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"16037:8:168","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":31964,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16014:3:168","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":31965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"16014:10:168","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":31970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16014:32:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"15998:48:168"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":31974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":31972,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31963,"src":"16064:6:168","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":31973,"name":"_ERC721_RECEIVED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31112,"src":"16074:16:168","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"16064:26:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":31975,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16063:28:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":31933,"id":31976,"nodeType":"Return","src":"16056:35:168"}]},"documentation":{"id":31921,"nodeType":"StructuredDocumentation","src":"14962:542:168","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":31978,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nodeType":"FunctionDefinition","parameters":{"id":31930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31923,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":31978,"src":"15541:12:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31922,"name":"address","nodeType":"ElementaryTypeName","src":"15541:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31925,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":31978,"src":"15555:10:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31924,"name":"address","nodeType":"ElementaryTypeName","src":"15555:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31927,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":31978,"src":"15567:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31926,"name":"uint256","nodeType":"ElementaryTypeName","src":"15567:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":31929,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":31978,"src":"15584:18:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":31928,"name":"bytes","nodeType":"ElementaryTypeName","src":"15584:5:168","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15540:63:168"},"returnParameters":{"id":31933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31932,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31978,"src":"15629:4:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":31931,"name":"bool","nodeType":"ElementaryTypeName","src":"15629:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15628:6:168"},"scope":32014,"src":"15509:589:168","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":32001,"nodeType":"Block","src":"16274:125:168","statements":[{"expression":{"id":31990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":31986,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31122,"src":"16284:15:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":31988,"indexExpression":{"id":31987,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31983,"src":"16300:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16284:24:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":31989,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31981,"src":"16311:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16284:29:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":31991,"nodeType":"ExpressionStatement","src":"16284:29:168"},{"eventCall":{"arguments":[{"arguments":[{"id":31995,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31983,"src":"16352:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":31993,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32014,"src":"16337:6:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$32014_$","typeString":"type(contract ERC721)"}},"id":31994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":31218,"src":"16337:14:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":31996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16337:23:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31997,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31981,"src":"16362:2:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31998,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31983,"src":"16366:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":31992,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32038,"src":"16328:8:168","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":31999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16328:46:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32000,"nodeType":"EmitStatement","src":"16323:51:168"}]},"documentation":{"id":31979,"nodeType":"StructuredDocumentation","src":"16104:101:168","text":" @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."},"id":32002,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nodeType":"FunctionDefinition","parameters":{"id":31984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31981,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":32002,"src":"16228:10:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31980,"name":"address","nodeType":"ElementaryTypeName","src":"16228:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31983,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":32002,"src":"16240:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31982,"name":"uint256","nodeType":"ElementaryTypeName","src":"16240:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16227:29:168"},"returnParameters":{"id":31985,"nodeType":"ParameterList","parameters":[],"src":"16274:0:168"},"scope":32014,"src":"16210:189:168","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":32012,"nodeType":"Block","src":"17085:3:168","statements":[]},"documentation":{"id":32003,"nodeType":"StructuredDocumentation","src":"16405:585:168","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":32013,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nodeType":"FunctionDefinition","parameters":{"id":32010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32005,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":32013,"src":"17025:12:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32004,"name":"address","nodeType":"ElementaryTypeName","src":"17025:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32007,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":32013,"src":"17039:10:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32006,"name":"address","nodeType":"ElementaryTypeName","src":"17039:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32009,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":32013,"src":"17051:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32008,"name":"uint256","nodeType":"ElementaryTypeName","src":"17051:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17024:43:168"},"returnParameters":{"id":32011,"nodeType":"ParameterList","parameters":[],"src":"17085:0:168"},"scope":32014,"src":"16995:93:168","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":32015,"src":"563:16527:168"}],"src":"33:17058:168"},"id":168},"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[30378],"IERC721":[32130]},"id":32131,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":32016,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:169"},{"absolutePath":"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol","file":"../../introspection/IERC165.sol","id":32017,"nodeType":"ImportDirective","scope":32131,"sourceUnit":30379,"src":"58:41:169","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":32019,"name":"IERC165","nodeType":"UserDefinedTypeName","referencedDeclaration":30378,"src":"190:7:169","typeDescriptions":{"typeIdentifier":"t_contract$_IERC165_$30378","typeString":"contract IERC165"}},"id":32020,"nodeType":"InheritanceSpecifier","src":"190:7:169"}],"contractDependencies":[30378],"contractKind":"interface","documentation":{"id":32018,"nodeType":"StructuredDocumentation","src":"101:67:169","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"id":32130,"linearizedBaseContracts":[32130,30378],"name":"IERC721","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":32021,"nodeType":"StructuredDocumentation","src":"204:88:169","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"id":32029,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":32028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32023,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":32029,"src":"312:20:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32022,"name":"address","nodeType":"ElementaryTypeName","src":"312:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32025,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":32029,"src":"334:18:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32024,"name":"address","nodeType":"ElementaryTypeName","src":"334:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32027,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":32029,"src":"354:23:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32026,"name":"uint256","nodeType":"ElementaryTypeName","src":"354:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"311:67:169"},"src":"297:82:169"},{"anonymous":false,"documentation":{"id":32030,"nodeType":"StructuredDocumentation","src":"385:94:169","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"id":32038,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":32037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32032,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":32038,"src":"499:21:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32031,"name":"address","nodeType":"ElementaryTypeName","src":"499:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32034,"indexed":true,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":32038,"src":"522:24:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32033,"name":"address","nodeType":"ElementaryTypeName","src":"522:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32036,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":32038,"src":"548:23:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32035,"name":"uint256","nodeType":"ElementaryTypeName","src":"548:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"498:74:169"},"src":"484:89:169"},{"anonymous":false,"documentation":{"id":32039,"nodeType":"StructuredDocumentation","src":"579:117:169","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"id":32047,"name":"ApprovalForAll","nodeType":"EventDefinition","parameters":{"id":32046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32041,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":32047,"src":"722:21:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32040,"name":"address","nodeType":"ElementaryTypeName","src":"722:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32043,"indexed":true,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":32047,"src":"745:24:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32042,"name":"address","nodeType":"ElementaryTypeName","src":"745:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32045,"indexed":false,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":32047,"src":"771:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32044,"name":"bool","nodeType":"ElementaryTypeName","src":"771:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"721:64:169"},"src":"701:85:169"},{"documentation":{"id":32048,"nodeType":"StructuredDocumentation","src":"792:76:169","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":32055,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":32051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32050,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":32055,"src":"892:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32049,"name":"address","nodeType":"ElementaryTypeName","src":"892:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"891:15:169"},"returnParameters":{"id":32054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32053,"mutability":"mutable","name":"balance","nodeType":"VariableDeclaration","scope":32055,"src":"930:15:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32052,"name":"uint256","nodeType":"ElementaryTypeName","src":"930:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"929:17:169"},"scope":32130,"src":"873:74:169","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":32056,"nodeType":"StructuredDocumentation","src":"953:131:169","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":32063,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nodeType":"FunctionDefinition","parameters":{"id":32059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32058,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":32063,"src":"1106:15:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32057,"name":"uint256","nodeType":"ElementaryTypeName","src":"1106:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1105:17:169"},"returnParameters":{"id":32062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32061,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":32063,"src":"1146:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32060,"name":"address","nodeType":"ElementaryTypeName","src":"1146:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1145:15:169"},"scope":32130,"src":"1089:72:169","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":32064,"nodeType":"StructuredDocumentation","src":"1167:690:169","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":32073,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":32071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32066,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":32073,"src":"1888:12:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32065,"name":"address","nodeType":"ElementaryTypeName","src":"1888:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32068,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":32073,"src":"1902:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32067,"name":"address","nodeType":"ElementaryTypeName","src":"1902:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32070,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":32073,"src":"1914:15:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32069,"name":"uint256","nodeType":"ElementaryTypeName","src":"1914:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1887:43:169"},"returnParameters":{"id":32072,"nodeType":"ParameterList","parameters":[],"src":"1939:0:169"},"scope":32130,"src":"1862:78:169","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":32074,"nodeType":"StructuredDocumentation","src":"1946:504:169","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":32083,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":32081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32076,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":32083,"src":"2477:12:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32075,"name":"address","nodeType":"ElementaryTypeName","src":"2477:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32078,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":32083,"src":"2491:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32077,"name":"address","nodeType":"ElementaryTypeName","src":"2491:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32080,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":32083,"src":"2503:15:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32079,"name":"uint256","nodeType":"ElementaryTypeName","src":"2503:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2476:43:169"},"returnParameters":{"id":32082,"nodeType":"ParameterList","parameters":[],"src":"2528:0:169"},"scope":32130,"src":"2455:74:169","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":32084,"nodeType":"StructuredDocumentation","src":"2535:452:169","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":32091,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":32089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32086,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":32091,"src":"3009:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32085,"name":"address","nodeType":"ElementaryTypeName","src":"3009:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32088,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":32091,"src":"3021:15:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32087,"name":"uint256","nodeType":"ElementaryTypeName","src":"3021:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3008:29:169"},"returnParameters":{"id":32090,"nodeType":"ParameterList","parameters":[],"src":"3046:0:169"},"scope":32130,"src":"2992:55:169","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":32092,"nodeType":"StructuredDocumentation","src":"3053:139:169","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":32099,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nodeType":"FunctionDefinition","parameters":{"id":32095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32094,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":32099,"src":"3218:15:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32093,"name":"uint256","nodeType":"ElementaryTypeName","src":"3218:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3217:17:169"},"returnParameters":{"id":32098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32097,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":32099,"src":"3258:16:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32096,"name":"address","nodeType":"ElementaryTypeName","src":"3258:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3257:18:169"},"scope":32130,"src":"3197:79:169","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":32100,"nodeType":"StructuredDocumentation","src":"3282:309:169","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":32107,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nodeType":"FunctionDefinition","parameters":{"id":32105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32102,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":32107,"src":"3623:16:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32101,"name":"address","nodeType":"ElementaryTypeName","src":"3623:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32104,"mutability":"mutable","name":"_approved","nodeType":"VariableDeclaration","scope":32107,"src":"3641:14:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32103,"name":"bool","nodeType":"ElementaryTypeName","src":"3641:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3622:34:169"},"returnParameters":{"id":32106,"nodeType":"ParameterList","parameters":[],"src":"3665:0:169"},"scope":32130,"src":"3596:70:169","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":32108,"nodeType":"StructuredDocumentation","src":"3672:138:169","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":32117,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nodeType":"FunctionDefinition","parameters":{"id":32113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32110,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":32117,"src":"3841:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32109,"name":"address","nodeType":"ElementaryTypeName","src":"3841:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32112,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":32117,"src":"3856:16:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32111,"name":"address","nodeType":"ElementaryTypeName","src":"3856:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3840:33:169"},"returnParameters":{"id":32116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32115,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32117,"src":"3897:4:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32114,"name":"bool","nodeType":"ElementaryTypeName","src":"3897:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3896:6:169"},"scope":32130,"src":"3815:88:169","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":32118,"nodeType":"StructuredDocumentation","src":"3909:568:169","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":32129,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":32127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32120,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":32129,"src":"4508:12:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32119,"name":"address","nodeType":"ElementaryTypeName","src":"4508:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32122,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":32129,"src":"4522:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32121,"name":"address","nodeType":"ElementaryTypeName","src":"4522:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32124,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":32129,"src":"4534:15:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32123,"name":"uint256","nodeType":"ElementaryTypeName","src":"4534:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":32126,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":32129,"src":"4551:19:169","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":32125,"name":"bytes","nodeType":"ElementaryTypeName","src":"4551:5:169","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4507:64:169"},"returnParameters":{"id":32128,"nodeType":"ParameterList","parameters":[],"src":"4580:0:169"},"scope":32130,"src":"4482:99:169","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":32131,"src":"169:4414:169"}],"src":"33:4551:169"},"id":169},"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol","exportedSymbols":{"IERC165":[30378],"IERC721":[32130],"IERC721Enumerable":[32161]},"id":32162,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":32132,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:170"},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol","file":"./IERC721.sol","id":32133,"nodeType":"ImportDirective","scope":32162,"sourceUnit":32131,"src":"58:23:170","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":32135,"name":"IERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":32130,"src":"251:7:170","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$32130","typeString":"contract IERC721"}},"id":32136,"nodeType":"InheritanceSpecifier","src":"251:7:170"}],"contractDependencies":[30378,32130],"contractKind":"interface","documentation":{"id":32134,"nodeType":"StructuredDocumentation","src":"83:136:170","text":" @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":32161,"linearizedBaseContracts":[32161,32130,30378],"name":"IERC721Enumerable","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":32137,"nodeType":"StructuredDocumentation","src":"266:82:170","text":" @dev Returns the total amount of tokens stored by the contract."},"functionSelector":"18160ddd","id":32142,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":32138,"nodeType":"ParameterList","parameters":[],"src":"373:2:170"},"returnParameters":{"id":32141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32140,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32142,"src":"399:7:170","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32139,"name":"uint256","nodeType":"ElementaryTypeName","src":"399:7:170","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"398:9:170"},"scope":32161,"src":"353:55:170","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":32143,"nodeType":"StructuredDocumentation","src":"414:171:170","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":32152,"implemented":false,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nodeType":"FunctionDefinition","parameters":{"id":32148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32145,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":32152,"src":"619:13:170","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32144,"name":"address","nodeType":"ElementaryTypeName","src":"619:7:170","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32147,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":32152,"src":"634:13:170","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32146,"name":"uint256","nodeType":"ElementaryTypeName","src":"634:7:170","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"618:30:170"},"returnParameters":{"id":32151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32150,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":32152,"src":"672:15:170","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32149,"name":"uint256","nodeType":"ElementaryTypeName","src":"672:7:170","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"671:17:170"},"scope":32161,"src":"590:99:170","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":32153,"nodeType":"StructuredDocumentation","src":"695:164:170","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":32160,"implemented":false,"kind":"function","modifiers":[],"name":"tokenByIndex","nodeType":"FunctionDefinition","parameters":{"id":32156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32155,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":32160,"src":"886:13:170","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32154,"name":"uint256","nodeType":"ElementaryTypeName","src":"886:7:170","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"885:15:170"},"returnParameters":{"id":32159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32158,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32160,"src":"924:7:170","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32157,"name":"uint256","nodeType":"ElementaryTypeName","src":"924:7:170","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"923:9:170"},"scope":32161,"src":"864:69:170","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":32162,"src":"220:715:170"}],"src":"33:903:170"},"id":170},"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol","exportedSymbols":{"IERC165":[30378],"IERC721":[32130],"IERC721Metadata":[32188]},"id":32189,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":32163,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:171"},{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol","file":"./IERC721.sol","id":32164,"nodeType":"ImportDirective","scope":32189,"sourceUnit":32131,"src":"58:23:171","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":32166,"name":"IERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":32130,"src":"246:7:171","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$32130","typeString":"contract IERC721"}},"id":32167,"nodeType":"InheritanceSpecifier","src":"246:7:171"}],"contractDependencies":[30378,32130],"contractKind":"interface","documentation":{"id":32165,"nodeType":"StructuredDocumentation","src":"83:133:171","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":32188,"linearizedBaseContracts":[32188,32130,30378],"name":"IERC721Metadata","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":32168,"nodeType":"StructuredDocumentation","src":"261:58:171","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","id":32173,"implemented":false,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","parameters":{"id":32169,"nodeType":"ParameterList","parameters":[],"src":"337:2:171"},"returnParameters":{"id":32172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32171,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32173,"src":"363:13:171","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":32170,"name":"string","nodeType":"ElementaryTypeName","src":"363:6:171","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"362:15:171"},"scope":32188,"src":"324:54:171","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":32174,"nodeType":"StructuredDocumentation","src":"384:60:171","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","id":32179,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","parameters":{"id":32175,"nodeType":"ParameterList","parameters":[],"src":"464:2:171"},"returnParameters":{"id":32178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32177,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32179,"src":"490:13:171","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":32176,"name":"string","nodeType":"ElementaryTypeName","src":"490:6:171","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"489:15:171"},"scope":32188,"src":"449:56:171","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":32180,"nodeType":"StructuredDocumentation","src":"511:90:171","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","id":32187,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nodeType":"FunctionDefinition","parameters":{"id":32183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32182,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":32187,"src":"624:15:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32181,"name":"uint256","nodeType":"ElementaryTypeName","src":"624:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"623:17:171"},"returnParameters":{"id":32186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32185,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32187,"src":"664:13:171","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":32184,"name":"string","nodeType":"ElementaryTypeName","src":"664:6:171","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"663:15:171"},"scope":32188,"src":"606:73:171","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":32189,"src":"217:464:171"}],"src":"33:649:171"},"id":171},"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Receiver.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Receiver.sol","exportedSymbols":{"IERC721Receiver":[32206]},"id":32207,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":32190,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:172"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":32191,"nodeType":"StructuredDocumentation","src":"58:152:172","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":32206,"linearizedBaseContracts":[32206],"name":"IERC721Receiver","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":32192,"nodeType":"StructuredDocumentation","src":"243:485:172","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":32205,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nodeType":"FunctionDefinition","parameters":{"id":32201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32194,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":32205,"src":"759:16:172","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32193,"name":"address","nodeType":"ElementaryTypeName","src":"759:7:172","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32196,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":32205,"src":"777:12:172","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32195,"name":"address","nodeType":"ElementaryTypeName","src":"777:7:172","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32198,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":32205,"src":"791:15:172","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32197,"name":"uint256","nodeType":"ElementaryTypeName","src":"791:7:172","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":32200,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":32205,"src":"808:19:172","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":32199,"name":"bytes","nodeType":"ElementaryTypeName","src":"808:5:172","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"758:70:172"},"returnParameters":{"id":32204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32203,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32205,"src":"847:6:172","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":32202,"name":"bytes4","nodeType":"ElementaryTypeName","src":"847:6:172","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"846:8:172"},"scope":32206,"src":"733:122:172","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":32207,"src":"211:646:172"}],"src":"33:825:172"},"id":172},"openzeppelin-contracts-solc-0.7/utils/Address.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/Address.sol","exportedSymbols":{"Address":[32502]},"id":32503,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":32208,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:173"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":32209,"nodeType":"StructuredDocumentation","src":"58:67:173","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":32502,"linearizedBaseContracts":[32502],"name":"Address","nodeType":"ContractDefinition","nodes":[{"body":{"id":32225,"nodeType":"Block","src":"784:347:173","statements":[{"assignments":[32218],"declarations":[{"constant":false,"id":32218,"mutability":"mutable","name":"size","nodeType":"VariableDeclaration","scope":32225,"src":"981:12:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32217,"name":"uint256","nodeType":"ElementaryTypeName","src":"981:7:173","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":32219,"nodeType":"VariableDeclarationStatement","src":"981:12:173"},{"AST":{"nodeType":"YulBlock","src":"1068:32:173","statements":[{"nodeType":"YulAssignment","src":"1070:28:173","value":{"arguments":[{"name":"account","nodeType":"YulIdentifier","src":"1090:7:173"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"1078:11:173"},"nodeType":"YulFunctionCall","src":"1078:20:173"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1070:4:173"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":32212,"isOffset":false,"isSlot":false,"src":"1090:7:173","valueSize":1},{"declaration":32218,"isOffset":false,"isSlot":false,"src":"1070:4:173","valueSize":1}],"id":32220,"nodeType":"InlineAssembly","src":"1059:41:173"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32221,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32218,"src":"1116:4:173","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":32222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1123:1:173","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1116:8:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":32216,"id":32224,"nodeType":"Return","src":"1109:15:173"}]},"documentation":{"id":32210,"nodeType":"StructuredDocumentation","src":"148:565:173","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":32226,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nodeType":"FunctionDefinition","parameters":{"id":32213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32212,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":32226,"src":"738:15:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32211,"name":"address","nodeType":"ElementaryTypeName","src":"738:7:173","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"737:17:173"},"returnParameters":{"id":32216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32215,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32226,"src":"778:4:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32214,"name":"bool","nodeType":"ElementaryTypeName","src":"778:4:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"777:6:173"},"scope":32502,"src":"718:413:173","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":32259,"nodeType":"Block","src":"2119:320:173","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":32237,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2145:4:173","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$32502","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$32502","typeString":"library Address"}],"id":32236,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2137:7:173","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":32235,"name":"address","nodeType":"ElementaryTypeName","src":"2137:7:173","typeDescriptions":{}}},"id":32238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2137:13:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":32239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2137:21:173","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":32240,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32231,"src":"2162:6:173","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2137:31:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":32242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2170:31:173","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":32234,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2129:7:173","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":32243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2129:73:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32244,"nodeType":"ExpressionStatement","src":"2129:73:173"},{"assignments":[32246,null],"declarations":[{"constant":false,"id":32246,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":32259,"src":"2291:12:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32245,"name":"bool","nodeType":"ElementaryTypeName","src":"2291:4:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":32253,"initialValue":{"arguments":[{"hexValue":"","id":32251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2341:2:173","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":32247,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32229,"src":"2309:9:173","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":32248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2309:14:173","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":32250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":32249,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32231,"src":"2332:6:173","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2309:31:173","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":32252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2309:35:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2290:54:173"},{"expression":{"arguments":[{"id":32255,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32246,"src":"2362:7:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":32256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2371:60:173","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":32254,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2354:7:173","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":32257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2354:78:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32258,"nodeType":"ExpressionStatement","src":"2354:78:173"}]},"documentation":{"id":32227,"nodeType":"StructuredDocumentation","src":"1137:906:173","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":32260,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nodeType":"FunctionDefinition","parameters":{"id":32232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32229,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":32260,"src":"2067:25:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":32228,"name":"address","nodeType":"ElementaryTypeName","src":"2067:15:173","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":32231,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":32260,"src":"2094:14:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32230,"name":"uint256","nodeType":"ElementaryTypeName","src":"2094:7:173","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2066:43:173"},"returnParameters":{"id":32233,"nodeType":"ParameterList","parameters":[],"src":"2119:0:173"},"scope":32502,"src":"2048:391:173","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":32276,"nodeType":"Block","src":"3269:82:173","statements":[{"expression":{"arguments":[{"id":32271,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32263,"src":"3297:6:173","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":32272,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32265,"src":"3305:4:173","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":32273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3311:32:173","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":32270,"name":"functionCall","nodeType":"Identifier","overloadedDeclarations":[32277,32297],"referencedDeclaration":32297,"src":"3284:12:173","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":32274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3284:60:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":32269,"id":32275,"nodeType":"Return","src":"3277:67:173"}]},"documentation":{"id":32261,"nodeType":"StructuredDocumentation","src":"2445:730:173","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":32277,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nodeType":"FunctionDefinition","parameters":{"id":32266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32263,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":32277,"src":"3202:14:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32262,"name":"address","nodeType":"ElementaryTypeName","src":"3202:7:173","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32265,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":32277,"src":"3218:17:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32264,"name":"bytes","nodeType":"ElementaryTypeName","src":"3218:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3201:35:173"},"returnParameters":{"id":32269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32268,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32277,"src":"3255:12:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32267,"name":"bytes","nodeType":"ElementaryTypeName","src":"3255:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3254:14:173"},"scope":32502,"src":"3180:171:173","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":32296,"nodeType":"Block","src":"3690:76:173","statements":[{"expression":{"arguments":[{"id":32290,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32280,"src":"3729:6:173","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":32291,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32282,"src":"3737:4:173","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":32292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3743:1:173","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":32293,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32284,"src":"3746:12:173","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":32289,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[32317,32367],"referencedDeclaration":32367,"src":"3707:21:173","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":32294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3707:52:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":32288,"id":32295,"nodeType":"Return","src":"3700:59:173"}]},"documentation":{"id":32278,"nodeType":"StructuredDocumentation","src":"3357:211:173","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":32297,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nodeType":"FunctionDefinition","parameters":{"id":32285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32280,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":32297,"src":"3595:14:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32279,"name":"address","nodeType":"ElementaryTypeName","src":"3595:7:173","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32282,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":32297,"src":"3611:17:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32281,"name":"bytes","nodeType":"ElementaryTypeName","src":"3611:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":32284,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":32297,"src":"3630:26:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":32283,"name":"string","nodeType":"ElementaryTypeName","src":"3630:6:173","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3594:63:173"},"returnParameters":{"id":32288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32287,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32297,"src":"3676:12:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32286,"name":"bytes","nodeType":"ElementaryTypeName","src":"3676:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3675:14:173"},"scope":32502,"src":"3573:193:173","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":32316,"nodeType":"Block","src":"4241:111:173","statements":[{"expression":{"arguments":[{"id":32310,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32300,"src":"4280:6:173","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":32311,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32302,"src":"4288:4:173","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":32312,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32304,"src":"4294:5:173","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":32313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4301:43:173","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":32309,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[32317,32367],"referencedDeclaration":32367,"src":"4258:21:173","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":32314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4258:87:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":32308,"id":32315,"nodeType":"Return","src":"4251:94:173"}]},"documentation":{"id":32298,"nodeType":"StructuredDocumentation","src":"3772:351:173","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":32317,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nodeType":"FunctionDefinition","parameters":{"id":32305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32300,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":32317,"src":"4159:14:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32299,"name":"address","nodeType":"ElementaryTypeName","src":"4159:7:173","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32302,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":32317,"src":"4175:17:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32301,"name":"bytes","nodeType":"ElementaryTypeName","src":"4175:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":32304,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":32317,"src":"4194:13:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32303,"name":"uint256","nodeType":"ElementaryTypeName","src":"4194:7:173","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4158:50:173"},"returnParameters":{"id":32308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32307,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32317,"src":"4227:12:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32306,"name":"bytes","nodeType":"ElementaryTypeName","src":"4227:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4226:14:173"},"scope":32502,"src":"4128:224:173","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":32366,"nodeType":"Block","src":"4741:382:173","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":32334,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4767:4:173","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$32502","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$32502","typeString":"library Address"}],"id":32333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4759:7:173","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":32332,"name":"address","nodeType":"ElementaryTypeName","src":"4759:7:173","typeDescriptions":{}}},"id":32335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4759:13:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":32336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"4759:21:173","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":32337,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32324,"src":"4784:5:173","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4759:30:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":32339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4791:40:173","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":32331,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4751:7:173","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":32340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4751:81:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32341,"nodeType":"ExpressionStatement","src":"4751:81:173"},{"expression":{"arguments":[{"arguments":[{"id":32344,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32320,"src":"4861:6:173","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":32343,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32226,"src":"4850:10:173","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":32345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4850:18:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":32346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4870:31:173","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":32342,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4842:7:173","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":32347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4842:60:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32348,"nodeType":"ExpressionStatement","src":"4842:60:173"},{"assignments":[32350,32352],"declarations":[{"constant":false,"id":32350,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":32366,"src":"4973:12:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32349,"name":"bool","nodeType":"ElementaryTypeName","src":"4973:4:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":32352,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":32366,"src":"4987:23:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32351,"name":"bytes","nodeType":"ElementaryTypeName","src":"4987:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":32359,"initialValue":{"arguments":[{"id":32357,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32322,"src":"5042:4:173","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":32353,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32320,"src":"5014:6:173","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":32354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"5014:11:173","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":32356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":32355,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32324,"src":"5034:5:173","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5014:27:173","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":32358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5014:33:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4972:75:173"},{"expression":{"arguments":[{"id":32361,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32350,"src":"5082:7:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":32362,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32352,"src":"5091:10:173","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":32363,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32326,"src":"5103:12:173","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":32360,"name":"_verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32501,"src":"5064:17:173","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":32364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5064:52:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":32330,"id":32365,"nodeType":"Return","src":"5057:59:173"}]},"documentation":{"id":32318,"nodeType":"StructuredDocumentation","src":"4358:237:173","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":32367,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nodeType":"FunctionDefinition","parameters":{"id":32327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32320,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":32367,"src":"4631:14:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32319,"name":"address","nodeType":"ElementaryTypeName","src":"4631:7:173","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32322,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":32367,"src":"4647:17:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32321,"name":"bytes","nodeType":"ElementaryTypeName","src":"4647:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":32324,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":32367,"src":"4666:13:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32323,"name":"uint256","nodeType":"ElementaryTypeName","src":"4666:7:173","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":32326,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":32367,"src":"4681:26:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":32325,"name":"string","nodeType":"ElementaryTypeName","src":"4681:6:173","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4630:78:173"},"returnParameters":{"id":32330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32329,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32367,"src":"4727:12:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32328,"name":"bytes","nodeType":"ElementaryTypeName","src":"4727:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4726:14:173"},"scope":32502,"src":"4600:523:173","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":32383,"nodeType":"Block","src":"5400:97:173","statements":[{"expression":{"arguments":[{"id":32378,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32370,"src":"5436:6:173","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":32379,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32372,"src":"5444:4:173","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":32380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5450:39:173","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":32377,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[32384,32419],"referencedDeclaration":32419,"src":"5417:18:173","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":32381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5417:73:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":32376,"id":32382,"nodeType":"Return","src":"5410:80:173"}]},"documentation":{"id":32368,"nodeType":"StructuredDocumentation","src":"5129:166:173","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":32384,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nodeType":"FunctionDefinition","parameters":{"id":32373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32370,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":32384,"src":"5328:14:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32369,"name":"address","nodeType":"ElementaryTypeName","src":"5328:7:173","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32372,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":32384,"src":"5344:17:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32371,"name":"bytes","nodeType":"ElementaryTypeName","src":"5344:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5327:35:173"},"returnParameters":{"id":32376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32375,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32384,"src":"5386:12:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32374,"name":"bytes","nodeType":"ElementaryTypeName","src":"5386:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5385:14:173"},"scope":32502,"src":"5300:197:173","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":32418,"nodeType":"Block","src":"5809:288:173","statements":[{"expression":{"arguments":[{"arguments":[{"id":32398,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32387,"src":"5838:6:173","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":32397,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32226,"src":"5827:10:173","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":32399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5827:18:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374","id":32400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5847:38:173","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":32396,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5819:7:173","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":32401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5819:67:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32402,"nodeType":"ExpressionStatement","src":"5819:67:173"},{"assignments":[32404,32406],"declarations":[{"constant":false,"id":32404,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":32418,"src":"5957:12:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32403,"name":"bool","nodeType":"ElementaryTypeName","src":"5957:4:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":32406,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":32418,"src":"5971:23:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32405,"name":"bytes","nodeType":"ElementaryTypeName","src":"5971:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":32411,"initialValue":{"arguments":[{"id":32409,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32389,"src":"6016:4:173","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":32407,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32387,"src":"5998:6:173","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":32408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"staticcall","nodeType":"MemberAccess","src":"5998:17:173","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":32410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5998:23:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5956:65:173"},{"expression":{"arguments":[{"id":32413,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32404,"src":"6056:7:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":32414,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32406,"src":"6065:10:173","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":32415,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32391,"src":"6077:12:173","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":32412,"name":"_verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32501,"src":"6038:17:173","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":32416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6038:52:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":32395,"id":32417,"nodeType":"Return","src":"6031:59:173"}]},"documentation":{"id":32385,"nodeType":"StructuredDocumentation","src":"5503:173:173","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":32419,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nodeType":"FunctionDefinition","parameters":{"id":32392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32387,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":32419,"src":"5709:14:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32386,"name":"address","nodeType":"ElementaryTypeName","src":"5709:7:173","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32389,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":32419,"src":"5725:17:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32388,"name":"bytes","nodeType":"ElementaryTypeName","src":"5725:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":32391,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":32419,"src":"5744:26:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":32390,"name":"string","nodeType":"ElementaryTypeName","src":"5744:6:173","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5708:63:173"},"returnParameters":{"id":32395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32394,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32419,"src":"5795:12:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32393,"name":"bytes","nodeType":"ElementaryTypeName","src":"5795:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5794:14:173"},"scope":32502,"src":"5681:416:173","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":32435,"nodeType":"Block","src":"6373:101:173","statements":[{"expression":{"arguments":[{"id":32430,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32422,"src":"6411:6:173","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":32431,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32424,"src":"6419:4:173","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":32432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6425:41:173","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":32429,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[32436,32471],"referencedDeclaration":32471,"src":"6390:20:173","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":32433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6390:77:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":32428,"id":32434,"nodeType":"Return","src":"6383:84:173"}]},"documentation":{"id":32420,"nodeType":"StructuredDocumentation","src":"6103:168:173","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":32436,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nodeType":"FunctionDefinition","parameters":{"id":32425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32422,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":32436,"src":"6306:14:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32421,"name":"address","nodeType":"ElementaryTypeName","src":"6306:7:173","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32424,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":32436,"src":"6322:17:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32423,"name":"bytes","nodeType":"ElementaryTypeName","src":"6322:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6305:35:173"},"returnParameters":{"id":32428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32427,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32436,"src":"6359:12:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32426,"name":"bytes","nodeType":"ElementaryTypeName","src":"6359:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6358:14:173"},"scope":32502,"src":"6276:198:173","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":32470,"nodeType":"Block","src":"6785:292:173","statements":[{"expression":{"arguments":[{"arguments":[{"id":32450,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32439,"src":"6814:6:173","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":32449,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32226,"src":"6803:10:173","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":32451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6803:18:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374","id":32452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6823:40:173","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":32448,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6795:7:173","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":32453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6795:69:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32454,"nodeType":"ExpressionStatement","src":"6795:69:173"},{"assignments":[32456,32458],"declarations":[{"constant":false,"id":32456,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":32470,"src":"6935:12:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32455,"name":"bool","nodeType":"ElementaryTypeName","src":"6935:4:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":32458,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":32470,"src":"6949:23:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32457,"name":"bytes","nodeType":"ElementaryTypeName","src":"6949:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":32463,"initialValue":{"arguments":[{"id":32461,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32441,"src":"6996:4:173","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":32459,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32439,"src":"6976:6:173","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":32460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"6976:19:173","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":32462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6976:25:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6934:67:173"},{"expression":{"arguments":[{"id":32465,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32456,"src":"7036:7:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":32466,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32458,"src":"7045:10:173","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":32467,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32443,"src":"7057:12:173","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":32464,"name":"_verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32501,"src":"7018:17:173","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":32468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7018:52:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":32447,"id":32469,"nodeType":"Return","src":"7011:59:173"}]},"documentation":{"id":32437,"nodeType":"StructuredDocumentation","src":"6480:175:173","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":32471,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nodeType":"FunctionDefinition","parameters":{"id":32444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32439,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":32471,"src":"6690:14:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32438,"name":"address","nodeType":"ElementaryTypeName","src":"6690:7:173","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32441,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":32471,"src":"6706:17:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32440,"name":"bytes","nodeType":"ElementaryTypeName","src":"6706:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":32443,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":32471,"src":"6725:26:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":32442,"name":"string","nodeType":"ElementaryTypeName","src":"6725:6:173","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6689:63:173"},"returnParameters":{"id":32447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32446,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32471,"src":"6771:12:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32445,"name":"bytes","nodeType":"ElementaryTypeName","src":"6771:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6770:14:173"},"scope":32502,"src":"6660:417:173","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":32500,"nodeType":"Block","src":"7212:596:173","statements":[{"condition":{"id":32482,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32473,"src":"7226:7:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":32498,"nodeType":"Block","src":"7283:519:173","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":32486,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32475,"src":"7367:10:173","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":32487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7367:17:173","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":32488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7387:1:173","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7367:21:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":32496,"nodeType":"Block","src":"7739:53:173","statements":[{"expression":{"arguments":[{"id":32493,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32477,"src":"7764:12:173","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":32492,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"7757:6:173","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":32494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7757:20:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32495,"nodeType":"ExpressionStatement","src":"7757:20:173"}]},"id":32497,"nodeType":"IfStatement","src":"7363:429:173","trueBody":{"id":32491,"nodeType":"Block","src":"7390:343:173","statements":[{"AST":{"nodeType":"YulBlock","src":"7574:145:173","statements":[{"nodeType":"YulVariableDeclaration","src":"7596:40:173","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"7625:10:173"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7619:5:173"},"nodeType":"YulFunctionCall","src":"7619:17:173"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"7600:15:173","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7668:2:173","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"7672:10:173"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7664:3:173"},"nodeType":"YulFunctionCall","src":"7664:19:173"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"7685:15:173"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7657:6:173"},"nodeType":"YulFunctionCall","src":"7657:44:173"},"nodeType":"YulExpressionStatement","src":"7657:44:173"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":32475,"isOffset":false,"isSlot":false,"src":"7625:10:173","valueSize":1},{"declaration":32475,"isOffset":false,"isSlot":false,"src":"7672:10:173","valueSize":1}],"id":32490,"nodeType":"InlineAssembly","src":"7565:154:173"}]}}]},"id":32499,"nodeType":"IfStatement","src":"7222:580:173","trueBody":{"id":32485,"nodeType":"Block","src":"7235:42:173","statements":[{"expression":{"id":32483,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32475,"src":"7256:10:173","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":32481,"id":32484,"nodeType":"Return","src":"7249:17:173"}]}}]},"id":32501,"implemented":true,"kind":"function","modifiers":[],"name":"_verifyCallResult","nodeType":"FunctionDefinition","parameters":{"id":32478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32473,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":32501,"src":"7110:12:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32472,"name":"bool","nodeType":"ElementaryTypeName","src":"7110:4:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":32475,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":32501,"src":"7124:23:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32474,"name":"bytes","nodeType":"ElementaryTypeName","src":"7124:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":32477,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":32501,"src":"7149:26:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":32476,"name":"string","nodeType":"ElementaryTypeName","src":"7149:6:173","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7109:67:173"},"returnParameters":{"id":32481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32480,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32501,"src":"7198:12:173","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32479,"name":"bytes","nodeType":"ElementaryTypeName","src":"7198:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7197:14:173"},"scope":32502,"src":"7083:725:173","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":32503,"src":"126:7684:173"}],"src":"33:7778:173"},"id":173},"openzeppelin-contracts-solc-0.7/utils/Context.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/Context.sol","exportedSymbols":{"Context":[32525]},"id":32526,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":32504,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:174"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":32525,"linearizedBaseContracts":[32525],"name":"Context","nodeType":"ContractDefinition","nodes":[{"body":{"id":32512,"nodeType":"Block","src":"668:34:174","statements":[{"expression":{"expression":{"id":32509,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"685:3:174","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":32510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"685:10:174","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":32508,"id":32511,"nodeType":"Return","src":"678:17:174"}]},"id":32513,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nodeType":"FunctionDefinition","parameters":{"id":32505,"nodeType":"ParameterList","parameters":[],"src":"617:2:174"},"returnParameters":{"id":32508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32507,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32513,"src":"651:15:174","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":32506,"name":"address","nodeType":"ElementaryTypeName","src":"651:15:174","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"650:17:174"},"scope":32525,"src":"598:104:174","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":32523,"nodeType":"Block","src":"773:165:174","statements":[{"expression":{"id":32518,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"783:4:174","typeDescriptions":{"typeIdentifier":"t_contract$_Context_$32525","typeString":"contract Context"}},"id":32519,"nodeType":"ExpressionStatement","src":"783:4:174"},{"expression":{"expression":{"id":32520,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"923:3:174","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":32521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","src":"923:8:174","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":32517,"id":32522,"nodeType":"Return","src":"916:15:174"}]},"id":32524,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nodeType":"FunctionDefinition","parameters":{"id":32514,"nodeType":"ParameterList","parameters":[],"src":"725:2:174"},"returnParameters":{"id":32517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32516,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32524,"src":"759:12:174","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32515,"name":"bytes","nodeType":"ElementaryTypeName","src":"759:5:174","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"758:14:174"},"scope":32525,"src":"708:230:174","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":32526,"src":"566:374:174"}],"src":"33:908:174"},"id":174},"openzeppelin-contracts-solc-0.7/utils/EnumerableMap.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/EnumerableMap.sol","exportedSymbols":{"EnumerableMap":[33085]},"id":33086,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":32527,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:175"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":32528,"nodeType":"StructuredDocumentation","src":"58:705:175","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":33085,"linearizedBaseContracts":[33085],"name":"EnumerableMap","nodeType":"ContractDefinition","nodes":[{"canonicalName":"EnumerableMap.MapEntry","id":32533,"members":[{"constant":false,"id":32530,"mutability":"mutable","name":"_key","nodeType":"VariableDeclaration","scope":32533,"src":"1276:12:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":32529,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1276:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":32532,"mutability":"mutable","name":"_value","nodeType":"VariableDeclaration","scope":32533,"src":"1298:14:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":32531,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1298:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"MapEntry","nodeType":"StructDefinition","scope":33085,"src":"1250:69:175","visibility":"public"},{"canonicalName":"EnumerableMap.Map","id":32541,"members":[{"constant":false,"id":32536,"mutability":"mutable","name":"_entries","nodeType":"VariableDeclaration","scope":32541,"src":"1388:19:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$32533_storage_$dyn_storage_ptr","typeString":"struct EnumerableMap.MapEntry[]"},"typeName":{"baseType":{"id":32534,"name":"MapEntry","nodeType":"UserDefinedTypeName","referencedDeclaration":32533,"src":"1388:8:175","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$32533_storage_ptr","typeString":"struct EnumerableMap.MapEntry"}},"id":32535,"nodeType":"ArrayTypeName","src":"1388:10:175","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$32533_storage_$dyn_storage_ptr","typeString":"struct EnumerableMap.MapEntry[]"}},"visibility":"internal"},{"constant":false,"id":32540,"mutability":"mutable","name":"_indexes","nodeType":"VariableDeclaration","scope":32541,"src":"1557:37:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":32539,"keyType":{"id":32537,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1566:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1557:28:175","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueType":{"id":32538,"name":"uint256","nodeType":"ElementaryTypeName","src":"1577:7:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"Map","nodeType":"StructDefinition","scope":33085,"src":"1325:276:175","visibility":"public"},{"body":{"id":32602,"nodeType":"Block","src":"1910:596:175","statements":[{"assignments":[32554],"declarations":[{"constant":false,"id":32554,"mutability":"mutable","name":"keyIndex","nodeType":"VariableDeclaration","scope":32602,"src":"2018:16:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32553,"name":"uint256","nodeType":"ElementaryTypeName","src":"2018:7:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":32559,"initialValue":{"baseExpression":{"expression":{"id":32555,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32544,"src":"2037:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32556,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":32540,"src":"2037:12:175","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":32558,"indexExpression":{"id":32557,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32546,"src":"2050:3:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2037:17:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2018:36:175"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32560,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32554,"src":"2069:8:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":32561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2081:1:175","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2069:13:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":32600,"nodeType":"Block","src":"2408:92:175","statements":[{"expression":{"id":32596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":32587,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32544,"src":"2422:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32592,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":32536,"src":"2422:12:175","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$32533_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":32593,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32589,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32554,"src":"2435:8:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":32590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2446:1:175","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2435:12:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2422:26:175","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$32533_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"id":32594,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":32532,"src":"2422:33:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":32595,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32548,"src":"2458:5:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2422:41:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":32597,"nodeType":"ExpressionStatement","src":"2422:41:175"},{"expression":{"hexValue":"66616c7365","id":32598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2484:5:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":32552,"id":32599,"nodeType":"Return","src":"2477:12:175"}]},"id":32601,"nodeType":"IfStatement","src":"2065:435:175","trueBody":{"id":32586,"nodeType":"Block","src":"2084:318:175","statements":[{"expression":{"arguments":[{"arguments":[{"id":32569,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32546,"src":"2170:3:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":32570,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32548,"src":"2183:5:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":32568,"name":"MapEntry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32533,"src":"2153:8:175","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MapEntry_$32533_storage_ptr_$","typeString":"type(struct EnumerableMap.MapEntry storage pointer)"}},"id":32571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["_key","_value"],"nodeType":"FunctionCall","src":"2153:38:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$32533_memory_ptr","typeString":"struct EnumerableMap.MapEntry memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_MapEntry_$32533_memory_ptr","typeString":"struct EnumerableMap.MapEntry memory"}],"expression":{"expression":{"id":32563,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32544,"src":"2135:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32566,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":32536,"src":"2135:12:175","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$32533_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":32567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"2135:17:175","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_struct$_MapEntry_$32533_storage_$returns$__$","typeString":"function (struct EnumerableMap.MapEntry storage ref)"}},"id":32572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2135:57:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32573,"nodeType":"ExpressionStatement","src":"2135:57:175"},{"expression":{"id":32582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":32574,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32544,"src":"2327:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32577,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":32540,"src":"2327:12:175","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":32578,"indexExpression":{"id":32576,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32546,"src":"2340:3:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2327:17:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":32579,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32544,"src":"2347:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32580,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":32536,"src":"2347:12:175","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$32533_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":32581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2347:19:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2327:39:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32583,"nodeType":"ExpressionStatement","src":"2327:39:175"},{"expression":{"hexValue":"74727565","id":32584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2387:4:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":32552,"id":32585,"nodeType":"Return","src":"2380:11:175"}]}}]},"documentation":{"id":32542,"nodeType":"StructuredDocumentation","src":"1607:216:175","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":32603,"implemented":true,"kind":"function","modifiers":[],"name":"_set","nodeType":"FunctionDefinition","parameters":{"id":32549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32544,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":32603,"src":"1842:15:175","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":32543,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":32541,"src":"1842:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":32546,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":32603,"src":"1859:11:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":32545,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1859:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":32548,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":32603,"src":"1872:13:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":32547,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1872:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1841:45:175"},"returnParameters":{"id":32552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32551,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32603,"src":"1904:4:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32550,"name":"bool","nodeType":"ElementaryTypeName","src":"1904:4:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1903:6:175"},"scope":33085,"src":"1828:678:175","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":32683,"nodeType":"Block","src":"2744:1447:175","statements":[{"assignments":[32614],"declarations":[{"constant":false,"id":32614,"mutability":"mutable","name":"keyIndex","nodeType":"VariableDeclaration","scope":32683,"src":"2852:16:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32613,"name":"uint256","nodeType":"ElementaryTypeName","src":"2852:7:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":32619,"initialValue":{"baseExpression":{"expression":{"id":32615,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32606,"src":"2871:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32616,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":32540,"src":"2871:12:175","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":32618,"indexExpression":{"id":32617,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32608,"src":"2884:3:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2871:17:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2852:36:175"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32620,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32614,"src":"2903:8:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":32621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2915:1:175","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2903:13:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":32681,"nodeType":"Block","src":"4148:37:175","statements":[{"expression":{"hexValue":"66616c7365","id":32679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4169:5:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":32612,"id":32680,"nodeType":"Return","src":"4162:12:175"}]},"id":32682,"nodeType":"IfStatement","src":"2899:1286:175","trueBody":{"id":32678,"nodeType":"Block","src":"2918:1224:175","statements":[{"assignments":[32624],"declarations":[{"constant":false,"id":32624,"mutability":"mutable","name":"toDeleteIndex","nodeType":"VariableDeclaration","scope":32678,"src":"3259:21:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32623,"name":"uint256","nodeType":"ElementaryTypeName","src":"3259:7:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":32628,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32625,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32614,"src":"3283:8:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":32626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3294:1:175","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3283:12:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3259:36:175"},{"assignments":[32630],"declarations":[{"constant":false,"id":32630,"mutability":"mutable","name":"lastIndex","nodeType":"VariableDeclaration","scope":32678,"src":"3309:17:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32629,"name":"uint256","nodeType":"ElementaryTypeName","src":"3309:7:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":32636,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":32631,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32606,"src":"3329:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32632,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":32536,"src":"3329:12:175","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$32533_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":32633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3329:19:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":32634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3351:1:175","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3329:23:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3309:43:175"},{"assignments":[32638],"declarations":[{"constant":false,"id":32638,"mutability":"mutable","name":"lastEntry","nodeType":"VariableDeclaration","scope":32678,"src":"3592:26:175","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$32533_storage_ptr","typeString":"struct EnumerableMap.MapEntry"},"typeName":{"id":32637,"name":"MapEntry","nodeType":"UserDefinedTypeName","referencedDeclaration":32533,"src":"3592:8:175","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$32533_storage_ptr","typeString":"struct EnumerableMap.MapEntry"}},"visibility":"internal"}],"id":32643,"initialValue":{"baseExpression":{"expression":{"id":32639,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32606,"src":"3621:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32640,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":32536,"src":"3621:12:175","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$32533_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":32642,"indexExpression":{"id":32641,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32630,"src":"3634:9:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3621:23:175","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$32533_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"nodeType":"VariableDeclarationStatement","src":"3592:52:175"},{"expression":{"id":32650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":32644,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32606,"src":"3736:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32647,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":32536,"src":"3736:12:175","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$32533_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":32648,"indexExpression":{"id":32646,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32624,"src":"3749:13:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3736:27:175","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$32533_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":32649,"name":"lastEntry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32638,"src":"3766:9:175","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$32533_storage_ptr","typeString":"struct EnumerableMap.MapEntry storage pointer"}},"src":"3736:39:175","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$32533_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"id":32651,"nodeType":"ExpressionStatement","src":"3736:39:175"},{"expression":{"id":32661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":32652,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32606,"src":"3841:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32656,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":32540,"src":"3841:12:175","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":32657,"indexExpression":{"expression":{"id":32654,"name":"lastEntry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32638,"src":"3854:9:175","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$32533_storage_ptr","typeString":"struct EnumerableMap.MapEntry storage pointer"}},"id":32655,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":32530,"src":"3854:14:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3841:28:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32658,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32624,"src":"3872:13:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":32659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3888:1:175","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3872:17:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3841:48:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32662,"nodeType":"ExpressionStatement","src":"3841:48:175"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":32663,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32606,"src":"3995:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32666,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":32536,"src":"3995:12:175","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$32533_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":32667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"3995:16:175","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$__$returns$__$","typeString":"function ()"}},"id":32668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3995:18:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32669,"nodeType":"ExpressionStatement","src":"3995:18:175"},{"expression":{"id":32674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"4081:24:175","subExpression":{"baseExpression":{"expression":{"id":32670,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32606,"src":"4088:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32671,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":32540,"src":"4088:12:175","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":32673,"indexExpression":{"id":32672,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32608,"src":"4101:3:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4088:17:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32675,"nodeType":"ExpressionStatement","src":"4081:24:175"},{"expression":{"hexValue":"74727565","id":32676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4127:4:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":32612,"id":32677,"nodeType":"Return","src":"4120:11:175"}]}}]},"documentation":{"id":32604,"nodeType":"StructuredDocumentation","src":"2512:157:175","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":32684,"implemented":true,"kind":"function","modifiers":[],"name":"_remove","nodeType":"FunctionDefinition","parameters":{"id":32609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32606,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":32684,"src":"2691:15:175","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":32605,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":32541,"src":"2691:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":32608,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":32684,"src":"2708:11:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":32607,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2708:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2690:30:175"},"returnParameters":{"id":32612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32611,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32684,"src":"2738:4:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32610,"name":"bool","nodeType":"ElementaryTypeName","src":"2738:4:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2737:6:175"},"scope":33085,"src":"2674:1517:175","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":32701,"nodeType":"Block","src":"4347:46:175","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":32694,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32687,"src":"4364:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32695,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":32540,"src":"4364:12:175","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":32697,"indexExpression":{"id":32696,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32689,"src":"4377:3:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4364:17:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":32698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4385:1:175","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4364:22:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":32693,"id":32700,"nodeType":"Return","src":"4357:29:175"}]},"documentation":{"id":32685,"nodeType":"StructuredDocumentation","src":"4197:68:175","text":" @dev Returns true if the key is in the map. O(1)."},"id":32702,"implemented":true,"kind":"function","modifiers":[],"name":"_contains","nodeType":"FunctionDefinition","parameters":{"id":32690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32687,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":32702,"src":"4289:15:175","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":32686,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":32541,"src":"4289:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":32689,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":32702,"src":"4306:11:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":32688,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4306:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4288:30:175"},"returnParameters":{"id":32693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32692,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32702,"src":"4341:4:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32691,"name":"bool","nodeType":"ElementaryTypeName","src":"4341:4:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4340:6:175"},"scope":33085,"src":"4270:123:175","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":32714,"nodeType":"Block","src":"4548:43:175","statements":[{"expression":{"expression":{"expression":{"id":32710,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32705,"src":"4565:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32711,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":32536,"src":"4565:12:175","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$32533_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":32712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4565:19:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":32709,"id":32713,"nodeType":"Return","src":"4558:26:175"}]},"documentation":{"id":32703,"nodeType":"StructuredDocumentation","src":"4399:79:175","text":" @dev Returns the number of key-value pairs in the map. O(1)."},"id":32715,"implemented":true,"kind":"function","modifiers":[],"name":"_length","nodeType":"FunctionDefinition","parameters":{"id":32706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32705,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":32715,"src":"4500:15:175","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":32704,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":32541,"src":"4500:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"}],"src":"4499:17:175"},"returnParameters":{"id":32709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32708,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32715,"src":"4539:7:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32707,"name":"uint256","nodeType":"ElementaryTypeName","src":"4539:7:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4538:9:175"},"scope":33085,"src":"4483:108:175","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":32749,"nodeType":"Block","src":"5019:189:175","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":32728,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32718,"src":"5037:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32729,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":32536,"src":"5037:12:175","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$32533_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":32730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5037:19:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":32731,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32720,"src":"5059:5:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5037:27:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e6473","id":32733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5066:36:175","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":32727,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5029:7:175","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":32734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5029:74:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32735,"nodeType":"ExpressionStatement","src":"5029:74:175"},{"assignments":[32737],"declarations":[{"constant":false,"id":32737,"mutability":"mutable","name":"entry","nodeType":"VariableDeclaration","scope":32749,"src":"5114:22:175","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$32533_storage_ptr","typeString":"struct EnumerableMap.MapEntry"},"typeName":{"id":32736,"name":"MapEntry","nodeType":"UserDefinedTypeName","referencedDeclaration":32533,"src":"5114:8:175","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$32533_storage_ptr","typeString":"struct EnumerableMap.MapEntry"}},"visibility":"internal"}],"id":32742,"initialValue":{"baseExpression":{"expression":{"id":32738,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32718,"src":"5139:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32739,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":32536,"src":"5139:12:175","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$32533_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":32741,"indexExpression":{"id":32740,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32720,"src":"5152:5:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5139:19:175","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$32533_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"nodeType":"VariableDeclarationStatement","src":"5114:44:175"},{"expression":{"components":[{"expression":{"id":32743,"name":"entry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32737,"src":"5176:5:175","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$32533_storage_ptr","typeString":"struct EnumerableMap.MapEntry storage pointer"}},"id":32744,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":32530,"src":"5176:10:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":32745,"name":"entry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32737,"src":"5188:5:175","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$32533_storage_ptr","typeString":"struct EnumerableMap.MapEntry storage pointer"}},"id":32746,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":32532,"src":"5188:12:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":32747,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5175:26:175","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bytes32,bytes32)"}},"functionReturnParameters":32726,"id":32748,"nodeType":"Return","src":"5168:33:175"}]},"documentation":{"id":32716,"nodeType":"StructuredDocumentation","src":"4596:333:175","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":32750,"implemented":true,"kind":"function","modifiers":[],"name":"_at","nodeType":"FunctionDefinition","parameters":{"id":32721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32718,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":32750,"src":"4947:15:175","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":32717,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":32541,"src":"4947:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":32720,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":32750,"src":"4964:13:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32719,"name":"uint256","nodeType":"ElementaryTypeName","src":"4964:7:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4946:32:175"},"returnParameters":{"id":32726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32723,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32750,"src":"5001:7:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":32722,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5001:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":32725,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32750,"src":"5010:7:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":32724,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5010:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5000:18:175"},"scope":33085,"src":"4934:274:175","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":32787,"nodeType":"Block","src":"5434:220:175","statements":[{"assignments":[32763],"declarations":[{"constant":false,"id":32763,"mutability":"mutable","name":"keyIndex","nodeType":"VariableDeclaration","scope":32787,"src":"5444:16:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32762,"name":"uint256","nodeType":"ElementaryTypeName","src":"5444:7:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":32768,"initialValue":{"baseExpression":{"expression":{"id":32764,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32753,"src":"5463:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32765,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":32540,"src":"5463:12:175","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":32767,"indexExpression":{"id":32766,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32755,"src":"5476:3:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5463:17:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5444:36:175"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32769,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32763,"src":"5494:8:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":32770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5506:1:175","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5494:13:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32776,"nodeType":"IfStatement","src":"5490:36:175","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":32772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5517:5:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":32773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5524:1:175","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":32774,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5516:10:175","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":32761,"id":32775,"nodeType":"Return","src":"5509:17:175"}},{"expression":{"components":[{"hexValue":"74727565","id":32777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5580:4:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"baseExpression":{"expression":{"id":32778,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32753,"src":"5586:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32779,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":32536,"src":"5586:12:175","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$32533_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":32783,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32780,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32763,"src":"5599:8:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":32781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5610:1:175","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5599:12:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5586:26:175","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$32533_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"id":32784,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":32532,"src":"5586:33:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":32785,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5579:41:175","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$","typeString":"tuple(bool,bytes32)"}},"functionReturnParameters":32761,"id":32786,"nodeType":"Return","src":"5572:48:175"}]},"documentation":{"id":32751,"nodeType":"StructuredDocumentation","src":"5214:131:175","text":" @dev Tries to returns the value associated with `key`.  O(1).\n Does not revert if `key` is not in the map."},"id":32788,"implemented":true,"kind":"function","modifiers":[],"name":"_tryGet","nodeType":"FunctionDefinition","parameters":{"id":32756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32753,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":32788,"src":"5367:15:175","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":32752,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":32541,"src":"5367:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":32755,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":32788,"src":"5384:11:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":32754,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5384:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5366:30:175"},"returnParameters":{"id":32761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32758,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32788,"src":"5419:4:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32757,"name":"bool","nodeType":"ElementaryTypeName","src":"5419:4:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":32760,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32788,"src":"5425:7:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":32759,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5425:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5418:15:175"},"scope":33085,"src":"5350:304:175","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":32820,"nodeType":"Block","src":"5881:232:175","statements":[{"assignments":[32799],"declarations":[{"constant":false,"id":32799,"mutability":"mutable","name":"keyIndex","nodeType":"VariableDeclaration","scope":32820,"src":"5891:16:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32798,"name":"uint256","nodeType":"ElementaryTypeName","src":"5891:7:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":32804,"initialValue":{"baseExpression":{"expression":{"id":32800,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32791,"src":"5910:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32801,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":32540,"src":"5910:12:175","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":32803,"indexExpression":{"id":32802,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32793,"src":"5923:3:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5910:17:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5891:36:175"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32806,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32799,"src":"5945:8:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":32807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5957:1:175","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5945:13:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"456e756d657261626c654d61703a206e6f6e6578697374656e74206b6579","id":32809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5960:32:175","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":32805,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5937:7:175","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":32810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5937:56:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32811,"nodeType":"ExpressionStatement","src":"5937:56:175"},{"expression":{"expression":{"baseExpression":{"expression":{"id":32812,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32791,"src":"6046:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32813,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":32536,"src":"6046:12:175","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$32533_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":32817,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32814,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32799,"src":"6059:8:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":32815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6070:1:175","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6059:12:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6046:26:175","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$32533_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"id":32818,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":32532,"src":"6046:33:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":32797,"id":32819,"nodeType":"Return","src":"6039:40:175"}]},"documentation":{"id":32789,"nodeType":"StructuredDocumentation","src":"5660:141:175","text":" @dev Returns the value associated with `key`.  O(1).\n Requirements:\n - `key` must be in the map."},"id":32821,"implemented":true,"kind":"function","modifiers":[],"name":"_get","nodeType":"FunctionDefinition","parameters":{"id":32794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32791,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":32821,"src":"5820:15:175","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":32790,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":32541,"src":"5820:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":32793,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":32821,"src":"5837:11:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":32792,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5837:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5819:30:175"},"returnParameters":{"id":32797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32796,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32821,"src":"5872:7:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":32795,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5872:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5871:9:175"},"scope":33085,"src":"5806:307:175","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":32855,"nodeType":"Block","src":"6498:212:175","statements":[{"assignments":[32834],"declarations":[{"constant":false,"id":32834,"mutability":"mutable","name":"keyIndex","nodeType":"VariableDeclaration","scope":32855,"src":"6508:16:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32833,"name":"uint256","nodeType":"ElementaryTypeName","src":"6508:7:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":32839,"initialValue":{"baseExpression":{"expression":{"id":32835,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32824,"src":"6527:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32836,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":32540,"src":"6527:12:175","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":32838,"indexExpression":{"id":32837,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32826,"src":"6540:3:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6527:17:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6508:36:175"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32841,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32834,"src":"6562:8:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":32842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6574:1:175","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6562:13:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":32844,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32828,"src":"6577:12:175","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":32840,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6554:7:175","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":32845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6554:36:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32846,"nodeType":"ExpressionStatement","src":"6554:36:175"},{"expression":{"expression":{"baseExpression":{"expression":{"id":32847,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32824,"src":"6643:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":32848,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":32536,"src":"6643:12:175","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$32533_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":32852,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32849,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32834,"src":"6656:8:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":32850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6667:1:175","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6656:12:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6643:26:175","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$32533_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"id":32853,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":32532,"src":"6643:33:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":32832,"id":32854,"nodeType":"Return","src":"6636:40:175"}]},"documentation":{"id":32822,"nodeType":"StructuredDocumentation","src":"6119:271:175","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":32856,"implemented":true,"kind":"function","modifiers":[],"name":"_get","nodeType":"FunctionDefinition","parameters":{"id":32829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32824,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":32856,"src":"6409:15:175","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":32823,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":32541,"src":"6409:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":32826,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":32856,"src":"6426:11:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":32825,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6426:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":32828,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":32856,"src":"6439:26:175","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":32827,"name":"string","nodeType":"ElementaryTypeName","src":"6439:6:175","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6408:58:175"},"returnParameters":{"id":32832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32831,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32856,"src":"6489:7:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":32830,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6489:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6488:9:175"},"scope":33085,"src":"6395:315:175","stateMutability":"view","virtual":false,"visibility":"private"},{"canonicalName":"EnumerableMap.UintToAddressMap","id":32859,"members":[{"constant":false,"id":32858,"mutability":"mutable","name":"_inner","nodeType":"VariableDeclaration","scope":32859,"src":"6775:10:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":32857,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":32541,"src":"6775:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"}],"name":"UintToAddressMap","nodeType":"StructDefinition","scope":33085,"src":"6741:51:175","visibility":"public"},{"body":{"id":32890,"nodeType":"Block","src":"7114:88:175","statements":[{"expression":{"arguments":[{"expression":{"id":32872,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32862,"src":"7136:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":32873,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":32858,"src":"7136:10:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":32876,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32864,"src":"7156:3:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":32875,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7148:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":32874,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7148:7:175","typeDescriptions":{}}},"id":32877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7148:12:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"arguments":[{"id":32884,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32866,"src":"7186:5:175","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":32883,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7178:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":32882,"name":"uint160","nodeType":"ElementaryTypeName","src":"7178:7:175","typeDescriptions":{}}},"id":32885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7178:14:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":32881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7170:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":32880,"name":"uint256","nodeType":"ElementaryTypeName","src":"7170:7:175","typeDescriptions":{}}},"id":32886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7170:23:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":32879,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7162:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":32878,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7162:7:175","typeDescriptions":{}}},"id":32887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7162:32:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$32541_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":32871,"name":"_set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32603,"src":"7131:4:175","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Map_$32541_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32,bytes32) returns (bool)"}},"id":32888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7131:64:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":32870,"id":32889,"nodeType":"Return","src":"7124:71:175"}]},"documentation":{"id":32860,"nodeType":"StructuredDocumentation","src":"6798:216:175","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":32891,"implemented":true,"kind":"function","modifiers":[],"name":"set","nodeType":"FunctionDefinition","parameters":{"id":32867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32862,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":32891,"src":"7032:28:175","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":32861,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":32859,"src":"7032:16:175","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":32864,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":32891,"src":"7062:11:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32863,"name":"uint256","nodeType":"ElementaryTypeName","src":"7062:7:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":32866,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":32891,"src":"7075:13:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32865,"name":"address","nodeType":"ElementaryTypeName","src":"7075:7:175","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7031:58:175"},"returnParameters":{"id":32870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32869,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32891,"src":"7108:4:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32868,"name":"bool","nodeType":"ElementaryTypeName","src":"7108:4:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7107:6:175"},"scope":33085,"src":"7019:183:175","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":32910,"nodeType":"Block","src":"7444:57:175","statements":[{"expression":{"arguments":[{"expression":{"id":32902,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32894,"src":"7469:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":32903,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":32858,"src":"7469:10:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":32906,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32896,"src":"7489:3:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":32905,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7481:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":32904,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7481:7:175","typeDescriptions":{}}},"id":32907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7481:12:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$32541_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":32901,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32684,"src":"7461:7:175","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Map_$32541_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32) returns (bool)"}},"id":32908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7461:33:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":32900,"id":32909,"nodeType":"Return","src":"7454:40:175"}]},"documentation":{"id":32892,"nodeType":"StructuredDocumentation","src":"7208:148:175","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":32911,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":32897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32894,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":32911,"src":"7377:28:175","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":32893,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":32859,"src":"7377:16:175","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":32896,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":32911,"src":"7407:11:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32895,"name":"uint256","nodeType":"ElementaryTypeName","src":"7407:7:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7376:43:175"},"returnParameters":{"id":32900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32899,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32911,"src":"7438:4:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32898,"name":"bool","nodeType":"ElementaryTypeName","src":"7438:4:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7437:6:175"},"scope":33085,"src":"7361:140:175","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":32930,"nodeType":"Block","src":"7670:59:175","statements":[{"expression":{"arguments":[{"expression":{"id":32922,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32914,"src":"7697:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":32923,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":32858,"src":"7697:10:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":32926,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32916,"src":"7717:3:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":32925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7709:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":32924,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7709:7:175","typeDescriptions":{}}},"id":32927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7709:12:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$32541_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":32921,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32702,"src":"7687:9:175","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$32541_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool)"}},"id":32928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7687:35:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":32920,"id":32929,"nodeType":"Return","src":"7680:42:175"}]},"documentation":{"id":32912,"nodeType":"StructuredDocumentation","src":"7507:68:175","text":" @dev Returns true if the key is in the map. O(1)."},"id":32931,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":32917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32914,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":32931,"src":"7598:28:175","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":32913,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":32859,"src":"7598:16:175","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":32916,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":32931,"src":"7628:11:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32915,"name":"uint256","nodeType":"ElementaryTypeName","src":"7628:7:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7597:43:175"},"returnParameters":{"id":32920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32919,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32931,"src":"7664:4:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32918,"name":"bool","nodeType":"ElementaryTypeName","src":"7664:4:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7663:6:175"},"scope":33085,"src":"7580:149:175","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":32944,"nodeType":"Block","src":"7890:43:175","statements":[{"expression":{"arguments":[{"expression":{"id":32940,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32934,"src":"7915:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":32941,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":32858,"src":"7915:10:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage","typeString":"struct EnumerableMap.Map storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$32541_storage","typeString":"struct EnumerableMap.Map storage ref"}],"id":32939,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32715,"src":"7907:7:175","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$32541_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableMap.Map storage pointer) view returns (uint256)"}},"id":32942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7907:19:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":32938,"id":32943,"nodeType":"Return","src":"7900:26:175"}]},"documentation":{"id":32932,"nodeType":"StructuredDocumentation","src":"7735:72:175","text":" @dev Returns the number of elements in the map. O(1)."},"id":32945,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":32935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32934,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":32945,"src":"7828:28:175","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":32933,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":32859,"src":"7828:16:175","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"}],"src":"7827:30:175"},"returnParameters":{"id":32938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32937,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32945,"src":"7881:7:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32936,"name":"uint256","nodeType":"ElementaryTypeName","src":"7881:7:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7880:9:175"},"scope":33085,"src":"7812:121:175","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":32983,"nodeType":"Block","src":"8359:135:175","statements":[{"assignments":[32958,32960],"declarations":[{"constant":false,"id":32958,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":32983,"src":"8370:11:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":32957,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8370:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":32960,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":32983,"src":"8383:13:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":32959,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8383:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":32966,"initialValue":{"arguments":[{"expression":{"id":32962,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32948,"src":"8404:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":32963,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":32858,"src":"8404:10:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"id":32964,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32950,"src":"8416:5:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$32541_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":32961,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32750,"src":"8400:3:175","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$32541_storage_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$","typeString":"function (struct EnumerableMap.Map storage pointer,uint256) view returns (bytes32,bytes32)"}},"id":32965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8400:22:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bytes32,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"8369:53:175"},{"expression":{"components":[{"arguments":[{"id":32969,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32958,"src":"8448:3:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":32968,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8440:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":32967,"name":"uint256","nodeType":"ElementaryTypeName","src":"8440:7:175","typeDescriptions":{}}},"id":32970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8440:12:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"arguments":[{"arguments":[{"id":32977,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32960,"src":"8478:5:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":32976,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8470:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":32975,"name":"uint256","nodeType":"ElementaryTypeName","src":"8470:7:175","typeDescriptions":{}}},"id":32978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8470:14:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":32974,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8462:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":32973,"name":"uint160","nodeType":"ElementaryTypeName","src":"8462:7:175","typeDescriptions":{}}},"id":32979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8462:23:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":32972,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8454:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":32971,"name":"address","nodeType":"ElementaryTypeName","src":"8454:7:175","typeDescriptions":{}}},"id":32980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8454:32:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"id":32981,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8439:48:175","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_payable_$","typeString":"tuple(uint256,address payable)"}},"functionReturnParameters":32956,"id":32982,"nodeType":"Return","src":"8432:55:175"}]},"documentation":{"id":32946,"nodeType":"StructuredDocumentation","src":"7938:318:175","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":32984,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":32951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32948,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":32984,"src":"8273:28:175","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":32947,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":32859,"src":"8273:16:175","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":32950,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":32984,"src":"8303:13:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32949,"name":"uint256","nodeType":"ElementaryTypeName","src":"8303:7:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8272:45:175"},"returnParameters":{"id":32956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32953,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32984,"src":"8341:7:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32952,"name":"uint256","nodeType":"ElementaryTypeName","src":"8341:7:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":32955,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32984,"src":"8350:7:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32954,"name":"address","nodeType":"ElementaryTypeName","src":"8350:7:175","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8340:18:175"},"scope":33085,"src":"8261:233:175","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":33022,"nodeType":"Block","src":"8771:142:175","statements":[{"assignments":[32997,32999],"declarations":[{"constant":false,"id":32997,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":33022,"src":"8782:12:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32996,"name":"bool","nodeType":"ElementaryTypeName","src":"8782:4:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":32999,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":33022,"src":"8796:13:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":32998,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8796:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":33008,"initialValue":{"arguments":[{"expression":{"id":33001,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32987,"src":"8821:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":33002,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":32858,"src":"8821:10:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":33005,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32989,"src":"8841:3:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":33004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8833:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":33003,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8833:7:175","typeDescriptions":{}}},"id":33006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8833:12:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$32541_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":33000,"name":"_tryGet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32788,"src":"8813:7:175","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$32541_storage_ptr_$_t_bytes32_$returns$_t_bool_$_t_bytes32_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool,bytes32)"}},"id":33007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8813:33:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$","typeString":"tuple(bool,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"8781:65:175"},{"expression":{"components":[{"id":33009,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32997,"src":"8864:7:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"arguments":[{"arguments":[{"id":33016,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32999,"src":"8897:5:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":33015,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8889:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":33014,"name":"uint256","nodeType":"ElementaryTypeName","src":"8889:7:175","typeDescriptions":{}}},"id":33017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8889:14:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":33013,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8881:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":33012,"name":"uint160","nodeType":"ElementaryTypeName","src":"8881:7:175","typeDescriptions":{}}},"id":33018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8881:23:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":33011,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8873:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":33010,"name":"address","nodeType":"ElementaryTypeName","src":"8873:7:175","typeDescriptions":{}}},"id":33019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8873:32:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"id":33020,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8863:43:175","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_payable_$","typeString":"tuple(bool,address payable)"}},"functionReturnParameters":32995,"id":33021,"nodeType":"Return","src":"8856:50:175"}]},"documentation":{"id":32985,"nodeType":"StructuredDocumentation","src":"8500:169:175","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":33023,"implemented":true,"kind":"function","modifiers":[],"name":"tryGet","nodeType":"FunctionDefinition","parameters":{"id":32990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32987,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":33023,"src":"8690:28:175","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":32986,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":32859,"src":"8690:16:175","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":32989,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":33023,"src":"8720:11:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32988,"name":"uint256","nodeType":"ElementaryTypeName","src":"8720:7:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8689:43:175"},"returnParameters":{"id":32995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32992,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33023,"src":"8756:4:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32991,"name":"bool","nodeType":"ElementaryTypeName","src":"8756:4:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":32994,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33023,"src":"8762:7:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32993,"name":"address","nodeType":"ElementaryTypeName","src":"8762:7:175","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8755:15:175"},"scope":33085,"src":"8674:239:175","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":33051,"nodeType":"Block","src":"9153:81:175","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":33040,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33026,"src":"9199:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":33041,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":32858,"src":"9199:10:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":33044,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33028,"src":"9219:3:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":33043,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9211:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":33042,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9211:7:175","typeDescriptions":{}}},"id":33045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9211:12:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$32541_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":33039,"name":"_get","nodeType":"Identifier","overloadedDeclarations":[32821,32856],"referencedDeclaration":32821,"src":"9194:4:175","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$32541_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bytes32)"}},"id":33046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9194:30:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":33038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9186:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":33037,"name":"uint256","nodeType":"ElementaryTypeName","src":"9186:7:175","typeDescriptions":{}}},"id":33047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9186:39:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":33036,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9178:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":33035,"name":"uint160","nodeType":"ElementaryTypeName","src":"9178:7:175","typeDescriptions":{}}},"id":33048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9178:48:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":33034,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9170:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":33033,"name":"address","nodeType":"ElementaryTypeName","src":"9170:7:175","typeDescriptions":{}}},"id":33049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9170:57:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":33032,"id":33050,"nodeType":"Return","src":"9163:64:175"}]},"documentation":{"id":33024,"nodeType":"StructuredDocumentation","src":"8919:141:175","text":" @dev Returns the value associated with `key`.  O(1).\n Requirements:\n - `key` must be in the map."},"id":33052,"implemented":true,"kind":"function","modifiers":[],"name":"get","nodeType":"FunctionDefinition","parameters":{"id":33029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33026,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":33052,"src":"9078:28:175","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":33025,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":32859,"src":"9078:16:175","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":33028,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":33052,"src":"9108:11:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33027,"name":"uint256","nodeType":"ElementaryTypeName","src":"9108:7:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9077:43:175"},"returnParameters":{"id":33032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33031,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33052,"src":"9144:7:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33030,"name":"address","nodeType":"ElementaryTypeName","src":"9144:7:175","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9143:9:175"},"scope":33085,"src":"9065:169:175","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":33083,"nodeType":"Block","src":"9630:95:175","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":33071,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33055,"src":"9676:3:175","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":33072,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":32858,"src":"9676:10:175","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$32541_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":33075,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33057,"src":"9696:3:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":33074,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9688:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":33073,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9688:7:175","typeDescriptions":{}}},"id":33076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9688:12:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":33077,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33059,"src":"9702:12:175","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$32541_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":33070,"name":"_get","nodeType":"Identifier","overloadedDeclarations":[32821,32856],"referencedDeclaration":32856,"src":"9671:4:175","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$32541_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":33078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9671:44:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":33069,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9663:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":33068,"name":"uint256","nodeType":"ElementaryTypeName","src":"9663:7:175","typeDescriptions":{}}},"id":33079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9663:53:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":33067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9655:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":33066,"name":"uint160","nodeType":"ElementaryTypeName","src":"9655:7:175","typeDescriptions":{}}},"id":33080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9655:62:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":33065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9647:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":33064,"name":"address","nodeType":"ElementaryTypeName","src":"9647:7:175","typeDescriptions":{}}},"id":33081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9647:71:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":33063,"id":33082,"nodeType":"Return","src":"9640:78:175"}]},"documentation":{"id":33053,"nodeType":"StructuredDocumentation","src":"9240:269:175","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":33084,"implemented":true,"kind":"function","modifiers":[],"name":"get","nodeType":"FunctionDefinition","parameters":{"id":33060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33055,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":33084,"src":"9527:28:175","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":33054,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":32859,"src":"9527:16:175","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$32859_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":33057,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":33084,"src":"9557:11:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33056,"name":"uint256","nodeType":"ElementaryTypeName","src":"9557:7:175","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":33059,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":33084,"src":"9570:26:175","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":33058,"name":"string","nodeType":"ElementaryTypeName","src":"9570:6:175","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"9526:71:175"},"returnParameters":{"id":33063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33062,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33084,"src":"9621:7:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33061,"name":"address","nodeType":"ElementaryTypeName","src":"9621:7:175","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9620:9:175"},"scope":33085,"src":"9514:211:175","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":33086,"src":"764:8963:175"}],"src":"33:9695:175"},"id":175},"openzeppelin-contracts-solc-0.7/utils/EnumerableSet.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/EnumerableSet.sol","exportedSymbols":{"EnumerableSet":[33577]},"id":33578,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":33087,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:176"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":33088,"nodeType":"StructuredDocumentation","src":"58:686:176","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":33577,"linearizedBaseContracts":[33577],"name":"EnumerableSet","nodeType":"ContractDefinition","nodes":[{"canonicalName":"EnumerableSet.Set","id":33096,"members":[{"constant":false,"id":33091,"mutability":"mutable","name":"_values","nodeType":"VariableDeclaration","scope":33096,"src":"1267:17:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":33089,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1267:7:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":33090,"nodeType":"ArrayTypeName","src":"1267:9:176","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":33095,"mutability":"mutable","name":"_indexes","nodeType":"VariableDeclaration","scope":33096,"src":"1418:37:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":33094,"keyType":{"id":33092,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1427:7:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1418:28:176","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueType":{"id":33093,"name":"uint256","nodeType":"ElementaryTypeName","src":"1438:7:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"Set","nodeType":"StructDefinition","scope":33577,"src":"1213:249:176","visibility":"public"},{"body":{"id":33136,"nodeType":"Block","src":"1701:335:176","statements":[{"condition":{"id":33110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1715:22:176","subExpression":{"arguments":[{"id":33107,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33099,"src":"1726:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},{"id":33108,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33101,"src":"1731:5:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":33106,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33235,"src":"1716:9:176","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$33096_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":33109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1716:21:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":33134,"nodeType":"Block","src":"1993:37:176","statements":[{"expression":{"hexValue":"66616c7365","id":33132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2014:5:176","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":33105,"id":33133,"nodeType":"Return","src":"2007:12:176"}]},"id":33135,"nodeType":"IfStatement","src":"1711:319:176","trueBody":{"id":33131,"nodeType":"Block","src":"1739:248:176","statements":[{"expression":{"arguments":[{"id":33116,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33101,"src":"1770:5:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"id":33111,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33099,"src":"1753:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":33114,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":33091,"src":"1753:11:176","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":33115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"1753:16:176","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":33117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1753:23:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":33118,"nodeType":"ExpressionStatement","src":"1753:23:176"},{"expression":{"id":33127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":33119,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33099,"src":"1911:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":33122,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":33095,"src":"1911:12:176","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":33123,"indexExpression":{"id":33121,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33101,"src":"1924:5:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1911:19:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":33124,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33099,"src":"1933:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":33125,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":33091,"src":"1933:11:176","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":33126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1933:18:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1911:40:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33128,"nodeType":"ExpressionStatement","src":"1911:40:176"},{"expression":{"hexValue":"74727565","id":33129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1972:4:176","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":33105,"id":33130,"nodeType":"Return","src":"1965:11:176"}]}}]},"documentation":{"id":33097,"nodeType":"StructuredDocumentation","src":"1468:159:176","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":33137,"implemented":true,"kind":"function","modifiers":[],"name":"_add","nodeType":"FunctionDefinition","parameters":{"id":33102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33099,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":33137,"src":"1646:15:176","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":33098,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":33096,"src":"1646:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":33101,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":33137,"src":"1663:13:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":33100,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1663:7:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1645:32:176"},"returnParameters":{"id":33105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33104,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33137,"src":"1695:4:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33103,"name":"bool","nodeType":"ElementaryTypeName","src":"1695:4:176","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1694:6:176"},"scope":33577,"src":"1632:404:176","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":33216,"nodeType":"Block","src":"2276:1440:176","statements":[{"assignments":[33148],"declarations":[{"constant":false,"id":33148,"mutability":"mutable","name":"valueIndex","nodeType":"VariableDeclaration","scope":33216,"src":"2386:18:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33147,"name":"uint256","nodeType":"ElementaryTypeName","src":"2386:7:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":33153,"initialValue":{"baseExpression":{"expression":{"id":33149,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33140,"src":"2407:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":33150,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":33095,"src":"2407:12:176","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":33152,"indexExpression":{"id":33151,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33142,"src":"2420:5:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2407:19:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2386:40:176"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":33156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":33154,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33148,"src":"2441:10:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":33155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2455:1:176","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2441:15:176","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":33214,"nodeType":"Block","src":"3673:37:176","statements":[{"expression":{"hexValue":"66616c7365","id":33212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3694:5:176","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":33146,"id":33213,"nodeType":"Return","src":"3687:12:176"}]},"id":33215,"nodeType":"IfStatement","src":"2437:1273:176","trueBody":{"id":33211,"nodeType":"Block","src":"2458:1209:176","statements":[{"assignments":[33158],"declarations":[{"constant":false,"id":33158,"mutability":"mutable","name":"toDeleteIndex","nodeType":"VariableDeclaration","scope":33211,"src":"2798:21:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33157,"name":"uint256","nodeType":"ElementaryTypeName","src":"2798:7:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":33162,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":33161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":33159,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33148,"src":"2822:10:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":33160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2835:1:176","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2822:14:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2798:38:176"},{"assignments":[33164],"declarations":[{"constant":false,"id":33164,"mutability":"mutable","name":"lastIndex","nodeType":"VariableDeclaration","scope":33211,"src":"2850:17:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33163,"name":"uint256","nodeType":"ElementaryTypeName","src":"2850:7:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":33170,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":33169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":33165,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33140,"src":"2870:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":33166,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":33091,"src":"2870:11:176","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":33167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2870:18:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":33168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2891:1:176","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2870:22:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2850:42:176"},{"assignments":[33172],"declarations":[{"constant":false,"id":33172,"mutability":"mutable","name":"lastvalue","nodeType":"VariableDeclaration","scope":33211,"src":"3132:17:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":33171,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3132:7:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":33177,"initialValue":{"baseExpression":{"expression":{"id":33173,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33140,"src":"3152:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":33174,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":33091,"src":"3152:11:176","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":33176,"indexExpression":{"id":33175,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33164,"src":"3164:9:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3152:22:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3132:42:176"},{"expression":{"id":33184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":33178,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33140,"src":"3266:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":33181,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":33091,"src":"3266:11:176","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":33182,"indexExpression":{"id":33180,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33158,"src":"3278:13:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3266:26:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33183,"name":"lastvalue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33172,"src":"3295:9:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3266:38:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":33185,"nodeType":"ExpressionStatement","src":"3266:38:176"},{"expression":{"id":33194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":33186,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33140,"src":"3370:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":33189,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":33095,"src":"3370:12:176","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":33190,"indexExpression":{"id":33188,"name":"lastvalue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33172,"src":"3383:9:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3370:23:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":33193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":33191,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33158,"src":"3396:13:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":33192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3412:1:176","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3396:17:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3370:43:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33195,"nodeType":"ExpressionStatement","src":"3370:43:176"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":33196,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33140,"src":"3519:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":33199,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":33091,"src":"3519:11:176","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":33200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"3519:15:176","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$__$returns$__$","typeString":"function ()"}},"id":33201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3519:17:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":33202,"nodeType":"ExpressionStatement","src":"3519:17:176"},{"expression":{"id":33207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"3604:26:176","subExpression":{"baseExpression":{"expression":{"id":33203,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33140,"src":"3611:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":33204,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":33095,"src":"3611:12:176","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":33206,"indexExpression":{"id":33205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33142,"src":"3624:5:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3611:19:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":33208,"nodeType":"ExpressionStatement","src":"3604:26:176"},{"expression":{"hexValue":"74727565","id":33209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3652:4:176","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":33146,"id":33210,"nodeType":"Return","src":"3645:11:176"}]}}]},"documentation":{"id":33138,"nodeType":"StructuredDocumentation","src":"2042:157:176","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":33217,"implemented":true,"kind":"function","modifiers":[],"name":"_remove","nodeType":"FunctionDefinition","parameters":{"id":33143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33140,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":33217,"src":"2221:15:176","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":33139,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":33096,"src":"2221:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":33142,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":33217,"src":"2238:13:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":33141,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2238:7:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2220:32:176"},"returnParameters":{"id":33146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33145,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33217,"src":"2270:4:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33144,"name":"bool","nodeType":"ElementaryTypeName","src":"2270:4:176","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2269:6:176"},"scope":33577,"src":"2204:1512:176","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":33234,"nodeType":"Block","src":"3876:48:176","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":33232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":33227,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33220,"src":"3893:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":33228,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":33095,"src":"3893:12:176","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":33230,"indexExpression":{"id":33229,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33222,"src":"3906:5:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3893:19:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":33231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3916:1:176","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3893:24:176","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":33226,"id":33233,"nodeType":"Return","src":"3886:31:176"}]},"documentation":{"id":33218,"nodeType":"StructuredDocumentation","src":"3722:70:176","text":" @dev Returns true if the value is in the set. O(1)."},"id":33235,"implemented":true,"kind":"function","modifiers":[],"name":"_contains","nodeType":"FunctionDefinition","parameters":{"id":33223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33220,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":33235,"src":"3816:15:176","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":33219,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":33096,"src":"3816:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":33222,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":33235,"src":"3833:13:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":33221,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3833:7:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3815:32:176"},"returnParameters":{"id":33226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33225,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33235,"src":"3870:4:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33224,"name":"bool","nodeType":"ElementaryTypeName","src":"3870:4:176","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3869:6:176"},"scope":33577,"src":"3797:127:176","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":33247,"nodeType":"Block","src":"4070:42:176","statements":[{"expression":{"expression":{"expression":{"id":33243,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33238,"src":"4087:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":33244,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":33091,"src":"4087:11:176","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":33245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4087:18:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":33242,"id":33246,"nodeType":"Return","src":"4080:25:176"}]},"documentation":{"id":33236,"nodeType":"StructuredDocumentation","src":"3930:70:176","text":" @dev Returns the number of values on the set. O(1)."},"id":33248,"implemented":true,"kind":"function","modifiers":[],"name":"_length","nodeType":"FunctionDefinition","parameters":{"id":33239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33238,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":33248,"src":"4022:15:176","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":33237,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":33096,"src":"4022:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"src":"4021:17:176"},"returnParameters":{"id":33242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33241,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33248,"src":"4061:7:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33240,"name":"uint256","nodeType":"ElementaryTypeName","src":"4061:7:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4060:9:176"},"scope":33577,"src":"4005:107:176","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":33272,"nodeType":"Block","src":"4520:125:176","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":33263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":33259,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33251,"src":"4538:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":33260,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":33091,"src":"4538:11:176","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":33261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4538:18:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":33262,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33253,"src":"4559:5:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4538:26:176","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473","id":33264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4566:36:176","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":33258,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4530:7:176","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":33265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4530:73:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":33266,"nodeType":"ExpressionStatement","src":"4530:73:176"},{"expression":{"baseExpression":{"expression":{"id":33267,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33251,"src":"4620:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":33268,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":33091,"src":"4620:11:176","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":33270,"indexExpression":{"id":33269,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33253,"src":"4632:5:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4620:18:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":33257,"id":33271,"nodeType":"Return","src":"4613:25:176"}]},"documentation":{"id":33249,"nodeType":"StructuredDocumentation","src":"4117:322:176","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":33273,"implemented":true,"kind":"function","modifiers":[],"name":"_at","nodeType":"FunctionDefinition","parameters":{"id":33254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33251,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":33273,"src":"4457:15:176","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":33250,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":33096,"src":"4457:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":33253,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":33273,"src":"4474:13:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33252,"name":"uint256","nodeType":"ElementaryTypeName","src":"4474:7:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4456:32:176"},"returnParameters":{"id":33257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33256,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33273,"src":"4511:7:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":33255,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4511:7:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4510:9:176"},"scope":33577,"src":"4444:201:176","stateMutability":"view","virtual":false,"visibility":"private"},{"canonicalName":"EnumerableSet.Bytes32Set","id":33276,"members":[{"constant":false,"id":33275,"mutability":"mutable","name":"_inner","nodeType":"VariableDeclaration","scope":33276,"src":"4698:10:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":33274,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":33096,"src":"4698:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"name":"Bytes32Set","nodeType":"StructDefinition","scope":33577,"src":"4670:45:176","visibility":"public"},{"body":{"id":33292,"nodeType":"Block","src":"4961:47:176","statements":[{"expression":{"arguments":[{"expression":{"id":33287,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33279,"src":"4983:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$33276_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":33288,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":33275,"src":"4983:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":33289,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33281,"src":"4995:5:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":33286,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33137,"src":"4978:4:176","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$33096_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":33290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4978:23:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":33285,"id":33291,"nodeType":"Return","src":"4971:30:176"}]},"documentation":{"id":33277,"nodeType":"StructuredDocumentation","src":"4721:159:176","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":33293,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":33282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33279,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":33293,"src":"4898:22:176","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$33276_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":33278,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":33276,"src":"4898:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$33276_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":33281,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":33293,"src":"4922:13:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":33280,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4922:7:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4897:39:176"},"returnParameters":{"id":33285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33284,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33293,"src":"4955:4:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33283,"name":"bool","nodeType":"ElementaryTypeName","src":"4955:4:176","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4954:6:176"},"scope":33577,"src":"4885:123:176","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":33309,"nodeType":"Block","src":"5255:50:176","statements":[{"expression":{"arguments":[{"expression":{"id":33304,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33296,"src":"5280:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$33276_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":33305,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":33275,"src":"5280:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":33306,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33298,"src":"5292:5:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":33303,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33217,"src":"5272:7:176","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$33096_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":33307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5272:26:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":33302,"id":33308,"nodeType":"Return","src":"5265:33:176"}]},"documentation":{"id":33294,"nodeType":"StructuredDocumentation","src":"5014:157:176","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":33310,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":33299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33296,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":33310,"src":"5192:22:176","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$33276_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":33295,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":33276,"src":"5192:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$33276_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":33298,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":33310,"src":"5216:13:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":33297,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5216:7:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5191:39:176"},"returnParameters":{"id":33302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33301,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33310,"src":"5249:4:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33300,"name":"bool","nodeType":"ElementaryTypeName","src":"5249:4:176","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5248:6:176"},"scope":33577,"src":"5176:129:176","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":33326,"nodeType":"Block","src":"5472:52:176","statements":[{"expression":{"arguments":[{"expression":{"id":33321,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33313,"src":"5499:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$33276_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":33322,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":33275,"src":"5499:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":33323,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33315,"src":"5511:5:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":33320,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33235,"src":"5489:9:176","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$33096_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":33324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5489:28:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":33319,"id":33325,"nodeType":"Return","src":"5482:35:176"}]},"documentation":{"id":33311,"nodeType":"StructuredDocumentation","src":"5311:70:176","text":" @dev Returns true if the value is in the set. O(1)."},"id":33327,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":33316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33313,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":33327,"src":"5404:22:176","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$33276_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":33312,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":33276,"src":"5404:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$33276_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":33315,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":33327,"src":"5428:13:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":33314,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5428:7:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5403:39:176"},"returnParameters":{"id":33319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33318,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33327,"src":"5466:4:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33317,"name":"bool","nodeType":"ElementaryTypeName","src":"5466:4:176","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5465:6:176"},"scope":33577,"src":"5386:138:176","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":33340,"nodeType":"Block","src":"5677:43:176","statements":[{"expression":{"arguments":[{"expression":{"id":33336,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33330,"src":"5702:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$33276_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":33337,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":33275,"src":"5702:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":33335,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33248,"src":"5694:7:176","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$33096_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (uint256)"}},"id":33338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5694:19:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":33334,"id":33339,"nodeType":"Return","src":"5687:26:176"}]},"documentation":{"id":33328,"nodeType":"StructuredDocumentation","src":"5530:70:176","text":" @dev Returns the number of values in the set. O(1)."},"id":33341,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":33331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33330,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":33341,"src":"5621:22:176","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$33276_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":33329,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":33276,"src":"5621:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$33276_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"}],"src":"5620:24:176"},"returnParameters":{"id":33334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33333,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33341,"src":"5668:7:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33332,"name":"uint256","nodeType":"ElementaryTypeName","src":"5668:7:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5667:9:176"},"scope":33577,"src":"5605:115:176","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":33357,"nodeType":"Block","src":"6135:46:176","statements":[{"expression":{"arguments":[{"expression":{"id":33352,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33344,"src":"6156:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$33276_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":33353,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":33275,"src":"6156:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":33354,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33346,"src":"6168:5:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":33351,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33273,"src":"6152:3:176","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$33096_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"}},"id":33355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6152:22:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":33350,"id":33356,"nodeType":"Return","src":"6145:29:176"}]},"documentation":{"id":33342,"nodeType":"StructuredDocumentation","src":"5725:322:176","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":33358,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":33347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33344,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":33358,"src":"6064:22:176","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$33276_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":33343,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":33276,"src":"6064:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$33276_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":33346,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":33358,"src":"6088:13:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33345,"name":"uint256","nodeType":"ElementaryTypeName","src":"6088:7:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6063:39:176"},"returnParameters":{"id":33350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33349,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33358,"src":"6126:7:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":33348,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6126:7:176","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6125:9:176"},"scope":33577,"src":"6052:129:176","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSet.AddressSet","id":33361,"members":[{"constant":false,"id":33360,"mutability":"mutable","name":"_inner","nodeType":"VariableDeclaration","scope":33361,"src":"6234:10:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":33359,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":33096,"src":"6234:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"name":"AddressSet","nodeType":"StructDefinition","scope":33577,"src":"6206:45:176","visibility":"public"},{"body":{"id":33386,"nodeType":"Block","src":"6497:74:176","statements":[{"expression":{"arguments":[{"expression":{"id":33372,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33364,"src":"6519:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$33361_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":33373,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":33360,"src":"6519:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":33380,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33366,"src":"6555:5:176","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":33379,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6547:7:176","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":33378,"name":"uint160","nodeType":"ElementaryTypeName","src":"6547:7:176","typeDescriptions":{}}},"id":33381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6547:14:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":33377,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6539:7:176","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":33376,"name":"uint256","nodeType":"ElementaryTypeName","src":"6539:7:176","typeDescriptions":{}}},"id":33382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6539:23:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":33375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6531:7:176","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":33374,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6531:7:176","typeDescriptions":{}}},"id":33383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6531:32:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":33371,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33137,"src":"6514:4:176","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$33096_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":33384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6514:50:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":33370,"id":33385,"nodeType":"Return","src":"6507:57:176"}]},"documentation":{"id":33362,"nodeType":"StructuredDocumentation","src":"6257:159:176","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":33387,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":33367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33364,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":33387,"src":"6434:22:176","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$33361_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":33363,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":33361,"src":"6434:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$33361_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":33366,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":33387,"src":"6458:13:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33365,"name":"address","nodeType":"ElementaryTypeName","src":"6458:7:176","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6433:39:176"},"returnParameters":{"id":33370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33369,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33387,"src":"6491:4:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33368,"name":"bool","nodeType":"ElementaryTypeName","src":"6491:4:176","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6490:6:176"},"scope":33577,"src":"6421:150:176","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":33412,"nodeType":"Block","src":"6818:77:176","statements":[{"expression":{"arguments":[{"expression":{"id":33398,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33390,"src":"6843:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$33361_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":33399,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":33360,"src":"6843:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":33406,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33392,"src":"6879:5:176","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":33405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6871:7:176","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":33404,"name":"uint160","nodeType":"ElementaryTypeName","src":"6871:7:176","typeDescriptions":{}}},"id":33407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6871:14:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":33403,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6863:7:176","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":33402,"name":"uint256","nodeType":"ElementaryTypeName","src":"6863:7:176","typeDescriptions":{}}},"id":33408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6863:23:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":33401,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6855:7:176","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":33400,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6855:7:176","typeDescriptions":{}}},"id":33409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6855:32:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":33397,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33217,"src":"6835:7:176","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$33096_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":33410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6835:53:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":33396,"id":33411,"nodeType":"Return","src":"6828:60:176"}]},"documentation":{"id":33388,"nodeType":"StructuredDocumentation","src":"6577:157:176","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":33413,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":33393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33390,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":33413,"src":"6755:22:176","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$33361_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":33389,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":33361,"src":"6755:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$33361_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":33392,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":33413,"src":"6779:13:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33391,"name":"address","nodeType":"ElementaryTypeName","src":"6779:7:176","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6754:39:176"},"returnParameters":{"id":33396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33395,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33413,"src":"6812:4:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33394,"name":"bool","nodeType":"ElementaryTypeName","src":"6812:4:176","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6811:6:176"},"scope":33577,"src":"6739:156:176","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":33438,"nodeType":"Block","src":"7062:79:176","statements":[{"expression":{"arguments":[{"expression":{"id":33424,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33416,"src":"7089:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$33361_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":33425,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":33360,"src":"7089:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":33432,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33418,"src":"7125:5:176","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":33431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7117:7:176","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":33430,"name":"uint160","nodeType":"ElementaryTypeName","src":"7117:7:176","typeDescriptions":{}}},"id":33433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7117:14:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":33429,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7109:7:176","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":33428,"name":"uint256","nodeType":"ElementaryTypeName","src":"7109:7:176","typeDescriptions":{}}},"id":33434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7109:23:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":33427,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7101:7:176","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":33426,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7101:7:176","typeDescriptions":{}}},"id":33435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7101:32:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":33423,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33235,"src":"7079:9:176","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$33096_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":33436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7079:55:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":33422,"id":33437,"nodeType":"Return","src":"7072:62:176"}]},"documentation":{"id":33414,"nodeType":"StructuredDocumentation","src":"6901:70:176","text":" @dev Returns true if the value is in the set. O(1)."},"id":33439,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":33419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33416,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":33439,"src":"6994:22:176","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$33361_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":33415,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":33361,"src":"6994:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$33361_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":33418,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":33439,"src":"7018:13:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33417,"name":"address","nodeType":"ElementaryTypeName","src":"7018:7:176","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6993:39:176"},"returnParameters":{"id":33422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33421,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33439,"src":"7056:4:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33420,"name":"bool","nodeType":"ElementaryTypeName","src":"7056:4:176","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7055:6:176"},"scope":33577,"src":"6976:165:176","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":33452,"nodeType":"Block","src":"7294:43:176","statements":[{"expression":{"arguments":[{"expression":{"id":33448,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33442,"src":"7319:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$33361_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":33449,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":33360,"src":"7319:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":33447,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33248,"src":"7311:7:176","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$33096_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (uint256)"}},"id":33450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7311:19:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":33446,"id":33451,"nodeType":"Return","src":"7304:26:176"}]},"documentation":{"id":33440,"nodeType":"StructuredDocumentation","src":"7147:70:176","text":" @dev Returns the number of values in the set. O(1)."},"id":33453,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":33443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33442,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":33453,"src":"7238:22:176","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$33361_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":33441,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":33361,"src":"7238:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$33361_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"src":"7237:24:176"},"returnParameters":{"id":33446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33445,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33453,"src":"7285:7:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33444,"name":"uint256","nodeType":"ElementaryTypeName","src":"7285:7:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7284:9:176"},"scope":33577,"src":"7222:115:176","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":33478,"nodeType":"Block","src":"7752:73:176","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":33470,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33456,"src":"7797:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$33361_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":33471,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":33360,"src":"7797:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":33472,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33458,"src":"7809:5:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":33469,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33273,"src":"7793:3:176","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$33096_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"}},"id":33473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7793:22:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":33468,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7785:7:176","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":33467,"name":"uint256","nodeType":"ElementaryTypeName","src":"7785:7:176","typeDescriptions":{}}},"id":33474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7785:31:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":33466,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7777:7:176","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":33465,"name":"uint160","nodeType":"ElementaryTypeName","src":"7777:7:176","typeDescriptions":{}}},"id":33475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7777:40:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":33464,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7769:7:176","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":33463,"name":"address","nodeType":"ElementaryTypeName","src":"7769:7:176","typeDescriptions":{}}},"id":33476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7769:49:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":33462,"id":33477,"nodeType":"Return","src":"7762:56:176"}]},"documentation":{"id":33454,"nodeType":"StructuredDocumentation","src":"7342:322:176","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":33479,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":33459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33456,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":33479,"src":"7681:22:176","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$33361_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":33455,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":33361,"src":"7681:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$33361_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":33458,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":33479,"src":"7705:13:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33457,"name":"uint256","nodeType":"ElementaryTypeName","src":"7705:7:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7680:39:176"},"returnParameters":{"id":33462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33461,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33479,"src":"7743:7:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33460,"name":"address","nodeType":"ElementaryTypeName","src":"7743:7:176","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7742:9:176"},"scope":33577,"src":"7669:156:176","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSet.UintSet","id":33482,"members":[{"constant":false,"id":33481,"mutability":"mutable","name":"_inner","nodeType":"VariableDeclaration","scope":33482,"src":"7873:10:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":33480,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":33096,"src":"7873:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"name":"UintSet","nodeType":"StructDefinition","scope":33577,"src":"7848:42:176","visibility":"public"},{"body":{"id":33501,"nodeType":"Block","src":"8133:56:176","statements":[{"expression":{"arguments":[{"expression":{"id":33493,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33485,"src":"8155:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":33494,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":33481,"src":"8155:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"id":33497,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33487,"src":"8175:5:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":33496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8167:7:176","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":33495,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8167:7:176","typeDescriptions":{}}},"id":33498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8167:14:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":33492,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33137,"src":"8150:4:176","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$33096_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":33499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8150:32:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":33491,"id":33500,"nodeType":"Return","src":"8143:39:176"}]},"documentation":{"id":33483,"nodeType":"StructuredDocumentation","src":"7896:159:176","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":33502,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":33488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33485,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":33502,"src":"8073:19:176","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":33484,"name":"UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":33482,"src":"8073:7:176","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":33487,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":33502,"src":"8094:13:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33486,"name":"uint256","nodeType":"ElementaryTypeName","src":"8094:7:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8072:36:176"},"returnParameters":{"id":33491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33490,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33502,"src":"8127:4:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33489,"name":"bool","nodeType":"ElementaryTypeName","src":"8127:4:176","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8126:6:176"},"scope":33577,"src":"8060:129:176","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":33521,"nodeType":"Block","src":"8433:59:176","statements":[{"expression":{"arguments":[{"expression":{"id":33513,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33505,"src":"8458:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":33514,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":33481,"src":"8458:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"id":33517,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33507,"src":"8478:5:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":33516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8470:7:176","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":33515,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8470:7:176","typeDescriptions":{}}},"id":33518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8470:14:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":33512,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33217,"src":"8450:7:176","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$33096_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":33519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8450:35:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":33511,"id":33520,"nodeType":"Return","src":"8443:42:176"}]},"documentation":{"id":33503,"nodeType":"StructuredDocumentation","src":"8195:157:176","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":33522,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":33508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33505,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":33522,"src":"8373:19:176","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":33504,"name":"UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":33482,"src":"8373:7:176","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":33507,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":33522,"src":"8394:13:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33506,"name":"uint256","nodeType":"ElementaryTypeName","src":"8394:7:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8372:36:176"},"returnParameters":{"id":33511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33510,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33522,"src":"8427:4:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33509,"name":"bool","nodeType":"ElementaryTypeName","src":"8427:4:176","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8426:6:176"},"scope":33577,"src":"8357:135:176","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":33541,"nodeType":"Block","src":"8656:61:176","statements":[{"expression":{"arguments":[{"expression":{"id":33533,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33525,"src":"8683:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":33534,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":33481,"src":"8683:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"id":33537,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33527,"src":"8703:5:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":33536,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8695:7:176","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":33535,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8695:7:176","typeDescriptions":{}}},"id":33538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8695:14:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":33532,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33235,"src":"8673:9:176","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$33096_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":33539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8673:37:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":33531,"id":33540,"nodeType":"Return","src":"8666:44:176"}]},"documentation":{"id":33523,"nodeType":"StructuredDocumentation","src":"8498:70:176","text":" @dev Returns true if the value is in the set. O(1)."},"id":33542,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":33528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33525,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":33542,"src":"8591:19:176","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":33524,"name":"UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":33482,"src":"8591:7:176","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":33527,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":33542,"src":"8612:13:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33526,"name":"uint256","nodeType":"ElementaryTypeName","src":"8612:7:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8590:36:176"},"returnParameters":{"id":33531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33530,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33542,"src":"8650:4:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33529,"name":"bool","nodeType":"ElementaryTypeName","src":"8650:4:176","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8649:6:176"},"scope":33577,"src":"8573:144:176","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":33555,"nodeType":"Block","src":"8867:43:176","statements":[{"expression":{"arguments":[{"expression":{"id":33551,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33545,"src":"8892:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":33552,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":33481,"src":"8892:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":33550,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33248,"src":"8884:7:176","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$33096_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (uint256)"}},"id":33553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8884:19:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":33549,"id":33554,"nodeType":"Return","src":"8877:26:176"}]},"documentation":{"id":33543,"nodeType":"StructuredDocumentation","src":"8723:70:176","text":" @dev Returns the number of values on the set. O(1)."},"id":33556,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":33546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33545,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":33556,"src":"8814:19:176","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":33544,"name":"UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":33482,"src":"8814:7:176","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"}],"src":"8813:21:176"},"returnParameters":{"id":33549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33548,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33556,"src":"8858:7:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33547,"name":"uint256","nodeType":"ElementaryTypeName","src":"8858:7:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8857:9:176"},"scope":33577,"src":"8798:112:176","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":33575,"nodeType":"Block","src":"9322:55:176","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":33569,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33559,"src":"9351:3:176","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":33570,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":33481,"src":"9351:10:176","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":33571,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33561,"src":"9363:5:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$33096_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":33568,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33273,"src":"9347:3:176","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$33096_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"}},"id":33572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9347:22:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":33567,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9339:7:176","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":33566,"name":"uint256","nodeType":"ElementaryTypeName","src":"9339:7:176","typeDescriptions":{}}},"id":33573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9339:31:176","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":33565,"id":33574,"nodeType":"Return","src":"9332:38:176"}]},"documentation":{"id":33557,"nodeType":"StructuredDocumentation","src":"8915:322:176","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":33576,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":33562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33559,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":33576,"src":"9254:19:176","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":33558,"name":"UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":33482,"src":"9254:7:176","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$33482_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":33561,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":33576,"src":"9275:13:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33560,"name":"uint256","nodeType":"ElementaryTypeName","src":"9275:7:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9253:36:176"},"returnParameters":{"id":33565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33564,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33576,"src":"9313:7:176","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33563,"name":"uint256","nodeType":"ElementaryTypeName","src":"9313:7:176","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9312:9:176"},"scope":33577,"src":"9242:135:176","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":33578,"src":"745:8634:176"}],"src":"33:9347:176"},"id":176},"openzeppelin-contracts-solc-0.7/utils/Strings.sol":{"ast":{"absolutePath":"openzeppelin-contracts-solc-0.7/utils/Strings.sol","exportedSymbols":{"Strings":[33664]},"id":33665,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":33579,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:177"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":33580,"nodeType":"StructuredDocumentation","src":"58:34:177","text":" @dev String operations."},"fullyImplemented":true,"id":33664,"linearizedBaseContracts":[33664],"name":"Strings","nodeType":"ContractDefinition","nodes":[{"body":{"id":33662,"nodeType":"Block","src":"273:654:177","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":33590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":33588,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33583,"src":"475:5:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":33589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"484:1:177","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"475:10:177","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33594,"nodeType":"IfStatement","src":"471:51:177","trueBody":{"id":33593,"nodeType":"Block","src":"487:35:177","statements":[{"expression":{"hexValue":"30","id":33591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"508:3:177","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"functionReturnParameters":33587,"id":33592,"nodeType":"Return","src":"501:10:177"}]}},{"assignments":[33596],"declarations":[{"constant":false,"id":33596,"mutability":"mutable","name":"temp","nodeType":"VariableDeclaration","scope":33662,"src":"531:12:177","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33595,"name":"uint256","nodeType":"ElementaryTypeName","src":"531:7:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":33598,"initialValue":{"id":33597,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33583,"src":"546:5:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"531:20:177"},{"assignments":[33600],"declarations":[{"constant":false,"id":33600,"mutability":"mutable","name":"digits","nodeType":"VariableDeclaration","scope":33662,"src":"561:14:177","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33599,"name":"uint256","nodeType":"ElementaryTypeName","src":"561:7:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":33601,"nodeType":"VariableDeclarationStatement","src":"561:14:177"},{"body":{"id":33612,"nodeType":"Block","src":"603:57:177","statements":[{"expression":{"id":33606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"617:8:177","subExpression":{"id":33605,"name":"digits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33600,"src":"617:6:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33607,"nodeType":"ExpressionStatement","src":"617:8:177"},{"expression":{"id":33610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33608,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33596,"src":"639:4:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":33609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"647:2:177","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"639:10:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33611,"nodeType":"ExpressionStatement","src":"639:10:177"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":33604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":33602,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33596,"src":"592:4:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":33603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"600:1:177","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"592:9:177","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33613,"nodeType":"WhileStatement","src":"585:75:177"},{"assignments":[33615],"declarations":[{"constant":false,"id":33615,"mutability":"mutable","name":"buffer","nodeType":"VariableDeclaration","scope":33662,"src":"669:19:177","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":33614,"name":"bytes","nodeType":"ElementaryTypeName","src":"669:5:177","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":33620,"initialValue":{"arguments":[{"id":33618,"name":"digits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33600,"src":"701:6:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":33617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"691:9:177","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":33616,"name":"bytes","nodeType":"ElementaryTypeName","src":"695:5:177","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":33619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"691:17:177","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"669:39:177"},{"assignments":[33622],"declarations":[{"constant":false,"id":33622,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":33662,"src":"718:13:177","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33621,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":33626,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":33625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":33623,"name":"digits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33600,"src":"734:6:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":33624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"743:1:177","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"734:10:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"718:26:177"},{"expression":{"id":33629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33627,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33596,"src":"754:4:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33628,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33583,"src":"761:5:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"754:12:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33630,"nodeType":"ExpressionStatement","src":"754:12:177"},{"body":{"id":33655,"nodeType":"Block","src":"794:96:177","statements":[{"expression":{"id":33649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":33634,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33615,"src":"808:6:177","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":33637,"indexExpression":{"id":33636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"815:7:177","subExpression":{"id":33635,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33622,"src":"815:5:177","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:177","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":33646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3438","id":33642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"839:2:177","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":33645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":33643,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33596,"src":"844:4:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"3130","id":33644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"851:2:177","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"844:9:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"839:14:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":33641,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"833:5:177","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":33640,"name":"uint8","nodeType":"ElementaryTypeName","src":"833:5:177","typeDescriptions":{}}},"id":33647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"833:21:177","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":33639,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"826:6:177","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":33638,"name":"bytes1","nodeType":"ElementaryTypeName","src":"826:6:177","typeDescriptions":{}}},"id":33648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"826:29:177","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"808:47:177","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":33650,"nodeType":"ExpressionStatement","src":"808:47:177"},{"expression":{"id":33653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33651,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33596,"src":"869:4:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":33652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"877:2:177","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"869:10:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33654,"nodeType":"ExpressionStatement","src":"869:10:177"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":33633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":33631,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33596,"src":"783:4:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":33632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"791:1:177","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"783:9:177","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33656,"nodeType":"WhileStatement","src":"776:114:177"},{"expression":{"arguments":[{"id":33659,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33615,"src":"913:6:177","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":33658,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"906:6:177","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":33657,"name":"string","nodeType":"ElementaryTypeName","src":"906:6:177","typeDescriptions":{}}},"id":33660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"906:14:177","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":33587,"id":33661,"nodeType":"Return","src":"899:21:177"}]},"documentation":{"id":33581,"nodeType":"StructuredDocumentation","src":"115:82:177","text":" @dev Converts a `uint256` to its ASCII `string` representation."},"id":33663,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nodeType":"FunctionDefinition","parameters":{"id":33584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33583,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":33663,"src":"220:13:177","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33582,"name":"uint256","nodeType":"ElementaryTypeName","src":"220:7:177","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"219:15:177"},"returnParameters":{"id":33587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33586,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":33663,"src":"258:13:177","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":33585,"name":"string","nodeType":"ElementaryTypeName","src":"258:6:177","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"257:15:177"},"scope":33664,"src":"202:725:177","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":33665,"src":"93:836:177"}],"src":"33:897:177"},"id":177}},"contracts":{"base64-sol/base64.sol":{"Base64":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122013ed76c7fe1afcf2572ee6693b63be56a5a4ace74cbebdd5c365d3d48a583d0e64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT 0xED PUSH23 0xC7FE1AFCF2572EE6693B63BE56A5A4ACE74CBEBDD5C365 0xD3 0xD4 DUP11 PC RETURNDATASIZE 0xE PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"186:4638:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122013ed76c7fe1afcf2572ee6693b63be56a5a4ace74cbebdd5c365d3d48a583d0e64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT 0xED PUSH23 0xC7FE1AFCF2572EE6693B63BE56A5A4ACE74CBEBDD5C365 0xD3 0xD4 DUP11 PC RETURNDATASIZE 0xE PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"186:4638:0:-: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 functions for encoding/decoding base64\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"base64-sol/base64.sol\":\"Base64\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"base64-sol/base64.sol\":{\"keccak256\":\"0xa73959e6ef0b693e4423a562e612370160b934a75e618361ddd8c9c4b8ddbaaf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17c12e16d8d66f3af15d8787920bd41ca6c1e7517a212a6b9cebd4b6d38f36fe\",\"dweb:/ipfs/QmcXMnZUXEz6LRKsm3CSvqdPboAzmezavi8bTg2dRxM2yE\"]}},\"version\":1}"}},"contracts/elixir-core/ElixirFactory.sol":{"ElixirFactory":{"abi":[{"inputs":[{"internalType":"address","name":"_implementation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"","type":"uint24"}],"name":"feeAmountTickSpacing","outputs":[{"internalType":"int24","name":"","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint24","name":"","type":"uint24"}],"name":"getPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","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":"60a060405234801561001057600080fd5b506040516108ae3803806108ae8339818101604052602081101561003357600080fd5b50516001600160601b0319606082901b16608052600080546001600160a01b0319163390811782556040519091907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c908290a36101f4600081815260016020527f344a86d038cc67650617710ee5afca4f5d1ed60d199ecd86852cac7a55b2d3e5805462ffffff1916600a90811790915560405190929160008051602061088e83398151915291a3610bb8600081815260016020527f8bf1273959200f3b11670b7338c174c40286607d4b851c000be7fc007987b275805462ffffff1916603c90811790915560405190929160008051602061088e83398151915291a3612710600081815260016020527f1ca239af1d44623dfaa87ee0cbbbe4bbeb2112df36e66deedafd694350d045cd805462ffffff191660c890811790915560405190929160008051602061088e83398151915291a35060805160601c6106e66101a860003980610274528061043252506106e66000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80635c60da1b1161005b5780635c60da1b1461013b5780638a7c195f146101435780638da5cb5b1461016e578063a1671295146101765761007d565b806313af4035146100825780631698ee82146100aa57806322afcccb14610102575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b03166101b2565b005b6100e6600480360360608110156100c057600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff16610231565b604080516001600160a01b039092168252519081900360200190f35b6101246004803603602081101561011857600080fd5b503562ffffff1661025d565b6040805160029290920b8252519081900360200190f35b6100e6610272565b6100a86004803603604081101561015957600080fd5b5062ffffff813516906020013560020b610296565b6100e6610359565b6100e66004803603606081101561018c57600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff16610368565b6000546001600160a01b031633146101c957600080fd5b600080546040516001600160a01b03808516939216917fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60026020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b60016020526000908152604090205460020b81565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031633146102ad57600080fd5b620f42408262ffffff16106102c157600080fd5b60008160020b1380156102d857506140008160020b125b6102e157600080fd5b62ffffff8216600090815260016020526040902054600290810b900b1561030757600080fd5b62ffffff828116600081815260016020526040808220805462ffffff1916600287900b958616179055517fc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc9190a35050565b6000546001600160a01b031681565b6000826001600160a01b0316846001600160a01b0316141561038957600080fd5b600080846001600160a01b0316866001600160a01b0316106103ac5784866103af565b85855b90925090506001600160a01b0382166103c757600080fd5b62ffffff8416600090815260016020526040902054600290810b9081900b6103ee57600080fd5b6001600160a01b0383811660009081526002602090815260408083208685168452825280832062ffffff8a168452909152902054161561042d57600080fd5b6104a47f000000000000000000000000000000000000000000000000000000000000000084848860405160200180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff1681526020019350505050604051602081830303815290604052805190602001206105ee565b6040805163053c9c1760e21b81526001600160a01b038681166004830152858116602483015262ffffff89166044830152600285900b60648301529151929650908616916314f2705c9160848082019260009290919082900301818387803b15801561050f57600080fd5b505af1158015610523573d6000803e3d6000fd5b5050506001600160a01b03808516600081815260026020818152604080842089871680865290835281852062ffffff8e168087529084528286208054988e1673ffffffffffffffffffffffffffffffffffffffff19998a16811790915582875285855283872088885285528387208288528552958390208054909816861790975581519389900b8452918301939093528251949550937f783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118929181900390910190a45050509392505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f59150506001600160a01b0381166106aa576040805162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c6564000000000000000000604482015290519081900360640190fd5b9291505056fea2646970667358221220b15baa4561cce14aa5a28dc466def5f1ec2a76e46a6c15fbc7bf87b693e9560c64736f6c63430007060033c66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x8AE CODESIZE SUB DUP1 PUSH2 0x8AE DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP3 SWAP1 SHL AND PUSH1 0x80 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0xB532073B38C83145E3E5135377A08BF9AAB55BC0FD7C1179CD4FB995D2A5159C SWAP1 DUP3 SWAP1 LOG3 PUSH2 0x1F4 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH32 0x344A86D038CC67650617710EE5AFCA4F5D1ED60D199ECD86852CAC7A55B2D3E5 DUP1 SLOAD PUSH3 0xFFFFFF NOT AND PUSH1 0xA SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP3 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x88E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 LOG3 PUSH2 0xBB8 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH32 0x8BF1273959200F3B11670B7338C174C40286607D4B851C000BE7FC007987B275 DUP1 SLOAD PUSH3 0xFFFFFF NOT AND PUSH1 0x3C SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP3 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x88E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 LOG3 PUSH2 0x2710 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH32 0x1CA239AF1D44623DFAA87EE0CBBBE4BBEB2112DF36E66DEEDAFD694350D045CD DUP1 SLOAD PUSH3 0xFFFFFF NOT AND PUSH1 0xC8 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP3 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x88E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 LOG3 POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0x6E6 PUSH2 0x1A8 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x274 MSTORE DUP1 PUSH2 0x432 MSTORE POP PUSH2 0x6E6 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 0x5C60DA1B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x13B JUMPI DUP1 PUSH4 0x8A7C195F EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0xA1671295 EQ PUSH2 0x176 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x13AF4035 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x1698EE82 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x22AFCCCB EQ PUSH2 0x102 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x231 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x124 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x25D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE6 PUSH2 0x272 JUMP JUMPDEST PUSH2 0xA8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0xFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x296 JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x359 JUMP JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x368 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0xB532073B38C83145E3E5135377A08BF9AAB55BC0FD7C1179CD4FB995D2A5159C SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x2 SIGNEXTEND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xF4240 DUP3 PUSH3 0xFFFFFF AND LT PUSH2 0x2C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND SGT DUP1 ISZERO PUSH2 0x2D8 JUMPI POP PUSH2 0x4000 DUP2 PUSH1 0x2 SIGNEXTEND SLT JUMPDEST PUSH2 0x2E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xFFFFFF DUP3 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH3 0xFFFFFF NOT AND PUSH1 0x2 DUP8 SWAP1 SIGNEXTEND SWAP6 DUP7 AND OR SWAP1 SSTORE MLOAD PUSH32 0xC66A3FDF07232CDD185FEBCC6579D408C241B47AE2F9907D84BE655141EEAECC SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x389 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x3AC JUMPI DUP5 DUP7 PUSH2 0x3AF JUMP JUMPDEST DUP6 DUP6 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP2 SWAP1 SIGNEXTEND PUSH2 0x3EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH3 0xFFFFFF DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A4 PUSH32 0x0 DUP5 DUP5 DUP9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 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 PUSH2 0x5EE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x53C9C17 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH3 0xFFFFFF DUP10 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x2 DUP6 SWAP1 SIGNEXTEND PUSH1 0x64 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP7 POP SWAP1 DUP7 AND SWAP2 PUSH4 0x14F2705C SWAP2 PUSH1 0x84 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x50F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x523 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP10 DUP8 AND DUP1 DUP7 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP6 KECCAK256 PUSH3 0xFFFFFF DUP15 AND DUP1 DUP8 MSTORE SWAP1 DUP5 MSTORE DUP3 DUP7 KECCAK256 DUP1 SLOAD SWAP9 DUP15 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT SWAP10 DUP11 AND DUP2 OR SWAP1 SWAP2 SSTORE DUP3 DUP8 MSTORE DUP6 DUP6 MSTORE DUP4 DUP8 KECCAK256 DUP9 DUP9 MSTORE DUP6 MSTORE DUP4 DUP8 KECCAK256 DUP3 DUP9 MSTORE DUP6 MSTORE SWAP6 DUP4 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP9 AND DUP7 OR SWAP1 SWAP8 SSTORE DUP2 MLOAD SWAP4 DUP10 SWAP1 SIGNEXTEND DUP5 MSTORE SWAP2 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 MLOAD SWAP5 SWAP6 POP SWAP4 PUSH32 0x783CCA1C0412DD0D695E784568C96DA2E9C22FF989357A2E8B1D9B2B4E6B7118 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP4 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE DUP3 PUSH1 0x37 DUP3 PUSH1 0x0 CREATE2 SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x6AA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A2063726561746532206661696C6564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB1 JUMPDEST 0xAA GASLIMIT PUSH2 0xCCE1 0x4A 0xA5 LOG2 DUP14 0xC4 PUSH7 0xDEF5F1EC2A76E4 PUSH11 0x6C15FBC7BF87B693E9560C PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER 0xC6 PUSH11 0x3FDF07232CDD185FEBCC65 PUSH26 0xD408C241B47AE2F9907D84BE655141EEAECC0000000000000000 ","sourceMap":"341:2830:1:-:0;;;813:427;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;813:427:1;-1:-1:-1;;;;;;861:32:1;;;;;;;906:5;:18;;-1:-1:-1;;;;;;906:18:1;914:10;906:18;;;;;940:36;;914:10;;906:5;940:36;;906:5;;940:36;1010:3;989:25;;;;:20;:25;;;:30;;-1:-1:-1;;989:30:1;1017:2;989:30;;;;;;:25;1035;1017:2;;1010:3;-1:-1:-1;;;;;;;;;;;1035:25:1;;1092:4;1071:26;;;;:20;:26;;;:31;;-1:-1:-1;;1071:31:1;1100:2;1071:31;;;;;;:26;1118;1100:2;;1092:4;-1:-1:-1;;;;;;;;;;;1118:26:1;;1176:5;1155:27;;;;:20;:27;;;:33;;-1:-1:-1;;1155:33:1;1185:3;1155:33;;;;;;:27;1204:28;1185:3;;1176:5;-1:-1:-1;;;;;;;;;;;1204:28:1;;813:427;341:2830;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{"126":[{"length":32,"start":628},{"length":32,"start":1074}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c80635c60da1b1161005b5780635c60da1b1461013b5780638a7c195f146101435780638da5cb5b1461016e578063a1671295146101765761007d565b806313af4035146100825780631698ee82146100aa57806322afcccb14610102575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b03166101b2565b005b6100e6600480360360608110156100c057600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff16610231565b604080516001600160a01b039092168252519081900360200190f35b6101246004803603602081101561011857600080fd5b503562ffffff1661025d565b6040805160029290920b8252519081900360200190f35b6100e6610272565b6100a86004803603604081101561015957600080fd5b5062ffffff813516906020013560020b610296565b6100e6610359565b6100e66004803603606081101561018c57600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff16610368565b6000546001600160a01b031633146101c957600080fd5b600080546040516001600160a01b03808516939216917fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60026020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b60016020526000908152604090205460020b81565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031633146102ad57600080fd5b620f42408262ffffff16106102c157600080fd5b60008160020b1380156102d857506140008160020b125b6102e157600080fd5b62ffffff8216600090815260016020526040902054600290810b900b1561030757600080fd5b62ffffff828116600081815260016020526040808220805462ffffff1916600287900b958616179055517fc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc9190a35050565b6000546001600160a01b031681565b6000826001600160a01b0316846001600160a01b0316141561038957600080fd5b600080846001600160a01b0316866001600160a01b0316106103ac5784866103af565b85855b90925090506001600160a01b0382166103c757600080fd5b62ffffff8416600090815260016020526040902054600290810b9081900b6103ee57600080fd5b6001600160a01b0383811660009081526002602090815260408083208685168452825280832062ffffff8a168452909152902054161561042d57600080fd5b6104a47f000000000000000000000000000000000000000000000000000000000000000084848860405160200180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff1681526020019350505050604051602081830303815290604052805190602001206105ee565b6040805163053c9c1760e21b81526001600160a01b038681166004830152858116602483015262ffffff89166044830152600285900b60648301529151929650908616916314f2705c9160848082019260009290919082900301818387803b15801561050f57600080fd5b505af1158015610523573d6000803e3d6000fd5b5050506001600160a01b03808516600081815260026020818152604080842089871680865290835281852062ffffff8e168087529084528286208054988e1673ffffffffffffffffffffffffffffffffffffffff19998a16811790915582875285855283872088885285528387208288528552958390208054909816861790975581519389900b8452918301939093528251949550937f783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118929181900390910190a45050509392505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f59150506001600160a01b0381166106aa576040805162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c6564000000000000000000604482015290519081900360640190fd5b9291505056fea2646970667358221220b15baa4561cce14aa5a28dc466def5f1ec2a76e46a6c15fbc7bf87b693e9560c64736f6c63430007060033","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 0x5C60DA1B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x13B JUMPI DUP1 PUSH4 0x8A7C195F EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0xA1671295 EQ PUSH2 0x176 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x13AF4035 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x1698EE82 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x22AFCCCB EQ PUSH2 0x102 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x231 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x124 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x25D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE6 PUSH2 0x272 JUMP JUMPDEST PUSH2 0xA8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0xFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x296 JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x359 JUMP JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x368 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0xB532073B38C83145E3E5135377A08BF9AAB55BC0FD7C1179CD4FB995D2A5159C SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x2 SIGNEXTEND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xF4240 DUP3 PUSH3 0xFFFFFF AND LT PUSH2 0x2C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND SGT DUP1 ISZERO PUSH2 0x2D8 JUMPI POP PUSH2 0x4000 DUP2 PUSH1 0x2 SIGNEXTEND SLT JUMPDEST PUSH2 0x2E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xFFFFFF DUP3 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH3 0xFFFFFF NOT AND PUSH1 0x2 DUP8 SWAP1 SIGNEXTEND SWAP6 DUP7 AND OR SWAP1 SSTORE MLOAD PUSH32 0xC66A3FDF07232CDD185FEBCC6579D408C241B47AE2F9907D84BE655141EEAECC SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x389 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x3AC JUMPI DUP5 DUP7 PUSH2 0x3AF JUMP JUMPDEST DUP6 DUP6 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP2 SWAP1 SIGNEXTEND PUSH2 0x3EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH3 0xFFFFFF DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A4 PUSH32 0x0 DUP5 DUP5 DUP9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 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 PUSH2 0x5EE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x53C9C17 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH3 0xFFFFFF DUP10 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x2 DUP6 SWAP1 SIGNEXTEND PUSH1 0x64 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP7 POP SWAP1 DUP7 AND SWAP2 PUSH4 0x14F2705C SWAP2 PUSH1 0x84 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x50F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x523 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP10 DUP8 AND DUP1 DUP7 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP6 KECCAK256 PUSH3 0xFFFFFF DUP15 AND DUP1 DUP8 MSTORE SWAP1 DUP5 MSTORE DUP3 DUP7 KECCAK256 DUP1 SLOAD SWAP9 DUP15 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT SWAP10 DUP11 AND DUP2 OR SWAP1 SWAP2 SSTORE DUP3 DUP8 MSTORE DUP6 DUP6 MSTORE DUP4 DUP8 KECCAK256 DUP9 DUP9 MSTORE DUP6 MSTORE DUP4 DUP8 KECCAK256 DUP3 DUP9 MSTORE DUP6 MSTORE SWAP6 DUP4 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP9 AND DUP7 OR SWAP1 SWAP8 SSTORE DUP2 MLOAD SWAP4 DUP10 SWAP1 SIGNEXTEND DUP5 MSTORE SWAP2 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 MLOAD SWAP5 SWAP6 POP SWAP4 PUSH32 0x783CCA1C0412DD0D695E784568C96DA2E9C22FF989357A2E8B1D9B2B4E6B7118 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP4 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE DUP3 PUSH1 0x37 DUP3 PUSH1 0x0 CREATE2 SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x6AA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A2063726561746532206661696C6564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB1 JUMPDEST 0xAA GASLIMIT PUSH2 0xCCE1 0x4A 0xA5 LOG2 DUP14 0xC4 PUSH7 0xDEF5F1EC2A76E4 PUSH11 0x6C15FBC7BF87B693E9560C PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"341:2830:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2316:167;;;;;;;;;;;;;;;;-1:-1:-1;2316:167:1;-1:-1:-1;;;;;2316:167:1;;:::i;:::-;;696:108;;;;;;;;;;;;;;;;-1:-1:-1;696:108:1;;-1:-1:-1;;;;;696:108:1;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;696:108:1;;;;;;;;;;;;;;592:61;;;;;;;;;;;;;;;;-1:-1:-1;592:61:1;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;425:48;;;:::i;2527:641::-;;;;;;;;;;;;;;;;-1:-1:-1;2527:641:1;;;;;;;;;;;:::i;518:29::-;;;:::i;1284:988::-;;;;;;;;;;;;;;;;-1:-1:-1;1284:988:1;;-1:-1:-1;;;;;1284:988:1;;;;;;;;;;;;;;;;;;:::i;2316:167::-;2401:5;;-1:-1:-1;;;;;2401:5:1;2387:10;:19;2379:28;;;;;;2436:5;;;2423:27;;-1:-1:-1;;;;;2423:27:1;;;;2436:5;;;2423:27;;;2461:5;:14;;-1:-1:-1;;2461:14:1;-1:-1:-1;;;;;2461:14:1;;;;;;;;;;2316:167::o;696:108::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;696:108:1;;:::o;592:61::-;;;;;;;;;;;;;;;:::o;425:48::-;;;:::o;2527:641::-;2632:5;;-1:-1:-1;;;;;2632:5:1;2618:10;:19;2610:28;;;;;;2663:7;2657:3;:13;;;2649:22;;;;;;2983:1;2969:11;:15;;;:38;;;;;3002:5;2988:11;:19;;;2969:38;2961:47;;;;;;3027:25;;;;;;;:20;:25;;;;;;;;;;:30;;;3019:39;;;;;;3071:25;;;;;;;;:20;:25;;;;;;:39;;-1:-1:-1;;3071:39:1;;;;;;;;;;;3126:34;;;3071:25;3126:34;2527:641;;:::o;518:29::-;;;-1:-1:-1;;;;;518:29:1;;:::o;1284:988::-;1409:12;1452:6;-1:-1:-1;;;;;1442:16:1;:6;-1:-1:-1;;;;;1442:16:1;;;1434:25;;;;;;1471:14;1487;1514:6;-1:-1:-1;;;;;1505:15:1;:6;-1:-1:-1;;;;;1505:15:1;;:79;;1569:6;1577;1505:79;;;1537:6;1545;1505:79;1470:114;;-1:-1:-1;1470:114:1;-1:-1:-1;;;;;;1603:20:1;;1595:29;;;;;;1655:25;;;1635:17;1655:25;;;:20;:25;;;;;;;;;;;1699:16;;;1691:25;;;;;;-1:-1:-1;;;;;1735:15:1;;;1775:1;1735:15;;;:7;:15;;;;;;;;:23;;;;;;;;;;:28;;;;;;;;;;;;:42;1727:51;;;;;;1796:122;1836:14;1886:6;1894;1902:3;1875:31;;;;;;-1:-1:-1;;;;;1875:31:1;;;;;;-1:-1:-1;;;;;1875:31:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1865:42;;;;;;1796:25;:122::i;:::-;1929:62;;;-1:-1:-1;;;1929:62:1;;-1:-1:-1;;;;;1929:62:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1789:129;;-1:-1:-1;1929:28:1;;;;;;:62;;;;;-1:-1:-1;;1929:62:1;;;;;;;;-1:-1:-1;1929:28:1;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;2002:15:1;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:28;;;;;;;;;;;;:35;;;;;-1:-1:-1;;2002:35:1;;;;;;;;2162:15;;;;;;;;;:23;;;;;;;;:28;;;;;;;;;:35;;;;;;;;;;2213:51;;;;;;;;;;;;;;;;;2002:28;;-1:-1:-1;2002:23:1;2213:51;;;;;;;;;;;1284:988;;;;;;;;:::o;1820:590:166:-;1896:16;2020:4;2014:11;2050:66;2045:3;2038:79;2163:6;2157:4;2153:17;2146:4;2141:3;2137:14;2130:41;2207:66;2200:4;2195:3;2191:14;2184:90;2321:4;2315;2310:3;2307:1;2299:27;2287:39;-1:-1:-1;;;;;;;2353:22:166;;2345:58;;;;;-1:-1:-1;;;2345:58:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;1820:590;;;;:::o"},"methodIdentifiers":{"createPool(address,address,uint24)":"a1671295","enableFeeAmount(uint24,int24)":"8a7c195f","feeAmountTickSpacing(uint24)":"22afcccb","getPool(address,address,uint24)":"1698ee82","implementation()":"5c60da1b","owner()":"8da5cb5b","setOwner(address)":"13af4035"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_implementation\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"\",\"type\":\"uint24\"}],\"name\":\"feeAmountTickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":{\"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\"}},\"setOwner(address)\":{\"details\":\"Must be called by the current owner\",\"params\":{\"_owner\":\"The new owner of the factory\"}}},\"stateVariables\":{\"feeAmountTickSpacing\":{\"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\"},\"return\":\"The tick spacing\"},\"getPool\":{\"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\"},\"return\":\"pool The pool address\"},\"implementation\":{\"return\":\"The address of the pool implementation\"},\"owner\":{\"details\":\"Can be changed by the current owner via setOwner\",\"return\":\"The address of the factory owner\"}},\"title\":\"Canonical Elixir 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\"},\"implementation()\":{\"notice\":\"Returns the implementation contract of the pool\"},\"owner()\":{\"notice\":\"Returns the current owner of the factory\"},\"setOwner(address)\":{\"notice\":\"Updates the owner of the factory\"}},\"notice\":\"Deploys Elixir pools and manages ownership and control over pool protocol fees\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/ElixirFactory.sol\":\"ElixirFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/ElixirFactory.sol\":{\"keccak256\":\"0x5860a2feb33e736b1d1e78066802baa3baec94c9f5b845781eb22e595edb4715\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://13cc32a128db175db32658307858bdc0890590d2c67f522967350709e3d04bff\",\"dweb:/ipfs/QmSWNHNPJWee1EsrpRFd2PcFLSsesV18siwtdQmXNkKC8c\"]},\"contracts/elixir-core/interfaces/IElixirFactory.sol\":{\"keccak256\":\"0xeed23ad43ddda20bfb439f677f8f768460e46e6b2624381ea45c6dc59e56c1ea\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9bbded0c2ed0d252b28a26f18603b6c1dc6d49e761621e057d112de0cb00ead\",\"dweb:/ipfs/QmaWXq8nuhisTR5j2DfWfqYVbEJ1wWxZA6LyAdoHmiM83G\"]},\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"openzeppelin-contracts-solc-0.7/proxy/Clones.sol\":{\"keccak256\":\"0x0d24348f536f928d8b42789737bf34762faee065667ab530ea20969a9d9920d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb3289aa8c10ec1edf1dbfce9562298e3e6b20a80f38a1338cb127510dbdda50\",\"dweb:/ipfs/QmZoX93r4bTL89d2gvxuVsr7QmkMVRpEymekZXoopGwymJ\"]}},\"version\":1}"}},"contracts/elixir-core/ElixirPool.sol":{"ElixirPool":{"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":false,"internalType":"uint144","name":"rewardPerSecondX48","type":"uint144"},{"indexed":false,"internalType":"uint32","name":"rewardRateEffectiveUntil","type":"uint32"}],"name":"SetRewardRate","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":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"},{"internalType":"uint24","name":"_fee","type":"uint24"},{"internalType":"int24","name":"_tickSpacing","type":"int24"}],"name":"initialize","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":"","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"},{"internalType":"uint192","name":"rewardPerLiquidityCumulativeX64","type":"uint192"}],"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[]"},{"internalType":"uint192[]","name":"rewardPerLiquidityCumulativeX64s","type":"uint192[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","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":"rewardSlot","outputs":[{"internalType":"uint144","name":"rewardPerSecondX48","type":"uint144"},{"internalType":"uint32","name":"rewardRateEffectiveUntil","type":"uint32"}],"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":[{"internalType":"uint144","name":"rewardPerSecondX48","type":"uint144"},{"internalType":"uint32","name":"rewardRateEffectiveUntil","type":"uint32"}],"name":"setRewardRate","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"},{"internalType":"uint192","name":"rewardPerLiquidityInsideX64","type":"uint192"}],"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":"","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":"","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"},{"internalType":"uint192","name":"rewardPerLiquidityOutsideX64","type":"uint192"}],"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":"608060405234801561001057600080fd5b50615dd380620000216000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80635339c29611610104578063a38807f2116100a2578063ddca3f4311610071578063ddca3f431461092a578063f30583991461094a578063f30dba9314610952578063f637731d146109e3576101cf565b8063a38807f214610890578063c45a0155146108fb578063d0c93a7c14610903578063d21220a714610922576101cf565b806385b66729116100de57806385b667291461069b578063883bdbfd146106d857806394fd4a3e14610826578063a34123a714610856576101cf565b80635339c2961461064b57806370cf754a1461066b5780638206a4d114610673576101cf565b806332148f6711610171578063461413191161014b57806346141319146104fb578063490e6cbc146105155780634f1eb3d8146105a1578063514ea4bf146105f2576101cf565b806332148f67146103df5780633850c7bd146104005780633c8a7d8d14610459576101cf565b80631a686502116101ad5780631a686502146102ed5780631ad8b03b14610311578063218064e514610348578063252c09d71461037a576101cf565b80630dfe1681146101d4578063128acb08146101f857806314f2705c146102a7575b600080fd5b6101dc610a09565b604080516001600160a01b039092168252519081900360200190f35b61028e600480360360a081101561020e57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a08101608082013564010000000081111561024f57600080fd5b82018360208201111561026157600080fd5b8035906020019184600183028401116401000000008311171561028357600080fd5b509092509050610a18565b6040805192835260208301919091528051918290030190f35b6102eb600480360360808110156102bd57600080fd5b506001600160a01b03813581169160208101359091169062ffffff604082013516906060013560020b611635565b005b6102f5611704565b604080516001600160801b039092168252519081900360200190f35b610319611713565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102eb6004803603604081101561035e57600080fd5b5080356001600160901b0316906020013563ffffffff1661172d565b6103976004803603602081101561039057600080fd5b5035611972565b6040805163ffffffff909616865260069490940b60208601526001600160a01b0390921684840152151560608401526001600160c01b03166080830152519081900360a00190f35b6102eb600480360360208110156103f557600080fd5b503561ffff166119cd565b610408611abe565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b61028e600480360360a081101561046f57600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a0810160808201356401000000008111156104bc57600080fd5b8201836020820111156104ce57600080fd5b803590602001918460018302840111640100000000831117156104f057600080fd5b509092509050611b0e565b610503611de7565b60408051918252519081900360200190f35b6102eb6004803603608081101561052b57600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561056257600080fd5b82018360208201111561057457600080fd5b8035906020019184600183028401116401000000008311171561059657600080fd5b509092509050611ded565b610319600480360360a08110156105b757600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b0360608201358116916080013516612235565b61060f6004803603602081101561060857600080fd5b503561242d565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b6105036004803603602081101561066157600080fd5b503560010b61246a565b6102f561247c565b6102eb6004803603604081101561068957600080fd5b5060ff8135811691602001351661248b565b610319600480360360608110156106b157600080fd5b506001600160a01b03813516906001600160801b0360208201358116916040013516612664565b610748600480360360208110156106ee57600080fd5b81019060208101813564010000000081111561070957600080fd5b82018360208201111561071b57600080fd5b8035906020019184602083028401116401000000008311171561073d57600080fd5b5090925090506128ee565b60405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610790578181015183820152602001610778565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156107cf5781810151838201526020016107b7565b50505050905001848103825285818151815260200191508051906020019060200280838360005b8381101561080e5781810151838201526020016107f6565b50505050905001965050505050505060405180910390f35b61082e61299d565b604080516001600160901b03909316835263ffffffff90911660208301528051918290030190f35b61028e6004803603606081101561086c57600080fd5b508035600290810b91602081013590910b90604001356001600160801b03166129bb565b6108ba600480360360408110156108a657600080fd5b508035600290810b9160200135900b612b37565b6040805160069590950b85526001600160a01b03909316602085015263ffffffff909116838301526001600160c01b03166060830152519081900360800190f35b6101dc612e29565b61090b612e38565b6040805160029290920b8252519081900360200190f35b6101dc612e48565b610932612e57565b6040805162ffffff9092168252519081900360200190f35b610503612e69565b6109726004803603602081101561096857600080fd5b503560020b612e6f565b604080516001600160801b03909a168a52600f9890980b60208a015288880196909652606088019490945260069290920b60808701526001600160a01b031660a086015263ffffffff1660c0850152151560e08401526001600160c01b031661010083015251908190036101200190f35b6102eb600480360360208110156109f957600080fd5b50356001600160a01b0316612eec565b6001546001600160a01b031681565b60008085610a52576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526004546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c08201819052610b0b576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610b565780600001516001600160a01b0316866001600160a01b0316118015610b51575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610b88565b80600001516001600160a01b0316866001600160a01b0316108015610b8857506401000276a36001600160a01b038716115b610bbf576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6004805460ff60f01b19169055604080516101608101909152600090808a610bf25760048460a0015160ff16901c610c05565b60108460a0015160ff1681610c0357fe5b065b60ff1681526009546001600160801b03166020820152604001610c2661308b565b63ffffffff168152602001600060060b815260200160006001600160a01b0316815260200160001515815260200160006001600160c01b03168152602001600260149054906101000a900462ffffff1662ffffff168152602001600260179054906101000a900460020b60020b8152602001600160009054906101000a90046001600160a01b03166001600160a01b03168152602001600260009054906101000a90046001600160a01b03166001600160a01b031681525090506000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610d2e57600754610d32565b6006545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610d815750886001600160a01b031681604001516001600160a01b031614155b1561114257610d8e615d33565b60408201516001600160a01b031681526060820151610100850151610db691600b918f61308f565b15156040830152600290810b810b60208301819052620d89e719910b1215610de757620d89e7196020820152610e06565b6020810151620d89e860029190910b1315610e0657620d89e860208201525b610e1381602001516131d1565b6001600160a01b031660608201526040820151610e88908d610e4d578b6001600160a01b031683606001516001600160a01b031611610e67565b8b6001600160a01b031683606001516001600160a01b0316105b610e75578260600151610e77565b8b5b60c0850151855160e0890151613503565b60c085015260a084015260808301526001600160a01b031660408301528215610eea57610ebe8160c001518260800151016136f5565b825103825260a0810151610ee090610ed5906136f5565b60208401519061370b565b6020830152610f25565b610ef78160a001516136f5565b825101825260c08101516080820151610f1f91610f1491016136f5565b602084015190613727565b60208301525b835160ff1615610f6b576000846000015160ff168260c0015181610f4557fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615610faa57610f9e8160c00151600160801b8460c001516001600160801b031661373d565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b03161415611101578060400151156110d8578360a0015161105c57604080850151602080880151928801519087015160055460608a015161102c95600d9594600094919390926001600160901b0382169163ffffffff600160901b909104811691906137ed16565b6001600160c01b031660c08701526001600160a01b03166080860152600690810b900b6060850152600160a08501525b60006110ae82602001518e61107357600654611079565b84608001515b8f61108857856080015161108c565b6007545b608089015160608a015160408b015160c08c0151600a969594939291906139eb565b90508c156110ba576000035b6110c88360c0015182613b01565b6001600160801b031660c0840152505b8b6110e75780602001516110f0565b60018160200151035b600290810b900b606083015261113c565b80600001516001600160a01b031682604001516001600160a01b03161461113c5761112f8260400151613bb7565b600290810b900b60608301525b50610d5b565b836020015160020b816060015160020b1461122d576040808501519084015160208087015190860151600554606089015160808a015160009687966111ad96600d969295919490936001600160901b0383169263ffffffff600160901b9091048116929190613ee316565b604085015160608601516004805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b9390931692909202919091176001600160a01b0319166001600160a01b03909116179055506112529050565b6040810151600480546001600160a01b0319166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b0316146112985760c0810151600980546001600160801b0319166001600160801b039092169190911790555b8a156112e857608081015160065560a08101516001600160801b0316156112e35760a0810151600880546001600160801b031981166001600160801b03918216909301169190911790555b61132e565b608081015160075560a08101516001600160801b03161561132e5760a0810151600880546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b15151461134757602081015181518b03611354565b80600001518a0381602001515b90965094508a1561147e57600085121561137b5761137b8361014001518d876000036140ee565b600061138b846101200151614251565b9050336001600160a01b031663d804d7a788888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561140f57600080fd5b505af1158015611423573d6000803e3d6000fd5b50505050611435846101200151614251565b61143f8289614382565b1115611478576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b50611599565b600086121561149a5761149a8361012001518d886000036140ee565b60006114aa846101400151614251565b9050336001600160a01b031663d804d7a788888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561152e57600080fd5b505af1158015611542573d6000803e3d6000fd5b50505050611554846101400151614251565b61155e8288614382565b1115611597576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015160c083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506004805460ff60f01b1916600160f01b17905550919890975095505050505050565b6000546001600160a01b03161561164b57600080fd5b60008054336001600160a01b0319918216179091556001805482166001600160a01b0387811691909117909155600280549092169085161762ffffff60a01b1916600160a01b62ffffff85811691909102919091177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16600160b81b84840b92909216919091021790556116de81614392565b600380546001600160801b0319166001600160801b039290921691909117905550505050565b6009546001600160801b031681565b6008546001600160801b0380821691600160801b90041682565b600454600160f01b900460ff16611771576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b1916815560005460408051638da5cb5b60e01b815290516001600160a01b0390921692638da5cb5b928282019260209290829003018186803b1580156117bf57600080fd5b505afa1580156117d3573d6000803e3d6000fd5b505050506040513d60208110156117e957600080fd5b50516001600160a01b031633146117ff57600080fd5b428163ffffffff16101561181257600080fd5b60045461188690600160b81b900461ffff1661182c61308b565b600454600954600554600d949392600160a01b810460020b926001600160801b0316916001600160901b0381169163ffffffff600160901b90920482169161ffff600160c81b8304811692600160d81b90041690613ee316565b6004805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b93909216929092021790556040805180820182526001600160901b03841680825263ffffffff841660209283018190526005805471ffffffffffffffffffffffffffffffffffff191683177fffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffff16600160901b830217905583519182529181019190915281517e8866b45af6018e497020f8d16e58c1be320850f245ebdf9d304666bee15e35929181900390910190a150506004805460ff60f01b1916600160f01b179055565b600d8161ffff811061198357600080fd5b60020201805460019091015463ffffffff82169250640100000000820460060b91600160581b81046001600160a01b031691600160f81b90910460ff16906001600160c01b031685565b600454600160f01b900460ff16611a11576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b191690819055600160d81b900461ffff166000611a39600d83856143fc565b6004805461ffff808416600160d81b810261ffff60d81b1990931692909217909255919250831614611aa6576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506004805460ff60f01b1916600160f01b17905550565b6004546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b6004546000908190600160f01b900460ff16611b57576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b191690556001600160801b038516611b7757600080fd5b600080611bc560405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b8152602001611bbb8a6001600160801b03166144a2565b600f0b90526144b3565b6001546002549297509095508694508593506000925082916001600160a01b0391821691168515611bfc57611bf982614251565b93505b8615611c0e57611c0b81614251565b92505b336001600160a01b0316631507a8f489898d8d6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611c9057600080fd5b505af1158015611ca4573d6000803e3d6000fd5b505050506000881115611cfc57611cba82614251565b611cc4858a614382565b1115611cfc576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b8615611d4d57611d0b81614251565b611d158489614382565b1115611d4d576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8b60020b8d60020b8f6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338f8d8d60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506004805460ff60f01b1916600160f01b17905550939a92995091975050505050505050565b60075481565b600454600160f01b900460ff16611e31576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b191690556009546001600160801b031680611e80576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b6040805160a0810182526001546001600160a01b0390811682526002549081166020830152600160a01b900462ffffff16918101829052600060608201819052608082015290611ed5908790620f424061470a565b60608201526040810151611ef390869062ffffff16620f424061470a565b60808201528051600090611f0690614251565b90506000611f178360200151614251565b90508715611f2c578251611f2c908a8a6140ee565b8615611f4157611f4183602001518a896140ee565b336001600160a01b0316630659efa68460600151856080015189896040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611fcb57600080fd5b505af1158015611fdf573d6000803e3d6000fd5b505050506000611ff28460000151614251565b905060006120038560200151614251565b90508161201d86606001518661438290919063ffffffff16565b1115612055576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b8061206d86608001518561438290919063ffffffff16565b11156120a5576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b838203838203811561213457600454600160e81b9004600f16600081156120d8578160ff1684816120d257fe5b046120db565b60005b90506001600160801b0381161561210e57600880546001600160801b038082168401166001600160801b03199091161790555b612128818503600160801b8c6001600160801b031661373d565b60068054909101905550505b80156121bf5760048054600160e81b9004901c600f1660008115612164578160ff16838161215e57fe5b04612167565b60005b90506001600160801b0381161561219957600880546001600160801b03600160801b8083048216850182160291161790555b6121b3818403600160801b8c6001600160801b031661373d565b60078054909101905550505b604080518d8152602081018d90528082018490526060810183905290516001600160a01b038f169133917fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6339181900360800190a350506004805460ff60f01b1916600160f01b1790555050505050505050505050565b6004546000908190600160f01b900460ff1661227e576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b19169055600061229a600c338989614744565b60038101549091506001600160801b03908116908616116122bb57846122ca565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b9091048116908516116122f25783612308565b6003810154600160801b90046001600160801b03165b91506001600160801b0383161561235a576003810180546001600160801b031981166001600160801b0391821686900382161790915560015461235a916001600160a01b03909116908a9086166140ee565b6001600160801b038216156123ad576003810180546001600160801b03600160801b8083048216869003821602918116919091179091556002546123ad916001600160a01b03909116908a9085166140ee565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506004805460ff60f01b1916600160f01b17905590969095509350505050565b600c6020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b600b6020526000908152604090205481565b6003546001600160801b031681565b600454600160f01b900460ff166124cf576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b1916815560005460408051638da5cb5b60e01b815290516001600160a01b0390921692638da5cb5b928282019260209290829003018186803b15801561251d57600080fd5b505afa158015612531573d6000803e3d6000fd5b505050506040513d602081101561254757600080fd5b50516001600160a01b0316331461255d57600080fd5b60ff82161580612580575060048260ff16101580156125805750600a8260ff1611155b80156125aa575060ff811615806125aa575060048160ff16101580156125aa5750600a8160ff1611155b6125b357600080fd5b60048054610ff083831b16840160ff908116600160e81b9081027fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84161784556040805191909304600f81811683529481901c909416602082015285821681840152848216606082015291519216917f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b1339181900360800190a150506004805460ff60f01b1916600160f01b17905550565b6004546000908190600160f01b900460ff166126ad576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b1916815560005460408051638da5cb5b60e01b815290516001600160a01b0390921692638da5cb5b928282019260209290829003018186803b1580156126fb57600080fd5b505afa15801561270f573d6000803e3d6000fd5b505050506040513d602081101561272557600080fd5b50516001600160a01b0316331461273b57600080fd5b6008546001600160801b03908116908516116127575783612764565b6008546001600160801b03165b6008549092506001600160801b03600160801b90910481169084161161278a578261279e565b600854600160801b90046001600160801b03165b90506001600160801b0382161561280c576008546001600160801b03838116911614156127cd57600019909101905b600880546001600160801b031981166001600160801b0391821685900382161790915560015461280c916001600160a01b0390911690879085166140ee565b6001600160801b0381161561287f576008546001600160801b03828116600160801b90920416141561283d57600019015b600880546001600160801b03600160801b80830482168590038216029181169190911790915560025461287f916001600160a01b0390911690879084166140ee565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36004805460ff60f01b1916600160f01b1790559094909350915050565b60608060606129906128fe61308b565b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600454600954600554600d96959450600160a01b830460020b935061ffff600160b81b84048116936001600160801b03909316926001600160901b0383169263ffffffff600160901b909104811692600160c81b909204909116906147a816565b9250925092509250925092565b6005546001600160901b03811690600160901b900463ffffffff1682565b6004546000908190600160f01b900460ff16612a04576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b1916905560408051608081018252338152600287810b602083015286900b9181019190915260009081908190612a609060608101612a536001600160801b038a166144a2565b600003600f0b90526144b3565b9250925092508160000394508060000393506000851180612a815750600084115b15612ac0576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506004805460ff60f01b1916600160f01b179055509094909350915050565b600080600080612b478686614965565b612b4f615d6f565b612b57615d6f565b600288810b810b6000908152600a602090815260408083208b850b90940b8352918290206003840154600485015460ff600160f81b8304161515608089018190526001600160c01b03909116606089015263ffffffff600160d81b830416948801949094526001600160a01b0367010000000000000082041692870192909252600691820b820b90910b855290612bed57600080fd5b6003810154600482015460ff600160f81b8304161515608086018190526001600160c01b03909116606086015263ffffffff600160d81b83041660408601526001600160a01b036701000000000000008304166020860152600691820b820b90910b8452612c5a57600080fd5b50506040805160e0810182526004546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c083015290918a820b910b1215612d275781600001518360000151038260200151846020015103836040015185604001510384606001518660600151039650965096509650505050612e20565b8760020b816020015160020b1215612de8576000612d4361308b565b60208301516040840151600954600554606087015194955060009485948594612d9a94600d948a94889493926001600160801b0316916001600160901b0381169163ffffffff600160901b9092048216916137ed16565b92509250925085600001518760000151840303866020015188602001518403038760400151896040015187030388606001518a606001518503039a509a509a509a5050505050505050612e20565b826000015182600001510383602001518360200151038460400151846040015103856060015185606001510396509650965096505050505b92959194509250565b6000546001600160a01b031681565b60028054600160b81b9004900b81565b6002546001600160a01b031681565b600254600160a01b900462ffffff1681565b60065481565b600a60205260009081526040902080546001820154600283015460038401546004909401546001600160801b03841694600160801b909404600f0b93600681900b9167010000000000000082046001600160a01b031691600160d81b810463ffffffff1691600160f81b90910460ff16906001600160c01b031689565b6004546001600160a01b031615612f2f576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b6000612f3a82613bb7565b9050600080612f52612f4a61308b565b600d90614a2e565b6040805160e0810182526001600160a01b038816808252600288810b6020808501829052600085870181905261ffff898116606088018190529089166080880181905260a0880192909252600160c09097019690965260048054600160f01b6001600160a01b0319909116871762ffffff60a01b1916600160a01b62ffffff9787900b9790971696909602959095177fffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffff16600160c81b9097029690961761ffff60d81b1916600160d81b909102177fff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a150505050565b4290565b60008060008460020b8660020b816130a357fe5b05905060008660020b1280156130ca57508460020b8660020b816130c357fe5b0760020b15155b156130d457600019015b8315613149576000806130e683614a91565b600182810b810b600090815260208d9052604090205460ff83169190911b8001600019019081168015159750929450909250908561312b57888360ff1686030261313e565b8861313582614aa3565b840360ff168603025b9650505050506131c7565b60008061315883600101614a91565b91509150600060018260ff166001901b031990506000818b60008660010b60010b81526020019081526020016000205416905080600014159550856131aa57888360ff0360ff168660010101026131c0565b88836131b583614b43565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b126131e8578260020b6131f0565b8260020b6000035b9050620d89e881111561322e576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b60006001821661324257600160801b613254565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615613288576ffff97272373d413259a46990580e213a0260801c5b60048216156132a7576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156132c6576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156132e5576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613304576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613323576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613342576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613362576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613382576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156133a2576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156133c2576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156133e2576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613402576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613422576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613442576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613463576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613483576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156134a2576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156134bf576b048a170391f7dc42444e8fa20260801c5b60008460020b13156134da5780600019816134d657fe5b0490505b6401000000008106156134ee5760016134f1565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a16101581871280159061358857600061353c8989620f42400362ffffff16620f424061373d565b905082613555576135508c8c8c6001614c2d565b613562565b6135628b8d8c6001614ca8565b9550858110613573578a9650613582565b61357f8c8b8386614d65565b96505b506135d2565b8161359f5761359a8b8b8b6000614ca8565b6135ac565b6135ac8a8c8b6000614c2d565b93508388600003106135c0578995506135d2565b6135cf8b8a8a60000385614db1565b95505b6001600160a01b038a8116908716148215613635578080156135f15750815b61360757613602878d8c6001614ca8565b613609565b855b9550808015613616575081155b61362c57613627878d8c6000614c2d565b61362e565b845b945061367f565b80801561363f5750815b613655576136508c888c6001614c2d565b613657565b855b9550808015613664575081155b61367a576136758c888c6000614ca8565b61367c565b845b94505b8115801561368f57508860000385115b1561369b578860000394505b8180156136ba57508a6001600160a01b0316876001600160a01b031614155b156136c95785890393506136e6565b6136e3868962ffffff168a620f42400362ffffff1661470a565b93505b50505095509550955095915050565b6000600160ff1b821061370757600080fd5b5090565b8082038281131560008312151461372157600080fd5b92915050565b8181018281121560008312151461372157600080fd5b6000808060001985870986860292508281109083900303905080613773576000841161376857600080fd5b5082900490506137e6565b80841161377f57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b6000808063ffffffff8a166138b95760008c8961ffff1661ffff811061380f57fe5b6040805160a08101825260029290920292909201805463ffffffff8082168085526401000000008304600690810b810b900b6020860152600160581b83046001600160a01b031695850195909552600160f81b90910460ff16151560608401526001909101546001600160c01b031660808301529092508d161461389e5761389b818d8c8b8b8b614dfd565b90505b806020015181604001518260800151935093509350506139dc565b898b036000806138d08f8f858f8f8f8f8f8f614f47565b91509150816000015163ffffffff168363ffffffff161415613909578160200151826040015183608001519550955095505050506139dc565b805163ffffffff84811691161415613938578060200151816040015182608001519550955095505050506139dc565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161396657fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b0316028161399857fe5b048560400151018263ffffffff168463ffffffff1687608001518760800151036001600160c01b0316816139c857fe5b040286608001510197509750975050505050505b99509950999650505050505050565b600296870b870b60009081526020989098526040909720600181018054909603909555948401805490930390925560038301805463ffffffff600160d81b6001600160a01b036701000000000000008085048216909603169094027fffffffffff0000000000000000000000000000000000000000ffffffffffffff90921691909117600681810b90950390940b66ffffffffffffff1666ffffffffffffff19909416939093178281048416909503909216027fff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff909316929092179091556004810180546001600160c01b038082169094039093166001600160c01b03199093169290921790915554600160801b9004600f0b90565b60008082600f0b1215613b6657826001600160801b03168260000384039150816001600160801b031610613b61576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b613721565b826001600160801b03168284019150816001600160801b03161015613721576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b03831610801590613bf3575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613c28576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c97908811961790941790921717909117171760808110613cc957607f810383901c9150613cd3565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14613ed457886001600160a01b0316613eb8826131d1565b6001600160a01b03161115613ecd5781613ecf565b805b613ed6565b815b9998505050505050505050565b60008060008b8b61ffff1661ffff8110613ef957fe5b6040805160a08101825260029290920292909201805463ffffffff8082168085526401000000008304600690810b810b900b6020860152600160581b83046001600160a01b031695850195909552600160f81b90910460ff16151560608401526001909101546001600160c01b031660808301529092508b161415613f84578a8592509250506140e0565b8461ffff168461ffff16118015613fa557506001850361ffff168b61ffff16145b15613fb257839150613fb6565b8491505b8161ffff168b60010161ffff1681613fca57fe5b069250613fdb818b8b8b8b8b614dfd565b8c8461ffff1661ffff8110613fec57fe5b825160029190910291909101805460208401516040850151606086015163ffffffff1990931663ffffffff909516949094176affffffffffffff00000000191664010000000066ffffffffffffff60069390930b9290921691909102177fff0000000000000000000000000000000000000000ffffffffffffffffffffff16600160581b6001600160a01b0390941693909302929092177effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b92151592909202919091178155608090910151600190910180546001600160c01b0319166001600160c01b03909216919091179055505b995099975050505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1781529251825160009485949389169392918291908083835b6020831061417f5780518252601f199092019160209182019101614160565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146141e1576040519150601f19603f3d011682016040523d82523d6000602084013e6141e6565b606091505b5091509150818015614214575080511580614214575080806020019051602081101561421157600080fd5b50515b61424a576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166370a0823160e01b17815291518151600093849384936001600160a01b03881693919290918291908083835b602083106142df5780518252601f1990920191602091820191016142c0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461433f576040519150601f19603f3d011682016040523d82523d6000602084013e614344565b606091505b509150915081801561435857506020815110155b61436157600080fd5b80806020019051602081101561437657600080fd5b5051925050505b919050565b8082018281101561372157600080fd5b60008082600281900b620d89e719816143a757fe5b05029050600083600281900b620d89e8816143be57fe5b0502905060008460020b83830360020b816143d557fe5b0560010190508062ffffff166001600160801b038016816143f257fe5b0495945050505050565b6000808361ffff161161443a576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff16116144505750816137e6565b825b8261ffff168161ffff161015614499576001858261ffff1661ffff811061447557fe5b60020201805463ffffffff191663ffffffff92909216919091179055600101614452565b50909392505050565b80600f81900b811461437d57600080fd5b60008060006144ca84602001518560400151614965565b6040805160e0810182526004546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c08501528851908901519489015192890151939461456e949193909290919061518e565b93508460600151600f0b60001461470257846020015160020b816020015160020b12156145c3576145bc6145a586602001516131d1565b6145b287604001516131d1565b8760600151615311565b9250614702565b846040015160020b816020015160020b12156146d85760095460408201516001600160801b0390911690614634906145f961308b565b602085015160055460608701516080880151600d9594939288926001600160901b0382169263ffffffff600160901b909304831692613ee316565b6004805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b939092169290920217905581516040870151614684919061467a906131d1565b8860600151615311565b93506146a261469687602001516131d1565b83516060890151615355565b92506146b2818760600151613b01565b600980546001600160801b0319166001600160801b039290921691909117905550614702565b6146ff6146e886602001516131d1565b6146f587604001516131d1565b8760600151615355565b91505b509193909250565b600061471784848461373d565b90506000828061472357fe5b84860911156137e657600019811061473a57600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b606080606060008461ffff16116147ea576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b895167ffffffffffffffff8111801561480257600080fd5b5060405190808252806020026020018201604052801561482c578160200160208202803683370190505b509250895167ffffffffffffffff8111801561484757600080fd5b50604051908082528060200260200182016040528015614871578160200160208202803683370190505b509150895167ffffffffffffffff8111801561488c57600080fd5b506040519080825280602002602001820160405280156148b6578160200160208202803683370190505b50905060005b8a51811015614955576148e98d8d8d84815181106148d657fe5b60200260200101518d8d8d8d8d8d6137ed565b8684815181106148f557fe5b6020026020010186858151811061490857fe5b6020026020010186868151811061491b57fe5b6001600160c01b03909416602094850291909101909301929092526001600160a01b039092169052600691820b90910b90526001016148bc565b5099509950999650505050505050565b8060020b8260020b126149a5576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b12156149e8576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614a2a576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160a08101825263ffffffff928316808252600060208301819052928201839052600160608301819052608090920192909252835463ffffffff1916909117909116600160f81b17825590810180546001600160c01b0319169055908190565b60020b600881901d9161010090910790565b6000808211614ab157600080fd5b600160801b8210614ac457608091821c91015b680100000000000000008210614adc57604091821c91015b6401000000008210614af057602091821c91015b620100008210614b0257601091821c91015b6101008210614b1357600891821c91015b60108210614b2357600491821c91015b60048210614b3357600291821c91015b6002821061437d57600101919050565b6000808211614b5157600080fd5b5060ff6001600160801b03821615614b6c57607f1901614b74565b608082901c91505b67ffffffffffffffff821615614b8d57603f1901614b95565b604082901c91505b63ffffffff821615614baa57601f1901614bb2565b602082901c91505b61ffff821615614bc557600f1901614bcd565b601082901c91505b60ff821615614bdf5760071901614be7565b600882901c91505b600f821615614bf95760031901614c01565b600482901c91505b6003821615614c135760011901614c1b565b600282901c91505b600182161561437d5760001901919050565b6000836001600160a01b0316856001600160a01b03161115614c4d579293925b81614c7a57614c75836001600160801b03168686036001600160a01b0316600160601b61373d565b614c9d565b614c9d836001600160801b03168686036001600160a01b0316600160601b61470a565b90505b949350505050565b6000836001600160a01b0316856001600160a01b03161115614cc8579293925b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b166001600160a01b038686038116908716614d0457600080fd5b83614d3457866001600160a01b0316614d278383896001600160a01b031661373d565b81614d2e57fe5b04614d5a565b614d5a614d4b8383896001600160a01b031661470a565b886001600160a01b0316615384565b979650505050505050565b600080856001600160a01b031611614d7c57600080fd5b6000846001600160801b031611614d9257600080fd5b81614da457614c75858585600161538f565b614c9d8585856001615470565b600080856001600160a01b031611614dc857600080fd5b6000846001600160801b031611614dde57600080fd5b81614df057614c758585856000615470565b614c9d858585600061538f565b614e05615d6f565b865186036001600160801b038516614e1e576001614e20565b845b9450600063ffffffff4211614e6b57428463ffffffff1610614e425781614e66565b886000015163ffffffff168463ffffffff161115614e635788518403614e66565b60005b614e6e565b60005b90506040518060a001604052808963ffffffff1681526020018363ffffffff168960020b028b602001510160060b8152602001876001600160801b031660808563ffffffff166001600160a01b0316901b6001600160a01b031681614ecf57fe5b048b60400151016001600160a01b03168152602001600115158152602001876001600160801b03168363ffffffff166010896001600160901b03166001600160c01b0316901b026001600160c01b031681614f2657fe5b048b60800151016001600160c01b0316815250925050509695505050505050565b614f4f615d6f565b614f57615d6f565b8a8761ffff1661ffff8110614f6857fe5b6040805160a08101825260029290920292909201805463ffffffff81168084526401000000008204600690810b810b900b6020850152600160581b82046001600160a01b031694840194909452600160f81b900460ff1615156060830152600101546001600160c01b031660808201529250614fe6908b908b615565565b15615020578863ffffffff16826000015163ffffffff161415615008576140e0565b81615017838b8b8a8a8a614dfd565b915091506140e0565b8a8361ffff168860010161ffff168161503557fe5b0661ffff1661ffff811061504557fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff161515606082018190526001909201546001600160c01b031660808201529250615129576040805160a0810182528c5463ffffffff811682526401000000008104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015260018c01546001600160c01b0316608082015291505b6151388a83600001518b615565565b61516f576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b61517c8b8b8b8a87615628565b91509150995099975050505050505050565b600061519d600c878787614744565b60065460075491925090600080600f87900b156152b15760006151be61308b565b6004546009546005549293506000928392839261522992600d9288928692600160a01b830460020b9261ffff600160b81b82048116936001600160801b0316926001600160901b0381169263ffffffff600160901b909204821692600160c81b90910416906137ed16565b60035492955090935091506001600160801b0316615253600a8f8d8f8d8d898b8d60008b8d6157fd565b965061526b600a8e8d8f8d8d898b8d60018b8d6157fd565b60028054919750600160b81b909104900b8715615298576152988f82600b615a359092919063ffffffff16565b86156152aa576152aa600b8f83615a35565b5050505050505b6000806152c3600a8c8c8b8a8a615a9b565b90925090506152d4878a8484615b47565b600089600f0b12156153025783156152f1576152f1600a8c615cdc565b821561530257615302600a8b615cdc565b50505050505095945050505050565b60008082600f0b126153375761533261532d8585856001614ca8565b6136f5565b614ca0565b61534a61532d8585856000036000614ca8565b600003949350505050565b60008082600f0b126153715761533261532d8585856001614c2d565b61534a61532d8585856000036000614c2d565b808204910615150190565b600081156154025760006001600160a01b038411156153c5576153c084600160601b876001600160801b031661373d565b6153dd565b6001600160801b038516606085901b816153db57fe5b045b90506153fa6153f56001600160a01b03881683614382565b615d1d565b915050614ca0565b60006001600160a01b038411156154305761542b84600160601b876001600160801b031661470a565b615447565b615447606085901b6001600160801b038716615384565b905080866001600160a01b03161161545e57600080fd5b6001600160a01b038616039050614ca0565b60008261547e575083614ca0565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b16821561551e576001600160a01b038616848102908582816154be57fe5b0414156154ef578181018281106154ed576154e383896001600160a01b03168361470a565b9350505050614ca0565b505b61551582615510878a6001600160a01b0316868161550957fe5b0490614382565b615384565b92505050614ca0565b6001600160a01b0386168481029085828161553557fe5b0414801561554257508082115b61554b57600080fd5b8082036154e36153f5846001600160a01b038b168461470a565b60008363ffffffff168363ffffffff161115801561558f57508363ffffffff168263ffffffff1611155b156155ab578163ffffffff168363ffffffff16111590506137e6565b60008463ffffffff168463ffffffff16116155d3578363ffffffff16640100000000016155db565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff161161560c578363ffffffff1664010000000001615614565b8363ffffffff165b64ffffffffff169091111595945050505050565b615630615d6f565b615638615d6f565b60008361ffff168560010161ffff168161564e57fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff8716828161567b57fe5b0661ffff811061568757fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff161515606082018190526001909201546001600160c01b03166080820152955061570c57806001019250615666565b898661ffff16826001018161571d57fe5b0661ffff811061572957fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff16151560608201526001909101546001600160c01b0316608082015285519094506000906157af908b908b615565565b90508080156157c857506157c88a8a8760000151615565565b156157d357506157f0565b806157e3576001820392506157ea565b8160010193505b50615666565b5050509550959350505050565b60028b810b900b600090815260208d90526040812080546001600160801b031682615828828e613b01565b9050856001600160801b0316816001600160801b03161115615876576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b038281161590821615811415945015615981578d60020b8f60020b13615951578b83600101819055508a8360020181905550898360030160076101000a8154816001600160a01b0302191690836001600160a01b03160217905550888360030160006101000a81548166ffffffffffffff021916908360060b66ffffffffffffff1602179055508783600301601b6101000a81548163ffffffff021916908363ffffffff160217905550848360040160006101000a8154816001600160c01b0302191690836001600160c01b031602179055505b6003830180547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790555b82546001600160801b0319166001600160801b038216178355866159d6576159d16159cc8e600f0b8560000160109054906101000a9004600f0b600f0b61372790919063ffffffff16565b6144a2565b615a03565b615a036159cc8e600f0b8560000160109054906101000a9004600f0b600f0b61370b90919063ffffffff16565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909d9c50505050505050505050505050565b8060020b8260020b81615a4457fe5b0760020b15615a5257600080fd5b600080615a6d8360020b8560020b81615a6757fe5b05614a91565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b12615ae157505060018201546002830154615af4565b8360010154880391508360020154870390505b6000808b60020b8b60020b1215615b1657505060018301546002840154615b29565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b615be65781516001600160801b0316615bde576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b508051615bf5565b8151615bf29086613b01565b90505b6000615c198360200151860384600001516001600160801b0316600160801b61373d565b90506000615c3f8460400151860385600001516001600160801b0316600160801b61373d565b905086600f0b600014615c665787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b038216151580615c9457506000816001600160801b0316115b15615cd2576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b60009081526020929092526040822082815560018101839055908101829055600381019190915560040180546001600160c01b0319169055565b806001600160a01b038116811461437d57600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091529056fea264697066735822122077f216df62bac6d2389ed5ed695bbeac8d557a5f189904f27ed4a6d2818f636a64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5DD3 DUP1 PUSH3 0x21 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 0x1CF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5339C296 GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xA38807F2 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xDDCA3F43 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDDCA3F43 EQ PUSH2 0x92A JUMPI DUP1 PUSH4 0xF3058399 EQ PUSH2 0x94A JUMPI DUP1 PUSH4 0xF30DBA93 EQ PUSH2 0x952 JUMPI DUP1 PUSH4 0xF637731D EQ PUSH2 0x9E3 JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0xA38807F2 EQ PUSH2 0x890 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x8FB JUMPI DUP1 PUSH4 0xD0C93A7C EQ PUSH2 0x903 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x922 JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0x85B66729 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x85B66729 EQ PUSH2 0x69B JUMPI DUP1 PUSH4 0x883BDBFD EQ PUSH2 0x6D8 JUMPI DUP1 PUSH4 0x94FD4A3E EQ PUSH2 0x826 JUMPI DUP1 PUSH4 0xA34123A7 EQ PUSH2 0x856 JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0x5339C296 EQ PUSH2 0x64B JUMPI DUP1 PUSH4 0x70CF754A EQ PUSH2 0x66B JUMPI DUP1 PUSH4 0x8206A4D1 EQ PUSH2 0x673 JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0x32148F67 GT PUSH2 0x171 JUMPI DUP1 PUSH4 0x46141319 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x46141319 EQ PUSH2 0x4FB JUMPI DUP1 PUSH4 0x490E6CBC EQ PUSH2 0x515 JUMPI DUP1 PUSH4 0x4F1EB3D8 EQ PUSH2 0x5A1 JUMPI DUP1 PUSH4 0x514EA4BF EQ PUSH2 0x5F2 JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0x32148F67 EQ PUSH2 0x3DF JUMPI DUP1 PUSH4 0x3850C7BD EQ PUSH2 0x400 JUMPI DUP1 PUSH4 0x3C8A7D8D EQ PUSH2 0x459 JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0x1A686502 GT PUSH2 0x1AD JUMPI DUP1 PUSH4 0x1A686502 EQ PUSH2 0x2ED JUMPI DUP1 PUSH4 0x1AD8B03B EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x218064E5 EQ PUSH2 0x348 JUMPI DUP1 PUSH4 0x252C09D7 EQ PUSH2 0x37A JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x128ACB08 EQ PUSH2 0x1F8 JUMPI DUP1 PUSH4 0x14F2705C EQ PUSH2 0x2A7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1DC PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x28E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x20E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP3 PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x261 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 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xA18 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 0x2EB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH3 0xFFFFFF PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x1635 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2F5 PUSH2 0x1704 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x319 PUSH2 0x1713 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2EB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x35E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x172D JUMP JUMPDEST PUSH2 0x397 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1972 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP7 AND DUP7 MSTORE PUSH1 0x6 SWAP5 SWAP1 SWAP5 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP5 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2EB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFFFF AND PUSH2 0x19CD JUMP JUMPDEST PUSH2 0x408 PUSH2 0x1ABE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP9 AND DUP9 MSTORE PUSH1 0x2 SWAP7 SWAP1 SWAP7 SIGNEXTEND PUSH1 0x20 DUP9 ADD MSTORE PUSH2 0xFFFF SWAP5 DUP6 AND DUP8 DUP8 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x60 DUP8 ADD MSTORE SWAP3 AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xFF SWAP1 SWAP2 AND PUSH1 0xA0 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xE0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x28E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP3 PUSH1 0x40 DUP4 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4CE 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 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1B0E JUMP JUMPDEST PUSH2 0x503 PUSH2 0x1DE7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2EB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x52B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD 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 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x574 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 0x596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1DED JUMP JUMPDEST PUSH2 0x319 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x5B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x80 ADD CALLDATALOAD AND PUSH2 0x2235 JUMP JUMPDEST PUSH2 0x60F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x242D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP5 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP5 AND PUSH1 0x60 DUP5 ADD MSTORE SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x503 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x661 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 SIGNEXTEND PUSH2 0x246A JUMP JUMPDEST PUSH2 0x2F5 PUSH2 0x247C JUMP JUMPDEST PUSH2 0x2EB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x248B JUMP JUMPDEST PUSH2 0x319 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x6B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 ADD CALLDATALOAD AND PUSH2 0x2664 JUMP JUMPDEST PUSH2 0x748 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x709 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x71B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x73D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x28EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x790 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x778 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7CF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7B7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x80E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7F6 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x82E PUSH2 0x299D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x28E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x86C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x29BB JUMP JUMPDEST PUSH2 0x8BA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x20 ADD CALLDATALOAD SWAP1 SIGNEXTEND PUSH2 0x2B37 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x6 SWAP6 SWAP1 SWAP6 SIGNEXTEND DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP4 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1DC PUSH2 0x2E29 JUMP JUMPDEST PUSH2 0x90B PUSH2 0x2E38 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1DC PUSH2 0x2E48 JUMP JUMPDEST PUSH2 0x932 PUSH2 0x2E57 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0xFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x503 PUSH2 0x2E69 JUMP JUMPDEST PUSH2 0x972 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x968 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x2E6F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP11 AND DUP11 MSTORE PUSH1 0xF SWAP9 SWAP1 SWAP9 SIGNEXTEND PUSH1 0x20 DUP11 ADD MSTORE DUP9 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x60 DUP9 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x6 SWAP3 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xA0 DUP7 ADD MSTORE PUSH4 0xFFFFFFFF AND PUSH1 0xC0 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0xE0 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH2 0x100 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x120 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2EB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2EEC JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH2 0xA52 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4153 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP2 DIV DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP4 DIV DUP2 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND ISZERO ISZERO PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0xB0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP8 PUSH2 0xB56 JUMPI DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT DUP1 ISZERO PUSH2 0xB51 JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND LT JUMPDEST PUSH2 0xB88 JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP1 ISZERO PUSH2 0xB88 JUMPI POP PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GT JUMPDEST PUSH2 0xBBF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x14D413 PUSH1 0xEA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH2 0x160 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 DUP1 DUP11 PUSH2 0xBF2 JUMPI PUSH1 0x4 DUP5 PUSH1 0xA0 ADD MLOAD PUSH1 0xFF AND SWAP1 SHR PUSH2 0xC05 JUMP JUMPDEST PUSH1 0x10 DUP5 PUSH1 0xA0 ADD MLOAD PUSH1 0xFF AND DUP2 PUSH2 0xC03 JUMPI INVALID JUMPDEST MOD JUMPDEST PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD PUSH2 0xC26 PUSH2 0x308B JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x6 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x2 SIGNEXTEND PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP1 DUP10 SGT SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 DUP12 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH2 0xD2E JUMPI PUSH1 0x7 SLOAD PUSH2 0xD32 JUMP JUMPDEST PUSH1 0x6 SLOAD JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE POP SWAP1 POP JUMPDEST DUP1 MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0xD81 JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1142 JUMPI PUSH2 0xD8E PUSH2 0x5D33 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x100 DUP6 ADD MLOAD PUSH2 0xDB6 SWAP2 PUSH1 0xB SWAP2 DUP16 PUSH2 0x308F JUMP JUMPDEST ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE PUSH3 0xD89E7 NOT SWAP2 SIGNEXTEND SLT ISZERO PUSH2 0xDE7 JUMPI PUSH3 0xD89E7 NOT PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xE06 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH3 0xD89E8 PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND SGT ISZERO PUSH2 0xE06 JUMPI PUSH3 0xD89E8 PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH2 0xE13 DUP2 PUSH1 0x20 ADD MLOAD PUSH2 0x31D1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0xE88 SWAP1 DUP14 PUSH2 0xE4D JUMPI DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0xE67 JUMP JUMPDEST DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT JUMPDEST PUSH2 0xE75 JUMPI DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0xE77 JUMP JUMPDEST DUP12 JUMPDEST PUSH1 0xC0 DUP6 ADD MLOAD DUP6 MLOAD PUSH1 0xE0 DUP10 ADD MLOAD PUSH2 0x3503 JUMP JUMPDEST PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP4 ADD MSTORE DUP3 ISZERO PUSH2 0xEEA JUMPI PUSH2 0xEBE DUP2 PUSH1 0xC0 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD ADD PUSH2 0x36F5 JUMP JUMPDEST DUP3 MLOAD SUB DUP3 MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0xEE0 SWAP1 PUSH2 0xED5 SWAP1 PUSH2 0x36F5 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 PUSH2 0x370B JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xF25 JUMP JUMPDEST PUSH2 0xEF7 DUP2 PUSH1 0xA0 ADD MLOAD PUSH2 0x36F5 JUMP JUMPDEST DUP3 MLOAD ADD DUP3 MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0xF1F SWAP2 PUSH2 0xF14 SWAP2 ADD PUSH2 0x36F5 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 PUSH2 0x3727 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE JUMPDEST DUP4 MLOAD PUSH1 0xFF AND ISZERO PUSH2 0xF6B JUMPI PUSH1 0x0 DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0xFF AND DUP3 PUSH1 0xC0 ADD MLOAD DUP2 PUSH2 0xF45 JUMPI INVALID JUMPDEST PUSH1 0xC0 DUP5 ADD DUP1 MLOAD SWAP3 SWAP1 SWAP2 DIV SWAP2 DUP3 SWAP1 SUB SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD DUP1 MLOAD SWAP1 SWAP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 MSTORE POP JUMPDEST PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0xFAA JUMPI PUSH2 0xF9E DUP2 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x80 SHL DUP5 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x373D JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP1 MLOAD SWAP1 SWAP2 ADD SWAP1 MSTORE JUMPDEST DUP1 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1101 JUMPI DUP1 PUSH1 0x40 ADD MLOAD ISZERO PUSH2 0x10D8 JUMPI DUP4 PUSH1 0xA0 ADD MLOAD PUSH2 0x105C JUMPI PUSH1 0x40 DUP1 DUP6 ADD MLOAD PUSH1 0x20 DUP1 DUP9 ADD MLOAD SWAP3 DUP9 ADD MLOAD SWAP1 DUP8 ADD MLOAD PUSH1 0x5 SLOAD PUSH1 0x60 DUP11 ADD MLOAD PUSH2 0x102C SWAP6 PUSH1 0xD SWAP6 SWAP5 PUSH1 0x0 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP3 AND SWAP2 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP2 SWAP1 PUSH2 0x37ED AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0xC0 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 DUP6 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0x10AE DUP3 PUSH1 0x20 ADD MLOAD DUP15 PUSH2 0x1073 JUMPI PUSH1 0x6 SLOAD PUSH2 0x1079 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD MLOAD JUMPDEST DUP16 PUSH2 0x1088 JUMPI DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x108C JUMP JUMPDEST PUSH1 0x7 SLOAD JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD PUSH1 0x60 DUP11 ADD MLOAD PUSH1 0x40 DUP12 ADD MLOAD PUSH1 0xC0 DUP13 ADD MLOAD PUSH1 0xA SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x39EB JUMP JUMPDEST SWAP1 POP DUP13 ISZERO PUSH2 0x10BA JUMPI PUSH1 0x0 SUB JUMPDEST PUSH2 0x10C8 DUP4 PUSH1 0xC0 ADD MLOAD DUP3 PUSH2 0x3B01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0xC0 DUP5 ADD MSTORE POP JUMPDEST DUP12 PUSH2 0x10E7 JUMPI DUP1 PUSH1 0x20 ADD MLOAD PUSH2 0x10F0 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 ADD MLOAD SUB JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x113C JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x113C JUMPI PUSH2 0x112F DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x3BB7 JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP4 ADD MSTORE JUMPDEST POP PUSH2 0xD5B JUMP JUMPDEST DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x60 ADD MLOAD PUSH1 0x2 SIGNEXTEND EQ PUSH2 0x122D JUMPI PUSH1 0x40 DUP1 DUP6 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0x20 DUP1 DUP8 ADD MLOAD SWAP1 DUP7 ADD MLOAD PUSH1 0x5 SLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x80 DUP11 ADD MLOAD PUSH1 0x0 SWAP7 DUP8 SWAP7 PUSH2 0x11AD SWAP7 PUSH1 0xD SWAP7 SWAP3 SWAP6 SWAP2 SWAP5 SWAP1 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP4 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP3 SWAP2 SWAP1 PUSH2 0x3EE3 AND JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x4 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP6 DUP7 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP6 SWAP1 SWAP5 AND SWAP5 SWAP1 SWAP5 MUL SWAP3 SWAP1 SWAP3 OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH3 0xFFFFFF PUSH1 0x2 SWAP5 SWAP1 SWAP5 SIGNEXTEND SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR SWAP1 SSTORE POP PUSH2 0x1252 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP1 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND EQ PUSH2 0x1298 JUMPI PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x9 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP11 ISZERO PUSH2 0x12E8 JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x6 SSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x12E3 JUMPI PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND SWAP1 SWAP4 ADD AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH2 0x132E JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x7 SSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x132E JUMPI PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP3 AND SWAP1 SWAP5 ADD AND MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP2 ISZERO ISZERO DUP12 ISZERO ISZERO EQ PUSH2 0x1347 JUMPI PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD DUP12 SUB PUSH2 0x1354 JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD DUP11 SUB DUP2 PUSH1 0x20 ADD MLOAD JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP11 ISZERO PUSH2 0x147E JUMPI PUSH1 0x0 DUP6 SLT ISZERO PUSH2 0x137B JUMPI PUSH2 0x137B DUP4 PUSH2 0x140 ADD MLOAD DUP14 DUP8 PUSH1 0x0 SUB PUSH2 0x40EE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x138B DUP5 PUSH2 0x120 ADD MLOAD PUSH2 0x4251 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD804D7A7 DUP9 DUP9 DUP13 DUP13 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x140F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1423 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1435 DUP5 PUSH2 0x120 ADD MLOAD PUSH2 0x4251 JUMP JUMPDEST PUSH2 0x143F DUP3 DUP10 PUSH2 0x4382 JUMP JUMPDEST GT ISZERO PUSH2 0x1478 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x494941 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH2 0x1599 JUMP JUMPDEST PUSH1 0x0 DUP7 SLT ISZERO PUSH2 0x149A JUMPI PUSH2 0x149A DUP4 PUSH2 0x120 ADD MLOAD DUP14 DUP9 PUSH1 0x0 SUB PUSH2 0x40EE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14AA DUP5 PUSH2 0x140 ADD MLOAD PUSH2 0x4251 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD804D7A7 DUP9 DUP9 DUP13 DUP13 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x152E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1542 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1554 DUP5 PUSH2 0x140 ADD MLOAD PUSH2 0x4251 JUMP JUMPDEST PUSH2 0x155E DUP3 DUP9 PUSH2 0x4382 JUMP JUMPDEST GT ISZERO PUSH2 0x1597 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x494941 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0x60 DUP1 DUP6 ADD MLOAD DUP5 MLOAD DUP12 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP4 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 SIGNEXTEND PUSH1 0x80 DUP3 ADD MSTORE SWAP2 MLOAD SWAP1 DUP15 AND SWAP2 CALLER SWAP2 PUSH32 0xC42079F94A6350D7E6235F29174924F928CC2AC818EB64FED8004E115FBCCA67 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG3 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP2 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x164B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP1 SWAP3 AND SWAP1 DUP6 AND OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH3 0xFFFFFF DUP6 DUP2 AND SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 OR PUSH32 0xFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DUP5 SIGNEXTEND SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH2 0x16DE DUP2 PUSH2 0x4392 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV AND DUP3 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1771 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8DA5CB5B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x8DA5CB5B SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17D3 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 0x17E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x17FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST TIMESTAMP DUP2 PUSH4 0xFFFFFFFF AND LT ISZERO PUSH2 0x1812 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x1886 SWAP1 PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0x182C PUSH2 0x308B JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x9 SLOAD PUSH1 0x5 SLOAD PUSH1 0xD SWAP5 SWAP4 SWAP3 PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP3 DIV DUP3 AND SWAP2 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xC8 SHL DUP4 DIV DUP2 AND SWAP3 PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 DIV AND SWAP1 PUSH2 0x3EE3 AND JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP4 DUP5 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP5 AND DUP1 DUP3 MSTORE PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x20 SWAP3 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x5 DUP1 SLOAD PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP4 OR PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x90 SHL DUP4 MUL OR SWAP1 SSTORE DUP4 MLOAD SWAP2 DUP3 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD PUSH31 0x8866B45AF6018E497020F8D16E58C1BE320850F245EBDF9D304666BEE15E35 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xD DUP2 PUSH2 0xFFFF DUP2 LT PUSH2 0x1983 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 MUL ADD DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP3 AND SWAP3 POP PUSH5 0x100000000 DUP3 DIV PUSH1 0x6 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP6 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1A11 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 DIV PUSH2 0xFFFF AND PUSH1 0x0 PUSH2 0x1A39 PUSH1 0xD DUP4 DUP6 PUSH2 0x43FC JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0xFFFF DUP1 DUP5 AND PUSH1 0x1 PUSH1 0xD8 SHL DUP2 MUL PUSH2 0xFFFF PUSH1 0xD8 SHL NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE SWAP2 SWAP3 POP DUP4 AND EQ PUSH2 0x1AA6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0xAC49E518F90A358F652E4400164F05A5D8F7E35E7747279BC3A93DBF584E125A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP1 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC8 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0xD8 SHL DUP3 DIV AND SWAP1 PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV AND DUP8 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1B57 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH2 0x1B77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1BC5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1BBB DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x44A2 JUMP JUMPDEST PUSH1 0xF SIGNEXTEND SWAP1 MSTORE PUSH2 0x44B3 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD SWAP3 SWAP8 POP SWAP1 SWAP6 POP DUP7 SWAP5 POP DUP6 SWAP4 POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP6 ISZERO PUSH2 0x1BFC JUMPI PUSH2 0x1BF9 DUP3 PUSH2 0x4251 JUMP JUMPDEST SWAP4 POP JUMPDEST DUP7 ISZERO PUSH2 0x1C0E JUMPI PUSH2 0x1C0B DUP2 PUSH2 0x4251 JUMP JUMPDEST SWAP3 POP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1507A8F4 DUP10 DUP10 DUP14 DUP14 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CA4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP9 GT ISZERO PUSH2 0x1CFC JUMPI PUSH2 0x1CBA DUP3 PUSH2 0x4251 JUMP JUMPDEST PUSH2 0x1CC4 DUP6 DUP11 PUSH2 0x4382 JUMP JUMPDEST GT ISZERO PUSH2 0x1CFC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4D3 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP7 ISZERO PUSH2 0x1D4D JUMPI PUSH2 0x1D0B DUP2 PUSH2 0x4251 JUMP JUMPDEST PUSH2 0x1D15 DUP5 DUP10 PUSH2 0x4382 JUMP JUMPDEST GT ISZERO PUSH2 0x1D4D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4D31 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP12 PUSH1 0x2 SIGNEXTEND DUP14 PUSH1 0x2 SIGNEXTEND DUP16 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x7A53080BA414158BE7EC69B987B5FB7D07DEE101FE85488F0853AE16239D0BDE CALLER DUP16 DUP14 DUP14 PUSH1 0x40 MLOAD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB 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 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP4 SWAP11 SWAP3 SWAP10 POP SWAP2 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1E31 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP1 PUSH2 0x1E80 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x2 SLOAD SWAP1 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH3 0xFFFFFF AND SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE SWAP1 PUSH2 0x1ED5 SWAP1 DUP8 SWAP1 PUSH3 0xF4240 PUSH2 0x470A JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH2 0x1EF3 SWAP1 DUP7 SWAP1 PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x470A JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE DUP1 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1F06 SWAP1 PUSH2 0x4251 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1F17 DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x4251 JUMP JUMPDEST SWAP1 POP DUP8 ISZERO PUSH2 0x1F2C JUMPI DUP3 MLOAD PUSH2 0x1F2C SWAP1 DUP11 DUP11 PUSH2 0x40EE JUMP JUMPDEST DUP7 ISZERO PUSH2 0x1F41 JUMPI PUSH2 0x1F41 DUP4 PUSH1 0x20 ADD MLOAD DUP11 DUP10 PUSH2 0x40EE JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x659EFA6 DUP5 PUSH1 0x60 ADD MLOAD DUP6 PUSH1 0x80 ADD MLOAD DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FDF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x1FF2 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x4251 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2003 DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x4251 JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x201D DUP7 PUSH1 0x60 ADD MLOAD DUP7 PUSH2 0x4382 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST GT ISZERO PUSH2 0x2055 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x463 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x206D DUP7 PUSH1 0x80 ADD MLOAD DUP6 PUSH2 0x4382 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST GT ISZERO PUSH2 0x20A5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4631 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 DUP3 SUB DUP4 DUP3 SUB DUP2 ISZERO PUSH2 0x2134 JUMPI PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH1 0xF AND PUSH1 0x0 DUP2 ISZERO PUSH2 0x20D8 JUMPI DUP2 PUSH1 0xFF AND DUP5 DUP2 PUSH2 0x20D2 JUMPI INVALID JUMPDEST DIV PUSH2 0x20DB JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x210E JUMPI PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP5 ADD AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x2128 DUP2 DUP6 SUB PUSH1 0x1 PUSH1 0x80 SHL DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x373D JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMPDEST DUP1 ISZERO PUSH2 0x21BF JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV SWAP1 SHR PUSH1 0xF AND PUSH1 0x0 DUP2 ISZERO PUSH2 0x2164 JUMPI DUP2 PUSH1 0xFF AND DUP4 DUP2 PUSH2 0x215E JUMPI INVALID JUMPDEST DIV PUSH2 0x2167 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x2199 JUMPI PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP6 ADD DUP3 AND MUL SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x21B3 DUP2 DUP5 SUB PUSH1 0x1 PUSH1 0x80 SHL DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x373D JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP14 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP14 SWAP1 MSTORE DUP1 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND SWAP2 CALLER SWAP2 PUSH32 0xBDBDB71D7860376BA52B25A5028BEEA23581364A40522F6BCFB86BB1F2DCA633 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG3 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x227E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x0 PUSH2 0x229A PUSH1 0xC CALLER DUP10 DUP10 PUSH2 0x4744 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP1 DUP7 AND GT PUSH2 0x22BB JUMPI DUP5 PUSH2 0x22CA JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP6 AND GT PUSH2 0x22F2 JUMPI DUP4 PUSH2 0x2308 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND ISZERO PUSH2 0x235A JUMPI PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP7 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 SLOAD PUSH2 0x235A SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP11 SWAP1 DUP7 AND PUSH2 0x40EE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x23AD JUMPI PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP7 SWAP1 SUB DUP3 AND MUL SWAP2 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 SLOAD PUSH2 0x23AD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP11 SWAP1 DUP6 AND PUSH2 0x40EE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP4 ADD MSTORE DUP5 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x2 DUP9 DUP2 SIGNEXTEND SWAP3 SWAP1 DUP11 SWAP1 SIGNEXTEND SWAP2 CALLER SWAP2 PUSH32 0x70935338E69775456A85DDEF226C395FB668B63FA0115F5F20610B388E6CA9C0 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 DUP4 AND SWAP4 SWAP2 SWAP3 DUP2 DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV AND DUP6 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x24CF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8DA5CB5B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x8DA5CB5B SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x251D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2531 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 0x2547 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x255D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP3 AND ISZERO DUP1 PUSH2 0x2580 JUMPI POP PUSH1 0x4 DUP3 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH2 0x2580 JUMPI POP PUSH1 0xA DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x25AA JUMPI POP PUSH1 0xFF DUP2 AND ISZERO DUP1 PUSH2 0x25AA JUMPI POP PUSH1 0x4 DUP2 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH2 0x25AA JUMPI POP PUSH1 0xA DUP2 PUSH1 0xFF AND GT ISZERO JUMPDEST PUSH2 0x25B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0xFF0 DUP4 DUP4 SHL AND DUP5 ADD PUSH1 0xFF SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DUP2 MUL PUSH32 0xFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND OR DUP5 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP4 DIV PUSH1 0xF DUP2 DUP2 AND DUP4 MSTORE SWAP5 DUP2 SWAP1 SHR SWAP1 SWAP5 AND PUSH1 0x20 DUP3 ADD MSTORE DUP6 DUP3 AND DUP2 DUP5 ADD MSTORE DUP5 DUP3 AND PUSH1 0x60 DUP3 ADD MSTORE SWAP2 MLOAD SWAP3 AND SWAP2 PUSH32 0x973D8D92BB299F4AF6CE49B52A8ADB85AE46B9F214C4C4FC06AC77401237B133 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x26AD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8DA5CB5B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x8DA5CB5B SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x270F 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 0x2725 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x273B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP1 DUP6 AND GT PUSH2 0x2757 JUMPI DUP4 PUSH2 0x2764 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST PUSH1 0x8 SLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP5 AND GT PUSH2 0x278A JUMPI DUP3 PUSH2 0x279E JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x280C JUMPI PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x27CD JUMPI PUSH1 0x0 NOT SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP6 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 SLOAD PUSH2 0x280C SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP8 SWAP1 DUP6 AND PUSH2 0x40EE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x287F JUMPI PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x283D JUMPI PUSH1 0x0 NOT ADD JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP6 SWAP1 SUB DUP3 AND MUL SWAP2 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 SLOAD PUSH2 0x287F SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP8 SWAP1 DUP5 AND PUSH2 0x40EE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0x596B573906218D3411850B26A6B437D6C4522FDB43D2D2386263F86D50B8B151 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 PUSH2 0x2990 PUSH2 0x28FE PUSH2 0x308B JUMP JUMPDEST DUP7 DUP7 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x4 SLOAD PUSH1 0x9 SLOAD PUSH1 0x5 SLOAD PUSH1 0xD SWAP7 SWAP6 SWAP5 POP PUSH1 0x1 PUSH1 0xA0 SHL DUP4 DIV PUSH1 0x2 SIGNEXTEND SWAP4 POP PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP4 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP4 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP3 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x47A8 AND JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x90 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2A04 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE CALLER DUP2 MSTORE PUSH1 0x2 DUP8 DUP2 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE DUP7 SWAP1 SIGNEXTEND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 SWAP1 PUSH2 0x2A60 SWAP1 PUSH1 0x60 DUP2 ADD PUSH2 0x2A53 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP11 AND PUSH2 0x44A2 JUMP JUMPDEST PUSH1 0x0 SUB PUSH1 0xF SIGNEXTEND SWAP1 MSTORE PUSH2 0x44B3 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 PUSH1 0x0 SUB SWAP5 POP DUP1 PUSH1 0x0 SUB SWAP4 POP PUSH1 0x0 DUP6 GT DUP1 PUSH2 0x2A81 JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST ISZERO PUSH2 0x2AC0 JUMPI PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP1 DUP10 ADD DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP4 DUP5 SWAP1 DIV DUP4 AND DUP10 ADD SWAP1 SWAP3 AND SWAP1 SWAP3 MUL SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP9 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE DUP1 DUP3 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP3 SWAP1 DUP12 SWAP1 SIGNEXTEND SWAP2 CALLER SWAP2 PUSH32 0xC396CD989A39F4459B5FA1AED6A9A8DCDBC45908ACFD67E028CD568DA98982C SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2B47 DUP7 DUP7 PUSH2 0x4965 JUMP JUMPDEST PUSH2 0x2B4F PUSH2 0x5D6F JUMP JUMPDEST PUSH2 0x2B57 PUSH2 0x5D6F JUMP JUMPDEST PUSH1 0x2 DUP9 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP12 DUP6 SIGNEXTEND SWAP1 SWAP5 SIGNEXTEND DUP4 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL DUP4 DIV AND ISZERO ISZERO PUSH1 0x80 DUP10 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x60 DUP10 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xD8 SHL DUP4 DIV AND SWAP5 DUP9 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH8 0x100000000000000 DUP3 DIV AND SWAP3 DUP8 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x6 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND DUP6 MSTORE SWAP1 PUSH2 0x2BED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL DUP4 DIV AND ISZERO ISZERO PUSH1 0x80 DUP7 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xD8 SHL DUP4 DIV AND PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH8 0x100000000000000 DUP4 DIV AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x6 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND DUP5 MSTORE PUSH2 0x2C5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x20 DUP5 ADD DUP2 SWAP1 MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DIV DUP2 AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP4 DIV DUP6 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP4 DIV SWAP1 SWAP5 AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP4 DIV DUP2 AND PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE SWAP1 SWAP2 DUP11 DUP3 SIGNEXTEND SWAP2 SIGNEXTEND SLT ISZERO PUSH2 0x2D27 JUMPI DUP2 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x0 ADD MLOAD SUB DUP3 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x20 ADD MLOAD SUB DUP4 PUSH1 0x40 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD SUB DUP5 PUSH1 0x60 ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD SUB SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP PUSH2 0x2E20 JUMP JUMPDEST DUP8 PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x2DE8 JUMPI PUSH1 0x0 PUSH2 0x2D43 PUSH2 0x308B JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x9 SLOAD PUSH1 0x5 SLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP5 SWAP6 POP PUSH1 0x0 SWAP5 DUP6 SWAP5 DUP6 SWAP5 PUSH2 0x2D9A SWAP5 PUSH1 0xD SWAP5 DUP11 SWAP5 DUP9 SWAP5 SWAP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP3 DIV DUP3 AND SWAP2 PUSH2 0x37ED AND JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP6 PUSH1 0x0 ADD MLOAD DUP8 PUSH1 0x0 ADD MLOAD DUP5 SUB SUB DUP7 PUSH1 0x20 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP5 SUB SUB DUP8 PUSH1 0x40 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD DUP8 SUB SUB DUP9 PUSH1 0x60 ADD MLOAD DUP11 PUSH1 0x60 ADD MLOAD DUP6 SUB SUB SWAP11 POP SWAP11 POP SWAP11 POP SWAP11 POP POP POP POP POP POP POP POP PUSH2 0x2E20 JUMP JUMPDEST DUP3 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x0 ADD MLOAD SUB DUP4 PUSH1 0x20 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD SUB DUP5 PUSH1 0x40 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD SUB DUP6 PUSH1 0x60 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD SUB SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP JUMPDEST SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV SWAP1 SIGNEXTEND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH3 0xFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND SWAP5 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP5 DIV PUSH1 0xF SIGNEXTEND SWAP4 PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND SWAP2 PUSH8 0x100000000000000 DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV PUSH4 0xFFFFFFFF AND SWAP2 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP10 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2F2F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4149 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2F3A DUP3 PUSH2 0x3BB7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x2F52 PUSH2 0x2F4A PUSH2 0x308B JUMP JUMPDEST PUSH1 0xD SWAP1 PUSH2 0x4A2E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP1 DUP3 MSTORE PUSH1 0x2 DUP9 DUP2 SIGNEXTEND PUSH1 0x20 DUP1 DUP6 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 DUP6 DUP8 ADD DUP2 SWAP1 MSTORE PUSH2 0xFFFF DUP10 DUP2 AND PUSH1 0x60 DUP9 ADD DUP2 SWAP1 MSTORE SWAP1 DUP10 AND PUSH1 0x80 DUP9 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP9 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xC0 SWAP1 SWAP8 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP8 OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH3 0xFFFFFF SWAP8 DUP8 SWAP1 SIGNEXTEND SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 MUL SWAP6 SWAP1 SWAP6 OR PUSH32 0xFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 SWAP8 MUL SWAP7 SWAP1 SWAP7 OR PUSH2 0xFFFF PUSH1 0xD8 SHL NOT AND PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 SWAP2 MUL OR PUSH32 0xFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP4 SSTORE DUP4 MLOAD SWAP2 DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH32 0x98636036CB66A9C19A37435EFC1E90142190214E8ABEB821BDBA3F2990DD4C95 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x30A3 JUMPI INVALID JUMPDEST SDIV SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x2 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0x30CA JUMPI POP DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x30C3 JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x30D4 JUMPI PUSH1 0x0 NOT ADD JUMPDEST DUP4 ISZERO PUSH2 0x3149 JUMPI PUSH1 0x0 DUP1 PUSH2 0x30E6 DUP4 PUSH2 0x4A91 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF DUP4 AND SWAP2 SWAP1 SWAP2 SHL DUP1 ADD PUSH1 0x0 NOT ADD SWAP1 DUP2 AND DUP1 ISZERO ISZERO SWAP8 POP SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 DUP6 PUSH2 0x312B JUMPI DUP9 DUP4 PUSH1 0xFF AND DUP7 SUB MUL PUSH2 0x313E JUMP JUMPDEST DUP9 PUSH2 0x3135 DUP3 PUSH2 0x4AA3 JUMP JUMPDEST DUP5 SUB PUSH1 0xFF AND DUP7 SUB MUL JUMPDEST SWAP7 POP POP POP POP POP PUSH2 0x31C7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3158 DUP4 PUSH1 0x1 ADD PUSH2 0x4A91 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SUB NOT SWAP1 POP PUSH1 0x0 DUP2 DUP12 PUSH1 0x0 DUP7 PUSH1 0x1 SIGNEXTEND PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 POP DUP1 PUSH1 0x0 EQ ISZERO SWAP6 POP DUP6 PUSH2 0x31AA JUMPI DUP9 DUP4 PUSH1 0xFF SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL PUSH2 0x31C0 JUMP JUMPDEST DUP9 DUP4 PUSH2 0x31B5 DUP4 PUSH2 0x4B43 JUMP JUMPDEST SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL JUMPDEST SWAP7 POP POP POP POP POP JUMPDEST POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x31E8 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x31F0 JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x322E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x3242 JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3254 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x3288 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x32A7 JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x32C6 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x32E5 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x3304 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x3323 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x3342 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x3362 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x3382 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x33A2 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x33C2 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x33E2 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x3402 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x3422 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x3442 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x3463 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x3483 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x34A2 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x34BF JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x34DA JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x34D6 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x34EE JUMPI PUSH1 0x1 PUSH2 0x34F1 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 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP1 DUP11 AND LT ISZERO DUP2 DUP8 SLT DUP1 ISZERO SWAP1 PUSH2 0x3588 JUMPI PUSH1 0x0 PUSH2 0x353C DUP10 DUP10 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x373D JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x3555 JUMPI PUSH2 0x3550 DUP13 DUP13 DUP13 PUSH1 0x1 PUSH2 0x4C2D JUMP JUMPDEST PUSH2 0x3562 JUMP JUMPDEST PUSH2 0x3562 DUP12 DUP14 DUP13 PUSH1 0x1 PUSH2 0x4CA8 JUMP JUMPDEST SWAP6 POP DUP6 DUP2 LT PUSH2 0x3573 JUMPI DUP11 SWAP7 POP PUSH2 0x3582 JUMP JUMPDEST PUSH2 0x357F DUP13 DUP12 DUP4 DUP7 PUSH2 0x4D65 JUMP JUMPDEST SWAP7 POP JUMPDEST POP PUSH2 0x35D2 JUMP JUMPDEST DUP2 PUSH2 0x359F JUMPI PUSH2 0x359A DUP12 DUP12 DUP12 PUSH1 0x0 PUSH2 0x4CA8 JUMP JUMPDEST PUSH2 0x35AC JUMP JUMPDEST PUSH2 0x35AC DUP11 DUP13 DUP12 PUSH1 0x0 PUSH2 0x4C2D JUMP JUMPDEST SWAP4 POP DUP4 DUP9 PUSH1 0x0 SUB LT PUSH2 0x35C0 JUMPI DUP10 SWAP6 POP PUSH2 0x35D2 JUMP JUMPDEST PUSH2 0x35CF DUP12 DUP11 DUP11 PUSH1 0x0 SUB DUP6 PUSH2 0x4DB1 JUMP JUMPDEST SWAP6 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP1 DUP8 AND EQ DUP3 ISZERO PUSH2 0x3635 JUMPI DUP1 DUP1 ISZERO PUSH2 0x35F1 JUMPI POP DUP2 JUMPDEST PUSH2 0x3607 JUMPI PUSH2 0x3602 DUP8 DUP14 DUP13 PUSH1 0x1 PUSH2 0x4CA8 JUMP JUMPDEST PUSH2 0x3609 JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x3616 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x362C JUMPI PUSH2 0x3627 DUP8 DUP14 DUP13 PUSH1 0x0 PUSH2 0x4C2D JUMP JUMPDEST PUSH2 0x362E JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP PUSH2 0x367F JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x363F JUMPI POP DUP2 JUMPDEST PUSH2 0x3655 JUMPI PUSH2 0x3650 DUP13 DUP9 DUP13 PUSH1 0x1 PUSH2 0x4C2D JUMP JUMPDEST PUSH2 0x3657 JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x3664 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x367A JUMPI PUSH2 0x3675 DUP13 DUP9 DUP13 PUSH1 0x0 PUSH2 0x4CA8 JUMP JUMPDEST PUSH2 0x367C JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x368F JUMPI POP DUP9 PUSH1 0x0 SUB DUP6 GT JUMPDEST ISZERO PUSH2 0x369B JUMPI DUP9 PUSH1 0x0 SUB SWAP5 POP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x36BA JUMPI POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x36C9 JUMPI DUP6 DUP10 SUB SWAP4 POP PUSH2 0x36E6 JUMP JUMPDEST PUSH2 0x36E3 DUP7 DUP10 PUSH3 0xFFFFFF AND DUP11 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH2 0x470A JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 LT PUSH2 0x3707 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 SGT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x3721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP3 DUP2 SLT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x3721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x3773 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x3768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x37E6 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x377F 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 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH4 0xFFFFFFFF DUP11 AND PUSH2 0x38B9 JUMPI PUSH1 0x0 DUP13 DUP10 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x380F JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP6 MSTORE PUSH5 0x100000000 DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP14 AND EQ PUSH2 0x389E JUMPI PUSH2 0x389B DUP2 DUP14 DUP13 DUP12 DUP12 DUP12 PUSH2 0x4DFD JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD SWAP4 POP SWAP4 POP SWAP4 POP POP PUSH2 0x39DC JUMP JUMPDEST DUP10 DUP12 SUB PUSH1 0x0 DUP1 PUSH2 0x38D0 DUP16 DUP16 DUP6 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 PUSH2 0x4F47 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x3909 JUMPI DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD DUP4 PUSH1 0x80 ADD MLOAD SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x39DC JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x3938 JUMPI DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x39DC JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD SWAP1 DUP5 ADD MLOAD SWAP2 DUP4 SWAP1 SUB SWAP3 DUP7 SUB SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP5 AND SWAP3 SWAP1 DUP6 AND SWAP2 SUB PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0x3966 JUMPI INVALID JUMPDEST SDIV MUL DUP5 PUSH1 0x20 ADD MLOAD ADD DUP3 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL DUP2 PUSH2 0x3998 JUMPI INVALID JUMPDEST DIV DUP6 PUSH1 0x40 ADD MLOAD ADD DUP3 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND DUP8 PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x80 ADD MLOAD SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 PUSH2 0x39C8 JUMPI INVALID JUMPDEST DIV MUL DUP7 PUSH1 0x80 ADD MLOAD ADD SWAP8 POP SWAP8 POP SWAP8 POP POP POP POP POP POP JUMPDEST SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP7 DUP8 SIGNEXTEND DUP8 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x40 SWAP1 SWAP8 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD SWAP1 SWAP7 SUB SWAP1 SWAP6 SSTORE SWAP5 DUP5 ADD DUP1 SLOAD SWAP1 SWAP4 SUB SWAP1 SWAP3 SSTORE PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xD8 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH8 0x100000000000000 DUP1 DUP6 DIV DUP3 AND SWAP1 SWAP7 SUB AND SWAP1 SWAP5 MUL PUSH32 0xFFFFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x6 DUP2 DUP2 SIGNEXTEND SWAP1 SWAP6 SUB SWAP1 SWAP5 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND PUSH7 0xFFFFFFFFFFFFFF NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR DUP3 DUP2 DIV DUP5 AND SWAP1 SWAP6 SUB SWAP1 SWAP3 AND MUL PUSH32 0xFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP1 DUP3 AND SWAP1 SWAP5 SUB SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0xF SIGNEXTEND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x3B66 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x0 SUB DUP5 SUB SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x3B61 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C53 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3721 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 DUP5 ADD SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0x3721 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C41 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x3BF3 JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT JUMPDEST PUSH2 0x3C28 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x20 DUP4 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 GT PUSH1 0x7 SHL DUP2 DUP2 SHR PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x6 SHL SWAP1 DUP2 SHR PUSH4 0xFFFFFFFF DUP2 GT PUSH1 0x5 SHL SWAP1 DUP2 SHR PUSH2 0xFFFF DUP2 GT PUSH1 0x4 SHL SWAP1 DUP2 SHR PUSH1 0xFF DUP2 GT PUSH1 0x3 SWAP1 DUP2 SHL SWAP2 DUP3 SHR PUSH1 0xF DUP2 GT PUSH1 0x2 SHL SWAP1 DUP2 SHR SWAP2 DUP3 GT PUSH1 0x1 SWAP1 DUP2 SHL SWAP3 DUP4 SHR SWAP8 SWAP1 DUP9 GT SWAP7 OR SWAP1 SWAP5 OR SWAP1 SWAP3 OR OR SWAP1 SWAP2 OR OR OR PUSH1 0x80 DUP2 LT PUSH2 0x3CC9 JUMPI PUSH1 0x7F DUP2 SUB DUP4 SWAP1 SHR SWAP2 POP PUSH2 0x3CD3 JUMP JUMPDEST DUP1 PUSH1 0x7F SUB DUP4 SWAP1 SHL SWAP2 POP JUMPDEST SWAP1 DUP1 MUL PUSH1 0x7F DUP2 DUP2 SHR PUSH1 0xFF DUP4 DUP2 SHR SWAP2 SWAP1 SWAP2 SHR DUP1 MUL DUP1 DUP4 SHR DUP2 DUP4 SHR SHR DUP1 MUL DUP1 DUP5 SHR DUP2 DUP5 SHR SHR DUP1 MUL DUP1 DUP6 SHR DUP2 DUP6 SHR SHR DUP1 MUL DUP1 DUP7 SHR DUP2 DUP7 SHR SHR DUP1 MUL DUP1 DUP8 SHR DUP2 DUP8 SHR SHR DUP1 MUL DUP1 DUP9 SHR DUP2 DUP9 SHR SHR DUP1 MUL DUP1 DUP10 SHR DUP2 DUP10 SHR SHR DUP1 MUL DUP1 DUP11 SHR DUP2 DUP11 SHR SHR DUP1 MUL DUP1 DUP12 SHR DUP2 DUP12 SHR SHR DUP1 MUL DUP1 DUP13 SHR DUP2 DUP13 SHR SHR DUP1 MUL DUP1 DUP14 SHR DUP2 DUP14 SHR SHR DUP1 MUL DUP1 DUP15 SHR SWAP13 DUP2 SWAP1 SHR SWAP13 SWAP1 SWAP13 SHR DUP1 MUL SWAP13 DUP14 SWAP1 SHR SWAP15 SWAP14 PUSH1 0x7F NOT DUP16 ADD PUSH1 0x40 SHL PUSH1 0xC0 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x8000000000000000 AND OR PUSH1 0xC1 SWAP12 SWAP1 SWAP12 SHR PUSH8 0x4000000000000000 AND SWAP11 SWAP1 SWAP11 OR PUSH1 0xC2 SWAP10 SWAP1 SWAP10 SHR PUSH8 0x2000000000000000 AND SWAP9 SWAP1 SWAP9 OR PUSH1 0xC3 SWAP8 SWAP1 SWAP8 SHR PUSH8 0x1000000000000000 AND SWAP7 SWAP1 SWAP7 OR PUSH1 0xC4 SWAP6 SWAP1 SWAP6 SHR PUSH8 0x800000000000000 AND SWAP5 SWAP1 SWAP5 OR PUSH1 0xC5 SWAP4 SWAP1 SWAP4 SHR PUSH8 0x400000000000000 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0xC6 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x200000000000000 AND OR PUSH1 0xC7 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x100000000000000 AND OR PUSH1 0xC8 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x80000000000000 AND OR PUSH1 0xC9 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x40000000000000 AND OR PUSH1 0xCA SWAP2 SWAP1 SWAP2 SHR PUSH7 0x20000000000000 AND OR PUSH1 0xCB SWAP2 SWAP1 SWAP2 SHR PUSH7 0x10000000000000 AND OR PUSH1 0xCC SWAP2 SWAP1 SWAP2 SHR PUSH7 0x8000000000000 AND OR PUSH1 0xCD SWAP2 SWAP1 SWAP2 SHR PUSH7 0x4000000000000 AND OR PUSH10 0x3627A301D71055774C85 DUP2 MUL PUSH16 0x28F6481AB7F045A5AF012A19D003AA9 NOT DUP2 ADD PUSH1 0x80 SWAP1 DUP2 SAR SWAP1 PUSH16 0xDB2DF09E81959A81455E260799A0632F DUP4 ADD SWAP1 SAR PUSH1 0x2 DUP2 DUP2 SIGNEXTEND SWAP1 DUP4 SWAP1 SIGNEXTEND EQ PUSH2 0x3ED4 JUMPI DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3EB8 DUP3 PUSH2 0x31D1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x3ECD JUMPI DUP2 PUSH2 0x3ECF JUMP JUMPDEST DUP1 JUMPDEST PUSH2 0x3ED6 JUMP JUMPDEST DUP2 JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP12 DUP12 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x3EF9 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP6 MSTORE PUSH5 0x100000000 DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP12 AND EQ ISZERO PUSH2 0x3F84 JUMPI DUP11 DUP6 SWAP3 POP SWAP3 POP POP PUSH2 0x40E0 JUMP JUMPDEST DUP5 PUSH2 0xFFFF AND DUP5 PUSH2 0xFFFF AND GT DUP1 ISZERO PUSH2 0x3FA5 JUMPI POP PUSH1 0x1 DUP6 SUB PUSH2 0xFFFF AND DUP12 PUSH2 0xFFFF AND EQ JUMPDEST ISZERO PUSH2 0x3FB2 JUMPI DUP4 SWAP2 POP PUSH2 0x3FB6 JUMP JUMPDEST DUP5 SWAP2 POP JUMPDEST DUP2 PUSH2 0xFFFF AND DUP12 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x3FCA JUMPI INVALID JUMPDEST MOD SWAP3 POP PUSH2 0x3FDB DUP2 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x4DFD JUMP JUMPDEST DUP13 DUP5 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x3FEC JUMPI INVALID JUMPDEST DUP3 MLOAD PUSH1 0x2 SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH4 0xFFFFFFFF NOT SWAP1 SWAP4 AND PUSH4 0xFFFFFFFF SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR PUSH11 0xFFFFFFFFFFFFFF00000000 NOT AND PUSH5 0x100000000 PUSH7 0xFFFFFFFFFFFFFF PUSH1 0x6 SWAP4 SWAP1 SWAP4 SIGNEXTEND SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL OR PUSH32 0xFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x58 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP3 OR PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xF8 SHL SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR DUP2 SSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMPDEST SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH4 0xA9059CBB PUSH1 0xE0 SHL 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 0x417F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4160 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 0x41E1 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 0x41E6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4214 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4214 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4211 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x424A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x2A23 PUSH1 0xF1 SHL 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 ADDRESS PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x42DF JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x42C0 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 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x433F 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 0x4344 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4358 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST PUSH2 0x4361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x3721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E7 NOT DUP2 PUSH2 0x43A7 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E8 DUP2 PUSH2 0x43BE JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP4 DUP4 SUB PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x43D5 JUMPI INVALID JUMPDEST SDIV PUSH1 0x1 ADD SWAP1 POP DUP1 PUSH3 0xFFFFFF AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 AND DUP2 PUSH2 0x43F2 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0xFFFF AND GT PUSH2 0x443A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND GT PUSH2 0x4450 JUMPI POP DUP2 PUSH2 0x37E6 JUMP JUMPDEST DUP3 JUMPDEST DUP3 PUSH2 0xFFFF AND DUP2 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x4499 JUMPI PUSH1 0x1 DUP6 DUP3 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x4475 JUMPI INVALID JUMPDEST PUSH1 0x2 MUL ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 ADD PUSH2 0x4452 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x437D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x44CA DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD PUSH2 0x4965 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DIV DUP2 AND DUP6 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP5 DIV DUP2 AND PUSH1 0x60 DUP1 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP6 DIV SWAP1 SWAP2 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP6 DIV DUP2 AND PUSH1 0xA0 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP5 DIV SWAP1 SWAP4 AND ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE DUP9 MLOAD SWAP1 DUP10 ADD MLOAD SWAP5 DUP10 ADD MLOAD SWAP3 DUP10 ADD MLOAD SWAP4 SWAP5 PUSH2 0x456E SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x518E JUMP JUMPDEST SWAP4 POP DUP5 PUSH1 0x60 ADD MLOAD PUSH1 0xF SIGNEXTEND PUSH1 0x0 EQ PUSH2 0x4702 JUMPI DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x45C3 JUMPI PUSH2 0x45BC PUSH2 0x45A5 DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0x31D1 JUMP JUMPDEST PUSH2 0x45B2 DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0x31D1 JUMP JUMPDEST DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x5311 JUMP JUMPDEST SWAP3 POP PUSH2 0x4702 JUMP JUMPDEST DUP5 PUSH1 0x40 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x46D8 JUMPI PUSH1 0x9 SLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH2 0x4634 SWAP1 PUSH2 0x45F9 PUSH2 0x308B JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x5 SLOAD PUSH1 0x60 DUP8 ADD MLOAD PUSH1 0x80 DUP9 ADD MLOAD PUSH1 0xD SWAP6 SWAP5 SWAP4 SWAP3 DUP9 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP3 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP4 DIV DUP4 AND SWAP3 PUSH2 0x3EE3 AND JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP4 DUP5 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SSTORE DUP2 MLOAD PUSH1 0x40 DUP8 ADD MLOAD PUSH2 0x4684 SWAP2 SWAP1 PUSH2 0x467A SWAP1 PUSH2 0x31D1 JUMP JUMPDEST DUP9 PUSH1 0x60 ADD MLOAD PUSH2 0x5311 JUMP JUMPDEST SWAP4 POP PUSH2 0x46A2 PUSH2 0x4696 DUP8 PUSH1 0x20 ADD MLOAD PUSH2 0x31D1 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH2 0x5355 JUMP JUMPDEST SWAP3 POP PUSH2 0x46B2 DUP2 DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x3B01 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0x4702 JUMP JUMPDEST PUSH2 0x46FF PUSH2 0x46E8 DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0x31D1 JUMP JUMPDEST PUSH2 0x46F5 DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0x31D1 JUMP JUMPDEST DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x5355 JUMP JUMPDEST SWAP2 POP JUMPDEST POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4717 DUP5 DUP5 DUP5 PUSH2 0x373D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP1 PUSH2 0x4723 JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD GT ISZERO PUSH2 0x37E6 JUMPI PUSH1 0x0 NOT DUP2 LT PUSH2 0x473A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND PUSH1 0xE8 SWAP1 DUP2 SHL PUSH1 0x34 DUP8 ADD MSTORE SWAP3 SWAP1 SWAP4 SIGNEXTEND SWAP1 SWAP2 SHL PUSH1 0x37 DUP5 ADD MSTORE DUP1 MLOAD DUP1 DUP5 SUB PUSH1 0x1A ADD DUP2 MSTORE PUSH1 0x3A SWAP1 SWAP4 ADD DUP2 MSTORE DUP3 MLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 KECCAK256 PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 SWAP1 MSTORE SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 PUSH1 0x0 DUP5 PUSH2 0xFFFF AND GT PUSH2 0x47EA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4802 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 0x482C JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4847 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 0x4871 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x488C 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 0x48B6 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0x4955 JUMPI PUSH2 0x48E9 DUP14 DUP14 DUP14 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x48D6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 PUSH2 0x37ED JUMP JUMPDEST DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x48F5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x4908 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x491B JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x20 SWAP5 DUP6 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP1 MSTORE PUSH1 0x6 SWAP2 DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND SWAP1 MSTORE PUSH1 0x1 ADD PUSH2 0x48BC JUMP JUMPDEST POP SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x49A5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x544C55 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0xD89E7 NOT PUSH1 0x2 DUP4 SWAP1 SIGNEXTEND SLT ISZERO PUSH2 0x49E8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x544C4D PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0xD89E8 PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND SGT ISZERO PUSH2 0x4A2A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x54554D PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE SWAP3 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP4 SLOAD PUSH4 0xFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xF8 SHL OR DUP3 SSTORE SWAP1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND SWAP1 SSTORE SWAP1 DUP2 SWAP1 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH1 0x8 DUP2 SWAP1 SAR SWAP2 PUSH2 0x100 SWAP1 SWAP2 SMOD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x4AB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x80 SHL DUP3 LT PUSH2 0x4AC4 JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x4ADC JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x4AF0 JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x4B02 JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x4B13 JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x4B23 JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x4B33 JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x437D JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x4B51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x4B6C JUMPI PUSH1 0x7F NOT ADD PUSH2 0x4B74 JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x4B8D JUMPI PUSH1 0x3F NOT ADD PUSH2 0x4B95 JUMP JUMPDEST PUSH1 0x40 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x4BAA JUMPI PUSH1 0x1F NOT ADD PUSH2 0x4BB2 JUMP JUMPDEST PUSH1 0x20 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH2 0xFFFF DUP3 AND ISZERO PUSH2 0x4BC5 JUMPI PUSH1 0xF NOT ADD PUSH2 0x4BCD JUMP JUMPDEST PUSH1 0x10 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x4BDF JUMPI PUSH1 0x7 NOT ADD PUSH2 0x4BE7 JUMP JUMPDEST PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xF DUP3 AND ISZERO PUSH2 0x4BF9 JUMPI PUSH1 0x3 NOT ADD PUSH2 0x4C01 JUMP JUMPDEST PUSH1 0x4 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x3 DUP3 AND ISZERO PUSH2 0x4C13 JUMPI PUSH1 0x1 NOT ADD PUSH2 0x4C1B JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x437D JUMPI PUSH1 0x0 NOT ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4C4D JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP2 PUSH2 0x4C7A JUMPI PUSH2 0x4C75 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x373D JUMP JUMPDEST PUSH2 0x4C9D JUMP JUMPDEST PUSH2 0x4C9D DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x470A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4CC8 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP7 SUB DUP2 AND SWAP1 DUP8 AND PUSH2 0x4D04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH2 0x4D34 JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4D27 DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x373D JUMP JUMPDEST DUP2 PUSH2 0x4D2E JUMPI INVALID JUMPDEST DIV PUSH2 0x4D5A JUMP JUMPDEST PUSH2 0x4D5A PUSH2 0x4D4B DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x470A JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5384 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x4D7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x4D92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x4DA4 JUMPI PUSH2 0x4C75 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x538F JUMP JUMPDEST PUSH2 0x4C9D DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x5470 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x4DC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x4DDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x4DF0 JUMPI PUSH2 0x4C75 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x5470 JUMP JUMPDEST PUSH2 0x4C9D DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x538F JUMP JUMPDEST PUSH2 0x4E05 PUSH2 0x5D6F JUMP JUMPDEST DUP7 MLOAD DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH2 0x4E1E JUMPI PUSH1 0x1 PUSH2 0x4E20 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP PUSH1 0x0 PUSH4 0xFFFFFFFF TIMESTAMP GT PUSH2 0x4E6B JUMPI TIMESTAMP DUP5 PUSH4 0xFFFFFFFF AND LT PUSH2 0x4E42 JUMPI DUP2 PUSH2 0x4E66 JUMP JUMPDEST DUP9 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x4E63 JUMPI DUP9 MLOAD DUP5 SUB PUSH2 0x4E66 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH2 0x4E6E JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP10 PUSH1 0x2 SIGNEXTEND MUL DUP12 PUSH1 0x20 ADD MLOAD ADD PUSH1 0x6 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x80 DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH2 0x4ECF JUMPI INVALID JUMPDEST DIV DUP12 PUSH1 0x40 ADD MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0x10 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND SWAP1 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 PUSH2 0x4F26 JUMPI INVALID JUMPDEST DIV DUP12 PUSH1 0x80 ADD MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 MSTORE POP SWAP3 POP POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x4F4F PUSH2 0x5D6F JUMP JUMPDEST PUSH2 0x4F57 PUSH2 0x5D6F JUMP JUMPDEST DUP11 DUP8 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x4F68 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP1 DUP5 MSTORE PUSH5 0x100000000 DUP3 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP3 POP PUSH2 0x4FE6 SWAP1 DUP12 SWAP1 DUP12 PUSH2 0x5565 JUMP JUMPDEST ISZERO PUSH2 0x5020 JUMPI DUP9 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x5008 JUMPI PUSH2 0x40E0 JUMP JUMPDEST DUP2 PUSH2 0x5017 DUP4 DUP12 DUP12 DUP11 DUP11 DUP11 PUSH2 0x4DFD JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x40E0 JUMP JUMPDEST DUP11 DUP4 PUSH2 0xFFFF AND DUP9 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x5035 JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x5045 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP3 POP PUSH2 0x5129 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE DUP13 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP3 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x1 DUP13 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP2 POP JUMPDEST PUSH2 0x5138 DUP11 DUP4 PUSH1 0x0 ADD MLOAD DUP12 PUSH2 0x5565 JUMP JUMPDEST PUSH2 0x516F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x13D311 PUSH1 0xEA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x517C DUP12 DUP12 DUP12 DUP11 DUP8 PUSH2 0x5628 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x519D PUSH1 0xC DUP8 DUP8 DUP8 PUSH2 0x4744 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 DUP1 PUSH1 0xF DUP8 SWAP1 SIGNEXTEND ISZERO PUSH2 0x52B1 JUMPI PUSH1 0x0 PUSH2 0x51BE PUSH2 0x308B JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x9 SLOAD PUSH1 0x5 SLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH2 0x5229 SWAP3 PUSH1 0xD SWAP3 DUP9 SWAP3 DUP7 SWAP3 PUSH1 0x1 PUSH1 0xA0 SHL DUP4 DIV PUSH1 0x2 SIGNEXTEND SWAP3 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP2 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP3 DIV DUP3 AND SWAP3 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 SWAP2 DIV AND SWAP1 PUSH2 0x37ED AND JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x5253 PUSH1 0xA DUP16 DUP14 DUP16 DUP14 DUP14 DUP10 DUP12 DUP14 PUSH1 0x0 DUP12 DUP14 PUSH2 0x57FD JUMP JUMPDEST SWAP7 POP PUSH2 0x526B PUSH1 0xA DUP15 DUP14 DUP16 DUP14 DUP14 DUP10 DUP12 DUP14 PUSH1 0x1 DUP12 DUP14 PUSH2 0x57FD JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP2 SWAP8 POP PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 SWAP2 DIV SWAP1 SIGNEXTEND DUP8 ISZERO PUSH2 0x5298 JUMPI PUSH2 0x5298 DUP16 DUP3 PUSH1 0xB PUSH2 0x5A35 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP7 ISZERO PUSH2 0x52AA JUMPI PUSH2 0x52AA PUSH1 0xB DUP16 DUP4 PUSH2 0x5A35 JUMP JUMPDEST POP POP POP POP POP POP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x52C3 PUSH1 0xA DUP13 DUP13 DUP12 DUP11 DUP11 PUSH2 0x5A9B JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x52D4 DUP8 DUP11 DUP5 DUP5 PUSH2 0x5B47 JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x5302 JUMPI DUP4 ISZERO PUSH2 0x52F1 JUMPI PUSH2 0x52F1 PUSH1 0xA DUP13 PUSH2 0x5CDC JUMP JUMPDEST DUP3 ISZERO PUSH2 0x5302 JUMPI PUSH2 0x5302 PUSH1 0xA DUP12 PUSH2 0x5CDC JUMP JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT PUSH2 0x5337 JUMPI PUSH2 0x5332 PUSH2 0x532D DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x4CA8 JUMP JUMPDEST PUSH2 0x36F5 JUMP JUMPDEST PUSH2 0x4CA0 JUMP JUMPDEST PUSH2 0x534A PUSH2 0x532D DUP6 DUP6 DUP6 PUSH1 0x0 SUB PUSH1 0x0 PUSH2 0x4CA8 JUMP JUMPDEST PUSH1 0x0 SUB SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT PUSH2 0x5371 JUMPI PUSH2 0x5332 PUSH2 0x532D DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x4C2D JUMP JUMPDEST PUSH2 0x534A PUSH2 0x532D DUP6 DUP6 DUP6 PUSH1 0x0 SUB PUSH1 0x0 PUSH2 0x4C2D JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x5402 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x53C5 JUMPI PUSH2 0x53C0 DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x373D JUMP JUMPDEST PUSH2 0x53DD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH1 0x60 DUP6 SWAP1 SHL DUP2 PUSH2 0x53DB JUMPI INVALID JUMPDEST DIV JUMPDEST SWAP1 POP PUSH2 0x53FA PUSH2 0x53F5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP4 PUSH2 0x4382 JUMP JUMPDEST PUSH2 0x5D1D JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4CA0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x5430 JUMPI PUSH2 0x542B DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x470A JUMP JUMPDEST PUSH2 0x5447 JUMP JUMPDEST PUSH2 0x5447 PUSH1 0x60 DUP6 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP8 AND PUSH2 0x5384 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x545E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB SWAP1 POP PUSH2 0x4CA0 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x547E JUMPI POP DUP4 PUSH2 0x4CA0 JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND DUP3 ISZERO PUSH2 0x551E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x54BE JUMPI INVALID JUMPDEST DIV EQ ISZERO PUSH2 0x54EF JUMPI DUP2 DUP2 ADD DUP3 DUP2 LT PUSH2 0x54ED JUMPI PUSH2 0x54E3 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH2 0x470A JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x4CA0 JUMP JUMPDEST POP JUMPDEST PUSH2 0x5515 DUP3 PUSH2 0x5510 DUP8 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP2 PUSH2 0x5509 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x4382 JUMP JUMPDEST PUSH2 0x5384 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x4CA0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x5535 JUMPI INVALID JUMPDEST DIV EQ DUP1 ISZERO PUSH2 0x5542 JUMPI POP DUP1 DUP3 GT JUMPDEST PUSH2 0x554B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB PUSH2 0x54E3 PUSH2 0x53F5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 PUSH2 0x470A JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO DUP1 ISZERO PUSH2 0x558F JUMPI POP DUP4 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND GT ISZERO JUMPDEST ISZERO PUSH2 0x55AB JUMPI DUP2 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO SWAP1 POP PUSH2 0x37E6 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x55D3 JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH5 0x100000000 ADD PUSH2 0x55DB JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP6 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x560C JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH5 0x100000000 ADD PUSH2 0x5614 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 SWAP2 GT ISZERO SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x5630 PUSH2 0x5D6F JUMP JUMPDEST PUSH2 0x5638 PUSH2 0x5D6F JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH2 0xFFFF AND DUP6 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x564E JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP6 PUSH2 0xFFFF AND DUP4 ADD SUB SWAP1 POP PUSH1 0x0 JUMPDEST POP PUSH1 0x2 DUP2 DUP4 ADD DIV DUP10 PUSH2 0xFFFF DUP8 AND DUP3 DUP2 PUSH2 0x567B JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x5687 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP6 POP PUSH2 0x570C JUMPI DUP1 PUSH1 0x1 ADD SWAP3 POP PUSH2 0x5666 JUMP JUMPDEST DUP10 DUP7 PUSH2 0xFFFF AND DUP3 PUSH1 0x1 ADD DUP2 PUSH2 0x571D JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x5729 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE DUP6 MLOAD SWAP1 SWAP5 POP PUSH1 0x0 SWAP1 PUSH2 0x57AF SWAP1 DUP12 SWAP1 DUP12 PUSH2 0x5565 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x57C8 JUMPI POP PUSH2 0x57C8 DUP11 DUP11 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x5565 JUMP JUMPDEST ISZERO PUSH2 0x57D3 JUMPI POP PUSH2 0x57F0 JUMP JUMPDEST DUP1 PUSH2 0x57E3 JUMPI PUSH1 0x1 DUP3 SUB SWAP3 POP PUSH2 0x57EA JUMP JUMPDEST DUP2 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP PUSH2 0x5666 JUMP JUMPDEST POP POP POP SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP12 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH2 0x5828 DUP3 DUP15 PUSH2 0x3B01 JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT ISZERO PUSH2 0x5876 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C4F PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 DUP2 AND ISZERO SWAP1 DUP3 AND ISZERO DUP2 EQ ISZERO SWAP5 POP ISZERO PUSH2 0x5981 JUMPI DUP14 PUSH1 0x2 SIGNEXTEND DUP16 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x5951 JUMPI DUP12 DUP4 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP11 DUP4 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP10 DUP4 PUSH1 0x3 ADD PUSH1 0x7 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP9 DUP4 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH7 0xFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x6 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP8 DUP4 PUSH1 0x3 ADD PUSH1 0x1B PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 DUP4 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xF8 SHL OR SWAP1 SSTORE JUMPDEST DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND OR DUP4 SSTORE DUP7 PUSH2 0x59D6 JUMPI PUSH2 0x59D1 PUSH2 0x59CC DUP15 PUSH1 0xF SIGNEXTEND DUP6 PUSH1 0x0 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xF SIGNEXTEND PUSH1 0xF SIGNEXTEND PUSH2 0x3727 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x44A2 JUMP JUMPDEST PUSH2 0x5A03 JUMP JUMPDEST PUSH2 0x5A03 PUSH2 0x59CC DUP15 PUSH1 0xF SIGNEXTEND DUP6 PUSH1 0x0 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xF SIGNEXTEND PUSH1 0xF SIGNEXTEND PUSH2 0x370B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 SLOAD PUSH1 0xF SWAP2 SWAP1 SWAP2 SIGNEXTEND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP2 AND OR SWAP1 SWAP3 SSTORE POP SWAP1 SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x5A44 JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x5A52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5A6D DUP4 PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x5A67 JUMPI INVALID JUMPDEST SDIV PUSH2 0x4A91 JUMP JUMPDEST PUSH1 0x1 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x40 SWAP1 SWAP7 KECCAK256 DUP1 SLOAD PUSH1 0xFF SWAP1 SWAP8 AND SWAP2 SWAP1 SWAP2 SHL SWAP1 SWAP6 XOR SWAP1 SWAP5 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP6 DUP2 SIGNEXTEND DUP1 DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP10 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP9 DUP6 SIGNEXTEND DUP6 SIGNEXTEND DUP4 MSTORE SWAP1 DUP3 KECCAK256 SWAP2 SWAP4 DUP5 SWAP4 SWAP2 SWAP3 SWAP2 DUP5 SWAP2 DUP3 SWAP2 SWAP1 DUP11 SWAP1 SIGNEXTEND SLT PUSH2 0x5AE1 JUMPI POP POP PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH2 0x5AF4 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SLOAD DUP9 SUB SWAP2 POP DUP4 PUSH1 0x2 ADD SLOAD DUP8 SUB SWAP1 POP JUMPDEST PUSH1 0x0 DUP1 DUP12 PUSH1 0x2 SIGNEXTEND DUP12 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x5B16 JUMPI POP POP PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x2 DUP5 ADD SLOAD PUSH2 0x5B29 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SLOAD DUP11 SUB SWAP2 POP DUP5 PUSH1 0x2 ADD SLOAD DUP10 SUB SWAP1 POP JUMPDEST SWAP3 SWAP1 SWAP9 SUB SWAP8 SWAP1 SWAP8 SUB SWAP12 SWAP7 SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 SUB SWAP9 POP SWAP4 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP8 ADD SLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x2 DUP8 ADD SLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x3 DUP7 ADD SLOAD DUP1 DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV SWAP1 SWAP2 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xF DUP6 SWAP1 SIGNEXTEND PUSH2 0x5BE6 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x5BDE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4E5 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH2 0x5BF5 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x5BF2 SWAP1 DUP7 PUSH2 0x3B01 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH2 0x5C19 DUP4 PUSH1 0x20 ADD MLOAD DUP7 SUB DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x373D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x5C3F DUP5 PUSH1 0x40 ADD MLOAD DUP7 SUB DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x373D JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0xF SIGNEXTEND PUSH1 0x0 EQ PUSH2 0x5C66 JUMPI DUP8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND OR DUP9 SSTORE JUMPDEST PUSH1 0x1 DUP9 ADD DUP7 SWAP1 SSTORE PUSH1 0x2 DUP9 ADD DUP6 SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO ISZERO DUP1 PUSH2 0x5C94 JUMPI POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT JUMPDEST ISZERO PUSH2 0x5CD2 JUMPI PUSH1 0x3 DUP9 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP6 ADD DUP3 AND OR DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP3 SWAP1 DIV DUP4 AND DUP6 ADD SWAP1 SWAP3 AND MUL OR SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP4 SWAP1 SSTORE SWAP1 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x437D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH24 0xF216DF62BAC6D2389ED5ED695BBEAC8D557A5F189904F27E 0xD4 0xA6 0xD2 DUP2 DUP16 PUSH4 0x6A64736F PUSH13 0x63430007060033000000000000 ","sourceMap":"861:39509:2:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101cf5760003560e01c80635339c29611610104578063a38807f2116100a2578063ddca3f4311610071578063ddca3f431461092a578063f30583991461094a578063f30dba9314610952578063f637731d146109e3576101cf565b8063a38807f214610890578063c45a0155146108fb578063d0c93a7c14610903578063d21220a714610922576101cf565b806385b66729116100de57806385b667291461069b578063883bdbfd146106d857806394fd4a3e14610826578063a34123a714610856576101cf565b80635339c2961461064b57806370cf754a1461066b5780638206a4d114610673576101cf565b806332148f6711610171578063461413191161014b57806346141319146104fb578063490e6cbc146105155780634f1eb3d8146105a1578063514ea4bf146105f2576101cf565b806332148f67146103df5780633850c7bd146104005780633c8a7d8d14610459576101cf565b80631a686502116101ad5780631a686502146102ed5780631ad8b03b14610311578063218064e514610348578063252c09d71461037a576101cf565b80630dfe1681146101d4578063128acb08146101f857806314f2705c146102a7575b600080fd5b6101dc610a09565b604080516001600160a01b039092168252519081900360200190f35b61028e600480360360a081101561020e57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a08101608082013564010000000081111561024f57600080fd5b82018360208201111561026157600080fd5b8035906020019184600183028401116401000000008311171561028357600080fd5b509092509050610a18565b6040805192835260208301919091528051918290030190f35b6102eb600480360360808110156102bd57600080fd5b506001600160a01b03813581169160208101359091169062ffffff604082013516906060013560020b611635565b005b6102f5611704565b604080516001600160801b039092168252519081900360200190f35b610319611713565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102eb6004803603604081101561035e57600080fd5b5080356001600160901b0316906020013563ffffffff1661172d565b6103976004803603602081101561039057600080fd5b5035611972565b6040805163ffffffff909616865260069490940b60208601526001600160a01b0390921684840152151560608401526001600160c01b03166080830152519081900360a00190f35b6102eb600480360360208110156103f557600080fd5b503561ffff166119cd565b610408611abe565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b61028e600480360360a081101561046f57600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a0810160808201356401000000008111156104bc57600080fd5b8201836020820111156104ce57600080fd5b803590602001918460018302840111640100000000831117156104f057600080fd5b509092509050611b0e565b610503611de7565b60408051918252519081900360200190f35b6102eb6004803603608081101561052b57600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561056257600080fd5b82018360208201111561057457600080fd5b8035906020019184600183028401116401000000008311171561059657600080fd5b509092509050611ded565b610319600480360360a08110156105b757600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b0360608201358116916080013516612235565b61060f6004803603602081101561060857600080fd5b503561242d565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b6105036004803603602081101561066157600080fd5b503560010b61246a565b6102f561247c565b6102eb6004803603604081101561068957600080fd5b5060ff8135811691602001351661248b565b610319600480360360608110156106b157600080fd5b506001600160a01b03813516906001600160801b0360208201358116916040013516612664565b610748600480360360208110156106ee57600080fd5b81019060208101813564010000000081111561070957600080fd5b82018360208201111561071b57600080fd5b8035906020019184602083028401116401000000008311171561073d57600080fd5b5090925090506128ee565b60405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610790578181015183820152602001610778565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156107cf5781810151838201526020016107b7565b50505050905001848103825285818151815260200191508051906020019060200280838360005b8381101561080e5781810151838201526020016107f6565b50505050905001965050505050505060405180910390f35b61082e61299d565b604080516001600160901b03909316835263ffffffff90911660208301528051918290030190f35b61028e6004803603606081101561086c57600080fd5b508035600290810b91602081013590910b90604001356001600160801b03166129bb565b6108ba600480360360408110156108a657600080fd5b508035600290810b9160200135900b612b37565b6040805160069590950b85526001600160a01b03909316602085015263ffffffff909116838301526001600160c01b03166060830152519081900360800190f35b6101dc612e29565b61090b612e38565b6040805160029290920b8252519081900360200190f35b6101dc612e48565b610932612e57565b6040805162ffffff9092168252519081900360200190f35b610503612e69565b6109726004803603602081101561096857600080fd5b503560020b612e6f565b604080516001600160801b03909a168a52600f9890980b60208a015288880196909652606088019490945260069290920b60808701526001600160a01b031660a086015263ffffffff1660c0850152151560e08401526001600160c01b031661010083015251908190036101200190f35b6102eb600480360360208110156109f957600080fd5b50356001600160a01b0316612eec565b6001546001600160a01b031681565b60008085610a52576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526004546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c08201819052610b0b576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610b565780600001516001600160a01b0316866001600160a01b0316118015610b51575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610b88565b80600001516001600160a01b0316866001600160a01b0316108015610b8857506401000276a36001600160a01b038716115b610bbf576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6004805460ff60f01b19169055604080516101608101909152600090808a610bf25760048460a0015160ff16901c610c05565b60108460a0015160ff1681610c0357fe5b065b60ff1681526009546001600160801b03166020820152604001610c2661308b565b63ffffffff168152602001600060060b815260200160006001600160a01b0316815260200160001515815260200160006001600160c01b03168152602001600260149054906101000a900462ffffff1662ffffff168152602001600260179054906101000a900460020b60020b8152602001600160009054906101000a90046001600160a01b03166001600160a01b03168152602001600260009054906101000a90046001600160a01b03166001600160a01b031681525090506000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610d2e57600754610d32565b6006545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610d815750886001600160a01b031681604001516001600160a01b031614155b1561114257610d8e615d33565b60408201516001600160a01b031681526060820151610100850151610db691600b918f61308f565b15156040830152600290810b810b60208301819052620d89e719910b1215610de757620d89e7196020820152610e06565b6020810151620d89e860029190910b1315610e0657620d89e860208201525b610e1381602001516131d1565b6001600160a01b031660608201526040820151610e88908d610e4d578b6001600160a01b031683606001516001600160a01b031611610e67565b8b6001600160a01b031683606001516001600160a01b0316105b610e75578260600151610e77565b8b5b60c0850151855160e0890151613503565b60c085015260a084015260808301526001600160a01b031660408301528215610eea57610ebe8160c001518260800151016136f5565b825103825260a0810151610ee090610ed5906136f5565b60208401519061370b565b6020830152610f25565b610ef78160a001516136f5565b825101825260c08101516080820151610f1f91610f1491016136f5565b602084015190613727565b60208301525b835160ff1615610f6b576000846000015160ff168260c0015181610f4557fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615610faa57610f9e8160c00151600160801b8460c001516001600160801b031661373d565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b03161415611101578060400151156110d8578360a0015161105c57604080850151602080880151928801519087015160055460608a015161102c95600d9594600094919390926001600160901b0382169163ffffffff600160901b909104811691906137ed16565b6001600160c01b031660c08701526001600160a01b03166080860152600690810b900b6060850152600160a08501525b60006110ae82602001518e61107357600654611079565b84608001515b8f61108857856080015161108c565b6007545b608089015160608a015160408b015160c08c0151600a969594939291906139eb565b90508c156110ba576000035b6110c88360c0015182613b01565b6001600160801b031660c0840152505b8b6110e75780602001516110f0565b60018160200151035b600290810b900b606083015261113c565b80600001516001600160a01b031682604001516001600160a01b03161461113c5761112f8260400151613bb7565b600290810b900b60608301525b50610d5b565b836020015160020b816060015160020b1461122d576040808501519084015160208087015190860151600554606089015160808a015160009687966111ad96600d969295919490936001600160901b0383169263ffffffff600160901b9091048116929190613ee316565b604085015160608601516004805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b9390931692909202919091176001600160a01b0319166001600160a01b03909116179055506112529050565b6040810151600480546001600160a01b0319166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b0316146112985760c0810151600980546001600160801b0319166001600160801b039092169190911790555b8a156112e857608081015160065560a08101516001600160801b0316156112e35760a0810151600880546001600160801b031981166001600160801b03918216909301169190911790555b61132e565b608081015160075560a08101516001600160801b03161561132e5760a0810151600880546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b15151461134757602081015181518b03611354565b80600001518a0381602001515b90965094508a1561147e57600085121561137b5761137b8361014001518d876000036140ee565b600061138b846101200151614251565b9050336001600160a01b031663d804d7a788888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561140f57600080fd5b505af1158015611423573d6000803e3d6000fd5b50505050611435846101200151614251565b61143f8289614382565b1115611478576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b50611599565b600086121561149a5761149a8361012001518d886000036140ee565b60006114aa846101400151614251565b9050336001600160a01b031663d804d7a788888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561152e57600080fd5b505af1158015611542573d6000803e3d6000fd5b50505050611554846101400151614251565b61155e8288614382565b1115611597576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015160c083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506004805460ff60f01b1916600160f01b17905550919890975095505050505050565b6000546001600160a01b03161561164b57600080fd5b60008054336001600160a01b0319918216179091556001805482166001600160a01b0387811691909117909155600280549092169085161762ffffff60a01b1916600160a01b62ffffff85811691909102919091177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16600160b81b84840b92909216919091021790556116de81614392565b600380546001600160801b0319166001600160801b039290921691909117905550505050565b6009546001600160801b031681565b6008546001600160801b0380821691600160801b90041682565b600454600160f01b900460ff16611771576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b1916815560005460408051638da5cb5b60e01b815290516001600160a01b0390921692638da5cb5b928282019260209290829003018186803b1580156117bf57600080fd5b505afa1580156117d3573d6000803e3d6000fd5b505050506040513d60208110156117e957600080fd5b50516001600160a01b031633146117ff57600080fd5b428163ffffffff16101561181257600080fd5b60045461188690600160b81b900461ffff1661182c61308b565b600454600954600554600d949392600160a01b810460020b926001600160801b0316916001600160901b0381169163ffffffff600160901b90920482169161ffff600160c81b8304811692600160d81b90041690613ee316565b6004805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b93909216929092021790556040805180820182526001600160901b03841680825263ffffffff841660209283018190526005805471ffffffffffffffffffffffffffffffffffff191683177fffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffff16600160901b830217905583519182529181019190915281517e8866b45af6018e497020f8d16e58c1be320850f245ebdf9d304666bee15e35929181900390910190a150506004805460ff60f01b1916600160f01b179055565b600d8161ffff811061198357600080fd5b60020201805460019091015463ffffffff82169250640100000000820460060b91600160581b81046001600160a01b031691600160f81b90910460ff16906001600160c01b031685565b600454600160f01b900460ff16611a11576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b191690819055600160d81b900461ffff166000611a39600d83856143fc565b6004805461ffff808416600160d81b810261ffff60d81b1990931692909217909255919250831614611aa6576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506004805460ff60f01b1916600160f01b17905550565b6004546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b6004546000908190600160f01b900460ff16611b57576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b191690556001600160801b038516611b7757600080fd5b600080611bc560405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b8152602001611bbb8a6001600160801b03166144a2565b600f0b90526144b3565b6001546002549297509095508694508593506000925082916001600160a01b0391821691168515611bfc57611bf982614251565b93505b8615611c0e57611c0b81614251565b92505b336001600160a01b0316631507a8f489898d8d6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611c9057600080fd5b505af1158015611ca4573d6000803e3d6000fd5b505050506000881115611cfc57611cba82614251565b611cc4858a614382565b1115611cfc576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b8615611d4d57611d0b81614251565b611d158489614382565b1115611d4d576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8b60020b8d60020b8f6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338f8d8d60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506004805460ff60f01b1916600160f01b17905550939a92995091975050505050505050565b60075481565b600454600160f01b900460ff16611e31576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b191690556009546001600160801b031680611e80576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b6040805160a0810182526001546001600160a01b0390811682526002549081166020830152600160a01b900462ffffff16918101829052600060608201819052608082015290611ed5908790620f424061470a565b60608201526040810151611ef390869062ffffff16620f424061470a565b60808201528051600090611f0690614251565b90506000611f178360200151614251565b90508715611f2c578251611f2c908a8a6140ee565b8615611f4157611f4183602001518a896140ee565b336001600160a01b0316630659efa68460600151856080015189896040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611fcb57600080fd5b505af1158015611fdf573d6000803e3d6000fd5b505050506000611ff28460000151614251565b905060006120038560200151614251565b90508161201d86606001518661438290919063ffffffff16565b1115612055576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b8061206d86608001518561438290919063ffffffff16565b11156120a5576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b838203838203811561213457600454600160e81b9004600f16600081156120d8578160ff1684816120d257fe5b046120db565b60005b90506001600160801b0381161561210e57600880546001600160801b038082168401166001600160801b03199091161790555b612128818503600160801b8c6001600160801b031661373d565b60068054909101905550505b80156121bf5760048054600160e81b9004901c600f1660008115612164578160ff16838161215e57fe5b04612167565b60005b90506001600160801b0381161561219957600880546001600160801b03600160801b8083048216850182160291161790555b6121b3818403600160801b8c6001600160801b031661373d565b60078054909101905550505b604080518d8152602081018d90528082018490526060810183905290516001600160a01b038f169133917fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6339181900360800190a350506004805460ff60f01b1916600160f01b1790555050505050505050505050565b6004546000908190600160f01b900460ff1661227e576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b19169055600061229a600c338989614744565b60038101549091506001600160801b03908116908616116122bb57846122ca565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b9091048116908516116122f25783612308565b6003810154600160801b90046001600160801b03165b91506001600160801b0383161561235a576003810180546001600160801b031981166001600160801b0391821686900382161790915560015461235a916001600160a01b03909116908a9086166140ee565b6001600160801b038216156123ad576003810180546001600160801b03600160801b8083048216869003821602918116919091179091556002546123ad916001600160a01b03909116908a9085166140ee565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506004805460ff60f01b1916600160f01b17905590969095509350505050565b600c6020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b600b6020526000908152604090205481565b6003546001600160801b031681565b600454600160f01b900460ff166124cf576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b1916815560005460408051638da5cb5b60e01b815290516001600160a01b0390921692638da5cb5b928282019260209290829003018186803b15801561251d57600080fd5b505afa158015612531573d6000803e3d6000fd5b505050506040513d602081101561254757600080fd5b50516001600160a01b0316331461255d57600080fd5b60ff82161580612580575060048260ff16101580156125805750600a8260ff1611155b80156125aa575060ff811615806125aa575060048160ff16101580156125aa5750600a8160ff1611155b6125b357600080fd5b60048054610ff083831b16840160ff908116600160e81b9081027fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84161784556040805191909304600f81811683529481901c909416602082015285821681840152848216606082015291519216917f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b1339181900360800190a150506004805460ff60f01b1916600160f01b17905550565b6004546000908190600160f01b900460ff166126ad576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b1916815560005460408051638da5cb5b60e01b815290516001600160a01b0390921692638da5cb5b928282019260209290829003018186803b1580156126fb57600080fd5b505afa15801561270f573d6000803e3d6000fd5b505050506040513d602081101561272557600080fd5b50516001600160a01b0316331461273b57600080fd5b6008546001600160801b03908116908516116127575783612764565b6008546001600160801b03165b6008549092506001600160801b03600160801b90910481169084161161278a578261279e565b600854600160801b90046001600160801b03165b90506001600160801b0382161561280c576008546001600160801b03838116911614156127cd57600019909101905b600880546001600160801b031981166001600160801b0391821685900382161790915560015461280c916001600160a01b0390911690879085166140ee565b6001600160801b0381161561287f576008546001600160801b03828116600160801b90920416141561283d57600019015b600880546001600160801b03600160801b80830482168590038216029181169190911790915560025461287f916001600160a01b0390911690879084166140ee565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36004805460ff60f01b1916600160f01b1790559094909350915050565b60608060606129906128fe61308b565b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600454600954600554600d96959450600160a01b830460020b935061ffff600160b81b84048116936001600160801b03909316926001600160901b0383169263ffffffff600160901b909104811692600160c81b909204909116906147a816565b9250925092509250925092565b6005546001600160901b03811690600160901b900463ffffffff1682565b6004546000908190600160f01b900460ff16612a04576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b1916905560408051608081018252338152600287810b602083015286900b9181019190915260009081908190612a609060608101612a536001600160801b038a166144a2565b600003600f0b90526144b3565b9250925092508160000394508060000393506000851180612a815750600084115b15612ac0576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506004805460ff60f01b1916600160f01b179055509094909350915050565b600080600080612b478686614965565b612b4f615d6f565b612b57615d6f565b600288810b810b6000908152600a602090815260408083208b850b90940b8352918290206003840154600485015460ff600160f81b8304161515608089018190526001600160c01b03909116606089015263ffffffff600160d81b830416948801949094526001600160a01b0367010000000000000082041692870192909252600691820b820b90910b855290612bed57600080fd5b6003810154600482015460ff600160f81b8304161515608086018190526001600160c01b03909116606086015263ffffffff600160d81b83041660408601526001600160a01b036701000000000000008304166020860152600691820b820b90910b8452612c5a57600080fd5b50506040805160e0810182526004546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c083015290918a820b910b1215612d275781600001518360000151038260200151846020015103836040015185604001510384606001518660600151039650965096509650505050612e20565b8760020b816020015160020b1215612de8576000612d4361308b565b60208301516040840151600954600554606087015194955060009485948594612d9a94600d948a94889493926001600160801b0316916001600160901b0381169163ffffffff600160901b9092048216916137ed16565b92509250925085600001518760000151840303866020015188602001518403038760400151896040015187030388606001518a606001518503039a509a509a509a5050505050505050612e20565b826000015182600001510383602001518360200151038460400151846040015103856060015185606001510396509650965096505050505b92959194509250565b6000546001600160a01b031681565b60028054600160b81b9004900b81565b6002546001600160a01b031681565b600254600160a01b900462ffffff1681565b60065481565b600a60205260009081526040902080546001820154600283015460038401546004909401546001600160801b03841694600160801b909404600f0b93600681900b9167010000000000000082046001600160a01b031691600160d81b810463ffffffff1691600160f81b90910460ff16906001600160c01b031689565b6004546001600160a01b031615612f2f576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b6000612f3a82613bb7565b9050600080612f52612f4a61308b565b600d90614a2e565b6040805160e0810182526001600160a01b038816808252600288810b6020808501829052600085870181905261ffff898116606088018190529089166080880181905260a0880192909252600160c09097019690965260048054600160f01b6001600160a01b0319909116871762ffffff60a01b1916600160a01b62ffffff9787900b9790971696909602959095177fffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffff16600160c81b9097029690961761ffff60d81b1916600160d81b909102177fff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a150505050565b4290565b60008060008460020b8660020b816130a357fe5b05905060008660020b1280156130ca57508460020b8660020b816130c357fe5b0760020b15155b156130d457600019015b8315613149576000806130e683614a91565b600182810b810b600090815260208d9052604090205460ff83169190911b8001600019019081168015159750929450909250908561312b57888360ff1686030261313e565b8861313582614aa3565b840360ff168603025b9650505050506131c7565b60008061315883600101614a91565b91509150600060018260ff166001901b031990506000818b60008660010b60010b81526020019081526020016000205416905080600014159550856131aa57888360ff0360ff168660010101026131c0565b88836131b583614b43565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b126131e8578260020b6131f0565b8260020b6000035b9050620d89e881111561322e576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b60006001821661324257600160801b613254565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615613288576ffff97272373d413259a46990580e213a0260801c5b60048216156132a7576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156132c6576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156132e5576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613304576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613323576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613342576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613362576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613382576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156133a2576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156133c2576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156133e2576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613402576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613422576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613442576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613463576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613483576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156134a2576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156134bf576b048a170391f7dc42444e8fa20260801c5b60008460020b13156134da5780600019816134d657fe5b0490505b6401000000008106156134ee5760016134f1565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a16101581871280159061358857600061353c8989620f42400362ffffff16620f424061373d565b905082613555576135508c8c8c6001614c2d565b613562565b6135628b8d8c6001614ca8565b9550858110613573578a9650613582565b61357f8c8b8386614d65565b96505b506135d2565b8161359f5761359a8b8b8b6000614ca8565b6135ac565b6135ac8a8c8b6000614c2d565b93508388600003106135c0578995506135d2565b6135cf8b8a8a60000385614db1565b95505b6001600160a01b038a8116908716148215613635578080156135f15750815b61360757613602878d8c6001614ca8565b613609565b855b9550808015613616575081155b61362c57613627878d8c6000614c2d565b61362e565b845b945061367f565b80801561363f5750815b613655576136508c888c6001614c2d565b613657565b855b9550808015613664575081155b61367a576136758c888c6000614ca8565b61367c565b845b94505b8115801561368f57508860000385115b1561369b578860000394505b8180156136ba57508a6001600160a01b0316876001600160a01b031614155b156136c95785890393506136e6565b6136e3868962ffffff168a620f42400362ffffff1661470a565b93505b50505095509550955095915050565b6000600160ff1b821061370757600080fd5b5090565b8082038281131560008312151461372157600080fd5b92915050565b8181018281121560008312151461372157600080fd5b6000808060001985870986860292508281109083900303905080613773576000841161376857600080fd5b5082900490506137e6565b80841161377f57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b6000808063ffffffff8a166138b95760008c8961ffff1661ffff811061380f57fe5b6040805160a08101825260029290920292909201805463ffffffff8082168085526401000000008304600690810b810b900b6020860152600160581b83046001600160a01b031695850195909552600160f81b90910460ff16151560608401526001909101546001600160c01b031660808301529092508d161461389e5761389b818d8c8b8b8b614dfd565b90505b806020015181604001518260800151935093509350506139dc565b898b036000806138d08f8f858f8f8f8f8f8f614f47565b91509150816000015163ffffffff168363ffffffff161415613909578160200151826040015183608001519550955095505050506139dc565b805163ffffffff84811691161415613938578060200151816040015182608001519550955095505050506139dc565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161396657fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b0316028161399857fe5b048560400151018263ffffffff168463ffffffff1687608001518760800151036001600160c01b0316816139c857fe5b040286608001510197509750975050505050505b99509950999650505050505050565b600296870b870b60009081526020989098526040909720600181018054909603909555948401805490930390925560038301805463ffffffff600160d81b6001600160a01b036701000000000000008085048216909603169094027fffffffffff0000000000000000000000000000000000000000ffffffffffffff90921691909117600681810b90950390940b66ffffffffffffff1666ffffffffffffff19909416939093178281048416909503909216027fff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff909316929092179091556004810180546001600160c01b038082169094039093166001600160c01b03199093169290921790915554600160801b9004600f0b90565b60008082600f0b1215613b6657826001600160801b03168260000384039150816001600160801b031610613b61576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b613721565b826001600160801b03168284019150816001600160801b03161015613721576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b03831610801590613bf3575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613c28576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c97908811961790941790921717909117171760808110613cc957607f810383901c9150613cd3565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14613ed457886001600160a01b0316613eb8826131d1565b6001600160a01b03161115613ecd5781613ecf565b805b613ed6565b815b9998505050505050505050565b60008060008b8b61ffff1661ffff8110613ef957fe5b6040805160a08101825260029290920292909201805463ffffffff8082168085526401000000008304600690810b810b900b6020860152600160581b83046001600160a01b031695850195909552600160f81b90910460ff16151560608401526001909101546001600160c01b031660808301529092508b161415613f84578a8592509250506140e0565b8461ffff168461ffff16118015613fa557506001850361ffff168b61ffff16145b15613fb257839150613fb6565b8491505b8161ffff168b60010161ffff1681613fca57fe5b069250613fdb818b8b8b8b8b614dfd565b8c8461ffff1661ffff8110613fec57fe5b825160029190910291909101805460208401516040850151606086015163ffffffff1990931663ffffffff909516949094176affffffffffffff00000000191664010000000066ffffffffffffff60069390930b9290921691909102177fff0000000000000000000000000000000000000000ffffffffffffffffffffff16600160581b6001600160a01b0390941693909302929092177effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b92151592909202919091178155608090910151600190910180546001600160c01b0319166001600160c01b03909216919091179055505b995099975050505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1781529251825160009485949389169392918291908083835b6020831061417f5780518252601f199092019160209182019101614160565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146141e1576040519150601f19603f3d011682016040523d82523d6000602084013e6141e6565b606091505b5091509150818015614214575080511580614214575080806020019051602081101561421157600080fd5b50515b61424a576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166370a0823160e01b17815291518151600093849384936001600160a01b03881693919290918291908083835b602083106142df5780518252601f1990920191602091820191016142c0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461433f576040519150601f19603f3d011682016040523d82523d6000602084013e614344565b606091505b509150915081801561435857506020815110155b61436157600080fd5b80806020019051602081101561437657600080fd5b5051925050505b919050565b8082018281101561372157600080fd5b60008082600281900b620d89e719816143a757fe5b05029050600083600281900b620d89e8816143be57fe5b0502905060008460020b83830360020b816143d557fe5b0560010190508062ffffff166001600160801b038016816143f257fe5b0495945050505050565b6000808361ffff161161443a576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff16116144505750816137e6565b825b8261ffff168161ffff161015614499576001858261ffff1661ffff811061447557fe5b60020201805463ffffffff191663ffffffff92909216919091179055600101614452565b50909392505050565b80600f81900b811461437d57600080fd5b60008060006144ca84602001518560400151614965565b6040805160e0810182526004546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c08501528851908901519489015192890151939461456e949193909290919061518e565b93508460600151600f0b60001461470257846020015160020b816020015160020b12156145c3576145bc6145a586602001516131d1565b6145b287604001516131d1565b8760600151615311565b9250614702565b846040015160020b816020015160020b12156146d85760095460408201516001600160801b0390911690614634906145f961308b565b602085015160055460608701516080880151600d9594939288926001600160901b0382169263ffffffff600160901b909304831692613ee316565b6004805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b939092169290920217905581516040870151614684919061467a906131d1565b8860600151615311565b93506146a261469687602001516131d1565b83516060890151615355565b92506146b2818760600151613b01565b600980546001600160801b0319166001600160801b039290921691909117905550614702565b6146ff6146e886602001516131d1565b6146f587604001516131d1565b8760600151615355565b91505b509193909250565b600061471784848461373d565b90506000828061472357fe5b84860911156137e657600019811061473a57600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b606080606060008461ffff16116147ea576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b895167ffffffffffffffff8111801561480257600080fd5b5060405190808252806020026020018201604052801561482c578160200160208202803683370190505b509250895167ffffffffffffffff8111801561484757600080fd5b50604051908082528060200260200182016040528015614871578160200160208202803683370190505b509150895167ffffffffffffffff8111801561488c57600080fd5b506040519080825280602002602001820160405280156148b6578160200160208202803683370190505b50905060005b8a51811015614955576148e98d8d8d84815181106148d657fe5b60200260200101518d8d8d8d8d8d6137ed565b8684815181106148f557fe5b6020026020010186858151811061490857fe5b6020026020010186868151811061491b57fe5b6001600160c01b03909416602094850291909101909301929092526001600160a01b039092169052600691820b90910b90526001016148bc565b5099509950999650505050505050565b8060020b8260020b126149a5576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b12156149e8576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614a2a576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160a08101825263ffffffff928316808252600060208301819052928201839052600160608301819052608090920192909252835463ffffffff1916909117909116600160f81b17825590810180546001600160c01b0319169055908190565b60020b600881901d9161010090910790565b6000808211614ab157600080fd5b600160801b8210614ac457608091821c91015b680100000000000000008210614adc57604091821c91015b6401000000008210614af057602091821c91015b620100008210614b0257601091821c91015b6101008210614b1357600891821c91015b60108210614b2357600491821c91015b60048210614b3357600291821c91015b6002821061437d57600101919050565b6000808211614b5157600080fd5b5060ff6001600160801b03821615614b6c57607f1901614b74565b608082901c91505b67ffffffffffffffff821615614b8d57603f1901614b95565b604082901c91505b63ffffffff821615614baa57601f1901614bb2565b602082901c91505b61ffff821615614bc557600f1901614bcd565b601082901c91505b60ff821615614bdf5760071901614be7565b600882901c91505b600f821615614bf95760031901614c01565b600482901c91505b6003821615614c135760011901614c1b565b600282901c91505b600182161561437d5760001901919050565b6000836001600160a01b0316856001600160a01b03161115614c4d579293925b81614c7a57614c75836001600160801b03168686036001600160a01b0316600160601b61373d565b614c9d565b614c9d836001600160801b03168686036001600160a01b0316600160601b61470a565b90505b949350505050565b6000836001600160a01b0316856001600160a01b03161115614cc8579293925b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b166001600160a01b038686038116908716614d0457600080fd5b83614d3457866001600160a01b0316614d278383896001600160a01b031661373d565b81614d2e57fe5b04614d5a565b614d5a614d4b8383896001600160a01b031661470a565b886001600160a01b0316615384565b979650505050505050565b600080856001600160a01b031611614d7c57600080fd5b6000846001600160801b031611614d9257600080fd5b81614da457614c75858585600161538f565b614c9d8585856001615470565b600080856001600160a01b031611614dc857600080fd5b6000846001600160801b031611614dde57600080fd5b81614df057614c758585856000615470565b614c9d858585600061538f565b614e05615d6f565b865186036001600160801b038516614e1e576001614e20565b845b9450600063ffffffff4211614e6b57428463ffffffff1610614e425781614e66565b886000015163ffffffff168463ffffffff161115614e635788518403614e66565b60005b614e6e565b60005b90506040518060a001604052808963ffffffff1681526020018363ffffffff168960020b028b602001510160060b8152602001876001600160801b031660808563ffffffff166001600160a01b0316901b6001600160a01b031681614ecf57fe5b048b60400151016001600160a01b03168152602001600115158152602001876001600160801b03168363ffffffff166010896001600160901b03166001600160c01b0316901b026001600160c01b031681614f2657fe5b048b60800151016001600160c01b0316815250925050509695505050505050565b614f4f615d6f565b614f57615d6f565b8a8761ffff1661ffff8110614f6857fe5b6040805160a08101825260029290920292909201805463ffffffff81168084526401000000008204600690810b810b900b6020850152600160581b82046001600160a01b031694840194909452600160f81b900460ff1615156060830152600101546001600160c01b031660808201529250614fe6908b908b615565565b15615020578863ffffffff16826000015163ffffffff161415615008576140e0565b81615017838b8b8a8a8a614dfd565b915091506140e0565b8a8361ffff168860010161ffff168161503557fe5b0661ffff1661ffff811061504557fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff161515606082018190526001909201546001600160c01b031660808201529250615129576040805160a0810182528c5463ffffffff811682526401000000008104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015260018c01546001600160c01b0316608082015291505b6151388a83600001518b615565565b61516f576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b61517c8b8b8b8a87615628565b91509150995099975050505050505050565b600061519d600c878787614744565b60065460075491925090600080600f87900b156152b15760006151be61308b565b6004546009546005549293506000928392839261522992600d9288928692600160a01b830460020b9261ffff600160b81b82048116936001600160801b0316926001600160901b0381169263ffffffff600160901b909204821692600160c81b90910416906137ed16565b60035492955090935091506001600160801b0316615253600a8f8d8f8d8d898b8d60008b8d6157fd565b965061526b600a8e8d8f8d8d898b8d60018b8d6157fd565b60028054919750600160b81b909104900b8715615298576152988f82600b615a359092919063ffffffff16565b86156152aa576152aa600b8f83615a35565b5050505050505b6000806152c3600a8c8c8b8a8a615a9b565b90925090506152d4878a8484615b47565b600089600f0b12156153025783156152f1576152f1600a8c615cdc565b821561530257615302600a8b615cdc565b50505050505095945050505050565b60008082600f0b126153375761533261532d8585856001614ca8565b6136f5565b614ca0565b61534a61532d8585856000036000614ca8565b600003949350505050565b60008082600f0b126153715761533261532d8585856001614c2d565b61534a61532d8585856000036000614c2d565b808204910615150190565b600081156154025760006001600160a01b038411156153c5576153c084600160601b876001600160801b031661373d565b6153dd565b6001600160801b038516606085901b816153db57fe5b045b90506153fa6153f56001600160a01b03881683614382565b615d1d565b915050614ca0565b60006001600160a01b038411156154305761542b84600160601b876001600160801b031661470a565b615447565b615447606085901b6001600160801b038716615384565b905080866001600160a01b03161161545e57600080fd5b6001600160a01b038616039050614ca0565b60008261547e575083614ca0565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b16821561551e576001600160a01b038616848102908582816154be57fe5b0414156154ef578181018281106154ed576154e383896001600160a01b03168361470a565b9350505050614ca0565b505b61551582615510878a6001600160a01b0316868161550957fe5b0490614382565b615384565b92505050614ca0565b6001600160a01b0386168481029085828161553557fe5b0414801561554257508082115b61554b57600080fd5b8082036154e36153f5846001600160a01b038b168461470a565b60008363ffffffff168363ffffffff161115801561558f57508363ffffffff168263ffffffff1611155b156155ab578163ffffffff168363ffffffff16111590506137e6565b60008463ffffffff168463ffffffff16116155d3578363ffffffff16640100000000016155db565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff161161560c578363ffffffff1664010000000001615614565b8363ffffffff165b64ffffffffff169091111595945050505050565b615630615d6f565b615638615d6f565b60008361ffff168560010161ffff168161564e57fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff8716828161567b57fe5b0661ffff811061568757fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff161515606082018190526001909201546001600160c01b03166080820152955061570c57806001019250615666565b898661ffff16826001018161571d57fe5b0661ffff811061572957fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff16151560608201526001909101546001600160c01b0316608082015285519094506000906157af908b908b615565565b90508080156157c857506157c88a8a8760000151615565565b156157d357506157f0565b806157e3576001820392506157ea565b8160010193505b50615666565b5050509550959350505050565b60028b810b900b600090815260208d90526040812080546001600160801b031682615828828e613b01565b9050856001600160801b0316816001600160801b03161115615876576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b038281161590821615811415945015615981578d60020b8f60020b13615951578b83600101819055508a8360020181905550898360030160076101000a8154816001600160a01b0302191690836001600160a01b03160217905550888360030160006101000a81548166ffffffffffffff021916908360060b66ffffffffffffff1602179055508783600301601b6101000a81548163ffffffff021916908363ffffffff160217905550848360040160006101000a8154816001600160c01b0302191690836001600160c01b031602179055505b6003830180547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790555b82546001600160801b0319166001600160801b038216178355866159d6576159d16159cc8e600f0b8560000160109054906101000a9004600f0b600f0b61372790919063ffffffff16565b6144a2565b615a03565b615a036159cc8e600f0b8560000160109054906101000a9004600f0b600f0b61370b90919063ffffffff16565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909d9c50505050505050505050505050565b8060020b8260020b81615a4457fe5b0760020b15615a5257600080fd5b600080615a6d8360020b8560020b81615a6757fe5b05614a91565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b12615ae157505060018201546002830154615af4565b8360010154880391508360020154870390505b6000808b60020b8b60020b1215615b1657505060018301546002840154615b29565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b615be65781516001600160801b0316615bde576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b508051615bf5565b8151615bf29086613b01565b90505b6000615c198360200151860384600001516001600160801b0316600160801b61373d565b90506000615c3f8460400151860385600001516001600160801b0316600160801b61373d565b905086600f0b600014615c665787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b038216151580615c9457506000816001600160801b0316115b15615cd2576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b60009081526020929092526040822082815560018101839055908101829055600381019190915560040180546001600160c01b0319169055565b806001600160a01b038116811461437d57600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091529056fea264697066735822122077f216df62bac6d2389ed5ed695bbeac8d557a5f189904f27ed4a6d2818f636a64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1CF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5339C296 GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xA38807F2 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xDDCA3F43 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDDCA3F43 EQ PUSH2 0x92A JUMPI DUP1 PUSH4 0xF3058399 EQ PUSH2 0x94A JUMPI DUP1 PUSH4 0xF30DBA93 EQ PUSH2 0x952 JUMPI DUP1 PUSH4 0xF637731D EQ PUSH2 0x9E3 JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0xA38807F2 EQ PUSH2 0x890 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x8FB JUMPI DUP1 PUSH4 0xD0C93A7C EQ PUSH2 0x903 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x922 JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0x85B66729 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x85B66729 EQ PUSH2 0x69B JUMPI DUP1 PUSH4 0x883BDBFD EQ PUSH2 0x6D8 JUMPI DUP1 PUSH4 0x94FD4A3E EQ PUSH2 0x826 JUMPI DUP1 PUSH4 0xA34123A7 EQ PUSH2 0x856 JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0x5339C296 EQ PUSH2 0x64B JUMPI DUP1 PUSH4 0x70CF754A EQ PUSH2 0x66B JUMPI DUP1 PUSH4 0x8206A4D1 EQ PUSH2 0x673 JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0x32148F67 GT PUSH2 0x171 JUMPI DUP1 PUSH4 0x46141319 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x46141319 EQ PUSH2 0x4FB JUMPI DUP1 PUSH4 0x490E6CBC EQ PUSH2 0x515 JUMPI DUP1 PUSH4 0x4F1EB3D8 EQ PUSH2 0x5A1 JUMPI DUP1 PUSH4 0x514EA4BF EQ PUSH2 0x5F2 JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0x32148F67 EQ PUSH2 0x3DF JUMPI DUP1 PUSH4 0x3850C7BD EQ PUSH2 0x400 JUMPI DUP1 PUSH4 0x3C8A7D8D EQ PUSH2 0x459 JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0x1A686502 GT PUSH2 0x1AD JUMPI DUP1 PUSH4 0x1A686502 EQ PUSH2 0x2ED JUMPI DUP1 PUSH4 0x1AD8B03B EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x218064E5 EQ PUSH2 0x348 JUMPI DUP1 PUSH4 0x252C09D7 EQ PUSH2 0x37A JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x128ACB08 EQ PUSH2 0x1F8 JUMPI DUP1 PUSH4 0x14F2705C EQ PUSH2 0x2A7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1DC PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x28E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x20E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP3 PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x261 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 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xA18 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 0x2EB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH3 0xFFFFFF PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x1635 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2F5 PUSH2 0x1704 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x319 PUSH2 0x1713 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2EB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x35E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x172D JUMP JUMPDEST PUSH2 0x397 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1972 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP7 AND DUP7 MSTORE PUSH1 0x6 SWAP5 SWAP1 SWAP5 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP5 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2EB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFFFF AND PUSH2 0x19CD JUMP JUMPDEST PUSH2 0x408 PUSH2 0x1ABE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP9 AND DUP9 MSTORE PUSH1 0x2 SWAP7 SWAP1 SWAP7 SIGNEXTEND PUSH1 0x20 DUP9 ADD MSTORE PUSH2 0xFFFF SWAP5 DUP6 AND DUP8 DUP8 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x60 DUP8 ADD MSTORE SWAP3 AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xFF SWAP1 SWAP2 AND PUSH1 0xA0 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xE0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x28E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP3 PUSH1 0x40 DUP4 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4CE 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 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1B0E JUMP JUMPDEST PUSH2 0x503 PUSH2 0x1DE7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2EB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x52B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD 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 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x574 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 0x596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1DED JUMP JUMPDEST PUSH2 0x319 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x5B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x80 ADD CALLDATALOAD AND PUSH2 0x2235 JUMP JUMPDEST PUSH2 0x60F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x242D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP5 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP5 AND PUSH1 0x60 DUP5 ADD MSTORE SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x503 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x661 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 SIGNEXTEND PUSH2 0x246A JUMP JUMPDEST PUSH2 0x2F5 PUSH2 0x247C JUMP JUMPDEST PUSH2 0x2EB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x248B JUMP JUMPDEST PUSH2 0x319 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x6B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 ADD CALLDATALOAD AND PUSH2 0x2664 JUMP JUMPDEST PUSH2 0x748 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x709 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x71B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x73D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x28EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x790 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x778 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7CF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7B7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x80E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7F6 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x82E PUSH2 0x299D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x28E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x86C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x29BB JUMP JUMPDEST PUSH2 0x8BA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x20 ADD CALLDATALOAD SWAP1 SIGNEXTEND PUSH2 0x2B37 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x6 SWAP6 SWAP1 SWAP6 SIGNEXTEND DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP4 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1DC PUSH2 0x2E29 JUMP JUMPDEST PUSH2 0x90B PUSH2 0x2E38 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1DC PUSH2 0x2E48 JUMP JUMPDEST PUSH2 0x932 PUSH2 0x2E57 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0xFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x503 PUSH2 0x2E69 JUMP JUMPDEST PUSH2 0x972 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x968 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x2E6F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP11 AND DUP11 MSTORE PUSH1 0xF SWAP9 SWAP1 SWAP9 SIGNEXTEND PUSH1 0x20 DUP11 ADD MSTORE DUP9 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x60 DUP9 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x6 SWAP3 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xA0 DUP7 ADD MSTORE PUSH4 0xFFFFFFFF AND PUSH1 0xC0 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0xE0 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH2 0x100 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x120 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2EB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2EEC JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH2 0xA52 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4153 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP2 DIV DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP4 DIV DUP2 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND ISZERO ISZERO PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0xB0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP8 PUSH2 0xB56 JUMPI DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT DUP1 ISZERO PUSH2 0xB51 JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND LT JUMPDEST PUSH2 0xB88 JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP1 ISZERO PUSH2 0xB88 JUMPI POP PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GT JUMPDEST PUSH2 0xBBF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x14D413 PUSH1 0xEA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH2 0x160 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 DUP1 DUP11 PUSH2 0xBF2 JUMPI PUSH1 0x4 DUP5 PUSH1 0xA0 ADD MLOAD PUSH1 0xFF AND SWAP1 SHR PUSH2 0xC05 JUMP JUMPDEST PUSH1 0x10 DUP5 PUSH1 0xA0 ADD MLOAD PUSH1 0xFF AND DUP2 PUSH2 0xC03 JUMPI INVALID JUMPDEST MOD JUMPDEST PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD PUSH2 0xC26 PUSH2 0x308B JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x6 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x2 SIGNEXTEND PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP1 DUP10 SGT SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 DUP12 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH2 0xD2E JUMPI PUSH1 0x7 SLOAD PUSH2 0xD32 JUMP JUMPDEST PUSH1 0x6 SLOAD JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE POP SWAP1 POP JUMPDEST DUP1 MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0xD81 JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1142 JUMPI PUSH2 0xD8E PUSH2 0x5D33 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x100 DUP6 ADD MLOAD PUSH2 0xDB6 SWAP2 PUSH1 0xB SWAP2 DUP16 PUSH2 0x308F JUMP JUMPDEST ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE PUSH3 0xD89E7 NOT SWAP2 SIGNEXTEND SLT ISZERO PUSH2 0xDE7 JUMPI PUSH3 0xD89E7 NOT PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xE06 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH3 0xD89E8 PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND SGT ISZERO PUSH2 0xE06 JUMPI PUSH3 0xD89E8 PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH2 0xE13 DUP2 PUSH1 0x20 ADD MLOAD PUSH2 0x31D1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0xE88 SWAP1 DUP14 PUSH2 0xE4D JUMPI DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0xE67 JUMP JUMPDEST DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT JUMPDEST PUSH2 0xE75 JUMPI DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0xE77 JUMP JUMPDEST DUP12 JUMPDEST PUSH1 0xC0 DUP6 ADD MLOAD DUP6 MLOAD PUSH1 0xE0 DUP10 ADD MLOAD PUSH2 0x3503 JUMP JUMPDEST PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP4 ADD MSTORE DUP3 ISZERO PUSH2 0xEEA JUMPI PUSH2 0xEBE DUP2 PUSH1 0xC0 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD ADD PUSH2 0x36F5 JUMP JUMPDEST DUP3 MLOAD SUB DUP3 MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0xEE0 SWAP1 PUSH2 0xED5 SWAP1 PUSH2 0x36F5 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 PUSH2 0x370B JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xF25 JUMP JUMPDEST PUSH2 0xEF7 DUP2 PUSH1 0xA0 ADD MLOAD PUSH2 0x36F5 JUMP JUMPDEST DUP3 MLOAD ADD DUP3 MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0xF1F SWAP2 PUSH2 0xF14 SWAP2 ADD PUSH2 0x36F5 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 PUSH2 0x3727 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE JUMPDEST DUP4 MLOAD PUSH1 0xFF AND ISZERO PUSH2 0xF6B JUMPI PUSH1 0x0 DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0xFF AND DUP3 PUSH1 0xC0 ADD MLOAD DUP2 PUSH2 0xF45 JUMPI INVALID JUMPDEST PUSH1 0xC0 DUP5 ADD DUP1 MLOAD SWAP3 SWAP1 SWAP2 DIV SWAP2 DUP3 SWAP1 SUB SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD DUP1 MLOAD SWAP1 SWAP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 MSTORE POP JUMPDEST PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0xFAA JUMPI PUSH2 0xF9E DUP2 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x80 SHL DUP5 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x373D JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP1 MLOAD SWAP1 SWAP2 ADD SWAP1 MSTORE JUMPDEST DUP1 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1101 JUMPI DUP1 PUSH1 0x40 ADD MLOAD ISZERO PUSH2 0x10D8 JUMPI DUP4 PUSH1 0xA0 ADD MLOAD PUSH2 0x105C JUMPI PUSH1 0x40 DUP1 DUP6 ADD MLOAD PUSH1 0x20 DUP1 DUP9 ADD MLOAD SWAP3 DUP9 ADD MLOAD SWAP1 DUP8 ADD MLOAD PUSH1 0x5 SLOAD PUSH1 0x60 DUP11 ADD MLOAD PUSH2 0x102C SWAP6 PUSH1 0xD SWAP6 SWAP5 PUSH1 0x0 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP3 AND SWAP2 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP2 SWAP1 PUSH2 0x37ED AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0xC0 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 DUP6 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0x10AE DUP3 PUSH1 0x20 ADD MLOAD DUP15 PUSH2 0x1073 JUMPI PUSH1 0x6 SLOAD PUSH2 0x1079 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD MLOAD JUMPDEST DUP16 PUSH2 0x1088 JUMPI DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x108C JUMP JUMPDEST PUSH1 0x7 SLOAD JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD PUSH1 0x60 DUP11 ADD MLOAD PUSH1 0x40 DUP12 ADD MLOAD PUSH1 0xC0 DUP13 ADD MLOAD PUSH1 0xA SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x39EB JUMP JUMPDEST SWAP1 POP DUP13 ISZERO PUSH2 0x10BA JUMPI PUSH1 0x0 SUB JUMPDEST PUSH2 0x10C8 DUP4 PUSH1 0xC0 ADD MLOAD DUP3 PUSH2 0x3B01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0xC0 DUP5 ADD MSTORE POP JUMPDEST DUP12 PUSH2 0x10E7 JUMPI DUP1 PUSH1 0x20 ADD MLOAD PUSH2 0x10F0 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 ADD MLOAD SUB JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x113C JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x113C JUMPI PUSH2 0x112F DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x3BB7 JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP4 ADD MSTORE JUMPDEST POP PUSH2 0xD5B JUMP JUMPDEST DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x60 ADD MLOAD PUSH1 0x2 SIGNEXTEND EQ PUSH2 0x122D JUMPI PUSH1 0x40 DUP1 DUP6 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0x20 DUP1 DUP8 ADD MLOAD SWAP1 DUP7 ADD MLOAD PUSH1 0x5 SLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x80 DUP11 ADD MLOAD PUSH1 0x0 SWAP7 DUP8 SWAP7 PUSH2 0x11AD SWAP7 PUSH1 0xD SWAP7 SWAP3 SWAP6 SWAP2 SWAP5 SWAP1 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP4 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP3 SWAP2 SWAP1 PUSH2 0x3EE3 AND JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x4 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP6 DUP7 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP6 SWAP1 SWAP5 AND SWAP5 SWAP1 SWAP5 MUL SWAP3 SWAP1 SWAP3 OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH3 0xFFFFFF PUSH1 0x2 SWAP5 SWAP1 SWAP5 SIGNEXTEND SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR SWAP1 SSTORE POP PUSH2 0x1252 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP1 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND EQ PUSH2 0x1298 JUMPI PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x9 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP11 ISZERO PUSH2 0x12E8 JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x6 SSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x12E3 JUMPI PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND SWAP1 SWAP4 ADD AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH2 0x132E JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x7 SSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x132E JUMPI PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP3 AND SWAP1 SWAP5 ADD AND MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP2 ISZERO ISZERO DUP12 ISZERO ISZERO EQ PUSH2 0x1347 JUMPI PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD DUP12 SUB PUSH2 0x1354 JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD DUP11 SUB DUP2 PUSH1 0x20 ADD MLOAD JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP11 ISZERO PUSH2 0x147E JUMPI PUSH1 0x0 DUP6 SLT ISZERO PUSH2 0x137B JUMPI PUSH2 0x137B DUP4 PUSH2 0x140 ADD MLOAD DUP14 DUP8 PUSH1 0x0 SUB PUSH2 0x40EE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x138B DUP5 PUSH2 0x120 ADD MLOAD PUSH2 0x4251 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD804D7A7 DUP9 DUP9 DUP13 DUP13 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x140F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1423 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1435 DUP5 PUSH2 0x120 ADD MLOAD PUSH2 0x4251 JUMP JUMPDEST PUSH2 0x143F DUP3 DUP10 PUSH2 0x4382 JUMP JUMPDEST GT ISZERO PUSH2 0x1478 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x494941 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH2 0x1599 JUMP JUMPDEST PUSH1 0x0 DUP7 SLT ISZERO PUSH2 0x149A JUMPI PUSH2 0x149A DUP4 PUSH2 0x120 ADD MLOAD DUP14 DUP9 PUSH1 0x0 SUB PUSH2 0x40EE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14AA DUP5 PUSH2 0x140 ADD MLOAD PUSH2 0x4251 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD804D7A7 DUP9 DUP9 DUP13 DUP13 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x152E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1542 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1554 DUP5 PUSH2 0x140 ADD MLOAD PUSH2 0x4251 JUMP JUMPDEST PUSH2 0x155E DUP3 DUP9 PUSH2 0x4382 JUMP JUMPDEST GT ISZERO PUSH2 0x1597 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x494941 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0x60 DUP1 DUP6 ADD MLOAD DUP5 MLOAD DUP12 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP4 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 SIGNEXTEND PUSH1 0x80 DUP3 ADD MSTORE SWAP2 MLOAD SWAP1 DUP15 AND SWAP2 CALLER SWAP2 PUSH32 0xC42079F94A6350D7E6235F29174924F928CC2AC818EB64FED8004E115FBCCA67 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG3 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP2 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x164B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP1 SWAP3 AND SWAP1 DUP6 AND OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH3 0xFFFFFF DUP6 DUP2 AND SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 OR PUSH32 0xFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DUP5 SIGNEXTEND SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH2 0x16DE DUP2 PUSH2 0x4392 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV AND DUP3 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1771 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8DA5CB5B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x8DA5CB5B SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17D3 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 0x17E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x17FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST TIMESTAMP DUP2 PUSH4 0xFFFFFFFF AND LT ISZERO PUSH2 0x1812 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x1886 SWAP1 PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0x182C PUSH2 0x308B JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x9 SLOAD PUSH1 0x5 SLOAD PUSH1 0xD SWAP5 SWAP4 SWAP3 PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP3 DIV DUP3 AND SWAP2 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xC8 SHL DUP4 DIV DUP2 AND SWAP3 PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 DIV AND SWAP1 PUSH2 0x3EE3 AND JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP4 DUP5 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP5 AND DUP1 DUP3 MSTORE PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x20 SWAP3 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x5 DUP1 SLOAD PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP4 OR PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x90 SHL DUP4 MUL OR SWAP1 SSTORE DUP4 MLOAD SWAP2 DUP3 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD PUSH31 0x8866B45AF6018E497020F8D16E58C1BE320850F245EBDF9D304666BEE15E35 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xD DUP2 PUSH2 0xFFFF DUP2 LT PUSH2 0x1983 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 MUL ADD DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP3 AND SWAP3 POP PUSH5 0x100000000 DUP3 DIV PUSH1 0x6 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP6 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1A11 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 DIV PUSH2 0xFFFF AND PUSH1 0x0 PUSH2 0x1A39 PUSH1 0xD DUP4 DUP6 PUSH2 0x43FC JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0xFFFF DUP1 DUP5 AND PUSH1 0x1 PUSH1 0xD8 SHL DUP2 MUL PUSH2 0xFFFF PUSH1 0xD8 SHL NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE SWAP2 SWAP3 POP DUP4 AND EQ PUSH2 0x1AA6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0xAC49E518F90A358F652E4400164F05A5D8F7E35E7747279BC3A93DBF584E125A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP1 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC8 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0xD8 SHL DUP3 DIV AND SWAP1 PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV AND DUP8 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1B57 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH2 0x1B77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1BC5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1BBB DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x44A2 JUMP JUMPDEST PUSH1 0xF SIGNEXTEND SWAP1 MSTORE PUSH2 0x44B3 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD SWAP3 SWAP8 POP SWAP1 SWAP6 POP DUP7 SWAP5 POP DUP6 SWAP4 POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP6 ISZERO PUSH2 0x1BFC JUMPI PUSH2 0x1BF9 DUP3 PUSH2 0x4251 JUMP JUMPDEST SWAP4 POP JUMPDEST DUP7 ISZERO PUSH2 0x1C0E JUMPI PUSH2 0x1C0B DUP2 PUSH2 0x4251 JUMP JUMPDEST SWAP3 POP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1507A8F4 DUP10 DUP10 DUP14 DUP14 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CA4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP9 GT ISZERO PUSH2 0x1CFC JUMPI PUSH2 0x1CBA DUP3 PUSH2 0x4251 JUMP JUMPDEST PUSH2 0x1CC4 DUP6 DUP11 PUSH2 0x4382 JUMP JUMPDEST GT ISZERO PUSH2 0x1CFC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4D3 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP7 ISZERO PUSH2 0x1D4D JUMPI PUSH2 0x1D0B DUP2 PUSH2 0x4251 JUMP JUMPDEST PUSH2 0x1D15 DUP5 DUP10 PUSH2 0x4382 JUMP JUMPDEST GT ISZERO PUSH2 0x1D4D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4D31 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP12 PUSH1 0x2 SIGNEXTEND DUP14 PUSH1 0x2 SIGNEXTEND DUP16 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x7A53080BA414158BE7EC69B987B5FB7D07DEE101FE85488F0853AE16239D0BDE CALLER DUP16 DUP14 DUP14 PUSH1 0x40 MLOAD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB 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 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP4 SWAP11 SWAP3 SWAP10 POP SWAP2 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1E31 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP1 PUSH2 0x1E80 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x2 SLOAD SWAP1 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH3 0xFFFFFF AND SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE SWAP1 PUSH2 0x1ED5 SWAP1 DUP8 SWAP1 PUSH3 0xF4240 PUSH2 0x470A JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH2 0x1EF3 SWAP1 DUP7 SWAP1 PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x470A JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE DUP1 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1F06 SWAP1 PUSH2 0x4251 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1F17 DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x4251 JUMP JUMPDEST SWAP1 POP DUP8 ISZERO PUSH2 0x1F2C JUMPI DUP3 MLOAD PUSH2 0x1F2C SWAP1 DUP11 DUP11 PUSH2 0x40EE JUMP JUMPDEST DUP7 ISZERO PUSH2 0x1F41 JUMPI PUSH2 0x1F41 DUP4 PUSH1 0x20 ADD MLOAD DUP11 DUP10 PUSH2 0x40EE JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x659EFA6 DUP5 PUSH1 0x60 ADD MLOAD DUP6 PUSH1 0x80 ADD MLOAD DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FDF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x1FF2 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x4251 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2003 DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x4251 JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x201D DUP7 PUSH1 0x60 ADD MLOAD DUP7 PUSH2 0x4382 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST GT ISZERO PUSH2 0x2055 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x463 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x206D DUP7 PUSH1 0x80 ADD MLOAD DUP6 PUSH2 0x4382 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST GT ISZERO PUSH2 0x20A5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4631 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 DUP3 SUB DUP4 DUP3 SUB DUP2 ISZERO PUSH2 0x2134 JUMPI PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH1 0xF AND PUSH1 0x0 DUP2 ISZERO PUSH2 0x20D8 JUMPI DUP2 PUSH1 0xFF AND DUP5 DUP2 PUSH2 0x20D2 JUMPI INVALID JUMPDEST DIV PUSH2 0x20DB JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x210E JUMPI PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP5 ADD AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x2128 DUP2 DUP6 SUB PUSH1 0x1 PUSH1 0x80 SHL DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x373D JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMPDEST DUP1 ISZERO PUSH2 0x21BF JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV SWAP1 SHR PUSH1 0xF AND PUSH1 0x0 DUP2 ISZERO PUSH2 0x2164 JUMPI DUP2 PUSH1 0xFF AND DUP4 DUP2 PUSH2 0x215E JUMPI INVALID JUMPDEST DIV PUSH2 0x2167 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x2199 JUMPI PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP6 ADD DUP3 AND MUL SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x21B3 DUP2 DUP5 SUB PUSH1 0x1 PUSH1 0x80 SHL DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x373D JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP14 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP14 SWAP1 MSTORE DUP1 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND SWAP2 CALLER SWAP2 PUSH32 0xBDBDB71D7860376BA52B25A5028BEEA23581364A40522F6BCFB86BB1F2DCA633 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG3 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x227E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x0 PUSH2 0x229A PUSH1 0xC CALLER DUP10 DUP10 PUSH2 0x4744 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP1 DUP7 AND GT PUSH2 0x22BB JUMPI DUP5 PUSH2 0x22CA JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP6 AND GT PUSH2 0x22F2 JUMPI DUP4 PUSH2 0x2308 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND ISZERO PUSH2 0x235A JUMPI PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP7 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 SLOAD PUSH2 0x235A SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP11 SWAP1 DUP7 AND PUSH2 0x40EE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x23AD JUMPI PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP7 SWAP1 SUB DUP3 AND MUL SWAP2 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 SLOAD PUSH2 0x23AD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP11 SWAP1 DUP6 AND PUSH2 0x40EE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP4 ADD MSTORE DUP5 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x2 DUP9 DUP2 SIGNEXTEND SWAP3 SWAP1 DUP11 SWAP1 SIGNEXTEND SWAP2 CALLER SWAP2 PUSH32 0x70935338E69775456A85DDEF226C395FB668B63FA0115F5F20610B388E6CA9C0 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 DUP4 AND SWAP4 SWAP2 SWAP3 DUP2 DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV AND DUP6 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x24CF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8DA5CB5B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x8DA5CB5B SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x251D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2531 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 0x2547 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x255D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP3 AND ISZERO DUP1 PUSH2 0x2580 JUMPI POP PUSH1 0x4 DUP3 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH2 0x2580 JUMPI POP PUSH1 0xA DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x25AA JUMPI POP PUSH1 0xFF DUP2 AND ISZERO DUP1 PUSH2 0x25AA JUMPI POP PUSH1 0x4 DUP2 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH2 0x25AA JUMPI POP PUSH1 0xA DUP2 PUSH1 0xFF AND GT ISZERO JUMPDEST PUSH2 0x25B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0xFF0 DUP4 DUP4 SHL AND DUP5 ADD PUSH1 0xFF SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DUP2 MUL PUSH32 0xFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND OR DUP5 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP4 DIV PUSH1 0xF DUP2 DUP2 AND DUP4 MSTORE SWAP5 DUP2 SWAP1 SHR SWAP1 SWAP5 AND PUSH1 0x20 DUP3 ADD MSTORE DUP6 DUP3 AND DUP2 DUP5 ADD MSTORE DUP5 DUP3 AND PUSH1 0x60 DUP3 ADD MSTORE SWAP2 MLOAD SWAP3 AND SWAP2 PUSH32 0x973D8D92BB299F4AF6CE49B52A8ADB85AE46B9F214C4C4FC06AC77401237B133 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x26AD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8DA5CB5B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x8DA5CB5B SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x270F 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 0x2725 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x273B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP1 DUP6 AND GT PUSH2 0x2757 JUMPI DUP4 PUSH2 0x2764 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST PUSH1 0x8 SLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP5 AND GT PUSH2 0x278A JUMPI DUP3 PUSH2 0x279E JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x280C JUMPI PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x27CD JUMPI PUSH1 0x0 NOT SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP6 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 SLOAD PUSH2 0x280C SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP8 SWAP1 DUP6 AND PUSH2 0x40EE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x287F JUMPI PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x283D JUMPI PUSH1 0x0 NOT ADD JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP6 SWAP1 SUB DUP3 AND MUL SWAP2 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 SLOAD PUSH2 0x287F SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP8 SWAP1 DUP5 AND PUSH2 0x40EE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0x596B573906218D3411850B26A6B437D6C4522FDB43D2D2386263F86D50B8B151 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 PUSH2 0x2990 PUSH2 0x28FE PUSH2 0x308B JUMP JUMPDEST DUP7 DUP7 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x4 SLOAD PUSH1 0x9 SLOAD PUSH1 0x5 SLOAD PUSH1 0xD SWAP7 SWAP6 SWAP5 POP PUSH1 0x1 PUSH1 0xA0 SHL DUP4 DIV PUSH1 0x2 SIGNEXTEND SWAP4 POP PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP4 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP4 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP3 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x47A8 AND JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x90 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2A04 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE CALLER DUP2 MSTORE PUSH1 0x2 DUP8 DUP2 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE DUP7 SWAP1 SIGNEXTEND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 SWAP1 PUSH2 0x2A60 SWAP1 PUSH1 0x60 DUP2 ADD PUSH2 0x2A53 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP11 AND PUSH2 0x44A2 JUMP JUMPDEST PUSH1 0x0 SUB PUSH1 0xF SIGNEXTEND SWAP1 MSTORE PUSH2 0x44B3 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 PUSH1 0x0 SUB SWAP5 POP DUP1 PUSH1 0x0 SUB SWAP4 POP PUSH1 0x0 DUP6 GT DUP1 PUSH2 0x2A81 JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST ISZERO PUSH2 0x2AC0 JUMPI PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP1 DUP10 ADD DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP4 DUP5 SWAP1 DIV DUP4 AND DUP10 ADD SWAP1 SWAP3 AND SWAP1 SWAP3 MUL SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP9 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE DUP1 DUP3 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP3 SWAP1 DUP12 SWAP1 SIGNEXTEND SWAP2 CALLER SWAP2 PUSH32 0xC396CD989A39F4459B5FA1AED6A9A8DCDBC45908ACFD67E028CD568DA98982C SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2B47 DUP7 DUP7 PUSH2 0x4965 JUMP JUMPDEST PUSH2 0x2B4F PUSH2 0x5D6F JUMP JUMPDEST PUSH2 0x2B57 PUSH2 0x5D6F JUMP JUMPDEST PUSH1 0x2 DUP9 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP12 DUP6 SIGNEXTEND SWAP1 SWAP5 SIGNEXTEND DUP4 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL DUP4 DIV AND ISZERO ISZERO PUSH1 0x80 DUP10 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x60 DUP10 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xD8 SHL DUP4 DIV AND SWAP5 DUP9 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH8 0x100000000000000 DUP3 DIV AND SWAP3 DUP8 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x6 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND DUP6 MSTORE SWAP1 PUSH2 0x2BED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL DUP4 DIV AND ISZERO ISZERO PUSH1 0x80 DUP7 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xD8 SHL DUP4 DIV AND PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH8 0x100000000000000 DUP4 DIV AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x6 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND DUP5 MSTORE PUSH2 0x2C5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x20 DUP5 ADD DUP2 SWAP1 MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DIV DUP2 AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP4 DIV DUP6 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP4 DIV SWAP1 SWAP5 AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP4 DIV DUP2 AND PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE SWAP1 SWAP2 DUP11 DUP3 SIGNEXTEND SWAP2 SIGNEXTEND SLT ISZERO PUSH2 0x2D27 JUMPI DUP2 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x0 ADD MLOAD SUB DUP3 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x20 ADD MLOAD SUB DUP4 PUSH1 0x40 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD SUB DUP5 PUSH1 0x60 ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD SUB SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP PUSH2 0x2E20 JUMP JUMPDEST DUP8 PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x2DE8 JUMPI PUSH1 0x0 PUSH2 0x2D43 PUSH2 0x308B JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x9 SLOAD PUSH1 0x5 SLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP5 SWAP6 POP PUSH1 0x0 SWAP5 DUP6 SWAP5 DUP6 SWAP5 PUSH2 0x2D9A SWAP5 PUSH1 0xD SWAP5 DUP11 SWAP5 DUP9 SWAP5 SWAP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP3 DIV DUP3 AND SWAP2 PUSH2 0x37ED AND JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP6 PUSH1 0x0 ADD MLOAD DUP8 PUSH1 0x0 ADD MLOAD DUP5 SUB SUB DUP7 PUSH1 0x20 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP5 SUB SUB DUP8 PUSH1 0x40 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD DUP8 SUB SUB DUP9 PUSH1 0x60 ADD MLOAD DUP11 PUSH1 0x60 ADD MLOAD DUP6 SUB SUB SWAP11 POP SWAP11 POP SWAP11 POP SWAP11 POP POP POP POP POP POP POP POP PUSH2 0x2E20 JUMP JUMPDEST DUP3 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x0 ADD MLOAD SUB DUP4 PUSH1 0x20 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD SUB DUP5 PUSH1 0x40 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD SUB DUP6 PUSH1 0x60 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD SUB SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP JUMPDEST SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV SWAP1 SIGNEXTEND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH3 0xFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND SWAP5 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP5 DIV PUSH1 0xF SIGNEXTEND SWAP4 PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND SWAP2 PUSH8 0x100000000000000 DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV PUSH4 0xFFFFFFFF AND SWAP2 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP10 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2F2F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4149 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2F3A DUP3 PUSH2 0x3BB7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x2F52 PUSH2 0x2F4A PUSH2 0x308B JUMP JUMPDEST PUSH1 0xD SWAP1 PUSH2 0x4A2E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP1 DUP3 MSTORE PUSH1 0x2 DUP9 DUP2 SIGNEXTEND PUSH1 0x20 DUP1 DUP6 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 DUP6 DUP8 ADD DUP2 SWAP1 MSTORE PUSH2 0xFFFF DUP10 DUP2 AND PUSH1 0x60 DUP9 ADD DUP2 SWAP1 MSTORE SWAP1 DUP10 AND PUSH1 0x80 DUP9 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP9 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xC0 SWAP1 SWAP8 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP8 OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH3 0xFFFFFF SWAP8 DUP8 SWAP1 SIGNEXTEND SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 MUL SWAP6 SWAP1 SWAP6 OR PUSH32 0xFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 SWAP8 MUL SWAP7 SWAP1 SWAP7 OR PUSH2 0xFFFF PUSH1 0xD8 SHL NOT AND PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 SWAP2 MUL OR PUSH32 0xFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP4 SSTORE DUP4 MLOAD SWAP2 DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH32 0x98636036CB66A9C19A37435EFC1E90142190214E8ABEB821BDBA3F2990DD4C95 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x30A3 JUMPI INVALID JUMPDEST SDIV SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x2 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0x30CA JUMPI POP DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x30C3 JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x30D4 JUMPI PUSH1 0x0 NOT ADD JUMPDEST DUP4 ISZERO PUSH2 0x3149 JUMPI PUSH1 0x0 DUP1 PUSH2 0x30E6 DUP4 PUSH2 0x4A91 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF DUP4 AND SWAP2 SWAP1 SWAP2 SHL DUP1 ADD PUSH1 0x0 NOT ADD SWAP1 DUP2 AND DUP1 ISZERO ISZERO SWAP8 POP SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 DUP6 PUSH2 0x312B JUMPI DUP9 DUP4 PUSH1 0xFF AND DUP7 SUB MUL PUSH2 0x313E JUMP JUMPDEST DUP9 PUSH2 0x3135 DUP3 PUSH2 0x4AA3 JUMP JUMPDEST DUP5 SUB PUSH1 0xFF AND DUP7 SUB MUL JUMPDEST SWAP7 POP POP POP POP POP PUSH2 0x31C7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3158 DUP4 PUSH1 0x1 ADD PUSH2 0x4A91 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SUB NOT SWAP1 POP PUSH1 0x0 DUP2 DUP12 PUSH1 0x0 DUP7 PUSH1 0x1 SIGNEXTEND PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 POP DUP1 PUSH1 0x0 EQ ISZERO SWAP6 POP DUP6 PUSH2 0x31AA JUMPI DUP9 DUP4 PUSH1 0xFF SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL PUSH2 0x31C0 JUMP JUMPDEST DUP9 DUP4 PUSH2 0x31B5 DUP4 PUSH2 0x4B43 JUMP JUMPDEST SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL JUMPDEST SWAP7 POP POP POP POP POP JUMPDEST POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x31E8 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x31F0 JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x322E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x3242 JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3254 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x3288 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x32A7 JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x32C6 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x32E5 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x3304 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x3323 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x3342 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x3362 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x3382 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x33A2 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x33C2 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x33E2 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x3402 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x3422 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x3442 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x3463 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x3483 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x34A2 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x34BF JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x34DA JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x34D6 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x34EE JUMPI PUSH1 0x1 PUSH2 0x34F1 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 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP1 DUP11 AND LT ISZERO DUP2 DUP8 SLT DUP1 ISZERO SWAP1 PUSH2 0x3588 JUMPI PUSH1 0x0 PUSH2 0x353C DUP10 DUP10 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x373D JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x3555 JUMPI PUSH2 0x3550 DUP13 DUP13 DUP13 PUSH1 0x1 PUSH2 0x4C2D JUMP JUMPDEST PUSH2 0x3562 JUMP JUMPDEST PUSH2 0x3562 DUP12 DUP14 DUP13 PUSH1 0x1 PUSH2 0x4CA8 JUMP JUMPDEST SWAP6 POP DUP6 DUP2 LT PUSH2 0x3573 JUMPI DUP11 SWAP7 POP PUSH2 0x3582 JUMP JUMPDEST PUSH2 0x357F DUP13 DUP12 DUP4 DUP7 PUSH2 0x4D65 JUMP JUMPDEST SWAP7 POP JUMPDEST POP PUSH2 0x35D2 JUMP JUMPDEST DUP2 PUSH2 0x359F JUMPI PUSH2 0x359A DUP12 DUP12 DUP12 PUSH1 0x0 PUSH2 0x4CA8 JUMP JUMPDEST PUSH2 0x35AC JUMP JUMPDEST PUSH2 0x35AC DUP11 DUP13 DUP12 PUSH1 0x0 PUSH2 0x4C2D JUMP JUMPDEST SWAP4 POP DUP4 DUP9 PUSH1 0x0 SUB LT PUSH2 0x35C0 JUMPI DUP10 SWAP6 POP PUSH2 0x35D2 JUMP JUMPDEST PUSH2 0x35CF DUP12 DUP11 DUP11 PUSH1 0x0 SUB DUP6 PUSH2 0x4DB1 JUMP JUMPDEST SWAP6 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP1 DUP8 AND EQ DUP3 ISZERO PUSH2 0x3635 JUMPI DUP1 DUP1 ISZERO PUSH2 0x35F1 JUMPI POP DUP2 JUMPDEST PUSH2 0x3607 JUMPI PUSH2 0x3602 DUP8 DUP14 DUP13 PUSH1 0x1 PUSH2 0x4CA8 JUMP JUMPDEST PUSH2 0x3609 JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x3616 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x362C JUMPI PUSH2 0x3627 DUP8 DUP14 DUP13 PUSH1 0x0 PUSH2 0x4C2D JUMP JUMPDEST PUSH2 0x362E JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP PUSH2 0x367F JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x363F JUMPI POP DUP2 JUMPDEST PUSH2 0x3655 JUMPI PUSH2 0x3650 DUP13 DUP9 DUP13 PUSH1 0x1 PUSH2 0x4C2D JUMP JUMPDEST PUSH2 0x3657 JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x3664 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x367A JUMPI PUSH2 0x3675 DUP13 DUP9 DUP13 PUSH1 0x0 PUSH2 0x4CA8 JUMP JUMPDEST PUSH2 0x367C JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x368F JUMPI POP DUP9 PUSH1 0x0 SUB DUP6 GT JUMPDEST ISZERO PUSH2 0x369B JUMPI DUP9 PUSH1 0x0 SUB SWAP5 POP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x36BA JUMPI POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x36C9 JUMPI DUP6 DUP10 SUB SWAP4 POP PUSH2 0x36E6 JUMP JUMPDEST PUSH2 0x36E3 DUP7 DUP10 PUSH3 0xFFFFFF AND DUP11 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH2 0x470A JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 LT PUSH2 0x3707 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 SGT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x3721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP3 DUP2 SLT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x3721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x3773 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x3768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x37E6 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x377F 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 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH4 0xFFFFFFFF DUP11 AND PUSH2 0x38B9 JUMPI PUSH1 0x0 DUP13 DUP10 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x380F JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP6 MSTORE PUSH5 0x100000000 DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP14 AND EQ PUSH2 0x389E JUMPI PUSH2 0x389B DUP2 DUP14 DUP13 DUP12 DUP12 DUP12 PUSH2 0x4DFD JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD SWAP4 POP SWAP4 POP SWAP4 POP POP PUSH2 0x39DC JUMP JUMPDEST DUP10 DUP12 SUB PUSH1 0x0 DUP1 PUSH2 0x38D0 DUP16 DUP16 DUP6 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 PUSH2 0x4F47 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x3909 JUMPI DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD DUP4 PUSH1 0x80 ADD MLOAD SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x39DC JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x3938 JUMPI DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x39DC JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD SWAP1 DUP5 ADD MLOAD SWAP2 DUP4 SWAP1 SUB SWAP3 DUP7 SUB SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP5 AND SWAP3 SWAP1 DUP6 AND SWAP2 SUB PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0x3966 JUMPI INVALID JUMPDEST SDIV MUL DUP5 PUSH1 0x20 ADD MLOAD ADD DUP3 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL DUP2 PUSH2 0x3998 JUMPI INVALID JUMPDEST DIV DUP6 PUSH1 0x40 ADD MLOAD ADD DUP3 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND DUP8 PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x80 ADD MLOAD SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 PUSH2 0x39C8 JUMPI INVALID JUMPDEST DIV MUL DUP7 PUSH1 0x80 ADD MLOAD ADD SWAP8 POP SWAP8 POP SWAP8 POP POP POP POP POP POP JUMPDEST SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP7 DUP8 SIGNEXTEND DUP8 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x40 SWAP1 SWAP8 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD SWAP1 SWAP7 SUB SWAP1 SWAP6 SSTORE SWAP5 DUP5 ADD DUP1 SLOAD SWAP1 SWAP4 SUB SWAP1 SWAP3 SSTORE PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xD8 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH8 0x100000000000000 DUP1 DUP6 DIV DUP3 AND SWAP1 SWAP7 SUB AND SWAP1 SWAP5 MUL PUSH32 0xFFFFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x6 DUP2 DUP2 SIGNEXTEND SWAP1 SWAP6 SUB SWAP1 SWAP5 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND PUSH7 0xFFFFFFFFFFFFFF NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR DUP3 DUP2 DIV DUP5 AND SWAP1 SWAP6 SUB SWAP1 SWAP3 AND MUL PUSH32 0xFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP1 DUP3 AND SWAP1 SWAP5 SUB SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0xF SIGNEXTEND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x3B66 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x0 SUB DUP5 SUB SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x3B61 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C53 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3721 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 DUP5 ADD SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0x3721 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C41 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x3BF3 JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT JUMPDEST PUSH2 0x3C28 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x20 DUP4 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 GT PUSH1 0x7 SHL DUP2 DUP2 SHR PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x6 SHL SWAP1 DUP2 SHR PUSH4 0xFFFFFFFF DUP2 GT PUSH1 0x5 SHL SWAP1 DUP2 SHR PUSH2 0xFFFF DUP2 GT PUSH1 0x4 SHL SWAP1 DUP2 SHR PUSH1 0xFF DUP2 GT PUSH1 0x3 SWAP1 DUP2 SHL SWAP2 DUP3 SHR PUSH1 0xF DUP2 GT PUSH1 0x2 SHL SWAP1 DUP2 SHR SWAP2 DUP3 GT PUSH1 0x1 SWAP1 DUP2 SHL SWAP3 DUP4 SHR SWAP8 SWAP1 DUP9 GT SWAP7 OR SWAP1 SWAP5 OR SWAP1 SWAP3 OR OR SWAP1 SWAP2 OR OR OR PUSH1 0x80 DUP2 LT PUSH2 0x3CC9 JUMPI PUSH1 0x7F DUP2 SUB DUP4 SWAP1 SHR SWAP2 POP PUSH2 0x3CD3 JUMP JUMPDEST DUP1 PUSH1 0x7F SUB DUP4 SWAP1 SHL SWAP2 POP JUMPDEST SWAP1 DUP1 MUL PUSH1 0x7F DUP2 DUP2 SHR PUSH1 0xFF DUP4 DUP2 SHR SWAP2 SWAP1 SWAP2 SHR DUP1 MUL DUP1 DUP4 SHR DUP2 DUP4 SHR SHR DUP1 MUL DUP1 DUP5 SHR DUP2 DUP5 SHR SHR DUP1 MUL DUP1 DUP6 SHR DUP2 DUP6 SHR SHR DUP1 MUL DUP1 DUP7 SHR DUP2 DUP7 SHR SHR DUP1 MUL DUP1 DUP8 SHR DUP2 DUP8 SHR SHR DUP1 MUL DUP1 DUP9 SHR DUP2 DUP9 SHR SHR DUP1 MUL DUP1 DUP10 SHR DUP2 DUP10 SHR SHR DUP1 MUL DUP1 DUP11 SHR DUP2 DUP11 SHR SHR DUP1 MUL DUP1 DUP12 SHR DUP2 DUP12 SHR SHR DUP1 MUL DUP1 DUP13 SHR DUP2 DUP13 SHR SHR DUP1 MUL DUP1 DUP14 SHR DUP2 DUP14 SHR SHR DUP1 MUL DUP1 DUP15 SHR SWAP13 DUP2 SWAP1 SHR SWAP13 SWAP1 SWAP13 SHR DUP1 MUL SWAP13 DUP14 SWAP1 SHR SWAP15 SWAP14 PUSH1 0x7F NOT DUP16 ADD PUSH1 0x40 SHL PUSH1 0xC0 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x8000000000000000 AND OR PUSH1 0xC1 SWAP12 SWAP1 SWAP12 SHR PUSH8 0x4000000000000000 AND SWAP11 SWAP1 SWAP11 OR PUSH1 0xC2 SWAP10 SWAP1 SWAP10 SHR PUSH8 0x2000000000000000 AND SWAP9 SWAP1 SWAP9 OR PUSH1 0xC3 SWAP8 SWAP1 SWAP8 SHR PUSH8 0x1000000000000000 AND SWAP7 SWAP1 SWAP7 OR PUSH1 0xC4 SWAP6 SWAP1 SWAP6 SHR PUSH8 0x800000000000000 AND SWAP5 SWAP1 SWAP5 OR PUSH1 0xC5 SWAP4 SWAP1 SWAP4 SHR PUSH8 0x400000000000000 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0xC6 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x200000000000000 AND OR PUSH1 0xC7 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x100000000000000 AND OR PUSH1 0xC8 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x80000000000000 AND OR PUSH1 0xC9 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x40000000000000 AND OR PUSH1 0xCA SWAP2 SWAP1 SWAP2 SHR PUSH7 0x20000000000000 AND OR PUSH1 0xCB SWAP2 SWAP1 SWAP2 SHR PUSH7 0x10000000000000 AND OR PUSH1 0xCC SWAP2 SWAP1 SWAP2 SHR PUSH7 0x8000000000000 AND OR PUSH1 0xCD SWAP2 SWAP1 SWAP2 SHR PUSH7 0x4000000000000 AND OR PUSH10 0x3627A301D71055774C85 DUP2 MUL PUSH16 0x28F6481AB7F045A5AF012A19D003AA9 NOT DUP2 ADD PUSH1 0x80 SWAP1 DUP2 SAR SWAP1 PUSH16 0xDB2DF09E81959A81455E260799A0632F DUP4 ADD SWAP1 SAR PUSH1 0x2 DUP2 DUP2 SIGNEXTEND SWAP1 DUP4 SWAP1 SIGNEXTEND EQ PUSH2 0x3ED4 JUMPI DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3EB8 DUP3 PUSH2 0x31D1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x3ECD JUMPI DUP2 PUSH2 0x3ECF JUMP JUMPDEST DUP1 JUMPDEST PUSH2 0x3ED6 JUMP JUMPDEST DUP2 JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP12 DUP12 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x3EF9 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP6 MSTORE PUSH5 0x100000000 DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP12 AND EQ ISZERO PUSH2 0x3F84 JUMPI DUP11 DUP6 SWAP3 POP SWAP3 POP POP PUSH2 0x40E0 JUMP JUMPDEST DUP5 PUSH2 0xFFFF AND DUP5 PUSH2 0xFFFF AND GT DUP1 ISZERO PUSH2 0x3FA5 JUMPI POP PUSH1 0x1 DUP6 SUB PUSH2 0xFFFF AND DUP12 PUSH2 0xFFFF AND EQ JUMPDEST ISZERO PUSH2 0x3FB2 JUMPI DUP4 SWAP2 POP PUSH2 0x3FB6 JUMP JUMPDEST DUP5 SWAP2 POP JUMPDEST DUP2 PUSH2 0xFFFF AND DUP12 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x3FCA JUMPI INVALID JUMPDEST MOD SWAP3 POP PUSH2 0x3FDB DUP2 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x4DFD JUMP JUMPDEST DUP13 DUP5 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x3FEC JUMPI INVALID JUMPDEST DUP3 MLOAD PUSH1 0x2 SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH4 0xFFFFFFFF NOT SWAP1 SWAP4 AND PUSH4 0xFFFFFFFF SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR PUSH11 0xFFFFFFFFFFFFFF00000000 NOT AND PUSH5 0x100000000 PUSH7 0xFFFFFFFFFFFFFF PUSH1 0x6 SWAP4 SWAP1 SWAP4 SIGNEXTEND SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL OR PUSH32 0xFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x58 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP3 OR PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xF8 SHL SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR DUP2 SSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMPDEST SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH4 0xA9059CBB PUSH1 0xE0 SHL 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 0x417F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4160 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 0x41E1 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 0x41E6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4214 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4214 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4211 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x424A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x2A23 PUSH1 0xF1 SHL 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 ADDRESS PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x42DF JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x42C0 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 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x433F 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 0x4344 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4358 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST PUSH2 0x4361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x3721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E7 NOT DUP2 PUSH2 0x43A7 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E8 DUP2 PUSH2 0x43BE JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP4 DUP4 SUB PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x43D5 JUMPI INVALID JUMPDEST SDIV PUSH1 0x1 ADD SWAP1 POP DUP1 PUSH3 0xFFFFFF AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 AND DUP2 PUSH2 0x43F2 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0xFFFF AND GT PUSH2 0x443A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND GT PUSH2 0x4450 JUMPI POP DUP2 PUSH2 0x37E6 JUMP JUMPDEST DUP3 JUMPDEST DUP3 PUSH2 0xFFFF AND DUP2 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x4499 JUMPI PUSH1 0x1 DUP6 DUP3 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x4475 JUMPI INVALID JUMPDEST PUSH1 0x2 MUL ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 ADD PUSH2 0x4452 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x437D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x44CA DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD PUSH2 0x4965 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DIV DUP2 AND DUP6 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP5 DIV DUP2 AND PUSH1 0x60 DUP1 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP6 DIV SWAP1 SWAP2 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP6 DIV DUP2 AND PUSH1 0xA0 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP5 DIV SWAP1 SWAP4 AND ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE DUP9 MLOAD SWAP1 DUP10 ADD MLOAD SWAP5 DUP10 ADD MLOAD SWAP3 DUP10 ADD MLOAD SWAP4 SWAP5 PUSH2 0x456E SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x518E JUMP JUMPDEST SWAP4 POP DUP5 PUSH1 0x60 ADD MLOAD PUSH1 0xF SIGNEXTEND PUSH1 0x0 EQ PUSH2 0x4702 JUMPI DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x45C3 JUMPI PUSH2 0x45BC PUSH2 0x45A5 DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0x31D1 JUMP JUMPDEST PUSH2 0x45B2 DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0x31D1 JUMP JUMPDEST DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x5311 JUMP JUMPDEST SWAP3 POP PUSH2 0x4702 JUMP JUMPDEST DUP5 PUSH1 0x40 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x46D8 JUMPI PUSH1 0x9 SLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH2 0x4634 SWAP1 PUSH2 0x45F9 PUSH2 0x308B JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x5 SLOAD PUSH1 0x60 DUP8 ADD MLOAD PUSH1 0x80 DUP9 ADD MLOAD PUSH1 0xD SWAP6 SWAP5 SWAP4 SWAP3 DUP9 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP3 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP4 DIV DUP4 AND SWAP3 PUSH2 0x3EE3 AND JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP4 DUP5 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SSTORE DUP2 MLOAD PUSH1 0x40 DUP8 ADD MLOAD PUSH2 0x4684 SWAP2 SWAP1 PUSH2 0x467A SWAP1 PUSH2 0x31D1 JUMP JUMPDEST DUP9 PUSH1 0x60 ADD MLOAD PUSH2 0x5311 JUMP JUMPDEST SWAP4 POP PUSH2 0x46A2 PUSH2 0x4696 DUP8 PUSH1 0x20 ADD MLOAD PUSH2 0x31D1 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH2 0x5355 JUMP JUMPDEST SWAP3 POP PUSH2 0x46B2 DUP2 DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x3B01 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0x4702 JUMP JUMPDEST PUSH2 0x46FF PUSH2 0x46E8 DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0x31D1 JUMP JUMPDEST PUSH2 0x46F5 DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0x31D1 JUMP JUMPDEST DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x5355 JUMP JUMPDEST SWAP2 POP JUMPDEST POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4717 DUP5 DUP5 DUP5 PUSH2 0x373D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP1 PUSH2 0x4723 JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD GT ISZERO PUSH2 0x37E6 JUMPI PUSH1 0x0 NOT DUP2 LT PUSH2 0x473A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND PUSH1 0xE8 SWAP1 DUP2 SHL PUSH1 0x34 DUP8 ADD MSTORE SWAP3 SWAP1 SWAP4 SIGNEXTEND SWAP1 SWAP2 SHL PUSH1 0x37 DUP5 ADD MSTORE DUP1 MLOAD DUP1 DUP5 SUB PUSH1 0x1A ADD DUP2 MSTORE PUSH1 0x3A SWAP1 SWAP4 ADD DUP2 MSTORE DUP3 MLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 KECCAK256 PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 SWAP1 MSTORE SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 PUSH1 0x0 DUP5 PUSH2 0xFFFF AND GT PUSH2 0x47EA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4802 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 0x482C JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4847 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 0x4871 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x488C 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 0x48B6 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0x4955 JUMPI PUSH2 0x48E9 DUP14 DUP14 DUP14 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x48D6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 PUSH2 0x37ED JUMP JUMPDEST DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x48F5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x4908 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x491B JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x20 SWAP5 DUP6 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP1 MSTORE PUSH1 0x6 SWAP2 DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND SWAP1 MSTORE PUSH1 0x1 ADD PUSH2 0x48BC JUMP JUMPDEST POP SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x49A5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x544C55 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0xD89E7 NOT PUSH1 0x2 DUP4 SWAP1 SIGNEXTEND SLT ISZERO PUSH2 0x49E8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x544C4D PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0xD89E8 PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND SGT ISZERO PUSH2 0x4A2A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x54554D PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE SWAP3 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP4 SLOAD PUSH4 0xFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xF8 SHL OR DUP3 SSTORE SWAP1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND SWAP1 SSTORE SWAP1 DUP2 SWAP1 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH1 0x8 DUP2 SWAP1 SAR SWAP2 PUSH2 0x100 SWAP1 SWAP2 SMOD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x4AB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x80 SHL DUP3 LT PUSH2 0x4AC4 JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x4ADC JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x4AF0 JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x4B02 JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x4B13 JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x4B23 JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x4B33 JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x437D JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x4B51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x4B6C JUMPI PUSH1 0x7F NOT ADD PUSH2 0x4B74 JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x4B8D JUMPI PUSH1 0x3F NOT ADD PUSH2 0x4B95 JUMP JUMPDEST PUSH1 0x40 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x4BAA JUMPI PUSH1 0x1F NOT ADD PUSH2 0x4BB2 JUMP JUMPDEST PUSH1 0x20 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH2 0xFFFF DUP3 AND ISZERO PUSH2 0x4BC5 JUMPI PUSH1 0xF NOT ADD PUSH2 0x4BCD JUMP JUMPDEST PUSH1 0x10 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x4BDF JUMPI PUSH1 0x7 NOT ADD PUSH2 0x4BE7 JUMP JUMPDEST PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xF DUP3 AND ISZERO PUSH2 0x4BF9 JUMPI PUSH1 0x3 NOT ADD PUSH2 0x4C01 JUMP JUMPDEST PUSH1 0x4 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x3 DUP3 AND ISZERO PUSH2 0x4C13 JUMPI PUSH1 0x1 NOT ADD PUSH2 0x4C1B JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x437D JUMPI PUSH1 0x0 NOT ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4C4D JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP2 PUSH2 0x4C7A JUMPI PUSH2 0x4C75 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x373D JUMP JUMPDEST PUSH2 0x4C9D JUMP JUMPDEST PUSH2 0x4C9D DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x470A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4CC8 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP7 SUB DUP2 AND SWAP1 DUP8 AND PUSH2 0x4D04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH2 0x4D34 JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4D27 DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x373D JUMP JUMPDEST DUP2 PUSH2 0x4D2E JUMPI INVALID JUMPDEST DIV PUSH2 0x4D5A JUMP JUMPDEST PUSH2 0x4D5A PUSH2 0x4D4B DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x470A JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5384 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x4D7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x4D92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x4DA4 JUMPI PUSH2 0x4C75 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x538F JUMP JUMPDEST PUSH2 0x4C9D DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x5470 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x4DC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x4DDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x4DF0 JUMPI PUSH2 0x4C75 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x5470 JUMP JUMPDEST PUSH2 0x4C9D DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x538F JUMP JUMPDEST PUSH2 0x4E05 PUSH2 0x5D6F JUMP JUMPDEST DUP7 MLOAD DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH2 0x4E1E JUMPI PUSH1 0x1 PUSH2 0x4E20 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP PUSH1 0x0 PUSH4 0xFFFFFFFF TIMESTAMP GT PUSH2 0x4E6B JUMPI TIMESTAMP DUP5 PUSH4 0xFFFFFFFF AND LT PUSH2 0x4E42 JUMPI DUP2 PUSH2 0x4E66 JUMP JUMPDEST DUP9 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x4E63 JUMPI DUP9 MLOAD DUP5 SUB PUSH2 0x4E66 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH2 0x4E6E JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP10 PUSH1 0x2 SIGNEXTEND MUL DUP12 PUSH1 0x20 ADD MLOAD ADD PUSH1 0x6 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x80 DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH2 0x4ECF JUMPI INVALID JUMPDEST DIV DUP12 PUSH1 0x40 ADD MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0x10 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND SWAP1 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 PUSH2 0x4F26 JUMPI INVALID JUMPDEST DIV DUP12 PUSH1 0x80 ADD MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 MSTORE POP SWAP3 POP POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x4F4F PUSH2 0x5D6F JUMP JUMPDEST PUSH2 0x4F57 PUSH2 0x5D6F JUMP JUMPDEST DUP11 DUP8 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x4F68 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP1 DUP5 MSTORE PUSH5 0x100000000 DUP3 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP3 POP PUSH2 0x4FE6 SWAP1 DUP12 SWAP1 DUP12 PUSH2 0x5565 JUMP JUMPDEST ISZERO PUSH2 0x5020 JUMPI DUP9 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x5008 JUMPI PUSH2 0x40E0 JUMP JUMPDEST DUP2 PUSH2 0x5017 DUP4 DUP12 DUP12 DUP11 DUP11 DUP11 PUSH2 0x4DFD JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x40E0 JUMP JUMPDEST DUP11 DUP4 PUSH2 0xFFFF AND DUP9 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x5035 JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x5045 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP3 POP PUSH2 0x5129 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE DUP13 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP3 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x1 DUP13 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP2 POP JUMPDEST PUSH2 0x5138 DUP11 DUP4 PUSH1 0x0 ADD MLOAD DUP12 PUSH2 0x5565 JUMP JUMPDEST PUSH2 0x516F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x13D311 PUSH1 0xEA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x517C DUP12 DUP12 DUP12 DUP11 DUP8 PUSH2 0x5628 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x519D PUSH1 0xC DUP8 DUP8 DUP8 PUSH2 0x4744 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 DUP1 PUSH1 0xF DUP8 SWAP1 SIGNEXTEND ISZERO PUSH2 0x52B1 JUMPI PUSH1 0x0 PUSH2 0x51BE PUSH2 0x308B JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x9 SLOAD PUSH1 0x5 SLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH2 0x5229 SWAP3 PUSH1 0xD SWAP3 DUP9 SWAP3 DUP7 SWAP3 PUSH1 0x1 PUSH1 0xA0 SHL DUP4 DIV PUSH1 0x2 SIGNEXTEND SWAP3 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP2 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP3 DIV DUP3 AND SWAP3 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 SWAP2 DIV AND SWAP1 PUSH2 0x37ED AND JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x5253 PUSH1 0xA DUP16 DUP14 DUP16 DUP14 DUP14 DUP10 DUP12 DUP14 PUSH1 0x0 DUP12 DUP14 PUSH2 0x57FD JUMP JUMPDEST SWAP7 POP PUSH2 0x526B PUSH1 0xA DUP15 DUP14 DUP16 DUP14 DUP14 DUP10 DUP12 DUP14 PUSH1 0x1 DUP12 DUP14 PUSH2 0x57FD JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP2 SWAP8 POP PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 SWAP2 DIV SWAP1 SIGNEXTEND DUP8 ISZERO PUSH2 0x5298 JUMPI PUSH2 0x5298 DUP16 DUP3 PUSH1 0xB PUSH2 0x5A35 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP7 ISZERO PUSH2 0x52AA JUMPI PUSH2 0x52AA PUSH1 0xB DUP16 DUP4 PUSH2 0x5A35 JUMP JUMPDEST POP POP POP POP POP POP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x52C3 PUSH1 0xA DUP13 DUP13 DUP12 DUP11 DUP11 PUSH2 0x5A9B JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x52D4 DUP8 DUP11 DUP5 DUP5 PUSH2 0x5B47 JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x5302 JUMPI DUP4 ISZERO PUSH2 0x52F1 JUMPI PUSH2 0x52F1 PUSH1 0xA DUP13 PUSH2 0x5CDC JUMP JUMPDEST DUP3 ISZERO PUSH2 0x5302 JUMPI PUSH2 0x5302 PUSH1 0xA DUP12 PUSH2 0x5CDC JUMP JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT PUSH2 0x5337 JUMPI PUSH2 0x5332 PUSH2 0x532D DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x4CA8 JUMP JUMPDEST PUSH2 0x36F5 JUMP JUMPDEST PUSH2 0x4CA0 JUMP JUMPDEST PUSH2 0x534A PUSH2 0x532D DUP6 DUP6 DUP6 PUSH1 0x0 SUB PUSH1 0x0 PUSH2 0x4CA8 JUMP JUMPDEST PUSH1 0x0 SUB SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT PUSH2 0x5371 JUMPI PUSH2 0x5332 PUSH2 0x532D DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x4C2D JUMP JUMPDEST PUSH2 0x534A PUSH2 0x532D DUP6 DUP6 DUP6 PUSH1 0x0 SUB PUSH1 0x0 PUSH2 0x4C2D JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x5402 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x53C5 JUMPI PUSH2 0x53C0 DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x373D JUMP JUMPDEST PUSH2 0x53DD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH1 0x60 DUP6 SWAP1 SHL DUP2 PUSH2 0x53DB JUMPI INVALID JUMPDEST DIV JUMPDEST SWAP1 POP PUSH2 0x53FA PUSH2 0x53F5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP4 PUSH2 0x4382 JUMP JUMPDEST PUSH2 0x5D1D JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4CA0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x5430 JUMPI PUSH2 0x542B DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x470A JUMP JUMPDEST PUSH2 0x5447 JUMP JUMPDEST PUSH2 0x5447 PUSH1 0x60 DUP6 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP8 AND PUSH2 0x5384 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x545E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB SWAP1 POP PUSH2 0x4CA0 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x547E JUMPI POP DUP4 PUSH2 0x4CA0 JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND DUP3 ISZERO PUSH2 0x551E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x54BE JUMPI INVALID JUMPDEST DIV EQ ISZERO PUSH2 0x54EF JUMPI DUP2 DUP2 ADD DUP3 DUP2 LT PUSH2 0x54ED JUMPI PUSH2 0x54E3 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH2 0x470A JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x4CA0 JUMP JUMPDEST POP JUMPDEST PUSH2 0x5515 DUP3 PUSH2 0x5510 DUP8 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP2 PUSH2 0x5509 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x4382 JUMP JUMPDEST PUSH2 0x5384 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x4CA0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x5535 JUMPI INVALID JUMPDEST DIV EQ DUP1 ISZERO PUSH2 0x5542 JUMPI POP DUP1 DUP3 GT JUMPDEST PUSH2 0x554B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB PUSH2 0x54E3 PUSH2 0x53F5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 PUSH2 0x470A JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO DUP1 ISZERO PUSH2 0x558F JUMPI POP DUP4 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND GT ISZERO JUMPDEST ISZERO PUSH2 0x55AB JUMPI DUP2 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO SWAP1 POP PUSH2 0x37E6 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x55D3 JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH5 0x100000000 ADD PUSH2 0x55DB JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP6 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x560C JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH5 0x100000000 ADD PUSH2 0x5614 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 SWAP2 GT ISZERO SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x5630 PUSH2 0x5D6F JUMP JUMPDEST PUSH2 0x5638 PUSH2 0x5D6F JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH2 0xFFFF AND DUP6 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x564E JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP6 PUSH2 0xFFFF AND DUP4 ADD SUB SWAP1 POP PUSH1 0x0 JUMPDEST POP PUSH1 0x2 DUP2 DUP4 ADD DIV DUP10 PUSH2 0xFFFF DUP8 AND DUP3 DUP2 PUSH2 0x567B JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x5687 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP6 POP PUSH2 0x570C JUMPI DUP1 PUSH1 0x1 ADD SWAP3 POP PUSH2 0x5666 JUMP JUMPDEST DUP10 DUP7 PUSH2 0xFFFF AND DUP3 PUSH1 0x1 ADD DUP2 PUSH2 0x571D JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x5729 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE DUP6 MLOAD SWAP1 SWAP5 POP PUSH1 0x0 SWAP1 PUSH2 0x57AF SWAP1 DUP12 SWAP1 DUP12 PUSH2 0x5565 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x57C8 JUMPI POP PUSH2 0x57C8 DUP11 DUP11 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x5565 JUMP JUMPDEST ISZERO PUSH2 0x57D3 JUMPI POP PUSH2 0x57F0 JUMP JUMPDEST DUP1 PUSH2 0x57E3 JUMPI PUSH1 0x1 DUP3 SUB SWAP3 POP PUSH2 0x57EA JUMP JUMPDEST DUP2 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP PUSH2 0x5666 JUMP JUMPDEST POP POP POP SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP12 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH2 0x5828 DUP3 DUP15 PUSH2 0x3B01 JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT ISZERO PUSH2 0x5876 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C4F PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 DUP2 AND ISZERO SWAP1 DUP3 AND ISZERO DUP2 EQ ISZERO SWAP5 POP ISZERO PUSH2 0x5981 JUMPI DUP14 PUSH1 0x2 SIGNEXTEND DUP16 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x5951 JUMPI DUP12 DUP4 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP11 DUP4 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP10 DUP4 PUSH1 0x3 ADD PUSH1 0x7 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP9 DUP4 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH7 0xFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x6 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP8 DUP4 PUSH1 0x3 ADD PUSH1 0x1B PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 DUP4 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xF8 SHL OR SWAP1 SSTORE JUMPDEST DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND OR DUP4 SSTORE DUP7 PUSH2 0x59D6 JUMPI PUSH2 0x59D1 PUSH2 0x59CC DUP15 PUSH1 0xF SIGNEXTEND DUP6 PUSH1 0x0 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xF SIGNEXTEND PUSH1 0xF SIGNEXTEND PUSH2 0x3727 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x44A2 JUMP JUMPDEST PUSH2 0x5A03 JUMP JUMPDEST PUSH2 0x5A03 PUSH2 0x59CC DUP15 PUSH1 0xF SIGNEXTEND DUP6 PUSH1 0x0 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xF SIGNEXTEND PUSH1 0xF SIGNEXTEND PUSH2 0x370B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 SLOAD PUSH1 0xF SWAP2 SWAP1 SWAP2 SIGNEXTEND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP2 AND OR SWAP1 SWAP3 SSTORE POP SWAP1 SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x5A44 JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x5A52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5A6D DUP4 PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x5A67 JUMPI INVALID JUMPDEST SDIV PUSH2 0x4A91 JUMP JUMPDEST PUSH1 0x1 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x40 SWAP1 SWAP7 KECCAK256 DUP1 SLOAD PUSH1 0xFF SWAP1 SWAP8 AND SWAP2 SWAP1 SWAP2 SHL SWAP1 SWAP6 XOR SWAP1 SWAP5 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP6 DUP2 SIGNEXTEND DUP1 DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP10 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP9 DUP6 SIGNEXTEND DUP6 SIGNEXTEND DUP4 MSTORE SWAP1 DUP3 KECCAK256 SWAP2 SWAP4 DUP5 SWAP4 SWAP2 SWAP3 SWAP2 DUP5 SWAP2 DUP3 SWAP2 SWAP1 DUP11 SWAP1 SIGNEXTEND SLT PUSH2 0x5AE1 JUMPI POP POP PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH2 0x5AF4 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SLOAD DUP9 SUB SWAP2 POP DUP4 PUSH1 0x2 ADD SLOAD DUP8 SUB SWAP1 POP JUMPDEST PUSH1 0x0 DUP1 DUP12 PUSH1 0x2 SIGNEXTEND DUP12 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x5B16 JUMPI POP POP PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x2 DUP5 ADD SLOAD PUSH2 0x5B29 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SLOAD DUP11 SUB SWAP2 POP DUP5 PUSH1 0x2 ADD SLOAD DUP10 SUB SWAP1 POP JUMPDEST SWAP3 SWAP1 SWAP9 SUB SWAP8 SWAP1 SWAP8 SUB SWAP12 SWAP7 SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 SUB SWAP9 POP SWAP4 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP8 ADD SLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x2 DUP8 ADD SLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x3 DUP7 ADD SLOAD DUP1 DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV SWAP1 SWAP2 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xF DUP6 SWAP1 SIGNEXTEND PUSH2 0x5BE6 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x5BDE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4E5 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH2 0x5BF5 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x5BF2 SWAP1 DUP7 PUSH2 0x3B01 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH2 0x5C19 DUP4 PUSH1 0x20 ADD MLOAD DUP7 SUB DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x373D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x5C3F DUP5 PUSH1 0x40 ADD MLOAD DUP7 SUB DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x373D JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0xF SIGNEXTEND PUSH1 0x0 EQ PUSH2 0x5C66 JUMPI DUP8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND OR DUP9 SSTORE JUMPDEST PUSH1 0x1 DUP9 ADD DUP7 SWAP1 SSTORE PUSH1 0x2 DUP9 ADD DUP6 SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO ISZERO DUP1 PUSH2 0x5C94 JUMPI POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT JUMPDEST ISZERO PUSH2 0x5CD2 JUMPI PUSH1 0x3 DUP9 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP6 ADD DUP3 AND OR DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP3 SWAP1 DIV DUP4 AND DUP6 ADD SWAP1 SWAP3 AND MUL OR SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP4 SWAP1 SSTORE SWAP1 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x437D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH24 0xF216DF62BAC6D2389ED5ED695BBEAC8D557A5F189904F27E 0xD4 0xA6 0xD2 DUP2 DUP16 PUSH4 0x6A64736F PUSH13 0x63430007060033000000000000 ","sourceMap":"861:39509:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1420:30;;;:::i;:::-;;;;-1:-1:-1;;;;;1420:30:2;;;;;;;;;;;;;;25374:9665;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25374:9665:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25374:9665:2;;-1:-1:-1;25374:9665:2;-1:-1:-1;25374:9665:2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4458:383;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4458:383:2;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3245:33;;;:::i;:::-;;;;-1:-1:-1;;;;;3245:33:2;;;;;;;;;;;;;;3157:41;;;:::i;:::-;;;;;-1:-1:-1;;;;;3157:41:2;;;;;;-1:-1:-1;;;;;3157:41:2;;;;;;;;;;;;;;;;39504:863;;;;;;;;;;;;;;;;-1:-1:-1;39504:863:2;;-1:-1:-1;;;;;39504:863:2;;;;;;;;:::i;3620:54::-;;;;;;;;;;;;;;;;-1:-1:-1;3620:54:2;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3620:54:2;;;;;;;;;;;;;-1:-1:-1;;;;;3620:54:2;;;;;;;;;;;;;;10792:672;;;;;;;;;;;;;;;;-1:-1:-1;10792:672:2;;;;:::i;2567:27::-;;;:::i;:::-;;;;-1:-1:-1;;;;;2567:27:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19412:1265;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19412:1265:2;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19412:1265:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19412:1265:2;;-1:-1:-1;19412:1265:2;-1:-1:-1;19412:1265:2;:::i;2925:44::-;;;:::i;:::-;;;;;;;;;;;;;;;;35577:2210;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35577:2210:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35577:2210:2;;-1:-1:-1;35577:2210:2;-1:-1:-1;35577:2210:2;:::i;20725:1058::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20725:1058:2;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20725:1058:2;;;;;;;;;;;;:::i;3516:59::-;;;;;;;;;;;;;;;;-1:-1:-1;3516:59:2;;:::i;:::-;;;;-1:-1:-1;;;;;3516:59:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3419:52;;;;;;;;;;;;;;;;-1:-1:-1;3419:52:2;;;;:::i;1743:43::-;;;:::i;37840:521::-;;;;;;;;;;;;;;;;-1:-1:-1;37840:521:2;;;;;;;;;;;:::i;38414:1037::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;38414:1037:2;;;;-1:-1:-1;;;;;38414:1037:2;;;;;;;;;;;;:::i;10050:694::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10050:694:2;;-1:-1:-1;10050:694:2;-1:-1:-1;10050:694:2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2752:37;;;:::i;:::-;;;;-1:-1:-1;;;;;2752:37:2;;;;;;;;;;;;;;;;;;;;;;21831:924;;;;;;;;;;;;;;;;-1:-1:-1;21831:924:2;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21831:924:2;;:::i;6188:3809::-;;;;;;;;;;;;;;;;-1:-1:-1;6188:3809:2;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;6188:3809:2;;;;;;;;;;;;;;;-1:-1:-1;;;;;6188:3809:2;;;;;;;;;;;;;;1339:31;;;:::i;1658:33::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1500:30;;;:::i;1580:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2836:44;;;:::i;3325:49::-;;;;;;;;;;;;;;;;-1:-1:-1;3325:49:2;;;;:::i;:::-;;;;-1:-1:-1;;;;;3325:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3325:49:2;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3325:49:2;;;;;;;;;;;;;;11569:639;;;;;;;;;;;;;;;;-1:-1:-1;11569:639:2;-1:-1:-1;;;;;11569:639:2;;:::i;1420:30::-;;;-1:-1:-1;;;;;1420:30:2;;:::o;25374:9665::-;25575:14;;25626:20;25618:35;;;;;-1:-1:-1;;;25618:35:2;;;;;;;;;;;;-1:-1:-1;;;25618:35:2;;;;;;;;;;;;;;;25666:31;;;;;;;;25692:5;25666:31;-1:-1:-1;;;;;25666:31:2;;;;-1:-1:-1;;;25666:31:2;;;;;;;;;;;;;;;-1:-1:-1;;;25666:31:2;;;;;;;;;;;-1:-1:-1;;;25666:31:2;;;;;;;;-1:-1:-1;;;25666:31:2;;;;;;;;;;-1:-1:-1;;;25666:31:2;;;;;;;;-1:-1:-1;;;25666:31:2;;;;;;;;;;;;;;25710:35;;;;;-1:-1:-1;;;25710:35:2;;;;;;;;;;;;-1:-1:-1;;;25710:35:2;;;;;;;;;;;;;;;25778:10;:230;;25938:10;:23;;;-1:-1:-1;;;;;25918:43:2;:17;-1:-1:-1;;;;;25918:43:2;;:90;;;;-1:-1:-1;1019:49:28;-1:-1:-1;;;;;25965:43:2;;;25918:90;25778:230;;;25828:10;:23;;;-1:-1:-1;;;;;25808:43:2;:17;-1:-1:-1;;;;;25808:43:2;;:90;;;;-1:-1:-1;837:10:28;-1:-1:-1;;;;;25855:43:2;;;25808:90;25756:283;;;;;-1:-1:-1;;;25756:283:2;;;;;;;;;;;;-1:-1:-1;;;25756:283:2;;;;;;;;;;;;;;;26052:5;:22;;-1:-1:-1;;;;26052:22:2;;;26112:511;;;;;;;;;26069:5;;26112:511;26238:10;:74;;26310:1;26284:10;:22;;;:27;;;;26238:74;;;26277:2;26252:10;:22;;;:27;;;;;;;;26238:74;26112:511;;;;26153:9;;-1:-1:-1;;;;;26153:9:2;26112:511;;;;;;26193:17;:15;:17::i;:::-;26112:511;;;;;;26394:1;26112:511;;;;;;26362:1;-1:-1:-1;;;;;26112:511:2;;;;;26437:5;26112:511;;;;;;26490:1;-1:-1:-1;;;;;26112:511:2;;;;;26511:3;;;;;;;;;;;26112:511;;;;;;26542:11;;;;;;;;;;;26112:511;;;;;;26576:6;;;;;;;;;-1:-1:-1;;;;;26576:6:2;-1:-1:-1;;;;;26112:511:2;;;;;26605:6;;;;;;;;;-1:-1:-1;;;;;26605:6:2;-1:-1:-1;;;;;26112:511:2;;;;26087:536;;26636:15;26672:1;26654:15;:19;26636:37;;26686:22;26711:367;;;;;;;;26762:15;26711:367;;;;26810:1;26711:367;;;;26840:10;:23;;;-1:-1:-1;;;;;26711:367:2;;;;;26884:10;:15;;;26711:367;;;;;;26935:10;:56;;26971:20;;26935:56;;;26948:20;;26935:56;26711:367;;;;27019:1;-1:-1:-1;;;;;26711:367:2;;;;;27046:5;:20;;;-1:-1:-1;;;;;26711:367:2;;;;26686:392;;27208:5012;27215:30;;:35;;;;:78;;;27276:17;-1:-1:-1;;;;;27254:39:2;:5;:18;;;-1:-1:-1;;;;;27254:39:2;;;27215:78;27208:5012;;;27310:28;;:::i;:::-;27380:18;;;;-1:-1:-1;;;;;27355:43:2;;;27513:10;;;;27542:17;;;;27451:152;;:10;;27578;27451:43;:152::i;:::-;27415:188;;27431:16;;;27415:188;;;;;;;27416:13;;;27415:188;;;-1:-1:-1;;27738:33:2;;;27734:220;;;-1:-1:-1;;27792:13:2;;;:33;27734:220;;;27851:13;;;;654:9:28;27851:33:2;;;;;;27847:107;;;654:9:28;27905:13:2;;;:33;27847:107;28042:42;28070:4;:13;;;28042:27;:42::i;:::-;-1:-1:-1;;;;;28018:66:2;:21;;;:66;28334:18;;;;28291:392;;28372:10;:98;;28453:17;-1:-1:-1;;;;;28429:41:2;:4;:21;;;-1:-1:-1;;;;;28429:41:2;;28372:98;;;28409:17;-1:-1:-1;;;;;28385:41:2;:4;:21;;;-1:-1:-1;;;;;28385:41:2;;28372:98;28371:186;;28536:4;:21;;;28371:186;;;28495:17;28371:186;28576:15;;;;28610:30;;28659:9;;;;28291:24;:392::i;:::-;28273:14;;;28221:462;28257:14;;;28221:462;28242:13;;;28221:462;-1:-1:-1;;;;;28221:462:2;28222:18;;;28221:462;28700:440;;;;28769:43;28786:4;:14;;;28770:4;:13;;;:30;28769:41;:43::i;:::-;28735:77;;;;;28883:14;;;;28856:53;;28883:25;;:23;:25::i;:::-;28856:22;;;;;:26;:53::i;:::-;28831:22;;;:78;28700:440;;;28984:25;:4;:14;;;:23;:25::i;:::-;28950:59;;;;;29097:14;;;;29081:13;;;;29053:71;;29080:43;;29081:30;29080:41;:43::i;:::-;29053:22;;;;;:26;:71::i;:::-;29028:22;;;:96;28700:440;29278:17;;:21;;;29274:208;;29320:13;29353:5;:17;;;29336:34;;:4;:14;;;:34;;;;;29389:14;;;:23;;29336:34;;;;29389:23;;;;;;29431:17;;;:35;;;;;-1:-1:-1;;;;;29431:35:2;;;-1:-1:-1;29274:208:2;29544:15;;;;-1:-1:-1;;;;;29544:19:2;;29540:139;;29611:68;29627:4;:14;;;-1:-1:-1;;;29663:5:2;:15;;;-1:-1:-1;;;;;29611:68:2;:15;:68::i;:::-;29582:25;;;:97;;;;;;;29540:139;29778:4;:21;;;-1:-1:-1;;;;;29756:43:2;:5;:18;;;-1:-1:-1;;;;;29756:43:2;;29752:2457;;;29896:4;:16;;;29892:1950;;;30114:5;:31;;;30109:854;;30450:20;;;;;30533:15;;;;;30579:27;;;;30637:20;;;;30688:10;:29;30814:33;;;;30393:481;;:12;;30450:20;30501:1;;30533:15;;30579:27;;-1:-1:-1;;;;;30688:29:2;;;30748:35;-1:-1:-1;;;30748:35:2;;;;;;30814:33;30393:26;:481;:::i;:::-;-1:-1:-1;;;;;30174:700:2;30326:37;;;30174:700;-1:-1:-1;;;;;30174:700:2;30256:39;;;30174:700;;;;;;;30205:20;;;30174:700;30935:4;30901:31;;;:38;30109:854;30985:19;31007:478;31045:4;:13;;;31086:10;:61;;31127:20;;31086:61;;;31099:5;:25;;;31086:61;31176:10;:61;;31212:5;:25;;;31176:61;;;31189:20;;31176:61;31265:39;;;;31331:20;;;;31378;;;;31425:37;;;;31007:5;;:478;;;31265:39;31331:20;31378;31007:11;:478::i;:::-;30985:500;;31686:10;31682:44;;;31713:13;;31682:44;31769:53;31792:5;:15;;;31809:12;31769:22;:53::i;:::-;-1:-1:-1;;;;;31751:71:2;:15;;;:71;-1:-1:-1;29892:1950:2;31875:10;:46;;31908:4;:13;;;31875:46;;;31904:1;31888:4;:13;;;:17;31875:46;31862:59;;;;;;:10;;;:59;29752:2457;;;31969:4;:22;;;-1:-1:-1;;;;;31947:44:2;:5;:18;;;-1:-1:-1;;;;;31947:44:2;;31943:266;;32146:47;32174:5;:18;;;32146:27;:47::i;:::-;32133:60;;;;;;:10;;;:60;31943:266;27208:5012;;;;32319:10;:15;;;32305:29;;:5;:10;;;:29;;;32301:903;;32447:27;;;;;32493:20;;;;32532:15;;;;;32566:20;;;;32605:10;:29;32707:33;;;;32759:37;;;;32352:23;;;;32410:401;;:12;;32447:27;;32493:20;;32532:15;;-1:-1:-1;;;;;32605:29:2;;;32653:35;-1:-1:-1;;;32653:35:2;;;;;;32707:33;32759:37;32410:18;:401;:::i;:::-;32934:18;;;;32971:10;;;;32827:5;32826:246;;-1:-1:-1;;;;32826:246:2;-1:-1:-1;;;32826:246:2;;;;;;-1:-1:-1;;;;32826:246:2;-1:-1:-1;;;32826:246:2;;;;;;;;;;;;-1:-1:-1;;;;32826:246:2;-1:-1:-1;;;32826:246:2;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;32826:246:2;-1:-1:-1;;;;;32826:246:2;;;;;;-1:-1:-1;32301:903:2;;-1:-1:-1;32301:903:2;;33174:18;;;;33153:5;:39;;-1:-1:-1;;;;;;33153:39:2;-1:-1:-1;;;;;33153:39:2;;;;;;;;;32301:903;33287:5;:15;;;-1:-1:-1;;;;;33263:39:2;:5;:20;;;-1:-1:-1;;;;;33263:39:2;;33259:72;;33316:15;;;;33304:9;:27;;-1:-1:-1;;;;;;33304:27:2;-1:-1:-1;;;;;33304:27:2;;;;;;;;;33259:72;33517:10;33513:336;;;33567:25;;;;33544:20;:48;33611:17;;;;-1:-1:-1;;;;;33611:21:2;;33607:67;;33657:17;;;;33634:12;:40;;-1:-1:-1;;;;;;33634:40:2;;-1:-1:-1;;;;;33634:40:2;;;;;;;;;;;;;33607:67;33513:336;;;33730:25;;;;33707:20;:48;33774:17;;;;-1:-1:-1;;;;;33774:21:2;;33770:67;;33820:17;;;;33797:12;:40;;-1:-1:-1;;;;;33797:40:2;;;-1:-1:-1;;;33797:40:2;;;;;;;;;;;;;;;;;33770:67;33896:10;33882:24;;:10;:24;;;:204;;34013:22;;;;34055:30;;34037:48;;33882:204;;;33941:5;:30;;;33923:15;:48;33973:5;:22;;;33882:204;33861:225;;-1:-1:-1;33861:225:2;-1:-1:-1;34148:740:2;;;;34193:1;34183:7;:11;34179:88;;;34196:71;34224:5;:12;;;34238:9;34258:7;34257:8;;34196:27;:71::i;:::-;34284:22;34309:21;34317:5;:12;;;34309:7;:21::i;:::-;34284:46;;34365:10;-1:-1:-1;;;;;34345:50:2;;34396:7;34405;34414:4;;34345:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34482:21;34490:5;:12;;;34482:7;:21::i;:::-;34442:36;:14;34469:7;34442:18;:36::i;:::-;:61;;34434:77;;;;;-1:-1:-1;;;34434:77:2;;;;;;;;;;;;-1:-1:-1;;;34434:77:2;;;;;;;;;;;;;;;34148:740;;;;34558:1;34548:7;:11;34544:88;;;34561:71;34589:5;:12;;;34603:9;34623:7;34622:8;;34561:27;:71::i;:::-;34649:22;34674:21;34682:5;:12;;;34674:7;:21::i;:::-;34649:46;;34730:10;-1:-1:-1;;;;;34710:50:2;;34761:7;34770;34779:4;;34710:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34847:21;34855:5;:12;;;34847:7;:21::i;:::-;34807:36;:14;34834:7;34807:18;:36::i;:::-;:61;;34799:77;;;;;-1:-1:-1;;;34799:77:2;;;;;;;;;;;;-1:-1:-1;;;34799:77:2;;;;;;;;;;;;;;;34148:740;;34951:18;;;;;34971:15;;;;34988:10;;;;;34905:94;;;;;;;;;;;-1:-1:-1;;;;;34905:94:2;;;;;;;-1:-1:-1;;;;;34905:94:2;;;;;;;;;;;;;;;;;;;;;;34910:10;;34905:94;;;;;;;;;-1:-1:-1;;35010:5:2;:21;;-1:-1:-1;;;;35010:21:2;-1:-1:-1;;;35010:21:2;;;-1:-1:-1;25374:9665:2;;;;-1:-1:-1;25374:9665:2;-1:-1:-1;;;;;;25374:9665:2:o;4458:383::-;4601:1;4582:7;-1:-1:-1;;;;;4582:7:2;:21;4574:30;;;;;;4617:7;:20;;4627:10;-1:-1:-1;;;;;;4617:20:2;;;;;;;-1:-1:-1;4648:16:2;;;;-1:-1:-1;;;;;4648:16:2;;;;;;;;;;4675:6;:16;;;;;;;;;-1:-1:-1;;;;4702:10:2;-1:-1:-1;;;4702:10:2;;;;;;;;;;;;4723:26;;-1:-1:-1;;;4723:26:2;;;;;;;;;;;;;;4782:51;4723:26;4782:37;:51::i;:::-;4760:19;:73;;-1:-1:-1;;;;;;4760:73:2;-1:-1:-1;;;;;4760:73:2;;;;;;;;;;-1:-1:-1;;;;4458:383:2:o;3245:33::-;;;-1:-1:-1;;;;;3245:33:2;;:::o;3157:41::-;;;-1:-1:-1;;;;;3157:41:2;;;;-1:-1:-1;;;3157:41:2;;;;:::o;39504:863::-;4069:5;:14;-1:-1:-1;;;4069:14:2;;;;4061:30;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;;;;4102:5;:22;;-1:-1:-1;;;;4102:22:2;;;4119:5;4368:7;4353:31:::1;::::0;;-1:-1:-1;;;4353:31:2;;;;-1:-1:-1;;;;;4368:7:2;;::::1;::::0;4353:29:::1;::::0;:31;;::::1;::::0;::::1;::::0;;;;;;;4368:7;4353:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4353:31:2;-1:-1:-1;;;;;4339:45:2::1;:10;:45;4331:54;;;::::0;::::1;;39700:15:::2;39672:24;:43;;;;39664:52;;;::::0;::::2;;39819:5;:22:::0;39786:331:::2;::::0;-1:-1:-1;;;39819:22:2;::::2;;;39856:17;:15;:17::i;:::-;39888:5;:10:::0;39913:9:::2;::::0;39937:10:::2;:29:::0;39786:12:::2;::::0;:331;;-1:-1:-1;;;39888:10:2;::::2;;;::::0;-1:-1:-1;;;;;39913:9:2::2;::::0;-1:-1:-1;;;;;39937:29:2;::::2;::::0;39981:35:::2;-1:-1:-1::0;;;39981:35:2;;::::2;::::0;::::2;::::0;40031:28:::2;-1:-1:-1::0;;;40031:28:2;::::2;::::0;::::2;::::0;-1:-1:-1;;;40074:32:2;::::2;;::::0;39786:18:::2;:331;:::i;:::-;39730:5;39729:388:::0;;-1:-1:-1;;;;39729:388:2::2;-1:-1:-1::0;;;39729:388:2::2;::::0;;::::2;;;-1:-1:-1::0;;;;39729:388:2::2;-1:-1:-1::0;;;39729:388:2;;;::::2;::::0;;;::::2;;::::0;;40141:141:::2;::::0;;;;::::2;::::0;;-1:-1:-1;;;;;40141:141:2;::::2;::::0;;;::::2;::::0;::::2;;::::0;;::::2;::::0;;;40128:10:::2;:154:::0;;-1:-1:-1;;40128:154:2::2;::::0;::::2;::::0;::::2;-1:-1:-1::0;;;40128:154:2;::::2;;::::0;;40300:59;;;;;;;::::2;::::0;;;;;;::::2;::::0;;;;;;;;;::::2;-1:-1:-1::0;;4147:5:2;:21;;-1:-1:-1;;;;4147:21:2;-1:-1:-1;;;4147:21:2;;;39504:863::o;3620:54::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3620:54:2;;;;;;-1:-1:-1;;;3620:54:2;;-1:-1:-1;;;;;3620:54:2;;-1:-1:-1;;;3620:54:2;;;;;;-1:-1:-1;;;;;3620:54:2;;:::o;10792:672::-;4069:5;:14;-1:-1:-1;;;4069:14:2;;;;4061:30;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;;;;4102:5;:22;;-1:-1:-1;;;;4102:22:2;;;;;-1:-1:-1;;;10976:32:2;::::1;;;-1:-1:-1::0;11075:113:2::1;:12;10976:32:::0;11151:26;11075:17:::1;:113::i;:::-;11199:5;:64:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;11199:64:2;::::1;-1:-1:-1::0;;;;11199:64:2;;::::1;::::0;;;::::1;::::0;;;11036:152;;-1:-1:-1;11278:62:2;::::1;;11274:182;;11360:96;::::0;;::::1;::::0;;::::1;::::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;11274:182;-1:-1:-1::0;;4147:5:2;:21;;-1:-1:-1;;;;4147:21:2;-1:-1:-1;;;4147:21:2;;;-1:-1:-1;10792:672:2:o;2567:27::-;;;-1:-1:-1;;;;;2567:27:2;;;-1:-1:-1;;;2567:27:2;;;;;;-1:-1:-1;;;2567:27:2;;;;;-1:-1:-1;;;2567:27:2;;;;;-1:-1:-1;;;2567:27:2;;;;;-1:-1:-1;;;2567:27:2;;;;;-1:-1:-1;;;2567:27:2;;;;:::o;19412:1265::-;4069:5;:14;19600:15;;;;-1:-1:-1;;;4069:14:2;;;;4061:30;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;;;;4102:5;:22;;-1:-1:-1;;;;4102:22:2;;;-1:-1:-1;;;;;19653:10:2;::::1;19645:19;;;::::0;::::1;;19678:17;19697::::0;19718:251:::1;19748:210;;;;;;;;19795:9;-1:-1:-1::0;;;;;19748:210:2::1;;;;;19834:9;19748:210;;;;;;19873:9;19748:210;;;;;;19917:25;19924:6;-1:-1:-1::0;;;;;19917:14:2::1;:23;:25::i;:::-;19748:210;;::::0;;19718:15:::1;:251::i;:::-;20148:6;::::0;20183::::1;::::0;19675:294;;-1:-1:-1;19675:294:2;;-1:-1:-1;19675:294:2;;-1:-1:-1;19675:294:2;;-1:-1:-1;20064:22:2::1;::::0;-1:-1:-1;20064:22:2;;-1:-1:-1;;;;;20148:6:2;;::::1;::::0;20183::::1;20204:11:::0;;20200:50:::1;;20234:16;20242:7;20234;:16::i;:::-;20217:33;;20200:50;20265:11:::0;;20261:50:::1;;20295:16;20303:7;20295;:16::i;:::-;20278:33;;20261:50;20342:10;-1:-1:-1::0;;;;;20322:50:2::1;;20373:7;20382;20391:4;;20322:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20421:1;20411:7;:11;20407:79;;;20463:16;20471:7;20463;:16::i;:::-;20432:27;:14:::0;20451:7;20432:18:::1;:27::i;:::-;:47;;20424:62;;;::::0;;-1:-1:-1;;;20424:62:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;20424:62:2;;;;;;;;;;;;;::::1;;20501:11:::0;;20497:79:::1;;20553:16;20561:7;20553;:16::i;:::-;20522:27;:14:::0;20541:7;20522:18:::1;:27::i;:::-;:47;;20514:62;;;::::0;;-1:-1:-1;;;20514:62:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;20514:62:2;;;;;;;;;;;;;::::1;;20633:9;20594:75;;20622:9;20594:75;;20611:9;-1:-1:-1::0;;;;;20594:75:2::1;;20599:10;20644:6;20652:7;20661;20594:75;;;;-1:-1:-1::0;;;;;20594:75:2::1;;;;;;-1:-1:-1::0;;;;;20594:75:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;4147:5:2;:21;;-1:-1:-1;;;;4147:21:2;-1:-1:-1;;;4147:21:2;;;-1:-1:-1;19412:1265:2;;;;-1:-1:-1;19412:1265:2;;-1:-1:-1;;;;;;;;19412:1265:2:o;2925:44::-;;;;:::o;35577:2210::-;4069:5;:14;-1:-1:-1;;;4069:14:2;;;;4061:30;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;;;;4102:5;:22;;-1:-1:-1;;;;4102:22:2;;;35764:9:::1;::::0;-1:-1:-1;;;;;35764:9:2::1;35792:14:::0;35784:28:::1;;;::::0;;-1:-1:-1;;;35784:28:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;35784:28:2;;;;;;;;;;;;;::::1;;35851:148;::::0;;::::1;::::0;::::1;::::0;;35885:6:::1;::::0;-1:-1:-1;;;;;35885:6:2;;::::1;35851:148:::0;;35914:6:::1;::::0;;;::::1;35851:148;::::0;::::1;::::0;-1:-1:-1;;;35940:3:2;::::1;;;35851:148:::0;;;;;;-1:-1:-1;35851:148:2;;;;;;;;;;;36025:50:::1;::::0;36051:7;;36071:3:::1;36025:25;:50::i;:::-;36012:10;::::0;::::1;:63:::0;36134:9:::1;::::0;::::1;::::0;36099:50:::1;::::0;36125:7;;36099:50:::1;;36145:3;36099:25;:50::i;:::-;36086:10;::::0;::::1;:63:::0;36193:12;;36160:22:::1;::::0;36185:21:::1;::::0;:7:::1;:21::i;:::-;36160:46;;36217:22;36242:21;36250:5;:12;;;36242:7;:21::i;:::-;36217:46:::0;-1:-1:-1;36280:11:2;;36276:78:::1;;36321:12:::0;;36293:61:::1;::::0;36335:9;36346:7;36293:27:::1;:61::i;:::-;36369:11:::0;;36365:78:::1;;36382:61;36410:5;:12;;;36424:9;36435:7;36382:27;:61::i;:::-;36477:10;-1:-1:-1::0;;;;;36456:52:2::1;;36509:5;:10;;;36521:5;:10;;;36533:4;;36456:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;36551:21;36575;36583:5;:12;;;36575:7;:21::i;:::-;36551:45;;36607:21;36631;36639:5;:12;;;36631:7;:21::i;:::-;36607:45;;36707:13;36673:30;36692:5;:10;;;36673:14;:18;;:30;;;;:::i;:::-;:47;;36665:62;;;::::0;;-1:-1:-1;;;36665:62:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;36665:62:2;;;;;;;;;;;;;::::1;;36780:13;36746:30;36765:5;:10;;;36746:14;:18;;:30;;;;:::i;:::-;:47;;36738:62;;;::::0;;-1:-1:-1;;;36738:62:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;36738:62:2;;;;;;;;;;;;;::::1;;36918:30:::0;;::::1;36975::::0;;::::1;37022:9:::0;;37018:337:::1;;37069:5;:17:::0;-1:-1:-1;;;37069:17:2;::::1;:22:::0;;37048:18:::1;37122:17:::0;;:44:::1;;37154:12;37146:20;;:5;:20;;;;;;37122:44;;;37142:1;37122:44;37106:60:::0;-1:-1:-1;;;;;;37185:18:2;::::1;::::0;37181:61:::1;;37205:12;:37:::0;;-1:-1:-1;;;;;37205:37:2;;::::1;::::0;::::1;;-1:-1:-1::0;;;;;;37205:37:2;;::::1;;::::0;;37181:61:::1;37281:62;37305:5;37297;:13;-1:-1:-1::0;;;37332:10:2::1;-1:-1:-1::0;;;;;37281:62:2::1;:15;:62::i;:::-;37257:20;:86:::0;;;;::::1;::::0;;-1:-1:-1;;37018:337:2::1;37369:9:::0;;37365:337:::1;;37437:1;37416:17:::0;;-1:-1:-1;;;37416:17:2;::::1;:22:::0;;;;37395:18:::1;37469:17:::0;;:44:::1;;37501:12;37493:20;;:5;:20;;;;;;37469:44;;;37489:1;37469:44;37453:60:::0;-1:-1:-1;;;;;;37532:18:2;::::1;::::0;37528:61:::1;;37552:12;:37:::0;;-1:-1:-1;;;;;;;;37552:37:2;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;;::::0;::::1;;::::0;;37528:61:::1;37628:62;37652:5;37644;:13;-1:-1:-1::0;;;37679:10:2::1;-1:-1:-1::0;;;;;37628:62:2::1;:15;:62::i;:::-;37604:20;:86:::0;;;;::::1;::::0;;-1:-1:-1;;37365:337:2::1;37719:60;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37719:60:2;::::1;::::0;37725:10:::1;::::0;37719:60:::1;::::0;;;;;;;::::1;-1:-1:-1::0;;4147:5:2;:21;;-1:-1:-1;;;;4147:21:2;-1:-1:-1;;;4147:21:2;;;-1:-1:-1;;;;;;;;;;;35577:2210:2:o;20725:1058::-;4069:5;:14;20931:15;;;;-1:-1:-1;;;4069:14:2;;;;4061:30;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;;;;4102:5;:22;;-1:-1:-1;;;;4102:22:2;;;4119:5;21122:47:::1;:9;21136:10;21148:9:::0;21159;21122:13:::1;:47::i;:::-;21211:20;::::0;::::1;::::0;21089:80;;-1:-1:-1;;;;;;21211:20:2;;::::1;21192:39:::0;;::::1;;:81;;21257:16;21192:81;;;21234:20;::::0;::::1;::::0;-1:-1:-1;;;;;21234:20:2::1;21192:81;21313:20;::::0;::::1;::::0;21182:91;;-1:-1:-1;;;;;;;;;21313:20:2;;::::1;::::0;::::1;21294:39:::0;;::::1;;:81;;21359:16;21294:81;;;21336:20;::::0;::::1;::::0;-1:-1:-1;;;21336:20:2;::::1;-1:-1:-1::0;;;;;21336:20:2::1;21294:81;21284:91:::0;-1:-1:-1;;;;;;21392:11:2;::::1;::::0;21388:145:::1;;21420:20;::::0;::::1;:31:::0;;-1:-1:-1;;;;;;21420:31:2;::::1;-1:-1:-1::0;;;;;21420:31:2;;::::1;::::0;;::::1;::::0;::::1;;::::0;;;-1:-1:-1;21494:6:2;21466:55:::1;::::0;-1:-1:-1;;;;;21494:6:2;;::::1;::::0;21502:9;;21466:55;::::1;:27;:55::i;:::-;-1:-1:-1::0;;;;;21547:11:2;::::1;::::0;21543:145:::1;;21575:20;::::0;::::1;:31:::0;;-1:-1:-1;;;;;;;;21575:31:2;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;21649:6:::1;::::0;21621:55:::1;::::0;-1:-1:-1;;;;;21649:6:2;;::::1;::::0;21657:9;;21621:55;::::1;:27;:55::i;:::-;21705:70;::::0;;-1:-1:-1;;;;;21705:70:2;::::1;::::0;;-1:-1:-1;;;;;21705:70:2;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;21713:10:::1;::::0;21705:70:::1;::::0;;;;;;;;::::1;-1:-1:-1::0;4147:5:2;:21;;-1:-1:-1;;;;4147:21:2;-1:-1:-1;;;4147:21:2;;;20725:1058;;;;-1:-1:-1;20725:1058:2;-1:-1:-1;;;;20725:1058:2:o;3516:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3516:59:2;;;;;;;;;;-1:-1:-1;;;3516:59:2;;;;:::o;3419:52::-;;;;;;;;;;;;;:::o;1743:43::-;;;-1:-1:-1;;;;;1743:43:2;;:::o;37840:521::-;4069:5;:14;-1:-1:-1;;;4069:14:2;;;;4061:30;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;;;;4102:5;:22;;-1:-1:-1;;;;4102:22:2;;;4119:5;4368:7;4353:31:::1;::::0;;-1:-1:-1;;;4353:31:2;;;;-1:-1:-1;;;;;4368:7:2;;::::1;::::0;4353:29:::1;::::0;:31;;::::1;::::0;::::1;::::0;;;;;;;4368:7;4353:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4353:31:2;-1:-1:-1;;;;;4339:45:2::1;:10;:45;4331:54;;;::::0;::::1;;37978:17:::2;::::0;::::2;::::0;;:62:::2;;;38016:1;38000:12;:17;;;;:39;;;;;38037:2;38021:12;:18;;;;38000:39;37977:149;;;;-1:-1:-1::0;38063:17:2::2;::::0;::::2;::::0;;:62:::2;;;38101:1;38085:12;:17;;;;:39;;;;;38122:2;38106:12;:18;;;;38085:39;37955:182;;;::::0;::::2;;38171:5;:17:::0;;38235;;;;;38219:34;::::2;38171:17;38199:54:::0;;::::2;-1:-1:-1::0;;;38199:54:2;;::::2;::::0;;::::2;;::::0;;38269:84:::2;::::0;;38171:17;;;::::2;38284:19:::0;;;;38269:84;;38305:19;;;;;;;38269:84:::2;::::0;::::2;::::0;;;::::2;::::0;;;;;;::::2;::::0;;;;;;38171:17;::::2;::::0;38269:84:::2;::::0;;;;;;;::::2;-1:-1:-1::0;;4147:5:2;:21;;-1:-1:-1;;;;4147:21:2;-1:-1:-1;;;4147:21:2;;;-1:-1:-1;37840:521:2:o;38414:1037::-;4069:5;:14;38593:15;;;;-1:-1:-1;;;4069:14:2;;;;4061:30;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;;;;4102:5;:22;;-1:-1:-1;;;;4102:22:2;;;4119:5;4368:7;4353:31:::1;::::0;;-1:-1:-1;;;4353:31:2;;;;-1:-1:-1;;;;;4368:7:2;;::::1;::::0;4353:29:::1;::::0;:31;;::::1;::::0;::::1;::::0;;;;;;;4368:7;4353:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4353:31:2;-1:-1:-1;;;;;4339:45:2::1;:10;:45;4331:54;;;::::0;::::1;;38667:12:::2;:19:::0;-1:-1:-1;;;;;38667:19:2;;::::2;38648:38:::0;;::::2;;:79;;38711:16;38648:79;;;38689:12;:19:::0;-1:-1:-1;;;;;38689:19:2::2;38648:79;38767:12;:19:::0;38638:89;;-1:-1:-1;;;;;;;;;38767:19:2;;::::2;::::0;::::2;38748:38:::0;;::::2;;:79;;38811:16;38748:79;;;38789:12;:19:::0;-1:-1:-1;;;38789:19:2;::::2;-1:-1:-1::0;;;;;38789:19:2::2;38748:79;38738:89:::0;-1:-1:-1;;;;;;38844:11:2;::::2;::::0;38840:260:::2;;38887:12;:19:::0;-1:-1:-1;;;;;38876:30:2;;::::2;38887:19:::0;::::2;38876:30;38872:45;;;-1:-1:-1::0;;38908:9:2;;;;38872:45:::2;38988:12;:30:::0;;-1:-1:-1;;;;;;38988:30:2;::::2;-1:-1:-1::0;;;;;38988:30:2;;::::2;::::0;;::::2;::::0;::::2;;::::0;;;-1:-1:-1;39061:6:2;39033:55:::2;::::0;-1:-1:-1;;;;;39061:6:2;;::::2;::::0;39069:9;;39033:55;::::2;:27;:55::i;:::-;-1:-1:-1::0;;;;;39114:11:2;::::2;::::0;39110:260:::2;;39157:12;:19:::0;-1:-1:-1;;;;;39146:30:2;;::::2;-1:-1:-1::0;;;39157:19:2;;::::2;;39146:30;39142:45;;;-1:-1:-1::0;;39178:9:2;39142:45:::2;39258:12;:30:::0;;-1:-1:-1;;;;;;;;39258:30:2;;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;;::::0;;::::2;::::0;;;::::2;::::0;;;39331:6:::2;::::0;39303:55:::2;::::0;-1:-1:-1;;;;;39331:6:2;;::::2;::::0;39339:9;;39303:55;::::2;:27;:55::i;:::-;39387:56;::::0;;-1:-1:-1;;;;;39387:56:2;;::::2;::::0;;;::::2;;::::0;::::2;::::0;;;-1:-1:-1;;;;;39387:56:2;::::2;::::0;39403:10:::2;::::0;39387:56:::2;::::0;;;;;;;;;::::2;4147:5:::0;:21;;-1:-1:-1;;;;4147:21:2;-1:-1:-1;;;4147:21:2;;;38414:1037;;;;-1:-1:-1;38414:1037:2;-1:-1:-1;;38414:1037:2:o;10050:694::-;10180:30;10225:51;10291:49;10388:348;10427:17;:15;:17::i;:::-;10463:11;;10388:348;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10493:5:2;:10;10563:9;;10591:10;:29;10388:12;;:348;;-1:-1:-1;;;;10493:10:2;;;;;-1:-1:-1;10522:22:2;-1:-1:-1;;;10522:22:2;;;;;-1:-1:-1;;;;;10563:9:2;;;;-1:-1:-1;;;;;10591:29:2;;;10639:35;-1:-1:-1;;;10639:35:2;;;;;;-1:-1:-1;;;10693:28:2;;;;;;;10388:20;:348;:::i;:::-;10368:368;;;;;;10050:694;;;;;:::o;2752:37::-;;;-1:-1:-1;;;;;2752:37:2;;;-1:-1:-1;;;2752:37:2;;;;;:::o;21831:924::-;4069:5;:14;21961:15;;;;-1:-1:-1;;;4069:14:2;;;;4061:30;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;;;;4102:5;:22;;-1:-1:-1;;;;4102:22:2;;;22109:212:::1;::::0;;::::1;::::0;::::1;::::0;;22156:10:::1;22109:212:::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;4119:5;;;;;;22079:253:::1;::::0;22109:212;;;22280:25:::1;-1:-1:-1::0;;;;;22280:14:2;::::1;:23;:25::i;:::-;22279:26;;22109:212;;::::0;;22079:15:::1;:253::i;:::-;22006:326;;;;;;22364:10;22363:11;;22345:30;;22405:10;22404:11;;22386:30;;22443:1;22433:7;:11;:26;;;;22458:1;22448:7;:11;22433:26;22429:237;;;22542:20;::::0;::::1;::::0;;-1:-1:-1;;;;;22542:20:2;;::::1;:39:::0;;::::1;22476:178:::0;::::1;-1:-1:-1::0;;;22600:20:2;;;::::1;::::0;::::1;:39:::0;::::1;22476:178:::0;;::::1;::::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;;;;22476:178:2::1;;::::0;;22429:237:::1;22683:64;::::0;;-1:-1:-1;;;;;22683:64:2;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;22688:10:::1;::::0;22683:64:::1;::::0;;;;;;;;::::1;-1:-1:-1::0;;4147:5:2;:21;;-1:-1:-1;;;;4147:21:2;-1:-1:-1;;;4147:21:2;;;-1:-1:-1;21831:924:2;;;;-1:-1:-1;21831:924:2;-1:-1:-1;;21831:924:2:o;6188:3809::-;6339:26;6380:37;6432:20;6467:35;6530:32;6541:9;6552;6530:10;:32::i;:::-;6575:31;;:::i;:::-;6617;;:::i;:::-;6702:16;;;;;;6676:23;6702:16;;;:5;:16;;;;;;;;6759;;;;;;;;;;;;7074:27;;;;7214:34;;;;7267:17;-1:-1:-1;;;7267:17:2;;;6790:509;;7015:22;;;6790:509;;;-1:-1:-1;;;;;7214:34:2;;;6957:39;;;6790:509;7175:20;-1:-1:-1;;;7175:20:2;;;6913:25;;;6790:509;;;;-1:-1:-1;;;;;7120:36:2;;;;6853:41;;;6790:509;;;;7074:27;;;;6790:509;;;;;;;6759:16;7314:31;;;;;;7646:27;;;;7786:34;;;;7839:17;-1:-1:-1;;;7839:17:2;;;7362:509;;7587:22;;;7362:509;;;-1:-1:-1;;;;;7786:34:2;;;7529:39;;;7362:509;7747:20;-1:-1:-1;;;7747:20:2;;;7485:25;;;7362:509;-1:-1:-1;;;;;7692:36:2;;;;7425:41;;;7362:509;7646:27;;;;7362:509;;;;;;;7886:31;;;;;;-1:-1:-1;;7941:27:2;;;;;;;;7963:5;7941:27;-1:-1:-1;;;;;7941:27:2;;;;-1:-1:-1;;;7941:27:2;;;;;;;;;;;;;;;;;-1:-1:-1;;;7941:27:2;;;;;;;;;;;-1:-1:-1;;;7941:27:2;;;;;;;;-1:-1:-1;;;7941:27:2;;;;;;;;;;-1:-1:-1;;;7941:27:2;;;;;;;;-1:-1:-1;;;7941:27:2;;;;;;;;;;;;;;7985:23;;;;;;7981:2009;;;8079:10;:25;;;8051:10;:25;;;:53;8167:10;:41;;;8123:10;:41;;;:85;8255:10;:25;;;8227:10;:25;;;:53;8341:10;:39;;;8299:10;:39;;;:81;8025:370;;;;;;;;;;;;;7981:2009;8431:9;8417:23;;:6;:11;;;:23;;;8413:1577;;;8457:11;8471:17;:15;:17::i;:::-;8766:11;;;;8796:23;;;;8838:9;;8866:10;:29;8968;;;;8457:31;;-1:-1:-1;8522:20:2;;;;;;8678:334;;:12;;8457:31;;8522:20;;8766:11;8796:23;-1:-1:-1;;;;;8838:9:2;;-1:-1:-1;;;;;8866:29:2;;;8914:35;-1:-1:-1;;;8914:35:2;;;;;;8678:26;:334;:::i;:::-;8503:509;;;;;;9098:10;:25;;;9070:10;:25;;;9053:14;:42;:70;9264:10;:41;;;9199:10;:41;;;9142:33;:98;:163;9359:10;:25;;;9331:10;:25;;;9324:4;:32;:60;9521:10;:39;;;9458:10;:39;;;9403:31;:94;:157;9027:548;;;;;;;;;;;;;;;;;8413:1577;9662:10;:25;;;9634:10;:25;;;:53;9750:10;:41;;;9706:10;:41;;;:85;9838:10;:25;;;9810:10;:25;;;:53;9924:10;:39;;;9882:10;:39;;;:81;9608:370;;;;;;;;;;;6188:3809;;;;;;;;:::o;1339:31::-;;;-1:-1:-1;;;;;1339:31:2;;:::o;1658:33::-;;;;-1:-1:-1;;;1658:33:2;;;;;:::o;1500:30::-;;;-1:-1:-1;;;;;1500:30:2;;:::o;1580:26::-;;;-1:-1:-1;;;1580:26:2;;;;;:::o;2836:44::-;;;;:::o;3325:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3325:49:2;;;-1:-1:-1;;;3325:49:2;;;;;;;;;;;;;;-1:-1:-1;;;;;3325:49:2;;-1:-1:-1;;;3325:49:2;;;;;-1:-1:-1;;;3325:49:2;;;;;;-1:-1:-1;;;;;3325:49:2;;:::o;11569:639::-;11648:5;:18;-1:-1:-1;;;;;11648:18:2;:23;11640:38;;;;;-1:-1:-1;;;11640:38:2;;;;;;;;;;;;-1:-1:-1;;;11640:38:2;;;;;;;;;;;;;;;11691:10;11704:41;11732:12;11704:27;:41::i;:::-;11691:54;;11759:18;11779:22;11805:42;11829:17;:15;:17::i;:::-;11805:12;;:23;:42::i;:::-;11868:284;;;;;;;;-1:-1:-1;;;;;11868:284:2;;;;;;;;;;;;;;;;-1:-1:-1;11868:284:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12136:4;11868:284;;;;;;;;11860:5;:292;;-1:-1:-1;;;;;;;;;11860:292:2;;;;;-1:-1:-1;;;;11860:292:2;-1:-1:-1;;;11860:292:2;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11860:292:2;;;;;;;-1:-1:-1;;;;11860:292:2;-1:-1:-1;;;11860:292:2;;;;;;;;;;;;;12170:30;;;;;;;;;;;;;11868:284;;-1:-1:-1;11868:284:2;;-1:-1:-1;12170:30:2;;;;;;;;;11569:639;;;;:::o;5261:140::-;5352:15;5261:140;:::o;2236:1956:27:-;2425:10;2437:16;2466;2492:11;2485:18;;:4;:18;;;;;;;;2466:37;;2525:1;2518:4;:8;;;:35;;;;;2537:11;2530:18;;:4;:18;;;;;;;;:23;;;;2518:35;2514:53;;;-1:-1:-1;;2555:12:27;2514:53;2619:3;2615:1570;;;2640:13;2655:12;2671:20;2680:10;2671:8;:20::i;:::-;2810:1;2854:13;;;;;2774:12;2854:13;;;;;;;;;;;2810:11;;;;;;;2789:33;;-1:-1:-1;;2789:33:27;2854:20;;;3024:11;;;;-1:-1:-1;2639:52:27;;-1:-1:-1;2639:52:27;;-1:-1:-1;2789:33:27;3024:11;3168:172;;3329:11;3318:6;3312:13;;3299:10;:26;3298:42;3168:172;;;3267:11;3228:34;3255:6;3228:26;:34::i;:::-;3219:6;:43;3213:50;;3200:10;:63;3199:79;3168:172;3161:179;;2615:1570;;;;;;;3472:13;3487:12;3503:24;3512:10;3525:1;3512:14;3503:8;:24::i;:::-;3471:56;;;;3601:12;3634:1;3624:6;3619:11;;:1;:11;;3618:17;3616:20;3601:35;;3651:14;3684:4;3668;:13;3673:7;3668:13;;;;;;;;;;;;;;;;:20;3651:37;;3830:6;3840:1;3830:11;;3816:25;;3974:11;:199;;4162:11;4151:6;4133:15;:24;4127:31;;4110:10;4123:1;4110:14;:48;4109:64;3974:199;;;4078:11;4067:6;4029:35;4057:6;4029:27;:35::i;:::-;:44;4023:51;;4006:10;4019:1;4006:14;:68;4005:84;3974:199;3967:206;;2615:1570;;;;;2236:1956;;;;;;;;:::o;1384:2611:28:-;1447:20;1480:15;1505:1;1498:4;:8;;;:57;;1549:4;1542:12;;1498:57;;;1525:4;1518:12;;1517:13;;1498:57;1480:75;-1:-1:-1;654:9:28;1574:28;;;1566:42;;;;;-1:-1:-1;;;1566:42:28;;;;;;;;;;;;-1:-1:-1;;;1566:42:28;;;;;;;;;;;;;;;1621:13;1647:3;1637:13;;:93;;-1:-1:-1;;;1637:93:28;;;1658:34;1637:93;1621:109;;;-1:-1:-1;1755:3:28;1745:13;;:18;1741:83;;1782:34;1774:42;1821:3;1773:51;1741:83;1849:3;1839:13;;:18;1835:83;;1876:34;1868:42;1915:3;1867:51;1835:83;1943:3;1933:13;;:18;1929:83;;1970:34;1962:42;2009:3;1961:51;1929:83;2037:4;2027:14;;:19;2023:84;;2065:34;2057:42;2104:3;2056:51;2023:84;2132:4;2122:14;;:19;2118:84;;2160:34;2152:42;2199:3;2151:51;2118:84;2227:4;2217:14;;:19;2213:84;;2255:34;2247:42;2294:3;2246:51;2213:84;2322:4;2312:14;;:19;2308:84;;2350:34;2342:42;2389:3;2341:51;2308:84;2417:5;2407:15;;:20;2403:85;;2446:34;2438:42;2485:3;2437:51;2403:85;2513:5;2503:15;;:20;2499:85;;2542:34;2534:42;2581:3;2533:51;2499:85;2609:5;2599:15;;:20;2595:85;;2638:34;2630:42;2677:3;2629:51;2595:85;2705:5;2695:15;;:20;2691:85;;2734:34;2726:42;2773:3;2725:51;2691:85;2801:6;2791:16;;:21;2787:86;;2831:34;2823:42;2870:3;2822:51;2787:86;2898:6;2888:16;;:21;2884:86;;2928:34;2920:42;2967:3;2919:51;2884:86;2995:6;2985:16;;:21;2981:86;;3025:34;3017:42;3064:3;3016:51;2981:86;3092:6;3082:16;;:21;3078:86;;3122:34;3114:42;3161:3;3113:51;3078:86;3189:7;3179:17;;:22;3175:86;;3220:33;3212:41;3258:3;3211:50;3175:86;3286:7;3276:17;;:22;3272:85;;3317:32;3309:40;3354:3;3308:49;3272:85;3382:7;3372:17;;:22;3368:83;;3413:30;3405:38;3448:3;3404:47;3368:83;3476:7;3466:17;;:22;3462:78;;3507:25;3499:33;3537:3;3498:42;3462:78;3564:1;3557:4;:8;;;3553:47;;;3595:5;-1:-1:-1;;3575:25:28;;;;;;3567:33;;3553:47;3964:7;3955:5;:17;:22;:30;;3984:1;3955:30;;;3980:1;3955:30;3938:48;;3948:2;3939:5;:11;;3938:48;3915:72;;1384:2611;;;;;:::o;1411:3315:25:-;1668:24;;;;-1:-1:-1;;;;;1833:41:25;;;;;;;;1900:20;;;;;;1933:1379;;1961:30;1994:61;2018:15;2042:7;2036:3;:13;1994:61;;2051:3;1994:15;:61::i;:::-;1961:94;;2081:10;:224;;2218:87;2248:19;2269:18;2289:9;2300:4;2218:29;:87::i;:::-;2081:224;;;2111:87;2141:18;2161:19;2182:9;2193:4;2111:29;:87::i;:::-;2070:235;;2350:8;2324:22;:34;2320:343;;2379:18;2360:37;;2320:343;;;2453:210;2515:19;2557:9;2589:22;2634:10;2453:39;:210::i;:::-;2434:229;;2320:343;1933:1379;;;;2708:10;:226;;2846:88;2876:19;2897:18;2917:9;2928:5;2846:29;:88::i;:::-;2708:226;;;2738:88;2768:18;2788:19;2809:9;2820:5;2738:29;:88::i;:::-;2696:238;;2982:9;2962:15;2961:16;;2953:38;2949:351;;3012:18;2993:37;;2949:351;;;3086:214;3149:19;3191:9;3232:15;3231:16;;3271:10;3086:40;:214::i;:::-;3067:233;;2949:351;-1:-1:-1;;;;;3335:38:25;;;;;;;3427:746;;;;3469:3;:14;;;;;3476:7;3469:14;:147;;3531:85;3561:16;3579:19;3600:9;3611:4;3531:29;:85::i;:::-;3469:147;;;3503:8;3469:147;3458:158;;3643:3;:15;;;;;3651:7;3650:8;3643:15;:150;;3707:86;3737:16;3755:19;3776:9;3787:5;3707:29;:86::i;:::-;3643:150;;;3678:9;3643:150;3631:162;;3427:746;;;3837:3;:14;;;;;3844:7;3837:14;:147;;3899:85;3929:19;3950:16;3968:9;3979:4;3899:29;:85::i;:::-;3837:147;;;3871:8;3837:147;3826:158;;4011:3;:15;;;;;4019:7;4018:8;4011:15;:150;;4075:86;4105:19;4126:16;4144:9;4155:5;4075:29;:86::i;:::-;4011:150;;;4046:9;4011:150;3999:162;;3427:746;4266:7;4265:8;:49;;;;;4298:15;4297:16;;4277:9;:37;4265:49;4261:119;;;4352:15;4351:16;;4331:37;;4261:119;4396:7;:49;;;;;4427:18;-1:-1:-1;;;;;4407:38:25;:16;-1:-1:-1;;;;;4407:38:25;;;4396:49;4392:327;;;4595:8;4576:15;4568:35;4556:47;;4392:327;;;4648:59;4674:8;4684:7;4648:59;;4699:7;4693:3;:13;4648:59;;:25;:59::i;:::-;4636:71;;4392:327;1411:3315;;;;;;;;;;;;;:::o;947:124:23:-;999:8;-1:-1:-1;;;1028:1:23;:10;1020:19;;;;;;-1:-1:-1;1061:1:23;947:124::o;1615:122:20:-;1705:5;;;1700:16;;;;1671:8;1721:6;;;1700:28;1692:37;;;;;;1615:122;;;;:::o;1310:::-;1400:5;;;1395:16;;;;1366:8;1416:6;;;1395:28;1387:37;;;;;762:3868:18;878:14;;;-1:-1:-1;;1394:1:18;1391;1384:20;1427:9;;;;-1:-1:-1;1479:13:18;;;1463:14;;;;1459:34;;-1:-1:-1;1579:10:18;1575:185;;1628:1;1614:11;:15;1606:24;;;;;;-1:-1:-1;1683:23:18;;;;-1:-1:-1;1735:13:18;;1575:185;1891:5;1877:11;:19;1869:28;;;;;;2182:17;2260:11;2257:1;2254;2247:25;2623:12;2638;;;:26;;2761:22;;;;;3584:1;3565;:15;;3564:21;;3815:17;;;3811:21;;3804:28;3874:17;;;3870:21;;3863:28;3934:17;;;3930:21;;3923:28;3994:17;;;3990:21;;3983:28;4054:17;;;4050:21;;4043:28;4115:17;;;4111:21;;;4104:28;3144:12;;;;3140:23;;;3165:1;3136:31;2393:20;;;2382:32;;;3197:12;;;;2437:21;;;;2894:16;;;;3188:21;;;;4587:11;;;;;-1:-1:-1;;762:3868:18;;;;;;:::o;15841:3314:21:-;16207:20;;;16369:15;;;16365:573;;16401:23;16427:4;16432:5;16427:11;;;;;;;;;16401:37;;;;;;;;16427:11;;;;;;;;;16401:37;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16401:37:21;;-1:-1:-1;;;;;16401:37:21;;;;;;;;-1:-1:-1;;;16401:37:21;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16401:37:21;;;;;;;-1:-1:-1;16457:27:21;;;16453:286;;16510:229;16542:4;16569;16596;16623:9;16655:18;16696:24;16510:9;:229::i;:::-;16503:236;;16453:286;16780:4;:19;;;16818:4;:38;;;16875:4;:36;;;16754:172;;;;;;;;;16365:573;16966:17;;;16950:13;;17097:297;17142:4;16966;:17;17213:4;17236:5;17260:9;17288:18;17325:24;17368:11;17097:26;:297::i;:::-;16996:398;;;;17421:10;:25;;;17411:35;;:6;:35;;;17407:1741;;;17532:10;:25;;;17576:10;:44;;;17639:10;:42;;;17506:190;;;;;;;;;;;17407:1741;17728:24;;17718:34;;;;;;;17714:1434;;;17839:9;:24;;;17882:9;:43;;;17944:9;:41;;;17813:187;;;;;;;;;;;17714:1434;18143:25;;18099:24;;18357:25;;;;;18330:24;;;;18099:69;;;;;18204:34;;;18328:139;;;;;18329:102;;;;18330:52;18329:102;;;;;;;;18328:139;18279:10;:25;;;:188;18795:20;18588:227;;18780:11;18589:202;;18706:10;:44;;;18627:9;:43;;;:123;-1:-1:-1;;;;;18589:188:21;:202;18588:227;;;;;;18486:10;:44;;;:352;19110:11;18923:198;;19065:20;18924:161;;18994:10;:42;;;18925:9;:41;;;:111;-1:-1:-1;;;;;18924:161:21;;;;;;;18923:198;18857:10;:42;;;:264;18253:883;;;;;;;;;;;15841:3314;;;;;;;;;;;;;;:::o;9387:1017:26:-;9789:10;;;;;;9732:19;9789:10;;;;;;;;;;;;9862:26;;;;;9839:49;;;9810:78;;;9951:26;;;;;9928:49;;;9899:78;;;10062:35;;;;;10220:19;-1:-1:-1;;;;;;;;10062:35:26;;;;;;10026:71;;;9988:109;;;;;;;;;;;;10154:26;;;;10137:43;;;10108:72;;;;;-1:-1:-1;;10108:72:26;;;;;;;10220:19;;;;;10213:26;;;10191:48;;;;;;;;;;;;;;;10320:33;;;;;-1:-1:-1;;;;;10320:33:26;;;10286:67;;;10250:103;;;-1:-1:-1;;;;;;10250:103:26;;;;;;;;;;10379:17;-1:-1:-1;;;10379:17:26;;;;;9387:1017::o;392:242:19:-;454:9;484:1;480;:5;;;476:151;;;534:1;-1:-1:-1;;;;;510:25:19;528:1;527:2;;515:1;:15;511:19;;;-1:-1:-1;;;;;510:25:19;;502:40;;;;;-1:-1:-1;;;502:40:19;;;;;;;;;;;;-1:-1:-1;;;502:40:19;;;;;;;;;;;;;;;476:151;;;607:1;-1:-1:-1;;;;;583:25:19;600:1;588;:14;584:18;;;-1:-1:-1;;;;;583:25:19;;;575:40;;;;;-1:-1:-1;;;575:40:19;;;;;;;;;;;;-1:-1:-1;;;575:40:19;;;;;;;;;;;;;;4421:4424:28;4494:10;837;-1:-1:-1;;;;;4625:30:28;;;;;;:63;;-1:-1:-1;1019:49:28;-1:-1:-1;;;;;4659:29:28;;;4625:63;4617:77;;;;;-1:-1:-1;;;4617:77:28;;;;;;;;;;;;-1:-1:-1;;;4617:77:28;;;;;;;;;;;;;;;4721:27;4746:2;4721:27;;;;-1:-1:-1;;;;;4857:41:28;;4854:1;4850:49;4949:9;;;5025:18;5019:25;;5016:1;5012:33;5095:9;;;5171:10;5165:17;;5162:1;5158:25;5233:9;;;5309:6;5303:13;;5300:1;5296:21;5367:9;;;5443:4;5437:11;;5434:1;5430:19;;;5499:9;;;5575:3;5569:10;;5566:1;5562:18;5630:9;;;5700:10;;;5697:1;5693:18;;;5761:9;;;;5824:10;;;5066;;5204;;;5338;;;5470;5601;;;5732;5855;5899:3;5892:10;;5888:80;;5924:3;5918;:9;5908:5;:20;;5904:24;;5888:80;;;5964:3;5958;:9;5948:5;:20;;5944:24;;5888:80;6072:9;;;6067:3;6063:19;;;6105:11;;;;6179:9;;;;6247;;6238:19;;;6280:11;;;6354:9;6422;;6413:19;;;6455:11;;;6529:9;6597;;6588:19;;;6630:11;;;6704:9;6772;;6763:19;;;6805:11;;;6879:9;6947;;6938:19;;;6980:11;;;7054:9;7122;;7113:19;;;7155:11;;;7229:9;7297;;7288:19;;;7330:11;;;7404:9;7472;;7463:19;;;7505:11;;;7579:9;7647;;7638:19;;;7680:11;;;7754:9;7822;;7813:19;;;7855:11;;;7929:9;7997;;7988:19;;;8030:11;;;8104:9;8172;;8163:19;;;8205:11;;;;8279:9;;;;8347;;8338:19;;;;;6072:9;-1:-1:-1;;5997:17:28;;6019:2;5996:25;6149:10;;;;;;;6139:21;6324:10;;;;;;;6314:21;;;;6499:10;;;;;;;6489:21;;;;6674:10;;;;;;;6664:21;;;;6849:10;;;;;;;6839:21;;;;7024:10;;;;;;;7014:21;;;;7199:10;;;;;;;7189:21;7374:10;;;;;;;7364:21;7549:10;;;;;;;7539:21;7724:10;;;;;;;7714:21;7899:10;;;;;;;7889:21;8074:10;;;;;;;8064:21;8249:10;;;;;;;8239:21;8424:10;;;;;;;8414:21;8489:24;8481:32;;-1:-1:-1;;8567:53:28;;6011:3;8566:62;;;;8678:39;8662:55;;8661:64;;8746:17;;;;;;;;;:91;;8806:12;-1:-1:-1;;;;;8776:42:28;:26;8795:6;8776:18;:26::i;:::-;-1:-1:-1;;;;;8776:42:28;;;:61;;8830:7;8776:61;;;8821:6;8776:61;8746:91;;;8766:7;8746:91;8739:98;4421:4424;-1:-1:-1;;;;;;;;;4421:4424:28:o;6414:1139:21:-;6741:19;6762:25;6800:23;6826:4;6831:5;6826:11;;;;;;;;;6800:37;;;;;;;;6826:11;;;;;;;;;6800:37;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6800:37:21;;-1:-1:-1;;;;;6800:37:21;;;;;;;;-1:-1:-1;;;6800:37:21;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6800:37:21;;;;;;;-1:-1:-1;6930:37:21;;;6926:70;;;6977:5;6984:11;6969:27;;;;;;;6926:70;7100:11;7082:29;;:15;:29;;;:59;;;;;7139:1;7125:11;:15;7115:26;;:5;:26;;;7082:59;7078:193;;;7179:15;7158:36;;7078:193;;;7248:11;7227:32;;7078:193;7312:18;7298:32;;7299:5;7307:1;7299:9;7298:32;;;;;;;;7283:47;;7362:183;7386:4;7405:14;7434:4;7453:9;7477:18;7510:24;7362:9;:183::i;:::-;7341:4;7346:12;7341:18;;;;;;;;;:204;;:18;;;;;;;;;:204;;;;;;;;;;;;;;-1:-1:-1;;7341:204:21;;;;;;;;;;;-1:-1:-1;;7341:204:21;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;7341:204:21;;;;;;;;;;;;;-1:-1:-1;;;7341:204:21;;;;;;;;;;;;;;;;;;-1:-1:-1;7341:204:21;;;;;-1:-1:-1;;;;;;7341:204:21;-1:-1:-1;;;;;7341:204:21;;;;;;;;;-1:-1:-1;6414:1139:21;;;;;;;;;;;;;:::o;615:347:29:-;794:66;;;-1:-1:-1;;;;;794:66:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;794:66:29;;;769:102;;;;734:12;;;;769:10;;;;794:66;769:102;;;794:66;769:102;;794:66;769:102;;;;;;;;;;-1:-1:-1;;769:102:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;733:138;;;;890:7;:57;;;;-1:-1:-1;902:11:29;;:16;;:44;;;933:4;922:24;;;;;;;;;;;;;;;-1:-1:-1;922:24:29;902:44;882:72;;;;;-1:-1:-1;;;882:72:29;;;;;;;;;;;;-1:-1:-1;;;882:72:29;;;;;;;;;;;;;;;615:347;;;;;:::o;5588:324:2:-;5729:71;;;5794:4;5729:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5729:71:2;;;5698:113;;;;5642:7;;;;;;-1:-1:-1;;;;;5698:16:2;;;5729:71;;5698:113;;;;5729:71;5698:113;;5729:71;5698:113;;;;;;;;;;-1:-1:-1;;5698:113:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5662:149;;;;5830:7;:28;;;;;5856:2;5841:4;:11;:17;;5830:28;5822:37;;;;;;5888:4;5877:27;;;;;;;;;;;;;;;-1:-1:-1;5877:27:2;;-1:-1:-1;;;5588:324:2;;;;:::o;445:113:20:-;538:5;;;533:16;;;;525:25;;;;;2461:369:26;2545:7;;2617:11;2582:31;;;;-1:-1:-1;;2582:31:26;;;;;;2581:47;;-1:-1:-1;2639:13:26;2691:11;2656:31;;;;654:9:28;2656:31:26;;;;;;2655:47;2639:63;;2713:15;2760:11;2738:33;;2749:7;2739;:17;2738:33;;;;;;;;2775:1;2731:45;2713:63;;2814:8;2794:28;;-1:-1:-1;;;;;2794:28:26;;;;;;;;;2461:369;-1:-1:-1;;;;;2461:369:26:o;7939:561:21:-;8067:6;8104:1;8094:7;:11;;;8086:25;;;;;-1:-1:-1;;;8086:25:21;;;;;;;;;;;;-1:-1:-1;;;8086:25:21;;;;;;;;;;;;;;;8219:7;8211:15;;:4;:15;;;8207:35;;-1:-1:-1;8235:7:21;8228:14;;8207:35;8420:7;8404:66;8433:4;8429:8;;:1;:8;;;8404:66;;;8469:1;8444:4;8449:1;8444:7;;;;;;;;;;;;:26;;-1:-1:-1;;8444:26:21;;;;;;;;;;;;-1:-1:-1;8439:3:21;8404:66;;;-1:-1:-1;8488:4:21;;7939:561;-1:-1:-1;;;7939:561:21:o;668:109:23:-;767:1;748:20;;;;;;740:29;;;;;12974:2965:2;13084:30;13129:14;13158;13200:46;13211:6;:16;;;13229:6;:16;;;13200:10;:46::i;:::-;13259:27;;;;;;;;13281:5;13259:27;-1:-1:-1;;;;;13259:27:2;;;;-1:-1:-1;;;13259:27:2;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13259:27:2;;;;;;;;-1:-1:-1;;;13259:27:2;;;;;;;;;;;;-1:-1:-1;;;13259:27:2;;;;;;;;;;-1:-1:-1;;;13259:27:2;;;;;;;;-1:-1:-1;;;13259:27:2;;;;;;;;;;;;13370:12;;13397:16;;;;13428;;;;13459:21;;;;13259:27;;13340:177;;13370:12;;13397:16;;13428;;13459:21;13340:15;:177::i;:::-;13329:188;;13534:6;:21;;;:26;;13559:1;13534:26;13530:2402;;13595:6;:16;;;13581:30;;:6;:11;;;:30;;;13577:2344;;;13873:228;13925:45;13953:6;:16;;;13925:27;:45::i;:::-;13993;14021:6;:16;;;13993:27;:45::i;:::-;14061:6;:21;;;13873:29;:228::i;:::-;13863:238;;13577:2344;;;14141:6;:16;;;14127:30;;:6;:11;;;:30;;;14123:1798;;;14264:9;;14464:23;;;;-1:-1:-1;;;;;14264:9:2;;;;14423:413;;14510:17;:15;:17::i;:::-;14550:11;;;;14622:10;:29;14732;;;;14784:33;;;;14423:12;;:413;;14550:11;14584:15;;-1:-1:-1;;;;;14622:29:2;;;14674:35;-1:-1:-1;;;14674:35:2;;;;;;14423:18;:413;:::i;:::-;14367:5;14366:470;;-1:-1:-1;;;;14366:470:2;-1:-1:-1;;;14366:470:2;;;;;;-1:-1:-1;;;;14366:470:2;-1:-1:-1;;;14366:470:2;;;;;;;;;;;14919:19;;14989:16;;;;14867:202;;14919:19;14961:45;;:27;:45::i;:::-;15029:6;:21;;;14867:29;:202::i;:::-;14857:212;;15098:202;15150:45;15178:6;:16;;;15150:27;:45::i;:::-;15218:19;;15260:21;;;;15098:29;:202::i;:::-;15088:212;;15333:62;15356:15;15373:6;:21;;;15333:22;:62::i;:::-;15321:9;:74;;-1:-1:-1;;;;;;15321:74:2;-1:-1:-1;;;;;15321:74:2;;;;;;;;;;-1:-1:-1;14123:1798:2;;;15677:228;15729:45;15757:6;:16;;;15729:27;:45::i;:::-;15797;15825:6;:16;;;15797:27;:45::i;:::-;15865:6;:21;;;15677:29;:228::i;:::-;15667:238;;14123:1798;12974:2965;;;;;;:::o;4919:325:18:-;5045:14;5081:25;5088:1;5091;5094:11;5081:6;:25::i;:::-;5072:34;;5149:1;5134:11;5121:25;;;;;5131:1;5128;5121:25;:29;5117:120;;;-1:-1:-1;;5175:6:18;:26;5167:35;;;;;;5217:8;;4919:325;;;;;:::o;1282:291:22:-;1518:45;;;;;;;;-1:-1:-1;;1518:45:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1508:56;;;;;;;;;-1:-1:-1;1503:62:22;;;;;;;;;1282:291::o;20288:1360:21:-;20658:30;20703:51;20769:49;20868:1;20854:11;:15;;;20846:29;;;;;-1:-1:-1;;;20846:29:21;;;;;;;;;;;;-1:-1:-1;;;20846:29:21;;;;;;;;;;;;;;;20918:11;:18;20906:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20906:31:21;;20888:49;;20999:11;:18;20985:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20985:33:21;;20948:70;;21078:11;:18;21064:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21064:33:21;;21029:68;;21113:9;21108:533;21132:11;:18;21128:1;:22;21108:533;;;21337:292;21369:4;21392;21415:11;21427:1;21415:14;;;;;;;;;;;;;;21448:4;21471:5;21495:9;21523:18;21560:24;21603:11;21337:13;:292::i;:::-;21191:15;21207:1;21191:18;;;;;;;;;;;;;21228:34;21263:1;21228:37;;;;;;;;;;;;;21284:32;21317:1;21284:35;;;;;;;;-1:-1:-1;;;;;21172:457:21;;;21284:35;;;;;;;;;;;21172:457;;;;-1:-1:-1;;;;;21172:457:21;;;;;;;;;;;;;;21152:3;;21108:533;;;;20288:1360;;;;;;;;;;;;;:::o;4900:237:2:-;4998:9;4986:21;;:9;:21;;;4978:37;;;;;-1:-1:-1;;;4978:37:2;;;;;;;;;;;;-1:-1:-1;;;4978:37:2;;;;;;;;;;;;;;;-1:-1:-1;;5034:30:2;;;;;;5026:46;;;;;-1:-1:-1;;;5026:46:2;;;;;;;;;;;;-1:-1:-1;;;5026:46:2;;;;;;;;;;;;;;;654:9:28;5091:30:2;;;;;;5083:46;;;;;-1:-1:-1;;;5083:46:2;;;;;;;;;;;;-1:-1:-1;;;5083:46:2;;;;;;;;;;;;;;;4900:237;;:::o;4616:429:21:-;4790:223;;;;;;;;;;;;;;;-1:-1:-1;4790:223:21;;;;;;;;;;;;4948:4;4790:223;;;;;;;;;;;;;;4780:233;;-1:-1:-1;;4780:233:21;;;;;;;-1:-1:-1;;;4780:233:21;;;;;;;;-1:-1:-1;;;;;;4780:233:21;;;4948:4;;;4616:429::o;706:163:27:-;814:9;;822:1;814:9;;;;857:3;850:10;;;;706:163::o;683:763:15:-;745:7;777:1;773;:5;765:14;;;;;;-1:-1:-1;;;796:1:15;:40;792:105;;859:3;853:9;;;;877:8;792:105;916:19;911:1;:24;907:87;;958:2;952:8;;;;975:7;907:87;1013:11;1008:1;:16;1004:79;;1047:2;1041:8;;;;1064:7;1004:79;1102:7;1097:1;:12;1093:75;;1132:2;1126:8;;;;1149:7;1093:75;1187:5;1182:1;:10;1178:71;;1215:1;1209:7;;;;1231:6;1178:71;1268:4;1263:1;:9;1259:70;;1295:1;1289:7;;;;1311:6;1259:70;1348:3;1343:1;:8;1339:69;;1374:1;1368:7;;;;1390:6;1339:69;1427:3;1422:1;:8;1418:20;;1437:1;1432:6;683:763;;;:::o;1945:934::-;2008:7;2040:1;2036;:5;2028:14;;;;;;-1:-1:-1;2059:3:15;-1:-1:-1;;;;;2077:21:15;;:25;2073:108;;-1:-1:-1;;2119:8:15;2073:108;;;2166:3;2160:9;;;;;2073:108;2199:16;2195:20;;:24;2191:105;;-1:-1:-1;;2236:7:15;2191:105;;;2282:2;2276:8;;;;;2191:105;2314:16;2310:20;;:24;2306:105;;-1:-1:-1;;2351:7:15;2306:105;;;2397:2;2391:8;;;;;2306:105;2429:16;2425:20;;:24;2421:105;;-1:-1:-1;;2466:7:15;2421:105;;;2512:2;2506:8;;;;;2421:105;2544:15;2540:19;;:23;2536:102;;-1:-1:-1;;2580:6:15;2536:102;;;2625:1;2619:7;;;;;2536:102;2656:3;2652:7;;:11;2648:90;;-1:-1:-1;;2680:6:15;2648:90;;;2725:1;2719:7;;;;;2648:90;2756:3;2752:7;;:11;2748:90;;-1:-1:-1;;2780:6:15;2748:90;;;2825:1;2819:7;;;;;2748:90;2856:3;2852:7;;:11;2848:23;;-1:-1:-1;;2865:6:15;1945:934;;;:::o;8842:544:24:-;9012:15;9060:13;-1:-1:-1;;;;;9044:29:24;:13;-1:-1:-1;;;;;9044:29:24;;9040:98;;;9109:13;;9124;9040:98;9171:7;:207;;9303:75;9319:9;-1:-1:-1;;;;;9303:75:24;9346:13;9330;:29;-1:-1:-1;;;;;9303:75:24;-1:-1:-1;;;9303:15:24;:75::i;:::-;9171:207;;;9198:85;9224:9;-1:-1:-1;;;;;9198:85:24;9251:13;9235;:29;-1:-1:-1;;;;;9198:85:24;-1:-1:-1;;;9198:25:24;:85::i;:::-;9151:227;;8842:544;;;;;;;:::o;7579:799::-;7749:15;7797:13;-1:-1:-1;;;;;7781:29:24;:13;-1:-1:-1;;;;;7781:29:24;;7777:98;;;7846:13;;7861;7777:98;7909:45;316:2:17;7909:45:24;;;;-1:-1:-1;;;;;7986:29:24;;;7965:50;;;8036:17;;8028:26;;;;;;8087:7;:283;;8357:13;-1:-1:-1;;;;;8300:70:24;:54;8316:10;8328;8340:13;-1:-1:-1;;;;;8300:54:24;:15;:54::i;:::-;:70;;;;;;8087:283;;;8114:166;8161:64;8187:10;8199;8211:13;-1:-1:-1;;;;;8161:64:24;:25;:64::i;:::-;8248:13;-1:-1:-1;;;;;8114:166:24;:24;:166::i;:::-;8067:303;7579:799;-1:-1:-1;;;;;;;7579:799:24:o;5338:564::-;5511:16;5559:1;5548:8;-1:-1:-1;;;;;5548:12:24;;5540:21;;;;;;5592:1;5580:9;-1:-1:-1;;;;;5580:13:24;;5572:22;;;;;;5694:10;:200;;5818:76;5858:8;5868:9;5879:8;5889:4;5818:39;:76::i;5694:200::-;5724:74;5762:8;5772:9;5783:8;5793:4;5724:37;:74::i;6457:564::-;6632:16;6680:1;6669:8;-1:-1:-1;;;;;6669:12:24;;6661:21;;;;;;6713:1;6701:9;-1:-1:-1;;;;;6701:13:24;;6693:22;;;;;;6809:10;:204;;6937:76;6975:8;6985:9;6996;7007:5;6937:37;:76::i;6809:204::-;6839:78;6879:8;6889:9;6900;6911:5;6839:39;:78::i;2208:1950:21:-;2450:18;;:::i;:::-;2513:19;;2496:36;;-1:-1:-1;;;;;2555:13:21;;:29;;2583:1;2555:29;;;2571:9;2555:29;2543:41;-1:-1:-1;3204:31:21;3256:16;3238:15;:34;:280;;3332:15;3305:24;:42;;;:213;;3513:5;3305:213;;;3391:4;:19;;;3363:47;;:24;:47;;;;:134;;3478:19;;3451:46;;3363:134;;;3430:1;3363:134;3238:280;;;3288:1;3238:280;3204:314;;3549:601;;;;;;;;3596:14;3549:601;;;;;;3681:5;3667:19;;3673:4;3667:11;;:19;3645:4;:19;;;:41;3549:601;;;;;;3851:9;-1:-1:-1;;;;;3825:35:21;3844:3;3834:5;3826:14;;-1:-1:-1;;;;;3826:21:21;;;-1:-1:-1;;;;;3825:35:21;;;;;;;3740:4;:60;;;:121;-1:-1:-1;;;;;3549:601:21;;;;;3893:4;3549:601;;;;;;4124:9;-1:-1:-1;;;;;4032:101:21;4096:24;4033:87;;4065:2;4042:18;-1:-1:-1;;;;;4034:27:21;-1:-1:-1;;;;;4034:33:21;;;4033:87;-1:-1:-1;;;;;4032:101:21;;;;;;;3949:4;:58;;;:185;-1:-1:-1;;;;;3549:601:21;;;;3529:621;;;;2208:1950;;;;;;;;:::o;12611:1848::-;12971:29;;:::i;:::-;13002:28;;:::i;:::-;13125:4;13130:5;13125:11;;;;;;;;;13112:24;;;;;;;;13125:11;;;;;;;;;13112:24;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13112:24:21;;-1:-1:-1;;;;;13112:24:21;;;;;;;;-1:-1:-1;;;13112:24:21;;;;;;;;;;;;;-1:-1:-1;;;;;13112:24:21;;;;;;-1:-1:-1;13254:44:21;;13258:4;;13291:6;13254:3;:44::i;:::-;13250:731;;;13348:6;13319:35;;:10;:25;;;:35;;;13315:655;;;13484:30;;13315:655;13637:10;13670:265;13706:10;13743:6;13776:4;13807:9;13843:18;13888:24;13670:9;:265::i;:::-;13607:347;;;;;;13315:655;14060:4;14079:11;14065:25;;14066:5;14074:1;14066:9;14065:25;;;;;;;;14060:31;;;;;;;;;14047:44;;;;;;;;14060:31;;;;;;;;;14047:44;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14047:44:21;;-1:-1:-1;;;;;14047:44:21;;;;;;;;-1:-1:-1;;;14047:44:21;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14047:44:21;;;;;;-1:-1:-1;14102:49:21;;14131:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14131:20:21;;-1:-1:-1;;;;;14131:20:21;;;;;;;;-1:-1:-1;;;14131:20:21;;;;;;;;;;;;;;;-1:-1:-1;;;;;14131:20:21;;;;;;-1:-1:-1;14102:49:21;14261:44;14265:4;14271:10;:25;;;14298:6;14261:3;:44::i;:::-;14253:60;;;;;-1:-1:-1;;;14253:60:21;;;;;;;;;;;;-1:-1:-1;;;14253:60:21;;;;;;;;;;;;;;;14399:52;14412:4;14418;14424:6;14432:5;14439:11;14399:12;:52::i;:::-;14392:59;;;;12611:1848;;;;;;;;;;;;:::o;16270:3094:2:-;16448:30;16502:42;:9;16516:5;16523:9;16534;16502:13;:42::i;:::-;16589:20;;16682;;16491:53;;-1:-1:-1;16589:20:2;16557:29;;16855:19;;;;;16851:1885;;16891:11;16905:17;:15;:17::i;:::-;17200:5;:10;17270:9;;17298:10;:29;16891:31;;-1:-1:-1;16956:20:2;;;;;;17112:331;;:12;;16891:31;;16956:20;;-1:-1:-1;;;17200:10:2;;;;;17229:22;-1:-1:-1;;;17229:22:2;;;;;-1:-1:-1;;;;;17270:9:2;;-1:-1:-1;;;;;17298:29:2;;;17346:35;-1:-1:-1;;;17346:35:2;;;;;;-1:-1:-1;;;17400:28:2;;;;;17112:26;:331;:::i;:::-;17491:19;;16937:506;;-1:-1:-1;16937:506:2;;-1:-1:-1;16937:506:2;-1:-1:-1;;;;;;17491:19:2;17570:412;:5;17601:9;17629:4;17652:14;17685:21;17725;16937:506;;17850:4;17460:28;17491:19;16937:506;17570:12;:412::i;:::-;17555:427;-1:-1:-1;18012:411:2;:5;18043:9;18071:4;18094:14;18127:21;18167;18207:33;18259:14;18292:4;18315;18338:20;18377:31;18012:12;:411::i;:::-;18461:11;;;17997:426;;-1:-1:-1;;;;18461:11:2;;;;;18517:97;;;;18554:44;18574:9;18585:12;18554:10;:19;;:44;;;;;:::i;:::-;18632:12;18628:97;;;18665:44;:10;18685:9;18696:12;18665:19;:44::i;:::-;16851:1885;;;;;;;18749:28;;18811:174;:5;18850:9;18874;18898:4;18917:21;18953;18811:24;:174::i;:::-;18748:237;;-1:-1:-1;18748:237:2;-1:-1:-1;18998:75:2;:8;19014:14;18748:237;;18998:15;:75::i;:::-;19164:1;19147:14;:18;;;19143:214;;;19186:12;19182:75;;;19219:22;:5;19231:9;19219:11;:22::i;:::-;19275:12;19271:75;;;19308:22;:5;19320:9;19308:11;:22::i;:::-;16270:3094;;;;;;;;;;;;;:::o;9737:421:24:-;9883:14;9942:1;9930:9;:13;;;:220;;10068:82;:71;10084:13;10099;10122:9;10134:4;10068:15;:71::i;:::-;:80;:82::i;:::-;9930:220;;;9964:84;:73;9980:13;9995;10019:9;10018:10;;10031:5;9964:15;:73::i;:84::-;9963:85;;9910:240;9737:421;-1:-1:-1;;;;9737:421:24:o;10509:::-;10655:14;10714:1;10702:9;:13;;;:220;;10840:82;:71;10856:13;10871;10894:9;10906:4;10840:15;:71::i;10702:220::-;10736:84;:73;10752:13;10767;10791:9;10790:10;;10803:5;10736:15;:73::i;503:169:30:-;626:9;;;640;;637:16;;622:32;;602:63::o;3664:1116:24:-;3842:7;4022:3;4018:755;;;4042:16;-1:-1:-1;;;;;4080:27:24;;;:174;;4202:52;4218:6;-1:-1:-1;;;4244:9:24;-1:-1:-1;;;;;4202:52:24;:15;:52::i;:::-;4080:174;;;-1:-1:-1;;;;;4131:47:24;;316:2:17;4132:33:24;;;4131:47;;;;;;4080:174;4042:227;-1:-1:-1;4293:43:24;:31;-1:-1:-1;;;;;4293:17:24;;4042:227;4293:21;:31::i;:::-;:41;:43::i;:::-;4286:50;;;;;4018:755;4369:16;-1:-1:-1;;;;;4407:27:24;;;:207;;4552:62;4578:6;-1:-1:-1;;;4604:9:24;-1:-1:-1;;;;;4552:62:24;:25;:62::i;:::-;4407:207;;;4458:70;316:2:17;4483:33:24;;;-1:-1:-1;;;;;4458:70:24;;:24;:70::i;:::-;4369:260;;4665:8;4654;-1:-1:-1;;;;;4654:19:24;;4646:28;;;;;;-1:-1:-1;;;;;4741:19:24;;;;-1:-1:-1;4726:35:24;;1432:1394;1608:7;1745:11;1741:32;;-1:-1:-1;1765:8:24;1758:15;;1741:32;1805:45;316:2:17;1805:45:24;;;;1863:956;;;;-1:-1:-1;;;;;1921:50:24;;1932:17;;;;1953:6;1932:17;1953:6;1921:38;;;;;:50;1917:328;;;2014:20;;;2057:25;;;2053:176;;2168:60;2194:10;2206:8;-1:-1:-1;;;;;2168:60:24;2216:11;2168:25;:60::i;:::-;2153:76;;;;;;;2053:176;1917:328;;2276:73;2301:10;2313:35;2341:6;2327:8;-1:-1:-1;;;;;2314:21:24;:10;:21;;;;;;;2313:27;:35::i;:::-;2276:24;:73::i;:::-;2261:89;;;;;;1863:956;-1:-1:-1;;;;;2581:50:24;;2592:17;;;;2613:6;2592:17;2613:6;2581:38;;;;;:50;:74;;;;;2648:7;2635:10;:20;2581:74;2573:83;;;;;;2693:20;;;2735:72;:60;2693:10;-1:-1:-1;;;;;2735:60:24;;2693:20;2735:25;:60::i;8942:353:21:-;9010:4;9097;9092:9;;:1;:9;;;;:22;;;;;9110:4;9105:9;;:1;:9;;;;9092:22;9088:41;;;9128:1;9123:6;;:1;:6;;;;9116:13;;;;9088:41;9142:17;9166:4;9162:8;;:1;:8;;;:26;;9177:1;:11;;9181:7;9177:11;9162:26;;;9173:1;9162:26;;;9142:46;;;;9199:17;9223:4;9219:8;;:1;:8;;;:26;;9234:1;:11;;9238:7;9234:11;9219:26;;;9230:1;9219:26;;;9199:46;;9265:22;;;;;8942:353;-1:-1:-1;;;;;8942:353:21:o;10263:1144::-;10481:29;;:::i;:::-;10512:28;;:::i;:::-;10558:9;10584:11;10570:25;;10571:5;10579:1;10571:9;10570:25;;;;;;;;10558:37;;;;10628:9;10658:1;10644:11;10640:15;;:1;:15;:19;10628:31;;10692:9;10712:688;-1:-1:-1;10754:1:21;10745:5;;;10744:11;10785:4;10790:15;;;10744:11;10790:15;;;;;;10785:21;;;;;;;10772:34;;;;;;;;10785:21;;;;;;;;;10772:34;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10772:34:21;;-1:-1:-1;;;;;10772:34:21;;;;;;;;-1:-1:-1;;;10772:34:21;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10772:34:21;;;;;;-1:-1:-1;10916:100:21;;10968:1;10972;10968:5;10964:9;;10992:8;;10916:100;11044:4;11059:11;11049:21;;11050:1;11054;11050:5;11049:21;;;;;;11044:27;;;;;;;11032:39;;;;;;;;11044:27;;;;;;;;;11032:39;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11032:39:21;;-1:-1:-1;;;;;11032:39:21;;;;;;;;-1:-1:-1;;;11032:39:21;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11032:39:21;;;;;11121:25;;11032:39;;-1:-1:-1;;;11111:44:21;;11115:4;;11148:6;11111:3;:44::i;:::-;11088:67;;11225:15;:62;;;;;11244:43;11248:4;11254:6;11262:9;:24;;;11244:3;:43::i;:::-;11221:90;;;11306:5;;;11221:90;11333:15;11328:60;;11358:1;11354;:5;11350:9;;11328:60;;;11383:1;11387;11383:5;11379:9;;11328:60;10712:688;;;;10263:1144;;;;;;;;;;;:::o;6433:1865:26:-;6941:10;;;;;;6891:12;6941:10;;;;;;;;;;6995:19;;-1:-1:-1;;;;;6995:19:26;6891:12;7055:60;6995:19;7100:14;7055:22;:60::i;:::-;7025:90;;7159:12;-1:-1:-1;;;;;7136:35:26;:19;-1:-1:-1;;;;;7136:35:26;;;7128:50;;;;;-1:-1:-1;;;7128:50:26;;;;;;;;;;;;-1:-1:-1;;;7128:50:26;;;;;;;;;;;;;;;-1:-1:-1;;;;;7232:25:26;;;;7202:24;;;;7201:57;;;;-1:-1:-1;7201:57:26;7271:668;;7442:11;7434:19;;:4;:19;;;7430:460;;7503:20;7474:4;:26;;:49;;;;7571:20;7542:4;:26;;:49;;;;7648:33;7610:4;:35;;;:71;;;;;-1:-1:-1;;;;;7610:71:26;;;;;-1:-1:-1;;;;;7610:71:26;;;;;;7729:14;7700:4;:26;;;:43;;;;;;;;;;;;;;;;;;;;7784:4;7762;:19;;;:26;;;;;;;;;;;;;;;;;;7843:31;7807:4;:33;;;:67;;;;;-1:-1:-1;;;;;7807:67:26;;;;;-1:-1:-1;;;;;7807:67:26;;;;;;7430:460;7904:16;;;:23;;;;-1:-1:-1;;;7904:23:26;;;7271:668;7951:41;;-1:-1:-1;;;;;;7951:41:26;-1:-1:-1;;;;;7951:41:26;;;;;8141:5;:149;;8234:56;:45;8264:14;8234:45;;8241:4;:17;;;;;;;;;;;;8234:25;;:29;;:45;;;;:::i;:::-;:54;:56::i;:::-;8141:149;;;8162:56;:45;8192:14;8162:45;;8169:4;:17;;;;;;;;;;;;8162:25;;:29;;:45;;;;:::i;:56::-;8121:169;;;;;;;-1:-1:-1;;;;;8121:169:26;;;-1:-1:-1;;;8121:169:26;;;;;;;-1:-1:-1;6433:1865:26;;;-1:-1:-1;;;;;;;;;;;;;6433:1865:26:o;1131:357:27:-;1289:11;1282:18;;:4;:18;;;;;;;;:23;;;1274:32;;;;;;1352:13;1367:12;1383:28;1399:11;1392:18;;:4;:18;;;;;;;;1383:8;:28::i;:::-;1437:1;1459:13;;;;;1422:12;1459:13;;;;;;;;;;;;:21;;1437:11;;;;;;;;1459:21;;;;;;-1:-1:-1;;;;1131:357:27:o;3617:1604:26:-;3976:15;;;;;;;3884:28;3976:15;;;;;;;;;;;4023;;;;;;;;;;3884:28;;;;3976:15;;4023;3884:28;;;;4170:24;;;;;4166:362;;-1:-1:-1;;4233:27:26;;;;4297;;;;4166:362;;;4402:5;:27;;;4379:20;:50;4357:72;;4489:5;:27;;;4466:20;:50;4444:72;;4166:362;4579:27;4617;4673:9;4659:23;;:11;:23;;;4655:361;;;-1:-1:-1;;4721:27:26;;;;4785;;;;4655:361;;;4890:5;:27;;;4867:20;:50;4845:72;;4977:5;:27;;;4954:20;:50;4932:72;;4655:361;5051:42;;;;:64;;;;;5149:42;;;;:64;;;;;-1:-1:-1;3617:1604:26;;-1:-1:-1;;;;;;;3617:1604:26:o;2060:1399:22:-;2241:24;;;;;;;;;;-1:-1:-1;;;;;2241:24:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2241:24:22;;;;;;;;;:17;2314:19;;;;2310:280;;2358:15;;-1:-1:-1;;;;;2358:19:22;2350:34;;;;;-1:-1:-1;;;2350:34:22;;;;;;;;;;;;-1:-1:-1;;;2350:34:22;;;;;;;;;;;;;;;-1:-1:-1;2459:15:22;;2310:280;;;2546:15;;2523:55;;2563:14;2523:22;:55::i;:::-;2507:71;;2310:280;2641:19;2685:107;2724:5;:30;;;2701:20;:53;2756:5;:15;;;-1:-1:-1;;;;;2685:107:22;-1:-1:-1;;;2685:15:22;:107::i;:::-;2641:162;;2814:19;2858:107;2897:5;:30;;;2874:20;:53;2929:5;:15;;;-1:-1:-1;;;;;2858:107:22;-1:-1:-1;;;2858:15:22;:107::i;:::-;2814:162;;3025:14;:19;;3043:1;3025:19;3021:55;;3046:30;;-1:-1:-1;;;;;;3046:30:22;-1:-1:-1;;;;;3046:30:22;;;;;3021:55;3087:29;;;:52;;;3150:29;;;:52;;;-1:-1:-1;;;;;3217:15:22;;;;;:34;;;3250:1;3236:11;-1:-1:-1;;;;;3236:15:22;;3217:34;3213:239;;;3363:16;;;:31;;-1:-1:-1;;;;;;3363:31:22;;-1:-1:-1;;;;;3363:31:22;;;;;;;;3409;;;-1:-1:-1;;;3409:31:22;;;;;;;;;;;;;;;3213:239;2060:1399;;;;;;;;:::o;8490:114:26:-;8586:10;;;;;;;;;;;;;;;;;;8579:17;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8579:17:26;;;8490:114::o;366:113:23:-;469:1;-1:-1:-1;;;;;449:21:23;;;;441:30;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o"},"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(address,address,uint24,int24)":"14f2705c","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","rewardSlot()":"94fd4a3e","setFeeProtocol(uint8,uint8)":"8206a4d1","setRewardRate(uint144,uint32)":"218064e5","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\":false,\"internalType\":\"uint144\",\"name\":\"rewardPerSecondX48\",\"type\":\"uint144\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"rewardRateEffectiveUntil\",\"type\":\"uint32\"}],\"name\":\"SetRewardRate\",\"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\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"_fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"_tickSpacing\",\"type\":\"int24\"}],\"name\":\"initialize\",\"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\":\"\",\"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\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityCumulativeX64\",\"type\":\"uint192\"}],\"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[]\"},{\"internalType\":\"uint192[]\",\"name\":\"rewardPerLiquidityCumulativeX64s\",\"type\":\"uint192[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"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\":\"rewardSlot\",\"outputs\":[{\"internalType\":\"uint144\",\"name\":\"rewardPerSecondX48\",\"type\":\"uint144\"},{\"internalType\":\"uint32\",\"name\":\"rewardRateEffectiveUntil\",\"type\":\"uint32\"}],\"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\":[{\"internalType\":\"uint144\",\"name\":\"rewardPerSecondX48\",\"type\":\"uint144\"},{\"internalType\":\"uint32\",\"name\":\"rewardRateEffectiveUntil\",\"type\":\"uint32\"}],\"name\":\"setRewardRate\",\"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\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityInsideX64\",\"type\":\"uint192\"}],\"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\":\"\",\"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\":\"\",\"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\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityOutsideX64\",\"type\":\"uint192\"}],\"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\":{\"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\"}},\"flash(address,uint256,uint256,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IElixirFlashCallback#elixirFlashCallbackCan 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(address,address,uint24,int24)\":{\"params\":{\"_fee\":\"The pool's fee in hundredths of a bip, i.e. 1e-6\",\"_tickSpacing\":\"The pool tick spacing\",\"_token0\":\"The first of the two tokens of the pool, sorted by address\",\"_token1\":\"The second of the two tokens of the pool, sorted by address\"}},\"initialize(uint160)\":{\"details\":\"not locked because it initializes unlocked\",\"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 IElixirMintCallback#elixirMintCallback 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\"}},\"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\"}},\"setFeeProtocol(uint8,uint8)\":{\"params\":{\"feeProtocol0\":\"new protocol fee for token0 of the pool\",\"feeProtocol1\":\"new protocol fee for token1 of the pool\"}},\"setRewardRate(uint144,uint32)\":{\"params\":{\"rewardPerSecondX48\":\"The new reward rate per second (in Q48)\",\"rewardRateEffectiveUntil\":\"The timestamp when the new reward rate will expire\"}},\"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 IElixirSwapCallback#elixirSwapCallback\",\"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\"}}},\"stateVariables\":{\"factory\":{\"return\":\"The contract address\"},\"fee\":{\"return\":\"The fee\"},\"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\"},\"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\",\"return\":\"The max amount of liquidity per tick\"},\"observations\":{\"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\"},\"return\":\"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 Returns rewardPerLiquidityCumulativeX64 reward per liquidity\"},\"positions\":{\"params\":{\"key\":\"The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\"},\"return\":\"_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\"},\"rewardSlot\":{\"details\":\"Both of the variables can be set arbitrarily by the owner. The pool does not set any restrictions on the values other than their variable types. The factory owner should relegate the setting of these variables to a reward contract that will update these variables based on a proper reward distribution logic.\",\"return\":\"rewardPerSecondX48 The rewards per second promised to be distributed to the pool as a Q96.48 value rewardRateEffectiveUntil The timestamp when the rewardPerSecondX48 is no longer effective\"},\"slot0\":{\"return\":\"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\"},\"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.\",\"return\":\"The tick spacing\"},\"ticks\":{\"params\":{\"tick\":\"The tick to look up\"},\"return\":\"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\":{\"return\":\"The token contract address\"},\"token1\":{\"return\":\"The token contract address\"}},\"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\"},\"SetRewardRate(uint144,uint32)\":{\"notice\":\"Emitted when the reward rate is changed by the owner\"},\"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 IElixirFactory 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(address,address,uint24,int24)\":{\"notice\":\"Initialize the pool to set immutable parameters\"},\"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\"},\"rewardSlot()\":{\"notice\":\"The rewardSlot storage slot in the pool stores variables necessary to update Oracle.Observation.rewardPerLiquidityCumulativeX64 accumulator.\"},\"setFeeProtocol(uint8,uint8)\":{\"notice\":\"Set the denominator of the protocol's % share of the fees\"},\"setRewardRate(uint144,uint32)\":{\"notice\":\"Set the reward rate the active liquidity receives per second\"},\"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\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/ElixirPool.sol\":\"ElixirPool\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/ElixirPool.sol\":{\"keccak256\":\"0x5d775a147fc8a4b970a3633f7ea45c5eaf6d881e2f1ecf08fc2520c236c4c410\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://8955a0b5c280769dbd37768f05d932cdf054cf9e48379f634beb36369d5311ee\",\"dweb:/ipfs/QmbXdQSPjWSHM8Yf64eg8jtXWizKRzEBqmWCHjgdaAKAEH\"]},\"contracts/elixir-core/interfaces/IERC20Minimal.sol\":{\"keccak256\":\"0xd38b95824b4675c864898a9c6de1f8470da22df3045b70469baf63a84ba9c07a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2410bc2a7705f0e189a561329567a7908bf7e999b858b4f6b1a3702b394397e6\",\"dweb:/ipfs/QmPoLXFfp8BJzpVtHaXMPHQsB82YUSrwpGzzzE3stt9p21\"]},\"contracts/elixir-core/interfaces/IElixirFactory.sol\":{\"keccak256\":\"0xeed23ad43ddda20bfb439f677f8f768460e46e6b2624381ea45c6dc59e56c1ea\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9bbded0c2ed0d252b28a26f18603b6c1dc6d49e761621e057d112de0cb00ead\",\"dweb:/ipfs/QmaWXq8nuhisTR5j2DfWfqYVbEJ1wWxZA6LyAdoHmiM83G\"]},\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/callback/IElixirFlashCallback.sol\":{\"keccak256\":\"0xdeaad77f26bd65623a61d416dd0eb06a016c3120ed01776a4065bda8e877974e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3df48e416cf6aacb410d048f9781951aef0ade903f6149d7522d469a605432f6\",\"dweb:/ipfs/QmSRm8Xi25ABRh7C8w2WDNUP4i7Pnro7jHML51BcgQYFds\"]},\"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol\":{\"keccak256\":\"0xc15f6629fbba11617680a3df47f3a590dcc8360b731788b2783c827c0ba3667a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5ca98b55c62541f6685c762569b82b7c7a774398f406554520f874221153250f\",\"dweb:/ipfs/QmVCL8LwVC1LuarhTUVDYijd7W4cmaU5HjVJr5KgqLEdTe\"]},\"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol\":{\"keccak256\":\"0xc9fbc830c4c6b20c2e87b16569730bce747f3c9cde95efee554f1c6f07cc60b0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b94f129f0ad86cbc99ff550c65bc0ab2b9e754b7f3c2734f09f51ffb908864d\",\"dweb:/ipfs/QmUuJ7zyX1vWC7SfpsDhBqXGCKMS24pvSzirPVMU3sSkK8\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-core/libraries/BitMath.sol\":{\"keccak256\":\"0x14c52bf69e189d123dc9fa84ebdca0d879cb020b7df4953678345a8e567aaf7f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aba03531acefeef92920d5208618ae8dfa9f9a918e2c5bfbf5798110ba8f60de\",\"dweb:/ipfs/QmUSm4Js5hMFvhBW4DvMhBPhhXTbwZ8ix9beZUNEppvAhv\"]},\"contracts/elixir-core/libraries/FixedPoint128.sol\":{\"keccak256\":\"0x558d30194d1a7f76eb5e983633625efd87b13ac0862792a69a305ce69003ab14\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89bca54921a13c0c863c055f18b3108582491fcc091d7188b58e05786c7f2b55\",\"dweb:/ipfs/QmfS5jM1WxULWx4FNB3CJC7KAWDpMpzRgFSGV5dp8RaCJr\"]},\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x3ec938fd1b7cc8751df9e2ed90fd0abf32ffacc42cf4b6edbf7138629d747944\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a741475c8a3b5ae8eac7d328170c5a6811920dac22d3800197e39abe0ba42e01\",\"dweb:/ipfs/Qmc2fs5kxp437hWxtLZ6CB8g7vt3bkwKLxE7MMo9D5TAF9\"]},\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]},\"contracts/elixir-core/libraries/Oracle.sol\":{\"keccak256\":\"0xb927015d21b9ea6fbcf518218811d938b8bba57250f77459e364421a6a6459c6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://773ae95cce9134e52b8a05574c6691869680cdd1f17129a1138c268c76b77607\",\"dweb:/ipfs/QmZsmHuzYWLWJiTD2PKuzVqfuJUB33ajQ2Rp3N3PkQAern\"]},\"contracts/elixir-core/libraries/Position.sol\":{\"keccak256\":\"0x10a2b97bd9637d674eda7b44b07968ae299ca21542a1037dac54e440fa3a9509\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e0f0fe616663505eae382788656678f8d493887756695d6fa3c94dee967c820a\",\"dweb:/ipfs/QmVeBy5kg2KRuGvrVrk9N3umzHv2697vjinBzJZf3FVSQf\"]},\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]},\"contracts/elixir-core/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0x2c9f7a00da077c5f777cd8a47711257952b2748b0fe7c188fa990b279940d78a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0a6b8809b92e411169924b7b355ebff8fac6e4e8b389318ff331d3220f02ec92\",\"dweb:/ipfs/QmZVMTo4zNPT4Rge5u3KTNr16XR7CqG1AupW3aybHty6N5\"]},\"contracts/elixir-core/libraries/SwapMath.sol\":{\"keccak256\":\"0xaf0c258b9f5d1629f1797ad13996f422f303addc1bdb5dc3333ab3f352f306b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d7a3b8d7d38ed7b7a8d7541ff4e0c78c7230c49f31a9a21eb1b5974adf80fa81\",\"dweb:/ipfs/QmXvjE4AjfYGVqRpgrGj1sgJWdjfo8mhrTnNK9fwrDYP77\"]},\"contracts/elixir-core/libraries/Tick.sol\":{\"keccak256\":\"0x20ddf3dd595491c899fde27706d0cd1d10ba2785589bd5e3d5f0830062254c3b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8d706f8b5bf653ac9cd4b5bbdfd6867eb072821b920141a283466c67f0fdf26\",\"dweb:/ipfs/QmfBZFTVNZhN4tNssH9en4Qz93tWovTijou5i6N8k9kZJM\"]},\"contracts/elixir-core/libraries/TickBitmap.sol\":{\"keccak256\":\"0x90bb71c25bffebc89c0f234a1c806f081ebb19f8ba7bc4cab693f03d4363a863\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3527c33112d6cb3f8349f0783ffcdfabb52dbfe7c2d214cba03ed25b834b0352\",\"dweb:/ipfs/QmXyJ9MrtwGEQunhyyrBnCFAEVpFqRUf8oWMfJBv3fdC3q\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-core/libraries/TransferHelper.sol\":{\"keccak256\":\"0x45053903dbe795b9309eaf4b147093082f99d78b0097f15a8c2a37d42d67d2bc\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d994b26b6da1a9b3972ea4e52aa423c65f9359c6a105128f4a357435e21c4b3e\",\"dweb:/ipfs/QmetiZX1jyobSeSnPMgYfhhg8qCsrHfF6GqbttrFLJrJzK\"]},\"contracts/elixir-core/libraries/UnsafeMath.sol\":{\"keccak256\":\"0x3c829e89e91323d9c3e0f15272baa9aa1d28291e7633ee4f1414774e6eca0a7d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f99f38de11092e98d43f1d14061fcfa7309a80ae93d2b7af99c9256c97312c23\",\"dweb:/ipfs/QmQXXUR1PhKUFVZXwwekW23YE9Zy7r3GvdtcDyc2nNTpSb\"]}},\"version\":1}"}},"contracts/elixir-core/interfaces/IERC20Minimal.sol":{"IERC20Minimal":{"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":[{"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","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\":[{\"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\":{\"events\":{\"Approval(address,address,uint256)\":{\"params\":{\"owner\":\"The account that approved spending of its tokens\",\"spender\":\"The account for which the spending allowance was modified\",\"value\":\"The new allowance from the owner to the spender\"}},\"Transfer(address,address,uint256)\":{\"params\":{\"from\":\"The account from which the tokens were sent, i.e. the balance decreased\",\"to\":\"The account to which the tokens were sent, i.e. the balance increased\",\"value\":\"The amount of tokens that were transferred\"}}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"params\":{\"owner\":\"The account of the token owner\",\"spender\":\"The account of the token spender\"},\"returns\":{\"_0\":\"The current allowance granted by `owner` to `spender`\"}},\"approve(address,uint256)\":{\"params\":{\"amount\":\"The amount of tokens allowed to be used by `spender`\",\"spender\":\"The account which will be allowed to spend a given amount of the owners tokens\"},\"returns\":{\"_0\":\"Returns true for a successful approval, false for unsuccessful\"}},\"balanceOf(address)\":{\"params\":{\"account\":\"The account for which to look up the number of tokens it has, i.e. its balance\"},\"returns\":{\"_0\":\"The number of tokens held by the account\"}},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to send from the sender to the recipient\",\"recipient\":\"The account that will receive the amount transferred\"},\"returns\":{\"_0\":\"Returns true for a successful transfer, false for an unsuccessful transfer\"}},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The amount of the transfer\",\"recipient\":\"The recipient of the transfer\",\"sender\":\"The account from which the transfer will be initiated\"},\"returns\":{\"_0\":\"Returns true for a successful transfer, false for unsuccessful\"}}},\"title\":\"Minimal ERC20 interface for Pangolin\",\"version\":1},\"userdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"notice\":\"Event emitted when the approval amount for the spender of a given owner's tokens changes.\"},\"Transfer(address,address,uint256)\":{\"notice\":\"Event emitted when tokens are transferred from one address to another, either via `#transfer` or `#transferFrom`.\"}},\"kind\":\"user\",\"methods\":{\"allowance(address,address)\":{\"notice\":\"Returns the current allowance given to a spender by an owner\"},\"approve(address,uint256)\":{\"notice\":\"Sets the allowance of a spender from the `msg.sender` to the value `amount`\"},\"balanceOf(address)\":{\"notice\":\"Returns the balance of a token\"},\"transfer(address,uint256)\":{\"notice\":\"Transfers the amount of token from the `msg.sender` to the recipient\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `sender` to `recipient` up to the allowance given to the `msg.sender`\"}},\"notice\":\"Contains a subset of the full ERC20 interface that is used in Elixir\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/interfaces/IERC20Minimal.sol\":\"IERC20Minimal\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IERC20Minimal.sol\":{\"keccak256\":\"0xd38b95824b4675c864898a9c6de1f8470da22df3045b70469baf63a84ba9c07a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2410bc2a7705f0e189a561329567a7908bf7e999b858b4f6b1a3702b394397e6\",\"dweb:/ipfs/QmPoLXFfp8BJzpVtHaXMPHQsB82YUSrwpGzzzE3stt9p21\"]}},\"version\":1}"}},"contracts/elixir-core/interfaces/IElixirFactory.sol":{"IElixirFactory":{"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":"implementation","outputs":[{"internalType":"address","name":"","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","implementation()":"5c60da1b","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\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the pool implementation\"}},\"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 Elixir 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\"},\"implementation()\":{\"notice\":\"Returns the implementation contract of the pool\"},\"owner()\":{\"notice\":\"Returns the current owner of the factory\"},\"setOwner(address)\":{\"notice\":\"Updates the owner of the factory\"}},\"notice\":\"The Elixir Factory facilitates creation of Elixir pools and control over the protocol fees\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/interfaces/IElixirFactory.sol\":\"IElixirFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirFactory.sol\":{\"keccak256\":\"0xeed23ad43ddda20bfb439f677f8f768460e46e6b2624381ea45c6dc59e56c1ea\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9bbded0c2ed0d252b28a26f18603b6c1dc6d49e761621e057d112de0cb00ead\",\"dweb:/ipfs/QmaWXq8nuhisTR5j2DfWfqYVbEJ1wWxZA6LyAdoHmiM83G\"]}},\"version\":1}"}},"contracts/elixir-core/interfaces/IElixirPool.sol":{"IElixirPool":{"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":false,"internalType":"uint144","name":"rewardPerSecondX48","type":"uint144"},{"indexed":false,"internalType":"uint32","name":"rewardRateEffectiveUntil","type":"uint32"}],"name":"SetRewardRate","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":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"},{"internalType":"uint24","name":"_fee","type":"uint24"},{"internalType":"int24","name":"_tickSpacing","type":"int24"}],"name":"initialize","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"},{"internalType":"uint192","name":"rewardPerLiquidityCumulativeX64","type":"uint192"}],"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[]"},{"internalType":"uint192[]","name":"rewardPerLiquidityCumulativeX64s","type":"uint192[]"}],"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":"rewardSlot","outputs":[{"internalType":"uint144","name":"rewardPerSecondX48","type":"uint144"},{"internalType":"uint32","name":"rewardRateEffectiveUntil","type":"uint32"}],"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":[{"internalType":"uint144","name":"rewardPerSecondX48","type":"uint144"},{"internalType":"uint32","name":"rewardRateEffectiveUntil","type":"uint32"}],"name":"setRewardRate","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"},{"internalType":"uint192","name":"rewardPerLiquidityInsideX64","type":"uint192"}],"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"},{"internalType":"uint192","name":"rewardPerLiquidityOutsideX64","type":"uint192"}],"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(address,address,uint24,int24)":"14f2705c","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","rewardSlot()":"94fd4a3e","setFeeProtocol(uint8,uint8)":"8206a4d1","setRewardRate(uint144,uint32)":"218064e5","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\":false,\"internalType\":\"uint144\",\"name\":\"rewardPerSecondX48\",\"type\":\"uint144\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"rewardRateEffectiveUntil\",\"type\":\"uint32\"}],\"name\":\"SetRewardRate\",\"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\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"_fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"_tickSpacing\",\"type\":\"int24\"}],\"name\":\"initialize\",\"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\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityCumulativeX64\",\"type\":\"uint192\"}],\"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[]\"},{\"internalType\":\"uint192[]\",\"name\":\"rewardPerLiquidityCumulativeX64s\",\"type\":\"uint192[]\"}],\"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\":\"rewardSlot\",\"outputs\":[{\"internalType\":\"uint144\",\"name\":\"rewardPerSecondX48\",\"type\":\"uint144\"},{\"internalType\":\"uint32\",\"name\":\"rewardRateEffectiveUntil\",\"type\":\"uint32\"}],\"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\":[{\"internalType\":\"uint144\",\"name\":\"rewardPerSecondX48\",\"type\":\"uint144\"},{\"internalType\":\"uint32\",\"name\":\"rewardRateEffectiveUntil\",\"type\":\"uint32\"}],\"name\":\"setRewardRate\",\"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\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityInsideX64\",\"type\":\"uint192\"}],\"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\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityOutsideX64\",\"type\":\"uint192\"}],\"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 IElixirFlashCallback#elixirFlashCallbackCan 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(address,address,uint24,int24)\":{\"params\":{\"_fee\":\"The pool's fee in hundredths of a bip, i.e. 1e-6\",\"_tickSpacing\":\"The pool tick spacing\",\"_token0\":\"The first of the two tokens of the pool, sorted by address\",\"_token1\":\"The second of the two tokens of the pool, sorted by address\"}},\"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 IElixirMintCallback#elixirMintCallback 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 Returns rewardPerLiquidityCumulativeX64 reward per liquidity\"}},\"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\"},\"rewardSlot()\":{\"details\":\"Both of the variables can be set arbitrarily by the owner. The pool does not set any restrictions on the values other than their variable types. The factory owner should relegate the setting of these variables to a reward contract that will update these variables based on a proper reward distribution logic.\",\"returns\":{\"rewardPerSecondX48\":\"The rewards per second promised to be distributed to the pool as a Q96.48 value rewardRateEffectiveUntil The timestamp when the rewardPerSecondX48 is no longer effective\"}},\"setFeeProtocol(uint8,uint8)\":{\"params\":{\"feeProtocol0\":\"new protocol fee for token0 of the pool\",\"feeProtocol1\":\"new protocol fee for token1 of the pool\"}},\"setRewardRate(uint144,uint32)\":{\"params\":{\"rewardPerSecondX48\":\"The new reward rate per second (in Q48)\",\"rewardRateEffectiveUntil\":\"The timestamp when the new reward rate will expire\"}},\"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 IElixirSwapCallback#elixirSwapCallback\",\"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 Elixir 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\"},\"SetRewardRate(uint144,uint32)\":{\"notice\":\"Emitted when the reward rate is changed by the owner\"},\"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 IElixirFactory 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(address,address,uint24,int24)\":{\"notice\":\"Initialize the pool to set immutable parameters\"},\"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\"},\"rewardSlot()\":{\"notice\":\"The rewardSlot storage slot in the pool stores variables necessary to update Oracle.Observation.rewardPerLiquidityCumulativeX64 accumulator.\"},\"setFeeProtocol(uint8,uint8)\":{\"notice\":\"Set the denominator of the protocol's % share of the fees\"},\"setRewardRate(uint144,uint32)\":{\"notice\":\"Set the reward rate the active liquidity receives per second\"},\"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\":\"A Pangolin pool facilitates swapping and automated market making between any two assets that strictly conform to the ERC20 specification\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/interfaces/IElixirPool.sol\":\"IElixirPool\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]}},\"version\":1}"}},"contracts/elixir-core/interfaces/callback/IElixirFlashCallback.sol":{"IElixirFlashCallback":{"abi":[{"inputs":[{"internalType":"uint256","name":"fee0","type":"uint256"},{"internalType":"uint256","name":"fee1","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"elixirFlashCallback","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"elixirFlashCallback(uint256,uint256,bytes)":"0659efa6"}},"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\":\"elixirFlashCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"elixirFlashCallback(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 ElixirPool deployed by the canonical ElixirFactory.\",\"params\":{\"data\":\"Any data passed through by the caller via the IElixirPoolActions#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 IElixirPoolActions#flash\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"elixirFlashCallback(uint256,uint256,bytes)\":{\"notice\":\"Called to `msg.sender` after transferring to the recipient from IElixirPool#flash.\"}},\"notice\":\"Any contract that calls IElixirPoolActions#flash must implement this interface\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/interfaces/callback/IElixirFlashCallback.sol\":\"IElixirFlashCallback\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/callback/IElixirFlashCallback.sol\":{\"keccak256\":\"0xdeaad77f26bd65623a61d416dd0eb06a016c3120ed01776a4065bda8e877974e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3df48e416cf6aacb410d048f9781951aef0ade903f6149d7522d469a605432f6\",\"dweb:/ipfs/QmSRm8Xi25ABRh7C8w2WDNUP4i7Pnro7jHML51BcgQYFds\"]}},\"version\":1}"}},"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol":{"IElixirMintCallback":{"abi":[{"inputs":[{"internalType":"uint256","name":"amount0Owed","type":"uint256"},{"internalType":"uint256","name":"amount1Owed","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"elixirMintCallback","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"elixirMintCallback(uint256,uint256,bytes)":"1507a8f4"}},"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\":\"elixirMintCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"elixirMintCallback(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 ElixirPool deployed by the canonical ElixirFactory.\",\"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 IElixirPoolActions#mint call\"}}},\"title\":\"Callback for IElixirPoolActions#mint\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"elixirMintCallback(uint256,uint256,bytes)\":{\"notice\":\"Called to `msg.sender` after minting liquidity to a position from IElixirPool#mint.\"}},\"notice\":\"Any contract that calls IElixirPoolActions#mint must implement this interface\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol\":\"IElixirMintCallback\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol\":{\"keccak256\":\"0xc15f6629fbba11617680a3df47f3a590dcc8360b731788b2783c827c0ba3667a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5ca98b55c62541f6685c762569b82b7c7a774398f406554520f874221153250f\",\"dweb:/ipfs/QmVCL8LwVC1LuarhTUVDYijd7W4cmaU5HjVJr5KgqLEdTe\"]}},\"version\":1}"}},"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol":{"IElixirSwapCallback":{"abi":[{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"elixirSwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"elixirSwapCallback(int256,int256,bytes)":"d804d7a7"}},"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\":\"elixirSwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"elixirSwapCallback(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 ElixirPool deployed by the canonical ElixirFactory. 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 IElixirPoolActions#swap call\"}}},\"title\":\"Callback for IElixirPoolActions#swap\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"elixirSwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IElixirPool#swap.\"}},\"notice\":\"Any contract that calls IElixirPoolActions#swap must implement this interface\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol\":\"IElixirSwapCallback\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol\":{\"keccak256\":\"0xc9fbc830c4c6b20c2e87b16569730bce747f3c9cde95efee554f1c6f07cc60b0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b94f129f0ad86cbc99ff550c65bc0ab2b9e754b7f3c2734f09f51ffb908864d\",\"dweb:/ipfs/QmUuJ7zyX1vWC7SfpsDhBqXGCKMS24pvSzirPVMU3sSkK8\"]}},\"version\":1}"}},"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol":{"IElixirPoolActions":{"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 IElixirFlashCallback#elixirFlashCallbackCan 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 IElixirMintCallback#elixirMintCallback 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 IElixirSwapCallback#elixirSwapCallback\",\"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\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":\"IElixirPoolActions\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]}},\"version\":1}"}},"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol":{"IElixirPoolDerivedState":{"abi":[{"inputs":[{"internalType":"uint32[]","name":"secondsAgos","type":"uint32[]"}],"name":"observe","outputs":[{"internalType":"int56[]","name":"tickCumulatives","type":"int56[]"},{"internalType":"uint160[]","name":"secondsPerLiquidityCumulativeX128s","type":"uint160[]"},{"internalType":"uint192[]","name":"rewardPerLiquidityCumulativeX64s","type":"uint192[]"}],"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"},{"internalType":"uint192","name":"rewardPerLiquidityInsideX64","type":"uint192"}],"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[]\"},{\"internalType\":\"uint192[]\",\"name\":\"rewardPerLiquidityCumulativeX64s\",\"type\":\"uint192[]\"}],\"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\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityInsideX64\",\"type\":\"uint192\"}],\"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\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":\"IElixirPoolDerivedState\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]}},\"version\":1}"}},"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol":{"IElixirPoolEvents":{"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":false,"internalType":"uint144","name":"rewardPerSecondX48","type":"uint144"},{"indexed":false,"internalType":"uint32","name":"rewardRateEffectiveUntil","type":"uint32"}],"name":"SetRewardRate","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\":false,\"internalType\":\"uint144\",\"name\":\"rewardPerSecondX48\",\"type\":\"uint144\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"rewardRateEffectiveUntil\",\"type\":\"uint32\"}],\"name\":\"SetRewardRate\",\"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\"}},\"SetRewardRate(uint144,uint32)\":{\"params\":{\"rewardPerSecondX48\":\"The new reward rate per second (in Q48)\",\"rewardRateEffectiveUntil\":\"The timestamp when the new reward rate will expire\"}},\"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\"},\"SetRewardRate(uint144,uint32)\":{\"notice\":\"Emitted when the reward rate is changed by the owner\"},\"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\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":\"IElixirPoolEvents\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]}},\"version\":1}"}},"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol":{"IElixirPoolImmutables":{"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 IElixirFactory 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\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":\"IElixirPoolImmutables\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]}},\"version\":1}"}},"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol":{"IElixirPoolOwnerActions":{"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":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"},{"internalType":"uint24","name":"_fee","type":"uint24"},{"internalType":"int24","name":"_tickSpacing","type":"int24"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"feeProtocol0","type":"uint8"},{"internalType":"uint8","name":"feeProtocol1","type":"uint8"}],"name":"setFeeProtocol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint144","name":"rewardPerSecondX48","type":"uint144"},{"internalType":"uint32","name":"rewardRateEffectiveUntil","type":"uint32"}],"name":"setRewardRate","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","initialize(address,address,uint24,int24)":"14f2705c","setFeeProtocol(uint8,uint8)":"8206a4d1","setRewardRate(uint144,uint32)":"218064e5"}},"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\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"_fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"_tickSpacing\",\"type\":\"int24\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint144\",\"name\":\"rewardPerSecondX48\",\"type\":\"uint144\"},{\"internalType\":\"uint32\",\"name\":\"rewardRateEffectiveUntil\",\"type\":\"uint32\"}],\"name\":\"setRewardRate\",\"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\"}},\"initialize(address,address,uint24,int24)\":{\"params\":{\"_fee\":\"The pool's fee in hundredths of a bip, i.e. 1e-6\",\"_tickSpacing\":\"The pool tick spacing\",\"_token0\":\"The first of the two tokens of the pool, sorted by address\",\"_token1\":\"The second of the two tokens of the pool, sorted by address\"}},\"setFeeProtocol(uint8,uint8)\":{\"params\":{\"feeProtocol0\":\"new protocol fee for token0 of the pool\",\"feeProtocol1\":\"new protocol fee for token1 of the pool\"}},\"setRewardRate(uint144,uint32)\":{\"params\":{\"rewardPerSecondX48\":\"The new reward rate per second (in Q48)\",\"rewardRateEffectiveUntil\":\"The timestamp when the new reward rate will expire\"}}},\"title\":\"Permissioned pool actions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"collectProtocol(address,uint128,uint128)\":{\"notice\":\"Collect the protocol fee accrued to the pool\"},\"initialize(address,address,uint24,int24)\":{\"notice\":\"Initialize the pool to set immutable parameters\"},\"setFeeProtocol(uint8,uint8)\":{\"notice\":\"Set the denominator of the protocol's % share of the fees\"},\"setRewardRate(uint144,uint32)\":{\"notice\":\"Set the reward rate the active liquidity receives per second\"}},\"notice\":\"Contains pool methods that may only be called by the factory owner\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":\"IElixirPoolOwnerActions\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]}},\"version\":1}"}},"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol":{"IElixirPoolState":{"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"},{"internalType":"uint192","name":"rewardPerLiquidityCumulativeX64","type":"uint192"}],"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":"rewardSlot","outputs":[{"internalType":"uint144","name":"rewardPerSecondX48","type":"uint144"},{"internalType":"uint32","name":"rewardRateEffectiveUntil","type":"uint32"}],"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"},{"internalType":"uint192","name":"rewardPerLiquidityOutsideX64","type":"uint192"}],"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","rewardSlot()":"94fd4a3e","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\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityCumulativeX64\",\"type\":\"uint192\"}],\"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\":\"rewardSlot\",\"outputs\":[{\"internalType\":\"uint144\",\"name\":\"rewardPerSecondX48\",\"type\":\"uint144\"},{\"internalType\":\"uint32\",\"name\":\"rewardRateEffectiveUntil\",\"type\":\"uint32\"}],\"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\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityOutsideX64\",\"type\":\"uint192\"}],\"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 Returns rewardPerLiquidityCumulativeX64 reward per liquidity\"}},\"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\"},\"rewardSlot()\":{\"details\":\"Both of the variables can be set arbitrarily by the owner. The pool does not set any restrictions on the values other than their variable types. The factory owner should relegate the setting of these variables to a reward contract that will update these variables based on a proper reward distribution logic.\",\"returns\":{\"rewardPerSecondX48\":\"The rewards per second promised to be distributed to the pool as a Q96.48 value rewardRateEffectiveUntil The timestamp when the rewardPerSecondX48 is no longer effective\"}},\"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\"},\"rewardSlot()\":{\"notice\":\"The rewardSlot storage slot in the pool stores variables necessary to update Oracle.Observation.rewardPerLiquidityCumulativeX64 accumulator.\"},\"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\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":\"IElixirPoolState\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]}},\"version\":1}"}},"contracts/elixir-core/libraries/BitMath.sol":{"BitMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204e3baf6dae19f6c3e1fa826f7b7ddb4c06211ae8fbd3cc515bff5a23ceb864ce64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4E EXTCODESIZE 0xAF PUSH14 0xAE19F6C3E1FA826F7B7DDB4C0621 BYTE 0xE8 0xFB 0xD3 0xCC MLOAD JUMPDEST SELFDESTRUCT GAS 0x23 0xCE 0xB8 PUSH5 0xCE64736F6C PUSH4 0x43000706 STOP CALLER ","sourceMap":"192:2690:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204e3baf6dae19f6c3e1fa826f7b7ddb4c06211ae8fbd3cc515bff5a23ceb864ce64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4E EXTCODESIZE 0xAF PUSH14 0xAE19F6C3E1FA826F7B7DDB4C0621 BYTE 0xE8 0xFB 0xD3 0xCC MLOAD JUMPDEST SELFDESTRUCT GAS 0x23 0xCE 0xB8 PUSH5 0xCE64736F6C PUSH4 0x43000706 STOP CALLER ","sourceMap":"192:2690:15:-: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\":{\"contracts/elixir-core/libraries/BitMath.sol\":\"BitMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/BitMath.sol\":{\"keccak256\":\"0x14c52bf69e189d123dc9fa84ebdca0d879cb020b7df4953678345a8e567aaf7f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aba03531acefeef92920d5208618ae8dfa9f9a918e2c5bfbf5798110ba8f60de\",\"dweb:/ipfs/QmUSm4Js5hMFvhBW4DvMhBPhhXTbwZ8ix9beZUNEppvAhv\"]}},\"version\":1}"}},"contracts/elixir-core/libraries/FixedPoint128.sol":{"FixedPoint128":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cec5c4013346f9f59b3e62684302c8a3d0d139f7d8f064feeacaee816895879f64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCE 0xC5 0xC4 ADD CALLER CHAINID 0xF9 CREATE2 SWAP12 RETURNDATACOPY PUSH3 0x684302 0xC8 LOG3 0xD0 0xD1 CODECOPY 0xF7 0xD8 CREATE PUSH5 0xFEEACAEE81 PUSH9 0x95879F64736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"216:101:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cec5c4013346f9f59b3e62684302c8a3d0d139f7d8f064feeacaee816895879f64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCE 0xC5 0xC4 ADD CALLER CHAINID 0xF9 CREATE2 SWAP12 RETURNDATACOPY PUSH3 0x684302 0xC8 LOG3 0xD0 0xD1 CODECOPY 0xF7 0xD8 CREATE PUSH5 0xFEEACAEE81 PUSH9 0x95879F64736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"216:101:16:-: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\":{\"contracts/elixir-core/libraries/FixedPoint128.sol\":\"FixedPoint128\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/FixedPoint128.sol\":{\"keccak256\":\"0x558d30194d1a7f76eb5e983633625efd87b13ac0862792a69a305ce69003ab14\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89bca54921a13c0c863c055f18b3108582491fcc091d7188b58e05786c7f2b55\",\"dweb:/ipfs/QmfS5jM1WxULWx4FNB3CJC7KAWDpMpzRgFSGV5dp8RaCJr\"]}},\"version\":1}"}},"contracts/elixir-core/libraries/FixedPoint96.sol":{"FixedPoint96":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122068b03e6adc7981ea4f428a89c7f9145583f20d55680b45971d3b24b733e8ff5f64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH9 0xB03E6ADC7981EA4F42 DUP11 DUP10 0xC7 0xF9 EQ SSTORE DUP4 CALLCODE 0xD SSTORE PUSH9 0xB45971D3B24B733E8 SELFDESTRUCT 0x5F PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"251:137:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122068b03e6adc7981ea4f428a89c7f9145583f20d55680b45971d3b24b733e8ff5f64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH9 0xB03E6ADC7981EA4F42 DUP11 DUP10 0xC7 0xF9 EQ SSTORE DUP4 CALLCODE 0xD SSTORE PUSH9 0xB45971D3B24B733E8 SELFDESTRUCT 0x5F PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"251:137:17:-: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\":{\"contracts/elixir-core/libraries/FixedPoint96.sol\":\"FixedPoint96\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]}},\"version\":1}"}},"contracts/elixir-core/libraries/FullMath.sol":{"FullMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122047120902711783f9bda10bcf82823c773b9b6d870eeb6f1163b60f6c2f27450b64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFBALANCE SLT MULMOD MUL PUSH18 0x1783F9BDA10BCF82823C773B9B6D870EEB6F GT PUSH4 0xB60F6C2F 0x27 GASLIMIT SIGNEXTEND PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"368:4879:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122047120902711783f9bda10bcf82823c773b9b6d870eeb6f1163b60f6c2f27450b64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFBALANCE SLT MULMOD MUL PUSH18 0x1783F9BDA10BCF82823C773B9B6D870EEB6F GT PUSH4 0xB60F6C2F 0x27 GASLIMIT SIGNEXTEND PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"368:4879:18:-: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\":{\"contracts/elixir-core/libraries/FullMath.sol\":\"FullMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]}},\"version\":1}"}},"contracts/elixir-core/libraries/LiquidityMath.sol":{"LiquidityMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200b9640f2668633b6407b78b727b9541f80c1b8561dda7cd0df9339f01cbf11ce64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND SWAP7 BLOCKHASH CALLCODE PUSH7 0x8633B6407B78B7 0x27 0xB9 SLOAD 0x1F DUP1 0xC1 0xB8 JUMP SAR 0xDA PUSH29 0xD0DF9339F01CBF11CE64736F6C63430007060033000000000000000000 ","sourceMap":"113:524:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200b9640f2668633b6407b78b727b9541f80c1b8561dda7cd0df9339f01cbf11ce64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND SWAP7 BLOCKHASH CALLCODE PUSH7 0x8633B6407B78B7 0x27 0xB9 SLOAD 0x1F DUP1 0xC1 0xB8 JUMP SAR 0xDA PUSH29 0xD0DF9339F01CBF11CE64736F6C63430007060033000000000000000000 ","sourceMap":"113:524:19:-: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\":{\"contracts/elixir-core/libraries/LiquidityMath.sol\":\"LiquidityMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x3ec938fd1b7cc8751df9e2ed90fd0abf32ffacc42cf4b6edbf7138629d747944\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a741475c8a3b5ae8eac7d328170c5a6811920dac22d3800197e39abe0ba42e01\",\"dweb:/ipfs/Qmc2fs5kxp437hWxtLZ6CB8g7vt3bkwKLxE7MMo9D5TAF9\"]}},\"version\":1}"}},"contracts/elixir-core/libraries/LowGasSafeMath.sol":{"LowGasSafeMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203db6dc53c41ee6d42203b7f51ecd5308ce1bf41e426d27d954d9a3d06593ecff64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATASIZE 0xB6 0xDC MSTORE8 0xC4 0x1E 0xE6 0xD4 0x22 SUB 0xB7 CREATE2 0x1E 0xCD MSTORE8 ADDMOD 0xCE SHL DELEGATECALL 0x1E TIMESTAMP PUSH14 0x27D954D9A3D06593ECFF64736F6C PUSH4 0x43000706 STOP CALLER ","sourceMap":"254:1486:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203db6dc53c41ee6d42203b7f51ecd5308ce1bf41e426d27d954d9a3d06593ecff64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATASIZE 0xB6 0xDC MSTORE8 0xC4 0x1E 0xE6 0xD4 0x22 SUB 0xB7 CREATE2 0x1E 0xCD MSTORE8 ADDMOD 0xCE SHL DELEGATECALL 0x1E TIMESTAMP PUSH14 0x27D954D9A3D06593ECFF64736F6C PUSH4 0x43000706 STOP CALLER ","sourceMap":"254:1486:20:-: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\":{\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":\"LowGasSafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]}},\"version\":1}"}},"contracts/elixir-core/libraries/Oracle.sol":{"Oracle":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4b0e08a7a4840da7690c78aa05ae5ac2c4c09b6853b65d2034d80f4e4ceabc264736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC4 0xB0 0xE0 DUP11 PUSH27 0x4840DA7690C78AA05AE5AC2C4C09B6853B65D2034D80F4E4CEABC2 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"693:20958:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4b0e08a7a4840da7690c78aa05ae5ac2c4c09b6853b65d2034d80f4e4ceabc264736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC4 0xB0 0xE0 DUP11 PUSH27 0x4840DA7690C78AA05AE5AC2C4C09B6853B65D2034D80F4E4CEABC2 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"693:20958:21:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Instances of stored oracle data, \\\"observations\\\", are collected in the oracle array Every pool is initialized with an oracle array length of 1. Anyone can pay the SSTOREs to increase the maximum length of the oracle array. New slots will be added when the array is fully populated. Observations are overwritten when the full length of the oracle array is populated. The most recent observation is available, independent of the length of the oracle array, by passing 0 to observe()\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Oracle\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Provides price and liquidity data useful for a wide variety of system designs\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/libraries/Oracle.sol\":\"Oracle\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/Oracle.sol\":{\"keccak256\":\"0xb927015d21b9ea6fbcf518218811d938b8bba57250f77459e364421a6a6459c6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://773ae95cce9134e52b8a05574c6691869680cdd1f17129a1138c268c76b77607\",\"dweb:/ipfs/QmZsmHuzYWLWJiTD2PKuzVqfuJUB33ajQ2Rp3N3PkQAern\"]}},\"version\":1}"}},"contracts/elixir-core/libraries/Position.sol":{"Position":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b83d86c3fb04ba03ca5fd122d668e58df0cf13f946769bec8ee2ecf98d22324964736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB8 RETURNDATASIZE DUP7 0xC3 0xFB DIV 0xBA SUB 0xCA 0x5F 0xD1 0x22 0xD6 PUSH9 0xE58DF0CF13F946769B 0xEC DUP15 0xE2 0xEC 0xF9 DUP14 0x22 ORIGIN 0x49 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"367:3095:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b83d86c3fb04ba03ca5fd122d668e58df0cf13f946769bec8ee2ecf98d22324964736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB8 RETURNDATASIZE DUP7 0xC3 0xFB DIV 0xBA SUB 0xCA 0x5F 0xD1 0x22 0xD6 PUSH9 0xE58DF0CF13F946769B 0xEC DUP15 0xE2 0xEC 0xF9 DUP14 0x22 ORIGIN 0x49 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"367:3095:22:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Positions store additional state for tracking fees owed to the position\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Position\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Positions represent an owner address' liquidity between a lower and upper tick boundary\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/libraries/Position.sol\":\"Position\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/FixedPoint128.sol\":{\"keccak256\":\"0x558d30194d1a7f76eb5e983633625efd87b13ac0862792a69a305ce69003ab14\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89bca54921a13c0c863c055f18b3108582491fcc091d7188b58e05786c7f2b55\",\"dweb:/ipfs/QmfS5jM1WxULWx4FNB3CJC7KAWDpMpzRgFSGV5dp8RaCJr\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x3ec938fd1b7cc8751df9e2ed90fd0abf32ffacc42cf4b6edbf7138629d747944\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a741475c8a3b5ae8eac7d328170c5a6811920dac22d3800197e39abe0ba42e01\",\"dweb:/ipfs/Qmc2fs5kxp437hWxtLZ6CB8g7vt3bkwKLxE7MMo9D5TAF9\"]},\"contracts/elixir-core/libraries/Position.sol\":{\"keccak256\":\"0x10a2b97bd9637d674eda7b44b07968ae299ca21542a1037dac54e440fa3a9509\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e0f0fe616663505eae382788656678f8d493887756695d6fa3c94dee967c820a\",\"dweb:/ipfs/QmVeBy5kg2KRuGvrVrk9N3umzHv2697vjinBzJZf3FVSQf\"]}},\"version\":1}"}},"contracts/elixir-core/libraries/SafeCast.sol":{"SafeCast":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122051c7a1c365f8c2af07c8b51cd1ef2ef162f587f87651869cf6a27ca21d4dcff264736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MLOAD 0xC7 LOG1 0xC3 PUSH6 0xF8C2AF07C8B5 SHR 0xD1 0xEF 0x2E CALL PUSH3 0xF587F8 PUSH23 0x51869CF6A27CA21D4DCFF264736F6C6343000706003300 ","sourceMap":"170:904:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122051c7a1c365f8c2af07c8b51cd1ef2ef162f587f87651869cf6a27ca21d4dcff264736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MLOAD 0xC7 LOG1 0xC3 PUSH6 0xF8C2AF07C8B5 SHR 0xD1 0xEF 0x2E CALL PUSH3 0xF587F8 PUSH23 0x51869CF6A27CA21D4DCFF264736F6C6343000706003300 ","sourceMap":"170:904:23:-: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\":{\"contracts/elixir-core/libraries/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]}},\"version\":1}"}},"contracts/elixir-core/libraries/SqrtPriceMath.sol":{"SqrtPriceMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220656eb8bb313321e340b9d2885c450325898f64c70c01c5b792ae1159fe0fa0d164736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH6 0x6EB8BB313321 0xE3 BLOCKHASH 0xB9 0xD2 DUP9 0x5C GASLIMIT SUB 0x25 DUP10 DUP16 PUSH5 0xC70C01C5B7 SWAP3 0xAE GT MSIZE INVALID 0xF LOG0 0xD1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"381:10552:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220656eb8bb313321e340b9d2885c450325898f64c70c01c5b792ae1159fe0fa0d164736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH6 0x6EB8BB313321 0xE3 BLOCKHASH 0xB9 0xD2 DUP9 0x5C GASLIMIT SUB 0x25 DUP10 DUP16 PUSH5 0xC70C01C5B7 SWAP3 0xAE GT MSIZE INVALID 0xF LOG0 0xD1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"381:10552:24:-: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\":\"Contains the math that uses square root of price as a Q64.96 and liquidity to compute deltas\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/libraries/SqrtPriceMath.sol\":\"SqrtPriceMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]},\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]},\"contracts/elixir-core/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0x2c9f7a00da077c5f777cd8a47711257952b2748b0fe7c188fa990b279940d78a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0a6b8809b92e411169924b7b355ebff8fac6e4e8b389318ff331d3220f02ec92\",\"dweb:/ipfs/QmZVMTo4zNPT4Rge5u3KTNr16XR7CqG1AupW3aybHty6N5\"]},\"contracts/elixir-core/libraries/UnsafeMath.sol\":{\"keccak256\":\"0x3c829e89e91323d9c3e0f15272baa9aa1d28291e7633ee4f1414774e6eca0a7d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f99f38de11092e98d43f1d14061fcfa7309a80ae93d2b7af99c9256c97312c23\",\"dweb:/ipfs/QmQXXUR1PhKUFVZXwwekW23YE9Zy7r3GvdtcDyc2nNTpSb\"]}},\"version\":1}"}},"contracts/elixir-core/libraries/SwapMath.sol":{"SwapMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206e548e38520cc7a292b9587ce663e0fa5b14a3c9b3cba9c5a798711b6d32864464736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x548E38520CC7A292B9587CE663E0FA JUMPDEST EQ LOG3 0xC9 0xB3 0xCB 0xA9 0xC5 0xA7 SWAP9 PUSH18 0x1B6D32864464736F6C634300070600330000 ","sourceMap":"300:4429:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206e548e38520cc7a292b9587ce663e0fa5b14a3c9b3cba9c5a798711b6d32864464736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x548E38520CC7A292B9587CE663E0FA JUMPDEST EQ LOG3 0xC9 0xB3 0xCB 0xA9 0xC5 0xA7 SWAP9 PUSH18 0x1B6D32864464736F6C634300070600330000 ","sourceMap":"300:4429:25:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Computes the result of a swap within ticks\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains methods for computing the result of a swap within a single tick price range, i.e., a single tick.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/libraries/SwapMath.sol\":\"SwapMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]},\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]},\"contracts/elixir-core/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0x2c9f7a00da077c5f777cd8a47711257952b2748b0fe7c188fa990b279940d78a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0a6b8809b92e411169924b7b355ebff8fac6e4e8b389318ff331d3220f02ec92\",\"dweb:/ipfs/QmZVMTo4zNPT4Rge5u3KTNr16XR7CqG1AupW3aybHty6N5\"]},\"contracts/elixir-core/libraries/SwapMath.sol\":{\"keccak256\":\"0xaf0c258b9f5d1629f1797ad13996f422f303addc1bdb5dc3333ab3f352f306b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d7a3b8d7d38ed7b7a8d7541ff4e0c78c7230c49f31a9a21eb1b5974adf80fa81\",\"dweb:/ipfs/QmXvjE4AjfYGVqRpgrGj1sgJWdjfo8mhrTnNK9fwrDYP77\"]},\"contracts/elixir-core/libraries/UnsafeMath.sol\":{\"keccak256\":\"0x3c829e89e91323d9c3e0f15272baa9aa1d28291e7633ee4f1414774e6eca0a7d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f99f38de11092e98d43f1d14061fcfa7309a80ae93d2b7af99c9256c97312c23\",\"dweb:/ipfs/QmQXXUR1PhKUFVZXwwekW23YE9Zy7r3GvdtcDyc2nNTpSb\"]}},\"version\":1}"}},"contracts/elixir-core/libraries/Tick.sol":{"Tick":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122056d179df4f6a9e3712e3c309189631870447674e4f93a45fc498789ac410549b64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMP 0xD1 PUSH26 0xDF4F6A9E3712E3C309189631870447674E4F93A45FC498789AC4 LT SLOAD SWAP12 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"295:10112:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122056d179df4f6a9e3712e3c309189631870447674e4f93a45fc498789ac410549b64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMP 0xD1 PUSH26 0xDF4F6A9E3712E3C309189631870447674E4F93A45FC498789AC4 LT SLOAD SWAP12 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"295:10112:26:-: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\":{\"contracts/elixir-core/libraries/Tick.sol\":\"Tick\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x3ec938fd1b7cc8751df9e2ed90fd0abf32ffacc42cf4b6edbf7138629d747944\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a741475c8a3b5ae8eac7d328170c5a6811920dac22d3800197e39abe0ba42e01\",\"dweb:/ipfs/Qmc2fs5kxp437hWxtLZ6CB8g7vt3bkwKLxE7MMo9D5TAF9\"]},\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]},\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]},\"contracts/elixir-core/libraries/Tick.sol\":{\"keccak256\":\"0x20ddf3dd595491c899fde27706d0cd1d10ba2785589bd5e3d5f0830062254c3b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8d706f8b5bf653ac9cd4b5bbdfd6867eb072821b920141a283466c67f0fdf26\",\"dweb:/ipfs/QmfBZFTVNZhN4tNssH9en4Qz93tWovTijou5i6N8k9kZJM\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]}},\"version\":1}"}},"contracts/elixir-core/libraries/TickBitmap.sol":{"TickBitmap":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207a6d6affb005351b807acb101ab6609fa94753d11f1dc32847df7add7cdbc31264736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH27 0x6D6AFFB005351B807ACB101AB6609FA94753D11F1DC32847DF7ADD PUSH29 0xDBC31264736F6C63430007060033000000000000000000000000000000 ","sourceMap":"346:3849:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207a6d6affb005351b807acb101ab6609fa94753d11f1dc32847df7add7cdbc31264736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH27 0x6D6AFFB005351B807ACB101AB6609FA94753D11F1DC32847DF7ADD PUSH29 0xDBC31264736F6C63430007060033000000000000000000000000000000 ","sourceMap":"346:3849:27:-: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\":{\"contracts/elixir-core/libraries/TickBitmap.sol\":\"TickBitmap\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/BitMath.sol\":{\"keccak256\":\"0x14c52bf69e189d123dc9fa84ebdca0d879cb020b7df4953678345a8e567aaf7f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aba03531acefeef92920d5208618ae8dfa9f9a918e2c5bfbf5798110ba8f60de\",\"dweb:/ipfs/QmUSm4Js5hMFvhBW4DvMhBPhhXTbwZ8ix9beZUNEppvAhv\"]},\"contracts/elixir-core/libraries/TickBitmap.sol\":{\"keccak256\":\"0x90bb71c25bffebc89c0f234a1c806f081ebb19f8ba7bc4cab693f03d4363a863\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3527c33112d6cb3f8349f0783ffcdfabb52dbfe7c2d214cba03ed25b834b0352\",\"dweb:/ipfs/QmXyJ9MrtwGEQunhyyrBnCFAEVpFqRUf8oWMfJBv3fdC3q\"]}},\"version\":1}"}},"contracts/elixir-core/libraries/TickMath.sol":{"TickMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209de1e3c40cc8375660b6db1b1c16287abcbba565d5d41266b9224e4a3a68026f64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP14 0xE1 0xE3 0xC4 0xC 0xC8 CALLDATACOPY JUMP PUSH1 0xB6 0xDB SHL SHR AND 0x28 PUSH27 0xBCBBA565D5D41266B9224E4A3A68026F64736F6C63430007060033 ","sourceMap":"319:8529:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209de1e3c40cc8375660b6db1b1c16287abcbba565d5d41266b9224e4a3a68026f64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP14 0xE1 0xE3 0xC4 0xC 0xC8 CALLDATACOPY JUMP PUSH1 0xB6 0xDB SHL SHR AND 0x28 PUSH27 0xBCBBA565D5D41266B9224E4A3A68026F64736F6C63430007060033 ","sourceMap":"319:8529:28:-: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\":{\"contracts/elixir-core/libraries/TickMath.sol\":\"TickMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]}},\"version\":1}"}},"contracts/elixir-core/libraries/TransferHelper.sol":{"TransferHelper":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b90328b534065813af7289a9c9915640925e718a6866d33fbbe626430c68faab64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB9 SUB 0x28 0xB5 CALLVALUE MOD PC SGT 0xAF PUSH19 0x89A9C9915640925E718A6866D33FBBE626430C PUSH9 0xFAAB64736F6C634300 SMOD MOD STOP CALLER ","sourceMap":"260:705:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b90328b534065813af7289a9c9915640925e718a6866d33fbbe626430c68faab64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB9 SUB 0x28 0xB5 CALLVALUE MOD PC SGT 0xAF PUSH19 0x89A9C9915640925E718A6866D33FBBE626430C PUSH9 0xFAAB64736F6C634300 SMOD MOD STOP CALLER ","sourceMap":"260:705:29:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"TransferHelper\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains helper methods for interacting with ERC20 tokens that do not consistently return true/false\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/libraries/TransferHelper.sol\":\"TransferHelper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IERC20Minimal.sol\":{\"keccak256\":\"0xd38b95824b4675c864898a9c6de1f8470da22df3045b70469baf63a84ba9c07a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2410bc2a7705f0e189a561329567a7908bf7e999b858b4f6b1a3702b394397e6\",\"dweb:/ipfs/QmPoLXFfp8BJzpVtHaXMPHQsB82YUSrwpGzzzE3stt9p21\"]},\"contracts/elixir-core/libraries/TransferHelper.sol\":{\"keccak256\":\"0x45053903dbe795b9309eaf4b147093082f99d78b0097f15a8c2a37d42d67d2bc\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d994b26b6da1a9b3972ea4e52aa423c65f9359c6a105128f4a357435e21c4b3e\",\"dweb:/ipfs/QmetiZX1jyobSeSnPMgYfhhg8qCsrHfF6GqbttrFLJrJzK\"]}},\"version\":1}"}},"contracts/elixir-core/libraries/UnsafeMath.sol":{"UnsafeMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b82eca321279acb5ff1368f5839dd6123f6f9d8926d04a62181c46b3944b33b564736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB8 0x2E 0xCA ORIGIN SLT PUSH26 0xACB5FF1368F5839DD6123F6F9D8926D04A62181C46B3944B33B5 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"249:426:30:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b82eca321279acb5ff1368f5839dd6123f6f9d8926d04a62181c46b3944b33b564736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB8 0x2E 0xCA ORIGIN SLT PUSH26 0xACB5FF1368F5839DD6123F6F9D8926D04A62181C46B3944B33B5 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"249:426:30:-: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\":{\"contracts/elixir-core/libraries/UnsafeMath.sol\":\"UnsafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/UnsafeMath.sol\":{\"keccak256\":\"0x3c829e89e91323d9c3e0f15272baa9aa1d28291e7633ee4f1414774e6eca0a7d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f99f38de11092e98d43f1d14061fcfa7309a80ae93d2b7af99c9256c97312c23\",\"dweb:/ipfs/QmQXXUR1PhKUFVZXwwekW23YE9Zy7r3GvdtcDyc2nNTpSb\"]}},\"version\":1}"}},"contracts/elixir-core/test/BitMathEchidnaTest.sol":{"BitMathEchidnaTest":{"abi":[{"inputs":[{"internalType":"uint256","name":"input","type":"uint256"}],"name":"leastSignificantBitInvariant","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"input","type":"uint256"}],"name":"mostSignificantBitInvariant","outputs":[],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506102bf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632d711e0c1461003b578063f94ac90e1461005a575b600080fd5b6100586004803603602081101561005157600080fd5b5035610077565b005b6100586004803603602081101561007057600080fd5b50356100ab565b6000610082826100e8565b905060ff811660020a821661009357fe5b60001960ff821660020a018216156100a757fe5b5050565b60006100b6826101dc565b90508060ff1660020a8210156100c857fe5b8060ff1660ff14806100e257508060010160ff1660020a82105b6100a757fe5b60008082116100f657600080fd5b5060ff6fffffffffffffffffffffffffffffffff82161561011a57607f1901610122565b608082901c91505b67ffffffffffffffff82161561013b57603f1901610143565b604082901c91505b63ffffffff82161561015857601f1901610160565b602082901c91505b61ffff82161561017357600f190161017b565b601082901c91505b60ff82161561018d5760071901610195565b600882901c91505b600f8216156101a757600319016101af565b600482901c91505b60038216156101c157600119016101c9565b600282901c91505b60018216156101d757600019015b919050565b60008082116101ea57600080fd5b700100000000000000000000000000000000821061020a57608091821c91015b68010000000000000000821061022257604091821c91015b640100000000821061023657602091821c91015b62010000821061024857601091821c91015b610100821061025957600891821c91015b6010821061026957600491821c91015b6004821061027957600291821c91015b600282106101d75760010191905056fea2646970667358221220a1822fba754d926feacd42fe97e88367a659fc319efdb524d695e314406d62ed64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2BF 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 0x2D711E0C EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xF94AC90E EQ PUSH2 0x5A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x58 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x77 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x58 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xAB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x82 DUP3 PUSH2 0xE8 JUMP JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 AND PUSH1 0x2 EXP DUP3 AND PUSH2 0x93 JUMPI INVALID JUMPDEST PUSH1 0x0 NOT PUSH1 0xFF DUP3 AND PUSH1 0x2 EXP ADD DUP3 AND ISZERO PUSH2 0xA7 JUMPI INVALID JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB6 DUP3 PUSH2 0x1DC JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xFF AND PUSH1 0x2 EXP DUP3 LT ISZERO PUSH2 0xC8 JUMPI INVALID JUMPDEST DUP1 PUSH1 0xFF AND PUSH1 0xFF EQ DUP1 PUSH2 0xE2 JUMPI POP DUP1 PUSH1 0x1 ADD PUSH1 0xFF AND PUSH1 0x2 EXP DUP3 LT JUMPDEST PUSH2 0xA7 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x11A JUMPI PUSH1 0x7F NOT ADD PUSH2 0x122 JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x13B JUMPI PUSH1 0x3F NOT ADD PUSH2 0x143 JUMP JUMPDEST PUSH1 0x40 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x158 JUMPI PUSH1 0x1F NOT ADD PUSH2 0x160 JUMP JUMPDEST PUSH1 0x20 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH2 0xFFFF DUP3 AND ISZERO PUSH2 0x173 JUMPI PUSH1 0xF NOT ADD PUSH2 0x17B JUMP JUMPDEST PUSH1 0x10 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x18D JUMPI PUSH1 0x7 NOT ADD PUSH2 0x195 JUMP JUMPDEST PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xF DUP3 AND ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x3 NOT ADD PUSH2 0x1AF JUMP JUMPDEST PUSH1 0x4 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x3 DUP3 AND ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x1 NOT ADD PUSH2 0x1C9 JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x1D7 JUMPI PUSH1 0x0 NOT ADD JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x20A JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x222 JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x236 JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x248 JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x259 JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x269 JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x279 JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x1D7 JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG1 DUP3 0x2F 0xBA PUSH22 0x4D926FEACD42FE97E88367A659FC319EFDB524D695E3 EQ BLOCKHASH PUSH14 0x62ED64736F6C6343000706003300 ","sourceMap":"105:517:31:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c80632d711e0c1461003b578063f94ac90e1461005a575b600080fd5b6100586004803603602081101561005157600080fd5b5035610077565b005b6100586004803603602081101561007057600080fd5b50356100ab565b6000610082826100e8565b905060ff811660020a821661009357fe5b60001960ff821660020a018216156100a757fe5b5050565b60006100b6826101dc565b90508060ff1660020a8210156100c857fe5b8060ff1660ff14806100e257508060010160ff1660020a82105b6100a757fe5b60008082116100f657600080fd5b5060ff6fffffffffffffffffffffffffffffffff82161561011a57607f1901610122565b608082901c91505b67ffffffffffffffff82161561013b57603f1901610143565b604082901c91505b63ffffffff82161561015857601f1901610160565b602082901c91505b61ffff82161561017357600f190161017b565b601082901c91505b60ff82161561018d5760071901610195565b600882901c91505b600f8216156101a757600319016101af565b600482901c91505b60038216156101c157600119016101c9565b600282901c91505b60018216156101d757600019015b919050565b60008082116101ea57600080fd5b700100000000000000000000000000000000821061020a57608091821c91015b68010000000000000000821061022257604091821c91015b640100000000821061023657602091821c91015b62010000821061024857601091821c91015b610100821061025957600891821c91015b6010821061026957600491821c91015b6004821061027957600291821c91015b600282106101d75760010191905056fea2646970667358221220a1822fba754d926feacd42fe97e88367a659fc319efdb524d695e314406d62ed64736f6c63430007060033","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 0x2D711E0C EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xF94AC90E EQ PUSH2 0x5A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x58 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x77 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x58 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xAB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x82 DUP3 PUSH2 0xE8 JUMP JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 AND PUSH1 0x2 EXP DUP3 AND PUSH2 0x93 JUMPI INVALID JUMPDEST PUSH1 0x0 NOT PUSH1 0xFF DUP3 AND PUSH1 0x2 EXP ADD DUP3 AND ISZERO PUSH2 0xA7 JUMPI INVALID JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB6 DUP3 PUSH2 0x1DC JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xFF AND PUSH1 0x2 EXP DUP3 LT ISZERO PUSH2 0xC8 JUMPI INVALID JUMPDEST DUP1 PUSH1 0xFF AND PUSH1 0xFF EQ DUP1 PUSH2 0xE2 JUMPI POP DUP1 PUSH1 0x1 ADD PUSH1 0xFF AND PUSH1 0x2 EXP DUP3 LT JUMPDEST PUSH2 0xA7 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x11A JUMPI PUSH1 0x7F NOT ADD PUSH2 0x122 JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x13B JUMPI PUSH1 0x3F NOT ADD PUSH2 0x143 JUMP JUMPDEST PUSH1 0x40 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x158 JUMPI PUSH1 0x1F NOT ADD PUSH2 0x160 JUMP JUMPDEST PUSH1 0x20 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH2 0xFFFF DUP3 AND ISZERO PUSH2 0x173 JUMPI PUSH1 0xF NOT ADD PUSH2 0x17B JUMP JUMPDEST PUSH1 0x10 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x18D JUMPI PUSH1 0x7 NOT ADD PUSH2 0x195 JUMP JUMPDEST PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xF DUP3 AND ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x3 NOT ADD PUSH2 0x1AF JUMP JUMPDEST PUSH1 0x4 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x3 DUP3 AND ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x1 NOT ADD PUSH2 0x1C9 JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x1D7 JUMPI PUSH1 0x0 NOT ADD JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x20A JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x222 JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x236 JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x248 JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x259 JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x269 JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x279 JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x1D7 JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG1 DUP3 0x2F 0xBA PUSH22 0x4D926FEACD42FE97E88367A659FC319EFDB524D695E3 EQ BLOCKHASH PUSH14 0x62ED64736F6C6343000706003300 ","sourceMap":"105:517:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;385:234;;;;;;;;;;;;;;;;-1:-1:-1;385:234:31;;:::i;:::-;;140:237;;;;;;;;;;;;;;;;-1:-1:-1;140:237:31;;:::i;385:234::-;463:9;475:34;503:5;475:27;:34::i;:::-;463:46;-1:-1:-1;536:15:31;;;544:1;536:15;527:25;;520:38;;;;-1:-1:-1;;585:15:31;;;593:1;585:15;:19;576:29;;:34;569:42;;;;385:234;;:::o;140:237::-;217:9;229:33;256:5;229:26;:33::i;:::-;217:45;;302:3;290:15;;298:1;290:15;280:5;:26;;273:34;;;;325:3;:10;;332:3;325:10;:43;;;;360:3;366:1;360:7;347:21;;355:1;347:21;339:5;:29;325:43;318:51;;;1945:934:15;2008:7;2040:1;2036;:5;2028:14;;;;;;-1:-1:-1;2059:3:15;2081:17;2077:21;;:25;2073:108;;-1:-1:-1;;2119:8:15;2073:108;;;2166:3;2160:9;;;;;2073:108;2199:16;2195:20;;:24;2191:105;;-1:-1:-1;;2236:7:15;2191:105;;;2282:2;2276:8;;;;;2191:105;2314:16;2310:20;;:24;2306:105;;-1:-1:-1;;2351:7:15;2306:105;;;2397:2;2391:8;;;;;2306:105;2429:16;2425:20;;:24;2421:105;;-1:-1:-1;;2466:7:15;2421:105;;;2512:2;2506:8;;;;;2421:105;2544:15;2540:19;;:23;2536:102;;-1:-1:-1;;2580:6:15;2536:102;;;2625:1;2619:7;;;;;2536:102;2656:3;2652:7;;:11;2648:90;;-1:-1:-1;;2680:6:15;2648:90;;;2725:1;2719:7;;;;;2648:90;2756:3;2752:7;;:11;2748:90;;-1:-1:-1;;2780:6:15;2748:90;;;2825:1;2819:7;;;;;2748:90;2856:3;2852:7;;:11;2848:23;;-1:-1:-1;;2865:6:15;2848:23;1945:934;;;:::o;683:763::-;745:7;777:1;773;:5;765:14;;;;;;801:35;796:1;:40;792:105;;859:3;853:9;;;;877:8;792:105;916:19;911:1;:24;907:87;;958:2;952:8;;;;975:7;907:87;1013:11;1008:1;:16;1004:79;;1047:2;1041:8;;;;1064:7;1004:79;1102:7;1097:1;:12;1093:75;;1132:2;1126:8;;;;1149:7;1093:75;1187:5;1182:1;:10;1178:71;;1215:1;1209:7;;;;1231:6;1178:71;1268:4;1263:1;:9;1259:70;;1295:1;1289:7;;;;1311:6;1259:70;1348:3;1343:1;:8;1339:69;;1374:1;1368:7;;;;1390:6;1339:69;1427:3;1422:1;:8;1418:20;;1437:1;1432:6;683:763;;;:::o"},"methodIdentifiers":{"leastSignificantBitInvariant(uint256)":"2d711e0c","mostSignificantBitInvariant(uint256)":"f94ac90e"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"input\",\"type\":\"uint256\"}],\"name\":\"leastSignificantBitInvariant\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"input\",\"type\":\"uint256\"}],\"name\":\"mostSignificantBitInvariant\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/BitMathEchidnaTest.sol\":\"BitMathEchidnaTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/BitMath.sol\":{\"keccak256\":\"0x14c52bf69e189d123dc9fa84ebdca0d879cb020b7df4953678345a8e567aaf7f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aba03531acefeef92920d5208618ae8dfa9f9a918e2c5bfbf5798110ba8f60de\",\"dweb:/ipfs/QmUSm4Js5hMFvhBW4DvMhBPhhXTbwZ8ix9beZUNEppvAhv\"]},\"contracts/elixir-core/test/BitMathEchidnaTest.sol\":{\"keccak256\":\"0xce4c0cbb9037e927c0e015b48732134471a3f76173749bd03b3b26480443540f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4445e81c4374656cf9d2fd2a2d4bf69106f341b44d02dc885f9ca218a4f7002f\",\"dweb:/ipfs/QmPYECh2D9gzmm69bk1iSr6yoz8vGotzMDz2e5gadAZ2dX\"]}},\"version\":1}"}},"contracts/elixir-core/test/BitMathTest.sol":{"BitMathTest":{"abi":[{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"getGasCostOfLeastSignificantBit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"getGasCostOfMostSignificantBit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"leastSignificantBit","outputs":[{"internalType":"uint8","name":"r","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"mostSignificantBit","outputs":[{"internalType":"uint8","name":"r","type":"uint8"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610304806100206000396000f3fe608060405234801561001057600080fd5b506004361061004b5760003560e01c806246b777146100505780636b83cf261461007f578063d230d23f1461009c578063e6bcbc65146100cf575b600080fd5b61006d6004803603602081101561006657600080fd5b50356100ec565b60408051918252519081900360200190f35b61006d6004803603602081101561009557600080fd5b5035610107565b6100b9600480360360208110156100b257600080fd5b5035610116565b6040805160ff9092168252519081900360200190f35b6100b9600480360360208110156100e557600080fd5b5035610127565b6000805a90506100fb8361012e565b505a900390505b919050565b6000805a90506100fb836101db565b6000610121826101db565b92915050565b6000610121825b600080821161013c57600080fd5b700100000000000000000000000000000000821061015c57608091821c91015b68010000000000000000821061017457604091821c91015b640100000000821061018857602091821c91015b62010000821061019a57601091821c91015b61010082106101ab57600891821c91015b601082106101bb57600491821c91015b600482106101cb57600291821c91015b6002821061010257600101919050565b60008082116101e957600080fd5b5060ff6fffffffffffffffffffffffffffffffff82161561020d57607f1901610215565b608082901c91505b67ffffffffffffffff82161561022e57603f1901610236565b604082901c91505b63ffffffff82161561024b57601f1901610253565b602082901c91505b61ffff82161561026657600f190161026e565b601082901c91505b60ff8216156102805760071901610288565b600882901c91505b600f82161561029a57600319016102a2565b600482901c91505b60038216156102b457600119016102bc565b600282901c91505b6001821615610102576000190191905056fea26469706673582212204dcbd028b9eee94186add30a38090a3fabff0517bd53315526b24d50e0079be464736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x304 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 0x4B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0x46B777 EQ PUSH2 0x50 JUMPI DUP1 PUSH4 0x6B83CF26 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0xD230D23F EQ PUSH2 0x9C JUMPI DUP1 PUSH4 0xE6BCBC65 EQ PUSH2 0xCF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xEC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x6D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x107 JUMP JUMPDEST PUSH2 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x116 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 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x127 JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0xFB DUP4 PUSH2 0x12E JUMP JUMPDEST POP GAS SWAP1 SUB SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0xFB DUP4 PUSH2 0x1DB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x121 DUP3 PUSH2 0x1DB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x121 DUP3 JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x15C JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x174 JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x188 JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x19A JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x1AB JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x1BB JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x1CB JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x102 JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x20D JUMPI PUSH1 0x7F NOT ADD PUSH2 0x215 JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x22E JUMPI PUSH1 0x3F NOT ADD PUSH2 0x236 JUMP JUMPDEST PUSH1 0x40 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x24B JUMPI PUSH1 0x1F NOT ADD PUSH2 0x253 JUMP JUMPDEST PUSH1 0x20 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH2 0xFFFF DUP3 AND ISZERO PUSH2 0x266 JUMPI PUSH1 0xF NOT ADD PUSH2 0x26E JUMP JUMPDEST PUSH1 0x10 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x280 JUMPI PUSH1 0x7 NOT ADD PUSH2 0x288 JUMP JUMPDEST PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xF DUP3 AND ISZERO PUSH2 0x29A JUMPI PUSH1 0x3 NOT ADD PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x4 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x3 DUP3 AND ISZERO PUSH2 0x2B4 JUMPI PUSH1 0x1 NOT ADD PUSH2 0x2BC JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 NOT ADD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4D 0xCB 0xD0 0x28 0xB9 0xEE 0xE9 COINBASE DUP7 0xAD 0xD3 EXP CODESIZE MULMOD EXP EXTCODEHASH 0xAB SELFDESTRUCT SDIV OR 0xBD MSTORE8 BALANCE SSTORE 0x26 0xB2 0x4D POP 0xE0 SMOD SWAP12 0xE4 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"105:731:32:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061004b5760003560e01c806246b777146100505780636b83cf261461007f578063d230d23f1461009c578063e6bcbc65146100cf575b600080fd5b61006d6004803603602081101561006657600080fd5b50356100ec565b60408051918252519081900360200190f35b61006d6004803603602081101561009557600080fd5b5035610107565b6100b9600480360360208110156100b257600080fd5b5035610116565b6040805160ff9092168252519081900360200190f35b6100b9600480360360208110156100e557600080fd5b5035610127565b6000805a90506100fb8361012e565b505a900390505b919050565b6000805a90506100fb836101db565b6000610121826101db565b92915050565b6000610121825b600080821161013c57600080fd5b700100000000000000000000000000000000821061015c57608091821c91015b68010000000000000000821061017457604091821c91015b640100000000821061018857602091821c91015b62010000821061019a57601091821c91015b61010082106101ab57600891821c91015b601082106101bb57600491821c91015b600482106101cb57600291821c91015b6002821061010257600101919050565b60008082116101e957600080fd5b5060ff6fffffffffffffffffffffffffffffffff82161561020d57607f1901610215565b608082901c91505b67ffffffffffffffff82161561022e57603f1901610236565b604082901c91505b63ffffffff82161561024b57601f1901610253565b602082901c91505b61ffff82161561026657600f190161026e565b601082901c91505b60ff8216156102805760071901610288565b600882901c91505b600f82161561029a57600319016102a2565b600482901c91505b60038216156102b457600119016102bc565b600282901c91505b6001821615610102576000190191905056fea26469706673582212204dcbd028b9eee94186add30a38090a3fabff0517bd53315526b24d50e0079be464736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0x46B777 EQ PUSH2 0x50 JUMPI DUP1 PUSH4 0x6B83CF26 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0xD230D23F EQ PUSH2 0x9C JUMPI DUP1 PUSH4 0xE6BCBC65 EQ PUSH2 0xCF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xEC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x6D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x107 JUMP JUMPDEST PUSH2 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x116 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 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x127 JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0xFB DUP4 PUSH2 0x12E JUMP JUMPDEST POP GAS SWAP1 SUB SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0xFB DUP4 PUSH2 0x1DB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x121 DUP3 PUSH2 0x1DB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x121 DUP3 JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x15C JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x174 JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x188 JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x19A JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x1AB JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x1BB JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x1CB JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x102 JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x20D JUMPI PUSH1 0x7F NOT ADD PUSH2 0x215 JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x22E JUMPI PUSH1 0x3F NOT ADD PUSH2 0x236 JUMP JUMPDEST PUSH1 0x40 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x24B JUMPI PUSH1 0x1F NOT ADD PUSH2 0x253 JUMP JUMPDEST PUSH1 0x20 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH2 0xFFFF DUP3 AND ISZERO PUSH2 0x266 JUMPI PUSH1 0xF NOT ADD PUSH2 0x26E JUMP JUMPDEST PUSH1 0x10 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x280 JUMPI PUSH1 0x7 NOT ADD PUSH2 0x288 JUMP JUMPDEST PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xF DUP3 AND ISZERO PUSH2 0x29A JUMPI PUSH1 0x3 NOT ADD PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x4 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x3 DUP3 AND ISZERO PUSH2 0x2B4 JUMPI PUSH1 0x1 NOT ADD PUSH2 0x2BC JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 NOT ADD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4D 0xCB 0xD0 0x28 0xB9 0xEE 0xE9 COINBASE DUP7 0xAD 0xD3 EXP CODESIZE MULMOD EXP EXTCODEHASH 0xAB SELFDESTRUCT SDIV OR 0xBD MSTORE8 BALANCE SSTORE 0x26 0xB2 0x4D POP 0xE0 SMOD SWAP12 0xE4 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"105:731:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;267:210;;;;;;;;;;;;;;;;-1:-1:-1;267:210:32;;:::i;:::-;;;;;;;;;;;;;;;;621:212;;;;;;;;;;;;;;;;-1:-1:-1;621:212:32;;:::i;485:128::-;;;;;;;;;;;;;;;;-1:-1:-1;485:128:32;;:::i;:::-;;;;;;;;;;;;;;;;;;;133:126;;;;;;;;;;;;;;;;-1:-1:-1;133:126:32;;:::i;267:210::-;341:7;361:17;381:9;361:29;;401;428:1;401:26;:29::i;:::-;;460:9;448:21;;;-1:-1:-1;267:210:32;;;;:::o;621:212::-;696:7;716:17;736:9;716:29;;756:30;784:1;756:27;:30::i;485:128::-;548:7;575:30;603:1;575:27;:30::i;:::-;568:37;485:128;-1:-1:-1;;485:128:32:o;133:126::-;195:7;222:29;249:1;683:763:15;745:7;777:1;773;:5;765:14;;;;;;801:35;796:1;:40;792:105;;859:3;853:9;;;;877:8;792:105;916:19;911:1;:24;907:87;;958:2;952:8;;;;975:7;907:87;1013:11;1008:1;:16;1004:79;;1047:2;1041:8;;;;1064:7;1004:79;1102:7;1097:1;:12;1093:75;;1132:2;1126:8;;;;1149:7;1093:75;1187:5;1182:1;:10;1178:71;;1215:1;1209:7;;;;1231:6;1178:71;1268:4;1263:1;:9;1259:70;;1295:1;1289:7;;;;1311:6;1259:70;1348:3;1343:1;:8;1339:69;;1374:1;1368:7;;;;1390:6;1339:69;1427:3;1422:1;:8;1418:20;;1437:1;1432:6;683:763;;;:::o;1945:934::-;2008:7;2040:1;2036;:5;2028:14;;;;;;-1:-1:-1;2059:3:15;2081:17;2077:21;;:25;2073:108;;-1:-1:-1;;2119:8:15;2073:108;;;2166:3;2160:9;;;;;2073:108;2199:16;2195:20;;:24;2191:105;;-1:-1:-1;;2236:7:15;2191:105;;;2282:2;2276:8;;;;;2191:105;2314:16;2310:20;;:24;2306:105;;-1:-1:-1;;2351:7:15;2306:105;;;2397:2;2391:8;;;;;2306:105;2429:16;2425:20;;:24;2421:105;;-1:-1:-1;;2466:7:15;2421:105;;;2512:2;2506:8;;;;;2421:105;2544:15;2540:19;;:23;2536:102;;-1:-1:-1;;2580:6:15;2536:102;;;2625:1;2619:7;;;;;2536:102;2656:3;2652:7;;:11;2648:90;;-1:-1:-1;;2680:6:15;2648:90;;;2725:1;2719:7;;;;;2648:90;2756:3;2752:7;;:11;2748:90;;-1:-1:-1;;2780:6:15;2748:90;;;2825:1;2819:7;;;;;2748:90;2856:3;2852:7;;:11;2848:23;;-1:-1:-1;;2865:6:15;1945:934;;;:::o"},"methodIdentifiers":{"getGasCostOfLeastSignificantBit(uint256)":"6b83cf26","getGasCostOfMostSignificantBit(uint256)":"0046b777","leastSignificantBit(uint256)":"d230d23f","mostSignificantBit(uint256)":"e6bcbc65"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"getGasCostOfLeastSignificantBit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"getGasCostOfMostSignificantBit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"leastSignificantBit\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"r\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"mostSignificantBit\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"r\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/BitMathTest.sol\":\"BitMathTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/BitMath.sol\":{\"keccak256\":\"0x14c52bf69e189d123dc9fa84ebdca0d879cb020b7df4953678345a8e567aaf7f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aba03531acefeef92920d5208618ae8dfa9f9a918e2c5bfbf5798110ba8f60de\",\"dweb:/ipfs/QmUSm4Js5hMFvhBW4DvMhBPhhXTbwZ8ix9beZUNEppvAhv\"]},\"contracts/elixir-core/test/BitMathTest.sol\":{\"keccak256\":\"0x8ffb37beb2262c9166ba3d9eb72dca2e3046d4837229fda87b57903499e3c272\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://18dc04c9743d891a6ca062d14911133c766de0feab42a07a85847972337d7d7b\",\"dweb:/ipfs/QmZ7bRo5ZLPdSxsKbk3BbaLr3FFEE6e9bXJ47Sc14fNVGp\"]}},\"version\":1}"}},"contracts/elixir-core/test/ElixirPoolSwapTest.sol":{"ElixirPoolSwapTest":{"abi":[{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"elixirSwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"name":"getSwapResult","outputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"uint160","name":"nextSqrtRatio","type":"uint160"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610522806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80637f2ba7bc1461003b578063d804d7a71461009e575b600080fd5b6100776004803603608081101561005157600080fd5b506001600160a01b0381358116916020810135151591604082013591606001351661011c565b6040805193845260208401929092526001600160a01b031682820152519081900360600190f35b61011a600480360360608110156100b457600080fd5b8135916020810135918101906060810160408201356401000000008111156100db57600080fd5b8201836020820111156100ed57600080fd5b8035906020019184600183028401116401000000008311171561010f57600080fd5b5090925090506102d9565b005b6000806000866001600160a01b031663128acb0860008888883360405160200180826001600160a01b031681526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018515158152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156101d65781810151838201526020016101be565b50505050905090810190601f1680156102035780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b15801561022557600080fd5b505af1158015610239573d6000803e3d6000fd5b505050506040513d604081101561024f57600080fd5b50805160209091015160408051633850c7bd60e01b815290519295509093506001600160a01b03891691633850c7bd9160048082019260e092909190829003018186803b15801561029f57600080fd5b505afa1580156102b3573d6000803e3d6000fd5b505050506040513d60e08110156102c957600080fd5b5051929791965091945092505050565b6000828260208110156102eb57600080fd5b50356001600160a01b0316905060008513156103f157336001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561033a57600080fd5b505afa15801561034e573d6000803e3d6000fd5b505050506040513d602081101561036457600080fd5b5051604080516323b872dd60e01b81526001600160a01b03848116600483015233602483015260448201899052915191909216916323b872dd9160648083019260209291908290030181600087803b1580156103bf57600080fd5b505af11580156103d3573d6000803e3d6000fd5b505050506040513d60208110156103e957600080fd5b506104e59050565b60008413156104e557336001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561043357600080fd5b505afa158015610447573d6000803e3d6000fd5b505050506040513d602081101561045d57600080fd5b5051604080516323b872dd60e01b81526001600160a01b03848116600483015233602483015260448201889052915191909216916323b872dd9160648083019260209291908290030181600087803b1580156104b857600080fd5b505af11580156104cc573d6000803e3d6000fd5b505050506040513d60208110156104e257600080fd5b50505b505050505056fea264697066735822122072479cd5cd3ebede88c62377a9f7e1476c9b6491dec4a71652d0834d6db434a764736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x522 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 0x7F2BA7BC EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xD804D7A7 EQ PUSH2 0x9E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x77 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0x11C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x11A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xB4 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 0xDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xED 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 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2D9 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 PUSH1 0x0 DUP9 DUP9 DUP9 CALLER PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1D6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1BE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x203 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 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x239 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 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3850C7BD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH4 0x3850C7BD SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0xE0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B3 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 0x2C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP8 SWAP2 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 DUP6 SGT ISZERO PUSH2 0x3F1 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x34E 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 0x364 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x3BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D3 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 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4E5 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP5 SGT ISZERO PUSH2 0x4E5 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x433 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x447 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 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4CC 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 0x4E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH19 0x479CD5CD3EBEDE88C62377A9F7E1476C9B6491 0xDE 0xC4 0xA7 AND MSTORE 0xD0 DUP4 0x4D PUSH14 0xB434A764736F6C63430007060033 ","sourceMap":"213:1405:33:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c80637f2ba7bc1461003b578063d804d7a71461009e575b600080fd5b6100776004803603608081101561005157600080fd5b506001600160a01b0381358116916020810135151591604082013591606001351661011c565b6040805193845260208401929092526001600160a01b031682820152519081900360600190f35b61011a600480360360608110156100b457600080fd5b8135916020810135918101906060810160408201356401000000008111156100db57600080fd5b8201836020820111156100ed57600080fd5b8035906020019184600183028401116401000000008311171561010f57600080fd5b5090925090506102d9565b005b6000806000866001600160a01b031663128acb0860008888883360405160200180826001600160a01b031681526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018515158152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156101d65781810151838201526020016101be565b50505050905090810190601f1680156102035780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b15801561022557600080fd5b505af1158015610239573d6000803e3d6000fd5b505050506040513d604081101561024f57600080fd5b50805160209091015160408051633850c7bd60e01b815290519295509093506001600160a01b03891691633850c7bd9160048082019260e092909190829003018186803b15801561029f57600080fd5b505afa1580156102b3573d6000803e3d6000fd5b505050506040513d60e08110156102c957600080fd5b5051929791965091945092505050565b6000828260208110156102eb57600080fd5b50356001600160a01b0316905060008513156103f157336001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561033a57600080fd5b505afa15801561034e573d6000803e3d6000fd5b505050506040513d602081101561036457600080fd5b5051604080516323b872dd60e01b81526001600160a01b03848116600483015233602483015260448201899052915191909216916323b872dd9160648083019260209291908290030181600087803b1580156103bf57600080fd5b505af11580156103d3573d6000803e3d6000fd5b505050506040513d60208110156103e957600080fd5b506104e59050565b60008413156104e557336001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561043357600080fd5b505afa158015610447573d6000803e3d6000fd5b505050506040513d602081101561045d57600080fd5b5051604080516323b872dd60e01b81526001600160a01b03848116600483015233602483015260448201889052915191909216916323b872dd9160648083019260209291908290030181600087803b1580156104b857600080fd5b505af11580156104cc573d6000803e3d6000fd5b505050506040513d60208110156104e257600080fd5b50505b505050505056fea264697066735822122072479cd5cd3ebede88c62377a9f7e1476c9b6491dec4a71652d0834d6db434a764736f6c63430007060033","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 0x7F2BA7BC EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xD804D7A7 EQ PUSH2 0x9E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x77 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0x11C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x11A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xB4 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 0xDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xED 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 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2D9 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 PUSH1 0x0 DUP9 DUP9 DUP9 CALLER PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1D6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1BE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x203 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 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x239 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 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x3850C7BD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH4 0x3850C7BD SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0xE0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B3 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 0x2C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP8 SWAP2 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 DUP6 SGT ISZERO PUSH2 0x3F1 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x34E 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 0x364 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x3BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D3 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 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4E5 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP5 SGT ISZERO PUSH2 0x4E5 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x433 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x447 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 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4CC 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 0x4E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH19 0x479CD5CD3EBEDE88C62377A9F7E1476C9B6491 0xDE 0xC4 0xA7 AND MSTORE 0xD0 DUP4 0x4D PUSH14 0xB434A764736F6C63430007060033 ","sourceMap":"213:1405:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;343:604;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;343:604:33;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;343:604:33;;;;;;;;;;;;;;955:660;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;955:660:33;;-1:-1:-1;955:660:33;-1:-1:-1;955:660:33;:::i;:::-;;343:604;541:19;575;609:21;701:4;-1:-1:-1;;;;;689:22:33;;734:1;751:10;776:15;806:17;849:10;838:22;;;;;;-1:-1:-1;;;;;838:22:33;;;;;;;;;;;;;;;;;;;;689:182;;;;;;;;;;;;;-1:-1:-1;;;;;689:182:33;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;689:182:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;689:182:33;;;;;;;;914:25;;-1:-1:-1;;;914:25:33;;;;689:182;;-1:-1:-1;689:182:33;;-1:-1:-1;;;;;;914:23:33;;;;;:25;;;;;;;;;;;;;;;:23;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;914:25:33;343:604;;;;-1:-1:-1;914:25:33;;-1:-1:-1;343:604:33;-1:-1:-1;;;343:604:33:o;955:660::-;1109:14;1137:4;;1126:27;;;;;;;;;;-1:-1:-1;1126:27:33;-1:-1:-1;;;;;1126:27:33;;-1:-1:-1;1185:1:33;1170:16;;1166:442;;;1229:10;-1:-1:-1;;;;;1217:30:33;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1217:32:33;1203:169;;;-1:-1:-1;;;1203:169:33;;-1:-1:-1;;;;;1203:169:33;;;;;;;1307:10;1203:169;;;;;;;;;;;;:60;;;;;;;:169;;;;;1217:32;;1203:169;;;;;;;-1:-1:-1;1203:60:33;:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1166:442:33;;-1:-1:-1;1166:442:33;;1409:1;1394:12;:16;1390:218;;;1453:10;-1:-1:-1;;;;;1441:30:33;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1441:32:33;1427:169;;;-1:-1:-1;;;1427:169:33;;-1:-1:-1;;;;;1427:169:33;;;;;;;1531:10;1427:169;;;;;;;;;;;;:60;;;;;;;:169;;;;;1441:32;;1427:169;;;;;;;-1:-1:-1;1427:60:33;:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1390:218:33;955:660;;;;;:::o"},"methodIdentifiers":{"elixirSwapCallback(int256,int256,bytes)":"d804d7a7","getSwapResult(address,bool,int256,uint160)":"7f2ba7bc"}},"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\":\"elixirSwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"getSwapResult\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"nextSqrtRatio\",\"type\":\"uint160\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"elixirSwapCallback(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 ElixirPool deployed by the canonical ElixirFactory. 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 IElixirPoolActions#swap call\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"elixirSwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IElixirPool#swap.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/ElixirPoolSwapTest.sol\":\"ElixirPoolSwapTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IERC20Minimal.sol\":{\"keccak256\":\"0xd38b95824b4675c864898a9c6de1f8470da22df3045b70469baf63a84ba9c07a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2410bc2a7705f0e189a561329567a7908bf7e999b858b4f6b1a3702b394397e6\",\"dweb:/ipfs/QmPoLXFfp8BJzpVtHaXMPHQsB82YUSrwpGzzzE3stt9p21\"]},\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol\":{\"keccak256\":\"0xc9fbc830c4c6b20c2e87b16569730bce747f3c9cde95efee554f1c6f07cc60b0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b94f129f0ad86cbc99ff550c65bc0ab2b9e754b7f3c2734f09f51ffb908864d\",\"dweb:/ipfs/QmUuJ7zyX1vWC7SfpsDhBqXGCKMS24pvSzirPVMU3sSkK8\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-core/test/ElixirPoolSwapTest.sol\":{\"keccak256\":\"0xa3a6836a51023f1c42dc4458b767eb755a3f783a422c32d038b57a96ba766985\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f73eeb5154b8fc343825485ba5ca186e897416af407eac99f3032903be3f8631\",\"dweb:/ipfs/QmV8ZUAxNv1tqbp8aU8aDrPNcDtyUFWAhJN4Z6hhb32daR\"]}},\"version\":1}"}},"contracts/elixir-core/test/FullMathEchidnaTest.sol":{"FullMathEchidnaTest":{"abi":[{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"},{"internalType":"uint256","name":"d","type":"uint256"}],"name":"checkMulDiv","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"},{"internalType":"uint256","name":"d","type":"uint256"}],"name":"checkMulDivRounding","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"},{"internalType":"uint256","name":"d","type":"uint256"}],"name":"checkMulDivRoundingUp","outputs":[],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610349806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063695363a31461004657806379eee48714610071578063bf08c3911461009a575b600080fd5b61006f6004803603606081101561005c57600080fd5b50803590602081013590604001356100c3565b005b61006f6004803603606081101561008757600080fd5b5080359060208101359060400135610122565b61006f600480360360608110156100b057600080fd5b50803590602081013590604001356101ad565b600081116100d057600080fd5b60006100dd848484610229565b905060006100ec858585610264565b9050600083806100f857fe5b85870911156101125780820360011461010d57fe5b61011b565b80821461011b57fe5b5050505050565b6000811161012f57600080fd5b600061013c848484610229565b9050831580610149575082155b1561015c57801561015657fe5b506101a8565b6000610169828486610264565b90506000610178838588610264565b90508582101561018457fe5b8481101561018e57fe5b838683031061019957fe5b83858203106101a457fe5b5050505b505050565b600081116101ba57600080fd5b60006101c7848484610264565b90508315806101d4575082155b156101e157801561015657fe5b60006101ee828486610264565b905060006101fd838588610264565b90508582111561020957fe5b8481111561021357fe5b838287031061021e57fe5b83818603106101a457fe5b6000610236848484610264565b90506000828061024257fe5b848609111561025d57600019811061025957600080fd5b6001015b9392505050565b600080806000198587098686029250828110908390030390508061029a576000841161028f57600080fd5b50829004905061025d565b8084116102a657600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a0290910302918190038190046001018684119095039490940291909403929092049190911791909102915050939250505056fea26469706673582212203e33cc0f7921390f81adcd8614431289a18c6ed6248208ccbca8acf91ca22cd464736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x349 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 0x695363A3 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x79EEE487 EQ PUSH2 0x71 JUMPI DUP1 PUSH4 0xBF08C391 EQ PUSH2 0x9A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xC3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x122 JUMP JUMPDEST PUSH2 0x6F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1AD JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDD DUP5 DUP5 DUP5 PUSH2 0x229 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xEC DUP6 DUP6 DUP6 PUSH2 0x264 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 DUP1 PUSH2 0xF8 JUMPI INVALID JUMPDEST DUP6 DUP8 MULMOD GT ISZERO PUSH2 0x112 JUMPI DUP1 DUP3 SUB PUSH1 0x1 EQ PUSH2 0x10D JUMPI INVALID JUMPDEST PUSH2 0x11B JUMP JUMPDEST DUP1 DUP3 EQ PUSH2 0x11B JUMPI INVALID JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x13C DUP5 DUP5 DUP5 PUSH2 0x229 JUMP JUMPDEST SWAP1 POP DUP4 ISZERO DUP1 PUSH2 0x149 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x15C JUMPI DUP1 ISZERO PUSH2 0x156 JUMPI INVALID JUMPDEST POP PUSH2 0x1A8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x169 DUP3 DUP5 DUP7 PUSH2 0x264 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x178 DUP4 DUP6 DUP9 PUSH2 0x264 JUMP JUMPDEST SWAP1 POP DUP6 DUP3 LT ISZERO PUSH2 0x184 JUMPI INVALID JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x18E JUMPI INVALID JUMPDEST DUP4 DUP7 DUP4 SUB LT PUSH2 0x199 JUMPI INVALID JUMPDEST DUP4 DUP6 DUP3 SUB LT PUSH2 0x1A4 JUMPI INVALID JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C7 DUP5 DUP5 DUP5 PUSH2 0x264 JUMP JUMPDEST SWAP1 POP DUP4 ISZERO DUP1 PUSH2 0x1D4 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x1E1 JUMPI DUP1 ISZERO PUSH2 0x156 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x1EE DUP3 DUP5 DUP7 PUSH2 0x264 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1FD DUP4 DUP6 DUP9 PUSH2 0x264 JUMP JUMPDEST SWAP1 POP DUP6 DUP3 GT ISZERO PUSH2 0x209 JUMPI INVALID JUMPDEST DUP5 DUP2 GT ISZERO PUSH2 0x213 JUMPI INVALID JUMPDEST DUP4 DUP3 DUP8 SUB LT PUSH2 0x21E JUMPI INVALID JUMPDEST DUP4 DUP2 DUP7 SUB LT PUSH2 0x1A4 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x236 DUP5 DUP5 DUP5 PUSH2 0x264 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP1 PUSH2 0x242 JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD GT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 NOT DUP2 LT PUSH2 0x259 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x29A JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x25D JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x2A6 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATACOPY CALLER 0xCC 0xF PUSH26 0x21390F81ADCD8614431289A18C6ED6248208CCBCA8ACF91CA22C 0xD4 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"106:1702:34:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c8063695363a31461004657806379eee48714610071578063bf08c3911461009a575b600080fd5b61006f6004803603606081101561005c57600080fd5b50803590602081013590604001356100c3565b005b61006f6004803603606081101561008757600080fd5b5080359060208101359060400135610122565b61006f600480360360608110156100b057600080fd5b50803590602081013590604001356101ad565b600081116100d057600080fd5b60006100dd848484610229565b905060006100ec858585610264565b9050600083806100f857fe5b85870911156101125780820360011461010d57fe5b61011b565b80821461011b57fe5b5050505050565b6000811161012f57600080fd5b600061013c848484610229565b9050831580610149575082155b1561015c57801561015657fe5b506101a8565b6000610169828486610264565b90506000610178838588610264565b90508582101561018457fe5b8481101561018e57fe5b838683031061019957fe5b83858203106101a457fe5b5050505b505050565b600081116101ba57600080fd5b60006101c7848484610264565b90508315806101d4575082155b156101e157801561015657fe5b60006101ee828486610264565b905060006101fd838588610264565b90508582111561020957fe5b8481111561021357fe5b838287031061021e57fe5b83818603106101a457fe5b6000610236848484610264565b90506000828061024257fe5b848609111561025d57600019811061025957600080fd5b6001015b9392505050565b600080806000198587098686029250828110908390030390508061029a576000841161028f57600080fd5b50829004905061025d565b8084116102a657600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a0290910302918190038190046001018684119095039490940291909403929092049190911791909102915050939250505056fea26469706673582212203e33cc0f7921390f81adcd8614431289a18c6ed6248208ccbca8acf91ca22cd464736f6c63430007060033","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 0x695363A3 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x79EEE487 EQ PUSH2 0x71 JUMPI DUP1 PUSH4 0xBF08C391 EQ PUSH2 0x9A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xC3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x122 JUMP JUMPDEST PUSH2 0x6F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1AD JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDD DUP5 DUP5 DUP5 PUSH2 0x229 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xEC DUP6 DUP6 DUP6 PUSH2 0x264 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 DUP1 PUSH2 0xF8 JUMPI INVALID JUMPDEST DUP6 DUP8 MULMOD GT ISZERO PUSH2 0x112 JUMPI DUP1 DUP3 SUB PUSH1 0x1 EQ PUSH2 0x10D JUMPI INVALID JUMPDEST PUSH2 0x11B JUMP JUMPDEST DUP1 DUP3 EQ PUSH2 0x11B JUMPI INVALID JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x13C DUP5 DUP5 DUP5 PUSH2 0x229 JUMP JUMPDEST SWAP1 POP DUP4 ISZERO DUP1 PUSH2 0x149 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x15C JUMPI DUP1 ISZERO PUSH2 0x156 JUMPI INVALID JUMPDEST POP PUSH2 0x1A8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x169 DUP3 DUP5 DUP7 PUSH2 0x264 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x178 DUP4 DUP6 DUP9 PUSH2 0x264 JUMP JUMPDEST SWAP1 POP DUP6 DUP3 LT ISZERO PUSH2 0x184 JUMPI INVALID JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x18E JUMPI INVALID JUMPDEST DUP4 DUP7 DUP4 SUB LT PUSH2 0x199 JUMPI INVALID JUMPDEST DUP4 DUP6 DUP3 SUB LT PUSH2 0x1A4 JUMPI INVALID JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C7 DUP5 DUP5 DUP5 PUSH2 0x264 JUMP JUMPDEST SWAP1 POP DUP4 ISZERO DUP1 PUSH2 0x1D4 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x1E1 JUMPI DUP1 ISZERO PUSH2 0x156 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x1EE DUP3 DUP5 DUP7 PUSH2 0x264 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1FD DUP4 DUP6 DUP9 PUSH2 0x264 JUMP JUMPDEST SWAP1 POP DUP6 DUP3 GT ISZERO PUSH2 0x209 JUMPI INVALID JUMPDEST DUP5 DUP2 GT ISZERO PUSH2 0x213 JUMPI INVALID JUMPDEST DUP4 DUP3 DUP8 SUB LT PUSH2 0x21E JUMPI INVALID JUMPDEST DUP4 DUP2 DUP7 SUB LT PUSH2 0x1A4 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x236 DUP5 DUP5 DUP5 PUSH2 0x264 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP1 PUSH2 0x242 JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD GT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 NOT DUP2 LT PUSH2 0x259 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x29A JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x25D JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x2A6 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATACOPY CALLER 0xCC 0xF PUSH26 0x21390F81ADCD8614431289A18C6ED6248208CCBCA8ACF91CA22C 0xD4 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"106:1702:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;142:411;;;;;;;;;;;;;;;;-1:-1:-1;142:411:34;;;;;;;;;;;;:::i;:::-;;1177:628;;;;;;;;;;;;;;;;-1:-1:-1;1177:628:34;;;;;;;;;;;;:::i;561:608::-;;;;;;;;;;;;;;;;-1:-1:-1;561:608:34;;;;;;;;;;;;:::i;142:411::-;275:1;271;:5;263:14;;;;;;290;307:34;333:1;336;339;307:25;:34::i;:::-;290:51;;352:15;370:24;386:1;389;392;370:15;:24::i;:::-;352:42;;429:1;424;411:15;;;;;421:1;418;411:15;:19;407:139;;;463:7;454:6;:16;474:1;454:21;447:29;;;;407:139;;;526:7;516:6;:17;509:25;;;;142:411;;;;;:::o;1177:628::-;1312:1;1308;:5;1300:14;;;;;;1325:9;1337:34;1363:1;1366;1369;1337:25;:34::i;:::-;1325:46;-1:-1:-1;1386:6:34;;;:16;;-1:-1:-1;1396:6:34;;1386:16;1382:84;;;1426:6;;1419:14;;;;1448:7;;;1382:84;1600:10;1613:24;1629:1;1632;1635;1613:15;:24::i;:::-;1600:37;;1648:10;1661:24;1677:1;1680;1683;1661:15;:24::i;:::-;1648:37;;1709:1;1703:2;:7;;1696:15;;;;1735:1;1729:2;:7;;1722:15;;;;1766:1;1762;1757:2;:6;:10;1750:18;;;;1795:1;1791;1786:2;:6;:10;1779:18;;;;1177:628;;;;;;;:::o;561:608::-;686:1;682;:5;674:14;;;;;;699:9;711:24;727:1;730;733;711:15;:24::i;:::-;699:36;-1:-1:-1;750:6:34;;;:16;;-1:-1:-1;760:6:34;;750:16;746:84;;;790:6;;783:14;;;746:84;964:10;977:24;993:1;996;999;977:15;:24::i;:::-;964:37;;1012:10;1025:24;1041:1;1044;1047;1025:15;:24::i;:::-;1012:37;;1073:1;1067:2;:7;;1060:15;;;;1099:1;1093:2;:7;;1086:15;;;;1130:1;1125:2;1121:1;:6;:10;1114:18;;;;1159:1;1154:2;1150:1;:6;:10;1143:18;;;4919:325:18;5045:14;5081:25;5088:1;5091;5094:11;5081:6;:25::i;:::-;5072:34;;5149:1;5134:11;5121:25;;;;;5131:1;5128;5121:25;:29;5117:120;;;-1:-1:-1;;5175:6:18;:26;5167:35;;;;;;5217:8;;5117:120;4919:325;;;;;:::o;762:3868::-;878:14;;;-1:-1:-1;;1394:1:18;1391;1384:20;1427:9;;;;-1:-1:-1;1479:13:18;;;1463:14;;;;1459:34;;-1:-1:-1;1579:10:18;1575:185;;1628:1;1614:11;:15;1606:24;;;;;;-1:-1:-1;1683:23:18;;;;-1:-1:-1;1735:13:18;;1575:185;1891:5;1877:11;:19;1869:28;;;;;;2182:17;2260:11;2257:1;2254;2247:25;2623:12;2638;;;:26;;2761:22;;;;;3584:1;3565;:15;;3564:21;;3815:17;;;3811:21;;3804:28;3874:17;;;3870:21;;3863:28;3934:17;;;3930:21;;3923:28;3994:17;;;3990:21;;3983:28;4054:17;;;4050:21;;4043:28;4115:17;;;4111:21;;;4104:28;3144:12;;;;3140:23;;;3165:1;3136:31;2393:20;;;2382:32;;;3197:12;;;;2437:21;;;;2894:16;;;;3188:21;;;;4587:11;;;;;-1:-1:-1;;762:3868:18;;;;;:::o"},"methodIdentifiers":{"checkMulDiv(uint256,uint256,uint256)":"bf08c391","checkMulDivRounding(uint256,uint256,uint256)":"695363a3","checkMulDivRoundingUp(uint256,uint256,uint256)":"79eee487"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"d\",\"type\":\"uint256\"}],\"name\":\"checkMulDiv\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"d\",\"type\":\"uint256\"}],\"name\":\"checkMulDivRounding\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"d\",\"type\":\"uint256\"}],\"name\":\"checkMulDivRoundingUp\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/FullMathEchidnaTest.sol\":\"FullMathEchidnaTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/test/FullMathEchidnaTest.sol\":{\"keccak256\":\"0x69a736794bb96a9affaf2a393e750aa8356f57f99650c8eafab2ae61fbdfef26\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://acf0912ca7d1a53abd4a5f6c74522b1d02b29502761b405a3e0e8287545948f7\",\"dweb:/ipfs/QmUGwVFQWaCfZ3cj3zZM358vfQTjxyyb291RhgniwZcBQi\"]}},\"version\":1}"}},"contracts/elixir-core/test/FullMathTest.sol":{"FullMathTest":{"abi":[{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"},{"internalType":"uint256","name":"z","type":"uint256"}],"name":"mulDiv","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"},{"internalType":"uint256","name":"z","type":"uint256"}],"name":"mulDivRoundingUp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506101e2806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630af8b27f1461003b578063aa9a091214610076575b600080fd5b6100646004803603606081101561005157600080fd5b508035906020810135906040013561009f565b60408051918252519081900360200190f35b6100646004803603606081101561008c57600080fd5b50803590602081013590604001356100b6565b60006100ac8484846100c3565b90505b9392505050565b60006100ac8484846100fd565b60006100d08484846100fd565b9050600082806100dc57fe5b84860911156100af5760001981106100f357600080fd5b6001019392505050565b6000808060001985870986860292508281109083900303905080610133576000841161012857600080fd5b5082900490506100af565b80841161013f57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a0290910302918190038190046001018684119095039490940291909403929092049190911791909102915050939250505056fea26469706673582212207bff0abc1b4fd57512cd6aa78f9f16d8362a4d78ab6c9ba70b0236526747a6e964736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E2 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 0xAF8B27F EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xAA9A0912 EQ PUSH2 0x76 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x9F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xB6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAC DUP5 DUP5 DUP5 PUSH2 0xC3 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAC DUP5 DUP5 DUP5 PUSH2 0xFD JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD0 DUP5 DUP5 DUP5 PUSH2 0xFD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP1 PUSH2 0xDC JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD GT ISZERO PUSH2 0xAF JUMPI PUSH1 0x0 NOT DUP2 LT PUSH2 0xF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x133 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x128 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0xAF JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x13F 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH28 0xFF0ABC1B4FD57512CD6AA78F9F16D8362A4D78AB6C9BA70B02365267 SELFBALANCE 0xA6 0xE9 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"106:390:35:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c80630af8b27f1461003b578063aa9a091214610076575b600080fd5b6100646004803603606081101561005157600080fd5b508035906020810135906040013561009f565b60408051918252519081900360200190f35b6100646004803603606081101561008c57600080fd5b50803590602081013590604001356100b6565b60006100ac8484846100c3565b90505b9392505050565b60006100ac8484846100fd565b60006100d08484846100fd565b9050600082806100dc57fe5b84860911156100af5760001981106100f357600080fd5b6001019392505050565b6000808060001985870986860292508281109083900303905080610133576000841161012857600080fd5b5082900490506100af565b80841161013f57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a0290910302918190038190046001018684119095039490940291909403929092049190911791909102915050939250505056fea26469706673582212207bff0abc1b4fd57512cd6aa78f9f16d8362a4d78ab6c9ba70b0236526747a6e964736f6c63430007060033","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 0xAF8B27F EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xAA9A0912 EQ PUSH2 0x76 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x9F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xB6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAC DUP5 DUP5 DUP5 PUSH2 0xC3 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAC DUP5 DUP5 DUP5 PUSH2 0xFD JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD0 DUP5 DUP5 DUP5 PUSH2 0xFD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP1 PUSH2 0xDC JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD GT ISZERO PUSH2 0xAF JUMPI PUSH1 0x0 NOT DUP2 LT PUSH2 0xF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x133 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x128 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0xAF JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x13F 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH28 0xFF0ABC1B4FD57512CD6AA78F9F16D8362A4D78AB6C9BA70B02365267 SELFBALANCE 0xA6 0xE9 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"106:390:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;308:185;;;;;;;;;;;;;;;;-1:-1:-1;308:185:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;135:165;;;;;;;;;;;;;;;;-1:-1:-1;135:165:35;;;;;;;;;;;;:::i;308:185::-;424:7;451:34;477:1;480;483;451:25;:34::i;:::-;444:41;;308:185;;;;;;:::o;135:165::-;241:7;268:24;284:1;287;290;268:15;:24::i;4919:325:18:-;5045:14;5081:25;5088:1;5091;5094:11;5081:6;:25::i;:::-;5072:34;;5149:1;5134:11;5121:25;;;;;5131:1;5128;5121:25;:29;5117:120;;;-1:-1:-1;;5175:6:18;:26;5167:35;;;;;;5217:8;;4919:325;;;;;:::o;762:3868::-;878:14;;;-1:-1:-1;;1394:1:18;1391;1384:20;1427:9;;;;-1:-1:-1;1479:13:18;;;1463:14;;;;1459:34;;-1:-1:-1;1579:10:18;1575:185;;1628:1;1614:11;:15;1606:24;;;;;;-1:-1:-1;1683:23:18;;;;-1:-1:-1;1735:13:18;;1575:185;1891:5;1877:11;:19;1869:28;;;;;;2182:17;2260:11;2257:1;2254;2247:25;2623:12;2638;;;:26;;2761:22;;;;;3584:1;3565;:15;;3564:21;;3815:17;;;3811:21;;3804:28;3874:17;;;3870:21;;3863:28;3934:17;;;3930:21;;3923:28;3994:17;;;3990:21;;3983:28;4054:17;;;4050:21;;4043:28;4115:17;;;4111:21;;;4104:28;3144:12;;;;3140:23;;;3165:1;3136:31;2393:20;;;2382:32;;;3197:12;;;;2437:21;;;;2894:16;;;;3188:21;;;;4587:11;;;;;-1:-1:-1;;762:3868:18;;;;;:::o"},"methodIdentifiers":{"mulDiv(uint256,uint256,uint256)":"aa9a0912","mulDivRoundingUp(uint256,uint256,uint256)":"0af8b27f"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"z\",\"type\":\"uint256\"}],\"name\":\"mulDiv\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"z\",\"type\":\"uint256\"}],\"name\":\"mulDivRoundingUp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/FullMathTest.sol\":\"FullMathTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/test/FullMathTest.sol\":{\"keccak256\":\"0x1e22d93c5a3fa9c881d35926c3a5adf0991435ded634e9af2fce7e660dbc627e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9b713031e5aa5df47ff0bf553b3ccaeca8aad98b722b246578d1eb70010d9cca\",\"dweb:/ipfs/QmfQogXfjkiwuKjXHWw2TJgx46uAVDd27YiKBpaTCfm4x9\"]}},\"version\":1}"}},"contracts/elixir-core/test/LiquidityMathTest.sol":{"LiquidityMathTest":{"abi":[{"inputs":[{"internalType":"uint128","name":"x","type":"uint128"},{"internalType":"int128","name":"y","type":"int128"}],"name":"addDelta","outputs":[{"internalType":"uint128","name":"z","type":"uint128"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint128","name":"x","type":"uint128"},{"internalType":"int128","name":"y","type":"int128"}],"name":"getGasCostOfAddDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506101e3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063402d44fb1461003b578063cf41632f14610086575b600080fd5b61006a6004803603604081101561005157600080fd5b506001600160801b038135169060200135600f0b6100c7565b604080516001600160801b039092168252519081900360200190f35b6100b56004803603604081101561009c57600080fd5b506001600160801b038135169060200135600f0b6100dc565b60408051918252519081900360200190f35b60006100d383836100f7565b90505b92915050565b6000805a90506100ec84846100f7565b505a90039392505050565b60008082600f0b121561015c57826001600160801b03168260000384039150816001600160801b031610610157576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b6100d6565b826001600160801b03168284019150816001600160801b031610156100d6576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fdfea2646970667358221220b286639a36025bebe8235c0e2bb0502230fe99ab8cc1f515bacf1d7eeeffac9c64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E3 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 0x402D44FB EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xCF41632F EQ PUSH2 0x86 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0xF SIGNEXTEND PUSH2 0xC7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0xF SIGNEXTEND PUSH2 0xDC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0xD3 DUP4 DUP4 PUSH2 0xF7 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0xEC DUP5 DUP5 PUSH2 0xF7 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x15C JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x0 SUB DUP5 SUB SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x157 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C53 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD6 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 DUP5 ADD SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0xD6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C41 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB2 DUP7 PUSH4 0x9A36025B 0xEB 0xE8 0x23 0x5C 0xE 0x2B 0xB0 POP 0x22 ADDRESS INVALID SWAP10 0xAB DUP13 0xC1 CREATE2 ISZERO 0xBA 0xCF SAR PUSH31 0xEEFFAC9C64736F6C6343000706003300000000000000000000000000000000 ","sourceMap":"111:381:36:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c8063402d44fb1461003b578063cf41632f14610086575b600080fd5b61006a6004803603604081101561005157600080fd5b506001600160801b038135169060200135600f0b6100c7565b604080516001600160801b039092168252519081900360200190f35b6100b56004803603604081101561009c57600080fd5b506001600160801b038135169060200135600f0b6100dc565b60408051918252519081900360200190f35b60006100d383836100f7565b90505b92915050565b6000805a90506100ec84846100f7565b505a90039392505050565b60008082600f0b121561015c57826001600160801b03168260000384039150816001600160801b031610610157576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b6100d6565b826001600160801b03168284019150816001600160801b031610156100d6576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fdfea2646970667358221220b286639a36025bebe8235c0e2bb0502230fe99ab8cc1f515bacf1d7eeeffac9c64736f6c63430007060033","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 0x402D44FB EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xCF41632F EQ PUSH2 0x86 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0xF SIGNEXTEND PUSH2 0xC7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0xF SIGNEXTEND PUSH2 0xDC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0xD3 DUP4 DUP4 PUSH2 0xF7 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0xEC DUP5 DUP5 PUSH2 0xF7 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x15C JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x0 SUB DUP5 SUB SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x157 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C53 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD6 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 DUP5 ADD SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0xD6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C41 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB2 DUP7 PUSH4 0x9A36025B 0xEB 0xE8 0x23 0x5C 0xE 0x2B 0xB0 POP 0x22 ADDRESS INVALID SWAP10 0xAB DUP13 0xC1 CREATE2 ISZERO 0xBA 0xCF SAR PUSH31 0xEEFFAC9C64736F6C6343000706003300000000000000000000000000000000 ","sourceMap":"111:381:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;145:127;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;145:127:36;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;145:127:36;;;;;;;;;;;;;;280:209;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;280:209:36;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;145:127;207:9;236:28;259:1;262;236:22;:28::i;:::-;229:35;;145:127;;;;;:::o;280:209::-;354:7;374:17;394:9;374:29;;414:28;437:1;440;414:22;:28::i;:::-;;472:9;460:21;;;280:209;-1:-1:-1;;;280:209:36:o;392:242:19:-;454:9;484:1;480;:5;;;476:151;;;534:1;-1:-1:-1;;;;;510:25:19;528:1;527:2;;515:1;:15;511:19;;;-1:-1:-1;;;;;510:25:19;;502:40;;;;;-1:-1:-1;;;502:40:19;;;;;;;;;;;;-1:-1:-1;;;502:40:19;;;;;;;;;;;;;;;476:151;;;607:1;-1:-1:-1;;;;;583:25:19;600:1;588;:14;584:18;;;-1:-1:-1;;;;;583:25:19;;;575:40;;;;;-1:-1:-1;;;575:40:19;;;;;;;;;;;;-1:-1:-1;;;575:40:19;;;;;;;;;;;;;"},"methodIdentifiers":{"addDelta(uint128,int128)":"402d44fb","getGasCostOfAddDelta(uint128,int128)":"cf41632f"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"x\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"y\",\"type\":\"int128\"}],\"name\":\"addDelta\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"z\",\"type\":\"uint128\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"x\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"y\",\"type\":\"int128\"}],\"name\":\"getGasCostOfAddDelta\",\"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/elixir-core/test/LiquidityMathTest.sol\":\"LiquidityMathTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x3ec938fd1b7cc8751df9e2ed90fd0abf32ffacc42cf4b6edbf7138629d747944\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a741475c8a3b5ae8eac7d328170c5a6811920dac22d3800197e39abe0ba42e01\",\"dweb:/ipfs/Qmc2fs5kxp437hWxtLZ6CB8g7vt3bkwKLxE7MMo9D5TAF9\"]},\"contracts/elixir-core/test/LiquidityMathTest.sol\":{\"keccak256\":\"0xa6ba66d0eb5958dac5dbde2379a7a4124a53cc40a7b3c956d93119255bda79d9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6de9eda13412d04bb159a311db7bc8a4a38e9c6b30412375fbfc500d569f03df\",\"dweb:/ipfs/Qmbx3PnhHi31WRyqYv9iGWTQom2EUmuZ5cpu8Gbxkr6uYB\"]}},\"version\":1}"}},"contracts/elixir-core/test/LowGasSafeMathEchidnaTest.sol":{"LowGasSafeMathEchidnaTest":{"abi":[{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"checkAdd","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"int256","name":"x","type":"int256"},{"internalType":"int256","name":"y","type":"int256"}],"name":"checkAddi","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"checkMul","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"checkSub","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"int256","name":"x","type":"int256"},{"internalType":"int256","name":"y","type":"int256"}],"name":"checkSubi","outputs":[],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506102c5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80636d886fae116100505780636d886fae146100b45780639239e777146100d7578063bd78b20d146100fa57610067565b80630f9350001461006c5780630fe48c5c14610091575b600080fd5b61008f6004803603604081101561008257600080fd5b508035906020013561011d565b005b61008f600480360360408110156100a757600080fd5b5080359060200135610151565b61008f600480360360408110156100ca57600080fd5b5080359060200135610190565b61008f600480360360408110156100ed57600080fd5b50803590602001356101b3565b61008f6004803603604081101561011057600080fd5b50803590602001356101e6565b60006101298383610219565b9050818301811461013657fe5b8281101580156101465750818110155b61014c57fe5b505050565b600061015d838361022f565b9050818302811461016a57fe5b821580610175575081155b80610146575082811015801561014657508181101561014c57fe5b600061019c8383610253565b905081830381146101a957fe5b8281111561014c57fe5b60006101bf8383610263565b905081830181146101cc57fe5b600082126101dd5782811215610146565b82811261014c57fe5b60006101f28383610279565b905081830381146101ff57fe5b600082126102105782811315610146565b82811361014c57fe5b8082018281101561022957600080fd5b92915050565b600082158061024a5750508181028183828161024757fe5b04145b61022957600080fd5b8082038281111561022957600080fd5b8181018281121560008312151461022957600080fd5b8082038281131560008312151461022957600080fdfea26469706673582212209c6d5b5e185402d9a696e20287711ed1faa23ebb5b820f42464e9fbec9f6f4d964736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C5 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 0x6D886FAE GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x6D886FAE EQ PUSH2 0xB4 JUMPI DUP1 PUSH4 0x9239E777 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0xBD78B20D EQ PUSH2 0xFA JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0xF935000 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0xFE48C5C EQ PUSH2 0x91 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x11D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x8F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x151 JUMP JUMPDEST PUSH2 0x8F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x190 JUMP JUMPDEST PUSH2 0x8F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x8F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1E6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x129 DUP4 DUP4 PUSH2 0x219 JUMP JUMPDEST SWAP1 POP DUP2 DUP4 ADD DUP2 EQ PUSH2 0x136 JUMPI INVALID JUMPDEST DUP3 DUP2 LT ISZERO DUP1 ISZERO PUSH2 0x146 JUMPI POP DUP2 DUP2 LT ISZERO JUMPDEST PUSH2 0x14C JUMPI INVALID JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15D DUP4 DUP4 PUSH2 0x22F JUMP JUMPDEST SWAP1 POP DUP2 DUP4 MUL DUP2 EQ PUSH2 0x16A JUMPI INVALID JUMPDEST DUP3 ISZERO DUP1 PUSH2 0x175 JUMPI POP DUP2 ISZERO JUMPDEST DUP1 PUSH2 0x146 JUMPI POP DUP3 DUP2 LT ISZERO DUP1 ISZERO PUSH2 0x146 JUMPI POP DUP2 DUP2 LT ISZERO PUSH2 0x14C JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x19C DUP4 DUP4 PUSH2 0x253 JUMP JUMPDEST SWAP1 POP DUP2 DUP4 SUB DUP2 EQ PUSH2 0x1A9 JUMPI INVALID JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x14C JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x1BF DUP4 DUP4 PUSH2 0x263 JUMP JUMPDEST SWAP1 POP DUP2 DUP4 ADD DUP2 EQ PUSH2 0x1CC JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 SLT PUSH2 0x1DD JUMPI DUP3 DUP2 SLT ISZERO PUSH2 0x146 JUMP JUMPDEST DUP3 DUP2 SLT PUSH2 0x14C JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x1F2 DUP4 DUP4 PUSH2 0x279 JUMP JUMPDEST SWAP1 POP DUP2 DUP4 SUB DUP2 EQ PUSH2 0x1FF JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 SLT PUSH2 0x210 JUMPI DUP3 DUP2 SGT ISZERO PUSH2 0x146 JUMP JUMPDEST DUP3 DUP2 SGT PUSH2 0x14C JUMPI INVALID JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x24A JUMPI POP POP DUP2 DUP2 MUL DUP2 DUP4 DUP3 DUP2 PUSH2 0x247 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP2 ADD DUP3 DUP2 SLT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 SGT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP13 PUSH14 0x5B5E185402D9A696E20287711ED1 STATICCALL LOG2 RETURNDATACOPY 0xBB JUMPDEST DUP3 0xF TIMESTAMP CHAINID 0x4E SWAP16 0xBE 0xC9 0xF6 DELEGATECALL 0xD9 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"112:962:37:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c80636d886fae116100505780636d886fae146100b45780639239e777146100d7578063bd78b20d146100fa57610067565b80630f9350001461006c5780630fe48c5c14610091575b600080fd5b61008f6004803603604081101561008257600080fd5b508035906020013561011d565b005b61008f600480360360408110156100a757600080fd5b5080359060200135610151565b61008f600480360360408110156100ca57600080fd5b5080359060200135610190565b61008f600480360360408110156100ed57600080fd5b50803590602001356101b3565b61008f6004803603604081101561011057600080fd5b50803590602001356101e6565b60006101298383610219565b9050818301811461013657fe5b8281101580156101465750818110155b61014c57fe5b505050565b600061015d838361022f565b9050818302811461016a57fe5b821580610175575081155b80610146575082811015801561014657508181101561014c57fe5b600061019c8383610253565b905081830381146101a957fe5b8281111561014c57fe5b60006101bf8383610263565b905081830181146101cc57fe5b600082126101dd5782811215610146565b82811261014c57fe5b60006101f28383610279565b905081830381146101ff57fe5b600082126102105782811315610146565b82811361014c57fe5b8082018281101561022957600080fd5b92915050565b600082158061024a5750508181028183828161024757fe5b04145b61022957600080fd5b8082038281111561022957600080fd5b8181018281121560008312151461022957600080fd5b8082038281131560008312151461022957600080fdfea26469706673582212209c6d5b5e185402d9a696e20287711ed1faa23ebb5b820f42464e9fbec9f6f4d964736f6c63430007060033","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 0x6D886FAE GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x6D886FAE EQ PUSH2 0xB4 JUMPI DUP1 PUSH4 0x9239E777 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0xBD78B20D EQ PUSH2 0xFA JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0xF935000 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0xFE48C5C EQ PUSH2 0x91 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x11D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x8F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x151 JUMP JUMPDEST PUSH2 0x8F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x190 JUMP JUMPDEST PUSH2 0x8F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x8F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1E6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x129 DUP4 DUP4 PUSH2 0x219 JUMP JUMPDEST SWAP1 POP DUP2 DUP4 ADD DUP2 EQ PUSH2 0x136 JUMPI INVALID JUMPDEST DUP3 DUP2 LT ISZERO DUP1 ISZERO PUSH2 0x146 JUMPI POP DUP2 DUP2 LT ISZERO JUMPDEST PUSH2 0x14C JUMPI INVALID JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15D DUP4 DUP4 PUSH2 0x22F JUMP JUMPDEST SWAP1 POP DUP2 DUP4 MUL DUP2 EQ PUSH2 0x16A JUMPI INVALID JUMPDEST DUP3 ISZERO DUP1 PUSH2 0x175 JUMPI POP DUP2 ISZERO JUMPDEST DUP1 PUSH2 0x146 JUMPI POP DUP3 DUP2 LT ISZERO DUP1 ISZERO PUSH2 0x146 JUMPI POP DUP2 DUP2 LT ISZERO PUSH2 0x14C JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x19C DUP4 DUP4 PUSH2 0x253 JUMP JUMPDEST SWAP1 POP DUP2 DUP4 SUB DUP2 EQ PUSH2 0x1A9 JUMPI INVALID JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x14C JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x1BF DUP4 DUP4 PUSH2 0x263 JUMP JUMPDEST SWAP1 POP DUP2 DUP4 ADD DUP2 EQ PUSH2 0x1CC JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 SLT PUSH2 0x1DD JUMPI DUP3 DUP2 SLT ISZERO PUSH2 0x146 JUMP JUMPDEST DUP3 DUP2 SLT PUSH2 0x14C JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x1F2 DUP4 DUP4 PUSH2 0x279 JUMP JUMPDEST SWAP1 POP DUP2 DUP4 SUB DUP2 EQ PUSH2 0x1FF JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 SLT PUSH2 0x210 JUMPI DUP3 DUP2 SGT ISZERO PUSH2 0x146 JUMP JUMPDEST DUP3 DUP2 SGT PUSH2 0x14C JUMPI INVALID JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x24A JUMPI POP POP DUP2 DUP2 MUL DUP2 DUP4 DUP3 DUP2 PUSH2 0x247 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP2 ADD DUP3 DUP2 SLT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 SGT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP13 PUSH14 0x5B5E185402D9A696E20287711ED1 STATICCALL LOG2 RETURNDATACOPY 0xBB JUMPDEST DUP3 0xF TIMESTAMP CHAINID 0x4E SWAP16 0xBE 0xC9 0xF6 DELEGATECALL 0xD9 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"112:962:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;154:173;;;;;;;;;;;;;;;;-1:-1:-1;154:173:37;;;;;;;:::i;:::-;;506:195;;;;;;;;;;;;;;;;-1:-1:-1;506:195:37;;;;;;;:::i;335:163::-;;;;;;;;;;;;;;;;-1:-1:-1;335:163:37;;;;;;;:::i;709:177::-;;;;;;;;;;;;;;;;-1:-1:-1;709:177:37;;;;;;;:::i;894:::-;;;;;;;;;;;;;;;;-1:-1:-1;894:177:37;;;;;;;:::i;154:173::-;219:9;231:24;250:1;253;231:18;:24::i;:::-;219:36;;282:1;278;:5;273:1;:10;266:18;;;;307:1;302;:6;;:16;;;;;317:1;312;:6;;302:16;295:24;;;;154:173;;;:::o;506:195::-;571:9;583:24;602:1;605;583:18;:24::i;:::-;571:36;;634:1;630;:5;625:1;:10;618:18;;;;654:6;;;:16;;-1:-1:-1;664:6:37;;654:16;:38;;;;680:1;675;:6;;:16;;;;;690:1;685;:6;;647:46;;;335:163;400:9;412:24;431:1;434;412:18;:24::i;:::-;400:36;;463:1;459;:5;454:1;:10;447:18;;;;488:1;483;:6;;476:14;;;709:177;773:8;784:24;803:1;806;784:18;:24::i;:::-;773:35;;835:1;831;:5;826:1;:10;819:18;;;;859:1;855;:5;:22;;876:1;871;:6;;855:22;;;867:1;863;:5;848:30;;;894:177;958:8;969:24;988:1;991;969:18;:24::i;:::-;958:35;;1020:1;1016;:5;1011:1;:10;1004:18;;;;1044:1;1040;:5;:22;;1061:1;1056;:6;;1040:22;;;1052:1;1048;:5;1033:30;;;445:113:20;538:5;;;533:16;;;;525:25;;;;;;445:113;;;;:::o;1012:127::-;1070:9;1100:6;;;:30;;-1:-1:-1;;1115:5:20;;;1129:1;1124;1115:5;1124:1;1110:15;;;;;:20;1100:30;1092:39;;;;;728:113;821:5;;;816:16;;;;808:25;;;;;1310:122;1400:5;;;1395:16;;;;1366:8;1416:6;;;1395:28;1387:37;;;;;1615:122;1705:5;;;1700:16;;;;1671:8;1721:6;;;1700:28;1692:37;;;;"},"methodIdentifiers":{"checkAdd(uint256,uint256)":"0f935000","checkAddi(int256,int256)":"9239e777","checkMul(uint256,uint256)":"0fe48c5c","checkSub(uint256,uint256)":"6d886fae","checkSubi(int256,int256)":"bd78b20d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"name\":\"checkAdd\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"x\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"y\",\"type\":\"int256\"}],\"name\":\"checkAddi\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"name\":\"checkMul\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"name\":\"checkSub\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"x\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"y\",\"type\":\"int256\"}],\"name\":\"checkSubi\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/LowGasSafeMathEchidnaTest.sol\":\"LowGasSafeMathEchidnaTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]},\"contracts/elixir-core/test/LowGasSafeMathEchidnaTest.sol\":{\"keccak256\":\"0x8f37652d0929db3fe9ffa2dba2ca544818e0b6817a86ad96c53255adc6384f28\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a1485f7202149f3552e539158533c45eb01af227ba6e20d279331c26ef6ea47a\",\"dweb:/ipfs/Qmc9K7UexGomBwu8wM45jDmJo8dE3fcoxPXoCLJpS3oghD\"]}},\"version\":1}"}},"contracts/elixir-core/test/MockTimeElixirPool.sol":{"MockTimeElixirPool":{"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":false,"internalType":"uint144","name":"rewardPerSecondX48","type":"uint144"},{"indexed":false,"internalType":"uint32","name":"rewardRateEffectiveUntil","type":"uint32"}],"name":"SetRewardRate","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":"uint256","name":"by","type":"uint256"}],"name":"advanceTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"blockTimestamp","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"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":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"},{"internalType":"uint24","name":"_fee","type":"uint24"},{"internalType":"int24","name":"_tickSpacing","type":"int24"}],"name":"initialize","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":"","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"},{"internalType":"uint192","name":"rewardPerLiquidityCumulativeX64","type":"uint192"}],"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[]"},{"internalType":"uint192[]","name":"rewardPerLiquidityCumulativeX64s","type":"uint192[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","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":"rewardSlot","outputs":[{"internalType":"uint144","name":"rewardPerSecondX48","type":"uint144"},{"internalType":"uint32","name":"rewardRateEffectiveUntil","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"factory_","type":"address"}],"name":"setFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeGrowthGlobal0X128","type":"uint256"}],"name":"setFeeGrowthGlobal0X128","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeGrowthGlobal1X128","type":"uint256"}],"name":"setFeeGrowthGlobal1X128","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"feeProtocol0","type":"uint8"},{"internalType":"uint8","name":"feeProtocol1","type":"uint8"}],"name":"setFeeProtocol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint144","name":"rewardPerSecondX48","type":"uint144"},{"internalType":"uint32","name":"rewardRateEffectiveUntil","type":"uint32"}],"name":"setRewardRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time_","type":"uint256"}],"name":"setTime","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"},{"internalType":"uint192","name":"rewardPerLiquidityInsideX64","type":"uint192"}],"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":"","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":"","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"},{"internalType":"uint192","name":"rewardPerLiquidityOutsideX64","type":"uint192"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"time","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"6080604052635f7b26e06202000b5534801561001a57600080fd5b50615f7e806200002b6000396000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c80635bb4780811610145578063c45a0155116100bd578063ddca3f431161008c578063f30dba9311610071578063f30dba9314610a85578063f637731d14610b16578063f6eb760f14610b3c5761025c565b8063ddca3f4314610a5d578063f305839914610a7d5761025c565b8063c45a015514610a11578063d0c93a7c14610a19578063d21220a714610a38578063d380c67914610a405761025c565b8063883bdbfd11610114578063a34123a7116100f9578063a34123a71461094b578063a38807f214610985578063adb61832146109f05761025c565b8063883bdbfd146107cd57806394fd4a3e1461091b5761025c565b80635bb478081461073a57806370cf754a146107605780638206a4d11461076857806385b66729146107905761025c565b806332148f67116101d857806346141319116101a75780634f1eb3d81161018c5780634f1eb3d814610670578063514ea4bf146106c15780635339c2961461071a5761025c565b806346141319146105dc578063490e6cbc146105e45761025c565b806332148f67146104a35780633850c7bd146104c45780633beb26c41461051d5780633c8a7d8d1461053a5761025c565b806316ada5471161022f5780631ad8b03b116102145780631ad8b03b146103d5578063218064e51461040c578063252c09d71461043e5761025c565b806316ada547146103975780631a686502146103b15761025c565b806307e32f0a146102615780630dfe168114610280578063128acb08146102a457806314f2705c14610353575b600080fd5b61027e6004803603602081101561027757600080fd5b5035610b59565b005b610288610b66565b604080516001600160a01b039092168252519081900360200190f35b61033a600480360360a08110156102ba57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a0810160808201356401000000008111156102fb57600080fd5b82018360208201111561030d57600080fd5b8035906020019184600183028401116401000000008311171561032f57600080fd5b509092509050610b75565b6040805192835260208301919091528051918290030190f35b61027e6004803603608081101561036957600080fd5b506001600160a01b03813581169160208101359091169062ffffff604082013516906060013560020b611792565b61039f611861565b60408051918252519081900360200190f35b6103b9611869565b604080516001600160801b039092168252519081900360200190f35b6103dd611878565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b61027e6004803603604081101561042257600080fd5b5080356001600160901b0316906020013563ffffffff16611892565b61045b6004803603602081101561045457600080fd5b5035611ad7565b6040805163ffffffff909616865260069490940b60208601526001600160a01b0390921684840152151560608401526001600160c01b03166080830152519081900360a00190f35b61027e600480360360208110156104b957600080fd5b503561ffff16611b32565b6104cc611c23565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b61027e6004803603602081101561053357600080fd5b5035611c73565b61033a600480360360a081101561055057600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a08101608082013564010000000081111561059d57600080fd5b8201836020820111156105af57600080fd5b803590602001918460018302840111640100000000831117156105d157600080fd5b509092509050611c7a565b61039f611f53565b61027e600480360360808110156105fa57600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561063157600080fd5b82018360208201111561064357600080fd5b8035906020019184600183028401116401000000008311171561066557600080fd5b509092509050611f59565b6103dd600480360360a081101561068657600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b03606082013581169160800135166123a1565b6106de600480360360208110156106d757600080fd5b5035612599565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b61039f6004803603602081101561073057600080fd5b503560010b6125d6565b61027e6004803603602081101561075057600080fd5b50356001600160a01b03166125e8565b6103b961260a565b61027e6004803603604081101561077e57600080fd5b5060ff81358116916020013516612619565b6103dd600480360360608110156107a657600080fd5b506001600160a01b03813516906001600160801b03602082013581169160400135166127f2565b61083d600480360360208110156107e357600080fd5b8101906020810181356401000000008111156107fe57600080fd5b82018360208201111561081057600080fd5b8035906020019184602083028401116401000000008311171561083257600080fd5b509092509050612a7c565b60405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561088557818101518382015260200161086d565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156108c45781810151838201526020016108ac565b50505050905001848103825285818151815260200191508051906020019060200280838360005b838110156109035781810151838201526020016108eb565b50505050905001965050505050505060405180910390f35b610923612b2b565b604080516001600160901b03909316835263ffffffff90911660208301528051918290030190f35b61033a6004803603606081101561096157600080fd5b508035600290810b91602081013590910b90604001356001600160801b0316612b49565b6109af6004803603604081101561099b57600080fd5b508035600290810b9160200135900b612cc5565b6040805160069590950b85526001600160a01b03909316602085015263ffffffff909116838301526001600160c01b03166060830152519081900360800190f35b6109f8612fb7565b6040805163ffffffff9092168252519081900360200190f35b610288612fc6565b610a21612fd5565b6040805160029290920b8252519081900360200190f35b610288612fe5565b61027e60048036036020811015610a5657600080fd5b5035612ff4565b610a65612ff9565b6040805162ffffff9092168252519081900360200190f35b61039f61300b565b610aa560048036036020811015610a9b57600080fd5b503560020b613011565b604080516001600160801b03909a168a52600f9890980b60208a015288880196909652606088019490945260069290920b60808701526001600160a01b031660a086015263ffffffff1660c0850152151560e08401526001600160c01b031661010083015251908190036101200190f35b61027e60048036036020811015610b2c57600080fd5b50356001600160a01b031661308e565b61027e60048036036020811015610b5257600080fd5b503561322d565b6202000b80549091019055565b6001546001600160a01b031681565b60008085610baf576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526004546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c08201819052610c68576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610cb35780600001516001600160a01b0316866001600160a01b0316118015610cae575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610ce5565b80600001516001600160a01b0316866001600160a01b0316108015610ce557506401000276a36001600160a01b038716115b610d1c576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6004805460ff60f01b19169055604080516101608101909152600090808a610d4f5760048460a0015160ff16901c610d62565b60108460a0015160ff1681610d6057fe5b065b60ff1681526009546001600160801b03166020820152604001610d83613232565b63ffffffff168152602001600060060b815260200160006001600160a01b0316815260200160001515815260200160006001600160c01b03168152602001600260149054906101000a900462ffffff1662ffffff168152602001600260179054906101000a900460020b60020b8152602001600160009054906101000a90046001600160a01b03166001600160a01b03168152602001600260009054906101000a90046001600160a01b03166001600160a01b031681525090506000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610e8b57600754610e8f565b6006545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610ede5750886001600160a01b031681604001516001600160a01b031614155b1561129f57610eeb615ede565b60408201516001600160a01b031681526060820151610100850151610f1391600b918f61323a565b15156040830152600290810b810b60208301819052620d89e719910b1215610f4457620d89e7196020820152610f63565b6020810151620d89e860029190910b1315610f6357620d89e860208201525b610f70816020015161337c565b6001600160a01b031660608201526040820151610fe5908d610faa578b6001600160a01b031683606001516001600160a01b031611610fc4565b8b6001600160a01b031683606001516001600160a01b0316105b610fd2578260600151610fd4565b8b5b60c0850151855160e08901516136ae565b60c085015260a084015260808301526001600160a01b0316604083015282156110475761101b8160c001518260800151016138a0565b825103825260a081015161103d90611032906138a0565b6020840151906138b6565b6020830152611082565b6110548160a001516138a0565b825101825260c0810151608082015161107c9161107191016138a0565b6020840151906138d2565b60208301525b835160ff16156110c8576000846000015160ff168260c00151816110a257fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615611107576110fb8160c00151600160801b8460c001516001600160801b03166138e8565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b0316141561125e57806040015115611235578360a001516111b957604080850151602080880151928801519087015160055460608a015161118995600d9594600094919390926001600160901b0382169163ffffffff600160901b9091048116919061399816565b6001600160c01b031660c08701526001600160a01b03166080860152600690810b900b6060850152600160a08501525b600061120b82602001518e6111d0576006546111d6565b84608001515b8f6111e55785608001516111e9565b6007545b608089015160608a015160408b015160c08c0151600a96959493929190613b96565b90508c15611217576000035b6112258360c0015182613cac565b6001600160801b031660c0840152505b8b61124457806020015161124d565b60018160200151035b600290810b900b6060830152611299565b80600001516001600160a01b031682604001516001600160a01b0316146112995761128c8260400151613d62565b600290810b900b60608301525b50610eb8565b836020015160020b816060015160020b1461138a576040808501519084015160208087015190860151600554606089015160808a0151600096879661130a96600d969295919490936001600160901b0383169263ffffffff600160901b909104811692919061408e16565b604085015160608601516004805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b9390931692909202919091176001600160a01b0319166001600160a01b03909116179055506113af9050565b6040810151600480546001600160a01b0319166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b0316146113f55760c0810151600980546001600160801b0319166001600160801b039092169190911790555b8a1561144557608081015160065560a08101516001600160801b0316156114405760a0810151600880546001600160801b031981166001600160801b03918216909301169190911790555b61148b565b608081015160075560a08101516001600160801b03161561148b5760a0810151600880546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b1515146114a457602081015181518b036114b1565b80600001518a0381602001515b90965094508a156115db5760008512156114d8576114d88361014001518d87600003614299565b60006114e88461012001516143fc565b9050336001600160a01b031663d804d7a788888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561156c57600080fd5b505af1158015611580573d6000803e3d6000fd5b505050506115928461012001516143fc565b61159c828961452d565b11156115d5576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b506116f6565b60008612156115f7576115f78361012001518d88600003614299565b60006116078461014001516143fc565b9050336001600160a01b031663d804d7a788888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561168b57600080fd5b505af115801561169f573d6000803e3d6000fd5b505050506116b18461014001516143fc565b6116bb828861452d565b11156116f4576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015160c083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506004805460ff60f01b1916600160f01b17905550919890975095505050505050565b6000546001600160a01b0316156117a857600080fd5b60008054336001600160a01b0319918216179091556001805482166001600160a01b0387811691909117909155600280549092169085161762ffffff60a01b1916600160a01b62ffffff85811691909102919091177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16600160b81b84840b929092169190910217905561183b8161453d565b600380546001600160801b0319166001600160801b039290921691909117905550505050565b6202000b5481565b6009546001600160801b031681565b6008546001600160801b0380821691600160801b90041682565b600454600160f01b900460ff166118d6576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b1916815560005460408051638da5cb5b60e01b815290516001600160a01b0390921692638da5cb5b928282019260209290829003018186803b15801561192457600080fd5b505afa158015611938573d6000803e3d6000fd5b505050506040513d602081101561194e57600080fd5b50516001600160a01b0316331461196457600080fd5b428163ffffffff16101561197757600080fd5b6004546119eb90600160b81b900461ffff16611991613232565b600454600954600554600d949392600160a01b810460020b926001600160801b0316916001600160901b0381169163ffffffff600160901b90920482169161ffff600160c81b8304811692600160d81b9004169061408e16565b6004805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b93909216929092021790556040805180820182526001600160901b03841680825263ffffffff841660209283018190526005805471ffffffffffffffffffffffffffffffffffff191683177fffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffff16600160901b830217905583519182529181019190915281517e8866b45af6018e497020f8d16e58c1be320850f245ebdf9d304666bee15e35929181900390910190a150506004805460ff60f01b1916600160f01b179055565b600d8161ffff8110611ae857600080fd5b60020201805460019091015463ffffffff82169250640100000000820460060b91600160581b81046001600160a01b031691600160f81b90910460ff16906001600160c01b031685565b600454600160f01b900460ff16611b76576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b191690819055600160d81b900461ffff166000611b9e600d83856145a7565b6004805461ffff808416600160d81b810261ffff60d81b1990931692909217909255919250831614611c0b576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506004805460ff60f01b1916600160f01b17905550565b6004546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b6202000b55565b6004546000908190600160f01b900460ff16611cc3576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b191690556001600160801b038516611ce357600080fd5b600080611d3160405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b8152602001611d278a6001600160801b031661464d565b600f0b905261465e565b6001546002549297509095508694508593506000925082916001600160a01b0391821691168515611d6857611d65826143fc565b93505b8615611d7a57611d77816143fc565b92505b336001600160a01b0316631507a8f489898d8d6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611dfc57600080fd5b505af1158015611e10573d6000803e3d6000fd5b505050506000881115611e6857611e26826143fc565b611e30858a61452d565b1115611e68576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b8615611eb957611e77816143fc565b611e81848961452d565b1115611eb9576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8b60020b8d60020b8f6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338f8d8d60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506004805460ff60f01b1916600160f01b17905550939a92995091975050505050505050565b60075481565b600454600160f01b900460ff16611f9d576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b191690556009546001600160801b031680611fec576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b6040805160a0810182526001546001600160a01b0390811682526002549081166020830152600160a01b900462ffffff16918101829052600060608201819052608082015290612041908790620f42406148b5565b6060820152604081015161205f90869062ffffff16620f42406148b5565b60808201528051600090612072906143fc565b9050600061208383602001516143fc565b90508715612098578251612098908a8a614299565b86156120ad576120ad83602001518a89614299565b336001600160a01b0316630659efa68460600151856080015189896040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561213757600080fd5b505af115801561214b573d6000803e3d6000fd5b50505050600061215e84600001516143fc565b9050600061216f85602001516143fc565b90508161218986606001518661452d90919063ffffffff16565b11156121c1576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b806121d986608001518561452d90919063ffffffff16565b1115612211576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b83820383820381156122a057600454600160e81b9004600f1660008115612244578160ff16848161223e57fe5b04612247565b60005b90506001600160801b0381161561227a57600880546001600160801b038082168401166001600160801b03199091161790555b612294818503600160801b8c6001600160801b03166138e8565b60068054909101905550505b801561232b5760048054600160e81b9004901c600f16600081156122d0578160ff1683816122ca57fe5b046122d3565b60005b90506001600160801b0381161561230557600880546001600160801b03600160801b8083048216850182160291161790555b61231f818403600160801b8c6001600160801b03166138e8565b60078054909101905550505b604080518d8152602081018d90528082018490526060810183905290516001600160a01b038f169133917fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6339181900360800190a350506004805460ff60f01b1916600160f01b1790555050505050505050505050565b6004546000908190600160f01b900460ff166123ea576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b191690556000612406600c3389896148ef565b60038101549091506001600160801b03908116908616116124275784612436565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b90910481169085161161245e5783612474565b6003810154600160801b90046001600160801b03165b91506001600160801b038316156124c6576003810180546001600160801b031981166001600160801b039182168690038216179091556001546124c6916001600160a01b03909116908a908616614299565b6001600160801b03821615612519576003810180546001600160801b03600160801b808304821686900382160291811691909117909155600254612519916001600160a01b03909116908a908516614299565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506004805460ff60f01b1916600160f01b17905590969095509350505050565b600c6020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b600b6020526000908152604090205481565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160801b031681565b600454600160f01b900460ff1661265d576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b1916815560005460408051638da5cb5b60e01b815290516001600160a01b0390921692638da5cb5b928282019260209290829003018186803b1580156126ab57600080fd5b505afa1580156126bf573d6000803e3d6000fd5b505050506040513d60208110156126d557600080fd5b50516001600160a01b031633146126eb57600080fd5b60ff8216158061270e575060048260ff161015801561270e5750600a8260ff1611155b8015612738575060ff81161580612738575060048160ff16101580156127385750600a8160ff1611155b61274157600080fd5b60048054610ff083831b16840160ff908116600160e81b9081027fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84161784556040805191909304600f81811683529481901c909416602082015285821681840152848216606082015291519216917f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b1339181900360800190a150506004805460ff60f01b1916600160f01b17905550565b6004546000908190600160f01b900460ff1661283b576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b1916815560005460408051638da5cb5b60e01b815290516001600160a01b0390921692638da5cb5b928282019260209290829003018186803b15801561288957600080fd5b505afa15801561289d573d6000803e3d6000fd5b505050506040513d60208110156128b357600080fd5b50516001600160a01b031633146128c957600080fd5b6008546001600160801b03908116908516116128e557836128f2565b6008546001600160801b03165b6008549092506001600160801b03600160801b909104811690841611612918578261292c565b600854600160801b90046001600160801b03165b90506001600160801b0382161561299a576008546001600160801b038381169116141561295b57600019909101905b600880546001600160801b031981166001600160801b0391821685900382161790915560015461299a916001600160a01b039091169087908516614299565b6001600160801b03811615612a0d576008546001600160801b03828116600160801b9092041614156129cb57600019015b600880546001600160801b03600160801b808304821685900382160291811691909117909155600254612a0d916001600160a01b039091169087908416614299565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36004805460ff60f01b1916600160f01b1790559094909350915050565b6060806060612b1e612a8c613232565b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600454600954600554600d96959450600160a01b830460020b935061ffff600160b81b84048116936001600160801b03909316926001600160901b0383169263ffffffff600160901b909104811692600160c81b9092049091169061495316565b9250925092509250925092565b6005546001600160901b03811690600160901b900463ffffffff1682565b6004546000908190600160f01b900460ff16612b92576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b1916905560408051608081018252338152600287810b602083015286900b9181019190915260009081908190612bee9060608101612be16001600160801b038a1661464d565b600003600f0b905261465e565b9250925092508160000394508060000393506000851180612c0f5750600084115b15612c4e576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506004805460ff60f01b1916600160f01b179055509094909350915050565b600080600080612cd58686614b10565b612cdd615f1a565b612ce5615f1a565b600288810b810b6000908152600a602090815260408083208b850b90940b8352918290206003840154600485015460ff600160f81b8304161515608089018190526001600160c01b03909116606089015263ffffffff600160d81b830416948801949094526001600160a01b0367010000000000000082041692870192909252600691820b820b90910b855290612d7b57600080fd5b6003810154600482015460ff600160f81b8304161515608086018190526001600160c01b03909116606086015263ffffffff600160d81b83041660408601526001600160a01b036701000000000000008304166020860152600691820b820b90910b8452612de857600080fd5b50506040805160e0810182526004546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c083015290918a820b910b1215612eb55781600001518360000151038260200151846020015103836040015185604001510384606001518660600151039650965096509650505050612fae565b8760020b816020015160020b1215612f76576000612ed1613232565b60208301516040840151600954600554606087015194955060009485948594612f2894600d948a94889493926001600160801b0316916001600160901b0381169163ffffffff600160901b90920482169161399816565b92509250925085600001518760000151840303866020015188602001518403038760400151896040015187030388606001518a606001518503039a509a509a509a5050505050505050612fae565b826000015182600001510383602001518360200151038460400151846040015103856060015185606001510396509650965096505050505b92959194509250565b6000612fc1613232565b905090565b6000546001600160a01b031681565b60028054600160b81b9004900b81565b6002546001600160a01b031681565b600655565b600254600160a01b900462ffffff1681565b60065481565b600a60205260009081526040902080546001820154600283015460038401546004909401546001600160801b03841694600160801b909404600f0b93600681900b9167010000000000000082046001600160a01b031691600160d81b810463ffffffff1691600160f81b90910460ff16906001600160c01b031689565b6004546001600160a01b0316156130d1576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b60006130dc82613d62565b90506000806130f46130ec613232565b600d90614bd9565b6040805160e0810182526001600160a01b038816808252600288810b6020808501829052600085870181905261ffff898116606088018190529089166080880181905260a0880192909252600160c09097019690965260048054600160f01b6001600160a01b0319909116871762ffffff60a01b1916600160a01b62ffffff9787900b9790971696909602959095177fffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffff16600160c81b9097029690961761ffff60d81b1916600160d81b909102177fff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a150505050565b600755565b6202000b5490565b60008060008460020b8660020b8161324e57fe5b05905060008660020b12801561327557508460020b8660020b8161326e57fe5b0760020b15155b1561327f57600019015b83156132f45760008061329183614c3c565b600182810b810b600090815260208d9052604090205460ff83169190911b800160001901908116801515975092945090925090856132d657888360ff168603026132e9565b886132e082614c4e565b840360ff168603025b965050505050613372565b60008061330383600101614c3c565b91509150600060018260ff166001901b031990506000818b60008660010b60010b815260200190815260200160002054169050806000141595508561335557888360ff0360ff1686600101010261336b565b888361336083614cee565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12613393578260020b61339b565b8260020b6000035b9050620d89e88111156133d9576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b6000600182166133ed57600160801b6133ff565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615613433576ffff97272373d413259a46990580e213a0260801c5b6004821615613452576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613471576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613490576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156134af576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156134ce576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156134ed576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561350d576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561352d576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561354d576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161561356d576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561358d576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156135ad576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156135cd576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156135ed576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561360e576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561362e576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561364d576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561366a576b048a170391f7dc42444e8fa20260801c5b60008460020b131561368557806000198161368157fe5b0490505b64010000000081061561369957600161369c565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a1610158187128015906137335760006136e78989620f42400362ffffff16620f42406138e8565b905082613700576136fb8c8c8c6001614dd8565b61370d565b61370d8b8d8c6001614e53565b955085811061371e578a965061372d565b61372a8c8b8386614f10565b96505b5061377d565b8161374a576137458b8b8b6000614e53565b613757565b6137578a8c8b6000614dd8565b935083886000031061376b5789955061377d565b61377a8b8a8a60000385614f5c565b95505b6001600160a01b038a81169087161482156137e05780801561379c5750815b6137b2576137ad878d8c6001614e53565b6137b4565b855b95508080156137c1575081155b6137d7576137d2878d8c6000614dd8565b6137d9565b845b945061382a565b8080156137ea5750815b613800576137fb8c888c6001614dd8565b613802565b855b955080801561380f575081155b613825576138208c888c6000614e53565b613827565b845b94505b8115801561383a57508860000385115b15613846578860000394505b81801561386557508a6001600160a01b0316876001600160a01b031614155b15613874578589039350613891565b61388e868962ffffff168a620f42400362ffffff166148b5565b93505b50505095509550955095915050565b6000600160ff1b82106138b257600080fd5b5090565b808203828113156000831215146138cc57600080fd5b92915050565b818101828112156000831215146138cc57600080fd5b600080806000198587098686029250828110908390030390508061391e576000841161391357600080fd5b508290049050613991565b80841161392a57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b6000808063ffffffff8a16613a645760008c8961ffff1661ffff81106139ba57fe5b6040805160a08101825260029290920292909201805463ffffffff8082168085526401000000008304600690810b810b900b6020860152600160581b83046001600160a01b031695850195909552600160f81b90910460ff16151560608401526001909101546001600160c01b031660808301529092508d1614613a4957613a46818d8c8b8b8b614fa8565b90505b80602001518160400151826080015193509350935050613b87565b898b03600080613a7b8f8f858f8f8f8f8f8f6150f2565b91509150816000015163ffffffff168363ffffffff161415613ab457816020015182604001518360800151955095509550505050613b87565b805163ffffffff84811691161415613ae357806020015181604001518260800151955095509550505050613b87565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b81613b1157fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b03160281613b4357fe5b048560400151018263ffffffff168463ffffffff1687608001518760800151036001600160c01b031681613b7357fe5b040286608001510197509750975050505050505b99509950999650505050505050565b600296870b870b60009081526020989098526040909720600181018054909603909555948401805490930390925560038301805463ffffffff600160d81b6001600160a01b036701000000000000008085048216909603169094027fffffffffff0000000000000000000000000000000000000000ffffffffffffff90921691909117600681810b90950390940b66ffffffffffffff1666ffffffffffffff19909416939093178281048416909503909216027fff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff909316929092179091556004810180546001600160c01b038082169094039093166001600160c01b03199093169290921790915554600160801b9004600f0b90565b60008082600f0b1215613d1157826001600160801b03168260000384039150816001600160801b031610613d0c576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b6138cc565b826001600160801b03168284019150816001600160801b031610156138cc576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b03831610801590613d9e575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613dd3576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c97908811961790941790921717909117171760808110613e7457607f810383901c9150613e7e565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1461407f57886001600160a01b03166140638261337c565b6001600160a01b03161115614078578161407a565b805b614081565b815b9998505050505050505050565b60008060008b8b61ffff1661ffff81106140a457fe5b6040805160a08101825260029290920292909201805463ffffffff8082168085526401000000008304600690810b810b900b6020860152600160581b83046001600160a01b031695850195909552600160f81b90910460ff16151560608401526001909101546001600160c01b031660808301529092508b16141561412f578a85925092505061428b565b8461ffff168461ffff1611801561415057506001850361ffff168b61ffff16145b1561415d57839150614161565b8491505b8161ffff168b60010161ffff168161417557fe5b069250614186818b8b8b8b8b614fa8565b8c8461ffff1661ffff811061419757fe5b825160029190910291909101805460208401516040850151606086015163ffffffff1990931663ffffffff909516949094176affffffffffffff00000000191664010000000066ffffffffffffff60069390930b9290921691909102177fff0000000000000000000000000000000000000000ffffffffffffffffffffff16600160581b6001600160a01b0390941693909302929092177effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b92151592909202919091178155608090910151600190910180546001600160c01b0319166001600160c01b03909216919091179055505b995099975050505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1781529251825160009485949389169392918291908083835b6020831061432a5780518252601f19909201916020918201910161430b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461438c576040519150601f19603f3d011682016040523d82523d6000602084013e614391565b606091505b50915091508180156143bf5750805115806143bf57508080602001905160208110156143bc57600080fd5b50515b6143f5576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166370a0823160e01b17815291518151600093849384936001600160a01b03881693919290918291908083835b6020831061448a5780518252601f19909201916020918201910161446b565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146144ea576040519150601f19603f3d011682016040523d82523d6000602084013e6144ef565b606091505b509150915081801561450357506020815110155b61450c57600080fd5b80806020019051602081101561452157600080fd5b5051925050505b919050565b808201828110156138cc57600080fd5b60008082600281900b620d89e7198161455257fe5b05029050600083600281900b620d89e88161456957fe5b0502905060008460020b83830360020b8161458057fe5b0560010190508062ffffff166001600160801b0380168161459d57fe5b0495945050505050565b6000808361ffff16116145e5576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff16116145fb575081613991565b825b8261ffff168161ffff161015614644576001858261ffff1661ffff811061462057fe5b60020201805463ffffffff191663ffffffff929092169190911790556001016145fd565b50909392505050565b80600f81900b811461452857600080fd5b600080600061467584602001518560400151614b10565b6040805160e0810182526004546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c0850152885190890151948901519289015193946147199491939092909190615339565b93508460600151600f0b6000146148ad57846020015160020b816020015160020b121561476e57614767614750866020015161337c565b61475d876040015161337c565b87606001516154bc565b92506148ad565b846040015160020b816020015160020b12156148835760095460408201516001600160801b03909116906147df906147a4613232565b602085015160055460608701516080880151600d9594939288926001600160901b0382169263ffffffff600160901b90930483169261408e16565b6004805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b93909216929092021790558151604087015161482f91906148259061337c565b88606001516154bc565b935061484d614841876020015161337c565b83516060890151615500565b925061485d818760600151613cac565b600980546001600160801b0319166001600160801b0392909216919091179055506148ad565b6148aa614893866020015161337c565b6148a0876040015161337c565b8760600151615500565b91505b509193909250565b60006148c28484846138e8565b9050600082806148ce57fe5b84860911156139915760001981106148e557600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b606080606060008461ffff1611614995576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b895167ffffffffffffffff811180156149ad57600080fd5b506040519080825280602002602001820160405280156149d7578160200160208202803683370190505b509250895167ffffffffffffffff811180156149f257600080fd5b50604051908082528060200260200182016040528015614a1c578160200160208202803683370190505b509150895167ffffffffffffffff81118015614a3757600080fd5b50604051908082528060200260200182016040528015614a61578160200160208202803683370190505b50905060005b8a51811015614b0057614a948d8d8d8481518110614a8157fe5b60200260200101518d8d8d8d8d8d613998565b868481518110614aa057fe5b60200260200101868581518110614ab357fe5b60200260200101868681518110614ac657fe5b6001600160c01b03909416602094850291909101909301929092526001600160a01b039092169052600691820b90910b9052600101614a67565b5099509950999650505050505050565b8060020b8260020b12614b50576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b1215614b93576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614bd5576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160a08101825263ffffffff928316808252600060208301819052928201839052600160608301819052608090920192909252835463ffffffff1916909117909116600160f81b17825590810180546001600160c01b0319169055908190565b60020b600881901d9161010090910790565b6000808211614c5c57600080fd5b600160801b8210614c6f57608091821c91015b680100000000000000008210614c8757604091821c91015b6401000000008210614c9b57602091821c91015b620100008210614cad57601091821c91015b6101008210614cbe57600891821c91015b60108210614cce57600491821c91015b60048210614cde57600291821c91015b6002821061452857600101919050565b6000808211614cfc57600080fd5b5060ff6001600160801b03821615614d1757607f1901614d1f565b608082901c91505b67ffffffffffffffff821615614d3857603f1901614d40565b604082901c91505b63ffffffff821615614d5557601f1901614d5d565b602082901c91505b61ffff821615614d7057600f1901614d78565b601082901c91505b60ff821615614d8a5760071901614d92565b600882901c91505b600f821615614da45760031901614dac565b600482901c91505b6003821615614dbe5760011901614dc6565b600282901c91505b60018216156145285760001901919050565b6000836001600160a01b0316856001600160a01b03161115614df8579293925b81614e2557614e20836001600160801b03168686036001600160a01b0316600160601b6138e8565b614e48565b614e48836001600160801b03168686036001600160a01b0316600160601b6148b5565b90505b949350505050565b6000836001600160a01b0316856001600160a01b03161115614e73579293925b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b166001600160a01b038686038116908716614eaf57600080fd5b83614edf57866001600160a01b0316614ed28383896001600160a01b03166138e8565b81614ed957fe5b04614f05565b614f05614ef68383896001600160a01b03166148b5565b886001600160a01b031661552f565b979650505050505050565b600080856001600160a01b031611614f2757600080fd5b6000846001600160801b031611614f3d57600080fd5b81614f4f57614e20858585600161553a565b614e48858585600161561b565b600080856001600160a01b031611614f7357600080fd5b6000846001600160801b031611614f8957600080fd5b81614f9b57614e20858585600061561b565b614e48858585600061553a565b614fb0615f1a565b865186036001600160801b038516614fc9576001614fcb565b845b9450600063ffffffff421161501657428463ffffffff1610614fed5781615011565b886000015163ffffffff168463ffffffff16111561500e5788518403615011565b60005b615019565b60005b90506040518060a001604052808963ffffffff1681526020018363ffffffff168960020b028b602001510160060b8152602001876001600160801b031660808563ffffffff166001600160a01b0316901b6001600160a01b03168161507a57fe5b048b60400151016001600160a01b03168152602001600115158152602001876001600160801b03168363ffffffff166010896001600160901b03166001600160c01b0316901b026001600160c01b0316816150d157fe5b048b60800151016001600160c01b0316815250925050509695505050505050565b6150fa615f1a565b615102615f1a565b8a8761ffff1661ffff811061511357fe5b6040805160a08101825260029290920292909201805463ffffffff81168084526401000000008204600690810b810b900b6020850152600160581b82046001600160a01b031694840194909452600160f81b900460ff1615156060830152600101546001600160c01b031660808201529250615191908b908b615710565b156151cb578863ffffffff16826000015163ffffffff1614156151b35761428b565b816151c2838b8b8a8a8a614fa8565b9150915061428b565b8a8361ffff168860010161ffff16816151e057fe5b0661ffff1661ffff81106151f057fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff161515606082018190526001909201546001600160c01b0316608082015292506152d4576040805160a0810182528c5463ffffffff811682526401000000008104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015260018c01546001600160c01b0316608082015291505b6152e38a83600001518b615710565b61531a576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b6153278b8b8b8a876157d3565b91509150995099975050505050505050565b6000615348600c8787876148ef565b60065460075491925090600080600f87900b1561545c576000615369613232565b600454600954600554929350600092839283926153d492600d9288928692600160a01b830460020b9261ffff600160b81b82048116936001600160801b0316926001600160901b0381169263ffffffff600160901b909204821692600160c81b909104169061399816565b60035492955090935091506001600160801b03166153fe600a8f8d8f8d8d898b8d60008b8d6159a8565b9650615416600a8e8d8f8d8d898b8d60018b8d6159a8565b60028054919750600160b81b909104900b8715615443576154438f82600b615be09092919063ffffffff16565b861561545557615455600b8f83615be0565b5050505050505b60008061546e600a8c8c8b8a8a615c46565b909250905061547f878a8484615cf2565b600089600f0b12156154ad57831561549c5761549c600a8c615e87565b82156154ad576154ad600a8b615e87565b50505050505095945050505050565b60008082600f0b126154e2576154dd6154d88585856001614e53565b6138a0565b614e4b565b6154f56154d88585856000036000614e53565b600003949350505050565b60008082600f0b1261551c576154dd6154d88585856001614dd8565b6154f56154d88585856000036000614dd8565b808204910615150190565b600081156155ad5760006001600160a01b038411156155705761556b84600160601b876001600160801b03166138e8565b615588565b6001600160801b038516606085901b8161558657fe5b045b90506155a56155a06001600160a01b0388168361452d565b615ec8565b915050614e4b565b60006001600160a01b038411156155db576155d684600160601b876001600160801b03166148b5565b6155f2565b6155f2606085901b6001600160801b03871661552f565b905080866001600160a01b03161161560957600080fd5b6001600160a01b038616039050614e4b565b600082615629575083614e4b565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b1682156156c9576001600160a01b0386168481029085828161566957fe5b04141561569a578181018281106156985761568e83896001600160a01b0316836148b5565b9350505050614e4b565b505b6156c0826156bb878a6001600160a01b031686816156b457fe5b049061452d565b61552f565b92505050614e4b565b6001600160a01b038616848102908582816156e057fe5b041480156156ed57508082115b6156f657600080fd5b80820361568e6155a0846001600160a01b038b16846148b5565b60008363ffffffff168363ffffffff161115801561573a57508363ffffffff168263ffffffff1611155b15615756578163ffffffff168363ffffffff1611159050613991565b60008463ffffffff168463ffffffff161161577e578363ffffffff1664010000000001615786565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff16116157b7578363ffffffff16640100000000016157bf565b8363ffffffff165b64ffffffffff169091111595945050505050565b6157db615f1a565b6157e3615f1a565b60008361ffff168560010161ffff16816157f957fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff8716828161582657fe5b0661ffff811061583257fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff161515606082018190526001909201546001600160c01b0316608082015295506158b757806001019250615811565b898661ffff1682600101816158c857fe5b0661ffff81106158d457fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff16151560608201526001909101546001600160c01b03166080820152855190945060009061595a908b908b615710565b905080801561597357506159738a8a8760000151615710565b1561597e575061599b565b8061598e57600182039250615995565b8160010193505b50615811565b5050509550959350505050565b60028b810b900b600090815260208d90526040812080546001600160801b0316826159d3828e613cac565b9050856001600160801b0316816001600160801b03161115615a21576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b038281161590821615811415945015615b2c578d60020b8f60020b13615afc578b83600101819055508a8360020181905550898360030160076101000a8154816001600160a01b0302191690836001600160a01b03160217905550888360030160006101000a81548166ffffffffffffff021916908360060b66ffffffffffffff1602179055508783600301601b6101000a81548163ffffffff021916908363ffffffff160217905550848360040160006101000a8154816001600160c01b0302191690836001600160c01b031602179055505b6003830180547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790555b82546001600160801b0319166001600160801b03821617835586615b8157615b7c615b778e600f0b8560000160109054906101000a9004600f0b600f0b6138d290919063ffffffff16565b61464d565b615bae565b615bae615b778e600f0b8560000160109054906101000a9004600f0b600f0b6138b690919063ffffffff16565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909d9c50505050505050505050505050565b8060020b8260020b81615bef57fe5b0760020b15615bfd57600080fd5b600080615c188360020b8560020b81615c1257fe5b05614c3c565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b12615c8c57505060018201546002830154615c9f565b8360010154880391508360020154870390505b6000808b60020b8b60020b1215615cc157505060018301546002840154615cd4565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b615d915781516001600160801b0316615d89576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b508051615da0565b8151615d9d9086613cac565b90505b6000615dc48360200151860384600001516001600160801b0316600160801b6138e8565b90506000615dea8460400151860385600001516001600160801b0316600160801b6138e8565b905086600f0b600014615e115787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b038216151580615e3f57506000816001600160801b0316115b15615e7d576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b60009081526020929092526040822082815560018101839055908101829055600381019190915560040180546001600160c01b0319169055565b806001600160a01b038116811461452857600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091529056fea26469706673582212201803e69d62c9a4ccb7bffa2039e5a502d911334129c169f0c0adf937fe3fc57364736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH4 0x5F7B26E0 PUSH3 0x2000B SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F7E DUP1 PUSH3 0x2B 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 0x25C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5BB47808 GT PUSH2 0x145 JUMPI DUP1 PUSH4 0xC45A0155 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xDDCA3F43 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xF30DBA93 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xF30DBA93 EQ PUSH2 0xA85 JUMPI DUP1 PUSH4 0xF637731D EQ PUSH2 0xB16 JUMPI DUP1 PUSH4 0xF6EB760F EQ PUSH2 0xB3C JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0xDDCA3F43 EQ PUSH2 0xA5D JUMPI DUP1 PUSH4 0xF3058399 EQ PUSH2 0xA7D JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0xC45A0155 EQ PUSH2 0xA11 JUMPI DUP1 PUSH4 0xD0C93A7C EQ PUSH2 0xA19 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0xA38 JUMPI DUP1 PUSH4 0xD380C679 EQ PUSH2 0xA40 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x883BDBFD GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xA34123A7 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xA34123A7 EQ PUSH2 0x94B JUMPI DUP1 PUSH4 0xA38807F2 EQ PUSH2 0x985 JUMPI DUP1 PUSH4 0xADB61832 EQ PUSH2 0x9F0 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x883BDBFD EQ PUSH2 0x7CD JUMPI DUP1 PUSH4 0x94FD4A3E EQ PUSH2 0x91B JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x5BB47808 EQ PUSH2 0x73A JUMPI DUP1 PUSH4 0x70CF754A EQ PUSH2 0x760 JUMPI DUP1 PUSH4 0x8206A4D1 EQ PUSH2 0x768 JUMPI DUP1 PUSH4 0x85B66729 EQ PUSH2 0x790 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x32148F67 GT PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x46141319 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x4F1EB3D8 GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x4F1EB3D8 EQ PUSH2 0x670 JUMPI DUP1 PUSH4 0x514EA4BF EQ PUSH2 0x6C1 JUMPI DUP1 PUSH4 0x5339C296 EQ PUSH2 0x71A JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x46141319 EQ PUSH2 0x5DC JUMPI DUP1 PUSH4 0x490E6CBC EQ PUSH2 0x5E4 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x32148F67 EQ PUSH2 0x4A3 JUMPI DUP1 PUSH4 0x3850C7BD EQ PUSH2 0x4C4 JUMPI DUP1 PUSH4 0x3BEB26C4 EQ PUSH2 0x51D JUMPI DUP1 PUSH4 0x3C8A7D8D EQ PUSH2 0x53A JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x16ADA547 GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x1AD8B03B GT PUSH2 0x214 JUMPI DUP1 PUSH4 0x1AD8B03B EQ PUSH2 0x3D5 JUMPI DUP1 PUSH4 0x218064E5 EQ PUSH2 0x40C JUMPI DUP1 PUSH4 0x252C09D7 EQ PUSH2 0x43E JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x16ADA547 EQ PUSH2 0x397 JUMPI DUP1 PUSH4 0x1A686502 EQ PUSH2 0x3B1 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x7E32F0A EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x128ACB08 EQ PUSH2 0x2A4 JUMPI DUP1 PUSH4 0x14F2705C EQ PUSH2 0x353 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xB59 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x288 PUSH2 0xB66 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x33A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP3 PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x30D 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 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xB75 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 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH3 0xFFFFFF PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x1792 JUMP JUMPDEST PUSH2 0x39F PUSH2 0x1861 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3B9 PUSH2 0x1869 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3DD PUSH2 0x1878 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x1892 JUMP JUMPDEST PUSH2 0x45B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x454 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1AD7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP7 AND DUP7 MSTORE PUSH1 0x6 SWAP5 SWAP1 SWAP5 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP5 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFFFF AND PUSH2 0x1B32 JUMP JUMPDEST PUSH2 0x4CC PUSH2 0x1C23 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP9 AND DUP9 MSTORE PUSH1 0x2 SWAP7 SWAP1 SWAP7 SIGNEXTEND PUSH1 0x20 DUP9 ADD MSTORE PUSH2 0xFFFF SWAP5 DUP6 AND DUP8 DUP8 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x60 DUP8 ADD MSTORE SWAP3 AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xFF SWAP1 SWAP2 AND PUSH1 0xA0 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xE0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x533 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x33A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP3 PUSH1 0x40 DUP4 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x59D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5AF 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 0x5D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1C7A JUMP JUMPDEST PUSH2 0x39F PUSH2 0x1F53 JUMP JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD 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 0x631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x643 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 0x665 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1F59 JUMP JUMPDEST PUSH2 0x3DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x686 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x80 ADD CALLDATALOAD AND PUSH2 0x23A1 JUMP JUMPDEST PUSH2 0x6DE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2599 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP5 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP5 AND PUSH1 0x60 DUP5 ADD MSTORE SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x39F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x730 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 SIGNEXTEND PUSH2 0x25D6 JUMP JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x750 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x25E8 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x77E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x2619 JUMP JUMPDEST PUSH2 0x3DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x7A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 ADD CALLDATALOAD AND PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x83D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x7FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2A7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x885 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x86D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8C4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8AC JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x903 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8EB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x923 PUSH2 0x2B2B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x33A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x961 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2B49 JUMP JUMPDEST PUSH2 0x9AF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x99B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x20 ADD CALLDATALOAD SWAP1 SIGNEXTEND PUSH2 0x2CC5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x6 SWAP6 SWAP1 SWAP6 SIGNEXTEND DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP4 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x9F8 PUSH2 0x2FB7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x288 PUSH2 0x2FC6 JUMP JUMPDEST PUSH2 0xA21 PUSH2 0x2FD5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x288 PUSH2 0x2FE5 JUMP JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2FF4 JUMP JUMPDEST PUSH2 0xA65 PUSH2 0x2FF9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0xFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x39F PUSH2 0x300B JUMP JUMPDEST PUSH2 0xAA5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x3011 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP11 AND DUP11 MSTORE PUSH1 0xF SWAP9 SWAP1 SWAP9 SIGNEXTEND PUSH1 0x20 DUP11 ADD MSTORE DUP9 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x60 DUP9 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x6 SWAP3 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xA0 DUP7 ADD MSTORE PUSH4 0xFFFFFFFF AND PUSH1 0xC0 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0xE0 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH2 0x100 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x120 ADD SWAP1 RETURN JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x308E JUMP JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x322D JUMP JUMPDEST PUSH3 0x2000B DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH2 0xBAF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4153 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP2 DIV DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP4 DIV DUP2 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND ISZERO ISZERO PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0xC68 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP8 PUSH2 0xCB3 JUMPI DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT DUP1 ISZERO PUSH2 0xCAE JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND LT JUMPDEST PUSH2 0xCE5 JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP1 ISZERO PUSH2 0xCE5 JUMPI POP PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GT JUMPDEST PUSH2 0xD1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x14D413 PUSH1 0xEA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH2 0x160 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 DUP1 DUP11 PUSH2 0xD4F JUMPI PUSH1 0x4 DUP5 PUSH1 0xA0 ADD MLOAD PUSH1 0xFF AND SWAP1 SHR PUSH2 0xD62 JUMP JUMPDEST PUSH1 0x10 DUP5 PUSH1 0xA0 ADD MLOAD PUSH1 0xFF AND DUP2 PUSH2 0xD60 JUMPI INVALID JUMPDEST MOD JUMPDEST PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD PUSH2 0xD83 PUSH2 0x3232 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x6 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x2 SIGNEXTEND PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP1 DUP10 SGT SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 DUP12 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH2 0xE8B JUMPI PUSH1 0x7 SLOAD PUSH2 0xE8F JUMP JUMPDEST PUSH1 0x6 SLOAD JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE POP SWAP1 POP JUMPDEST DUP1 MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0xEDE JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x129F JUMPI PUSH2 0xEEB PUSH2 0x5EDE JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x100 DUP6 ADD MLOAD PUSH2 0xF13 SWAP2 PUSH1 0xB SWAP2 DUP16 PUSH2 0x323A JUMP JUMPDEST ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE PUSH3 0xD89E7 NOT SWAP2 SIGNEXTEND SLT ISZERO PUSH2 0xF44 JUMPI PUSH3 0xD89E7 NOT PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xF63 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH3 0xD89E8 PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND SGT ISZERO PUSH2 0xF63 JUMPI PUSH3 0xD89E8 PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH2 0xF70 DUP2 PUSH1 0x20 ADD MLOAD PUSH2 0x337C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0xFE5 SWAP1 DUP14 PUSH2 0xFAA JUMPI DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0xFC4 JUMP JUMPDEST DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT JUMPDEST PUSH2 0xFD2 JUMPI DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0xFD4 JUMP JUMPDEST DUP12 JUMPDEST PUSH1 0xC0 DUP6 ADD MLOAD DUP6 MLOAD PUSH1 0xE0 DUP10 ADD MLOAD PUSH2 0x36AE JUMP JUMPDEST PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP4 ADD MSTORE DUP3 ISZERO PUSH2 0x1047 JUMPI PUSH2 0x101B DUP2 PUSH1 0xC0 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD ADD PUSH2 0x38A0 JUMP JUMPDEST DUP3 MLOAD SUB DUP3 MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0x103D SWAP1 PUSH2 0x1032 SWAP1 PUSH2 0x38A0 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 PUSH2 0x38B6 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1082 JUMP JUMPDEST PUSH2 0x1054 DUP2 PUSH1 0xA0 ADD MLOAD PUSH2 0x38A0 JUMP JUMPDEST DUP3 MLOAD ADD DUP3 MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x107C SWAP2 PUSH2 0x1071 SWAP2 ADD PUSH2 0x38A0 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 PUSH2 0x38D2 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE JUMPDEST DUP4 MLOAD PUSH1 0xFF AND ISZERO PUSH2 0x10C8 JUMPI PUSH1 0x0 DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0xFF AND DUP3 PUSH1 0xC0 ADD MLOAD DUP2 PUSH2 0x10A2 JUMPI INVALID JUMPDEST PUSH1 0xC0 DUP5 ADD DUP1 MLOAD SWAP3 SWAP1 SWAP2 DIV SWAP2 DUP3 SWAP1 SUB SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD DUP1 MLOAD SWAP1 SWAP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 MSTORE POP JUMPDEST PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x1107 JUMPI PUSH2 0x10FB DUP2 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x80 SHL DUP5 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x38E8 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP1 MLOAD SWAP1 SWAP2 ADD SWAP1 MSTORE JUMPDEST DUP1 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x125E JUMPI DUP1 PUSH1 0x40 ADD MLOAD ISZERO PUSH2 0x1235 JUMPI DUP4 PUSH1 0xA0 ADD MLOAD PUSH2 0x11B9 JUMPI PUSH1 0x40 DUP1 DUP6 ADD MLOAD PUSH1 0x20 DUP1 DUP9 ADD MLOAD SWAP3 DUP9 ADD MLOAD SWAP1 DUP8 ADD MLOAD PUSH1 0x5 SLOAD PUSH1 0x60 DUP11 ADD MLOAD PUSH2 0x1189 SWAP6 PUSH1 0xD SWAP6 SWAP5 PUSH1 0x0 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP3 AND SWAP2 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP2 SWAP1 PUSH2 0x3998 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0xC0 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 DUP6 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0x120B DUP3 PUSH1 0x20 ADD MLOAD DUP15 PUSH2 0x11D0 JUMPI PUSH1 0x6 SLOAD PUSH2 0x11D6 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD MLOAD JUMPDEST DUP16 PUSH2 0x11E5 JUMPI DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x11E9 JUMP JUMPDEST PUSH1 0x7 SLOAD JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD PUSH1 0x60 DUP11 ADD MLOAD PUSH1 0x40 DUP12 ADD MLOAD PUSH1 0xC0 DUP13 ADD MLOAD PUSH1 0xA SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3B96 JUMP JUMPDEST SWAP1 POP DUP13 ISZERO PUSH2 0x1217 JUMPI PUSH1 0x0 SUB JUMPDEST PUSH2 0x1225 DUP4 PUSH1 0xC0 ADD MLOAD DUP3 PUSH2 0x3CAC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0xC0 DUP5 ADD MSTORE POP JUMPDEST DUP12 PUSH2 0x1244 JUMPI DUP1 PUSH1 0x20 ADD MLOAD PUSH2 0x124D JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 ADD MLOAD SUB JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1299 JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1299 JUMPI PUSH2 0x128C DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x3D62 JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP4 ADD MSTORE JUMPDEST POP PUSH2 0xEB8 JUMP JUMPDEST DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x60 ADD MLOAD PUSH1 0x2 SIGNEXTEND EQ PUSH2 0x138A JUMPI PUSH1 0x40 DUP1 DUP6 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0x20 DUP1 DUP8 ADD MLOAD SWAP1 DUP7 ADD MLOAD PUSH1 0x5 SLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x80 DUP11 ADD MLOAD PUSH1 0x0 SWAP7 DUP8 SWAP7 PUSH2 0x130A SWAP7 PUSH1 0xD SWAP7 SWAP3 SWAP6 SWAP2 SWAP5 SWAP1 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP4 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP3 SWAP2 SWAP1 PUSH2 0x408E AND JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x4 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP6 DUP7 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP6 SWAP1 SWAP5 AND SWAP5 SWAP1 SWAP5 MUL SWAP3 SWAP1 SWAP3 OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH3 0xFFFFFF PUSH1 0x2 SWAP5 SWAP1 SWAP5 SIGNEXTEND SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR SWAP1 SSTORE POP PUSH2 0x13AF SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP1 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND EQ PUSH2 0x13F5 JUMPI PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x9 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP11 ISZERO PUSH2 0x1445 JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x6 SSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x1440 JUMPI PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND SWAP1 SWAP4 ADD AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH2 0x148B JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x7 SSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x148B JUMPI PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP3 AND SWAP1 SWAP5 ADD AND MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP2 ISZERO ISZERO DUP12 ISZERO ISZERO EQ PUSH2 0x14A4 JUMPI PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD DUP12 SUB PUSH2 0x14B1 JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD DUP11 SUB DUP2 PUSH1 0x20 ADD MLOAD JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP11 ISZERO PUSH2 0x15DB JUMPI PUSH1 0x0 DUP6 SLT ISZERO PUSH2 0x14D8 JUMPI PUSH2 0x14D8 DUP4 PUSH2 0x140 ADD MLOAD DUP14 DUP8 PUSH1 0x0 SUB PUSH2 0x4299 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14E8 DUP5 PUSH2 0x120 ADD MLOAD PUSH2 0x43FC JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD804D7A7 DUP9 DUP9 DUP13 DUP13 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x156C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1580 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1592 DUP5 PUSH2 0x120 ADD MLOAD PUSH2 0x43FC JUMP JUMPDEST PUSH2 0x159C DUP3 DUP10 PUSH2 0x452D JUMP JUMPDEST GT ISZERO PUSH2 0x15D5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x494941 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH2 0x16F6 JUMP JUMPDEST PUSH1 0x0 DUP7 SLT ISZERO PUSH2 0x15F7 JUMPI PUSH2 0x15F7 DUP4 PUSH2 0x120 ADD MLOAD DUP14 DUP9 PUSH1 0x0 SUB PUSH2 0x4299 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1607 DUP5 PUSH2 0x140 ADD MLOAD PUSH2 0x43FC JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD804D7A7 DUP9 DUP9 DUP13 DUP13 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x168B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x169F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x16B1 DUP5 PUSH2 0x140 ADD MLOAD PUSH2 0x43FC JUMP JUMPDEST PUSH2 0x16BB DUP3 DUP9 PUSH2 0x452D JUMP JUMPDEST GT ISZERO PUSH2 0x16F4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x494941 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0x60 DUP1 DUP6 ADD MLOAD DUP5 MLOAD DUP12 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP4 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 SIGNEXTEND PUSH1 0x80 DUP3 ADD MSTORE SWAP2 MLOAD SWAP1 DUP15 AND SWAP2 CALLER SWAP2 PUSH32 0xC42079F94A6350D7E6235F29174924F928CC2AC818EB64FED8004E115FBCCA67 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG3 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP2 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x17A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP1 SWAP3 AND SWAP1 DUP6 AND OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH3 0xFFFFFF DUP6 DUP2 AND SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 OR PUSH32 0xFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DUP5 SIGNEXTEND SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH2 0x183B DUP2 PUSH2 0x453D JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH3 0x2000B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV AND DUP3 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x18D6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8DA5CB5B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x8DA5CB5B SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1924 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1938 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 0x194E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1964 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST TIMESTAMP DUP2 PUSH4 0xFFFFFFFF AND LT ISZERO PUSH2 0x1977 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x19EB SWAP1 PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0x1991 PUSH2 0x3232 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x9 SLOAD PUSH1 0x5 SLOAD PUSH1 0xD SWAP5 SWAP4 SWAP3 PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP3 DIV DUP3 AND SWAP2 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xC8 SHL DUP4 DIV DUP2 AND SWAP3 PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 DIV AND SWAP1 PUSH2 0x408E AND JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP4 DUP5 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP5 AND DUP1 DUP3 MSTORE PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x20 SWAP3 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x5 DUP1 SLOAD PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP4 OR PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x90 SHL DUP4 MUL OR SWAP1 SSTORE DUP4 MLOAD SWAP2 DUP3 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD PUSH31 0x8866B45AF6018E497020F8D16E58C1BE320850F245EBDF9D304666BEE15E35 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xD DUP2 PUSH2 0xFFFF DUP2 LT PUSH2 0x1AE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 MUL ADD DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP3 AND SWAP3 POP PUSH5 0x100000000 DUP3 DIV PUSH1 0x6 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP6 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1B76 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 DIV PUSH2 0xFFFF AND PUSH1 0x0 PUSH2 0x1B9E PUSH1 0xD DUP4 DUP6 PUSH2 0x45A7 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0xFFFF DUP1 DUP5 AND PUSH1 0x1 PUSH1 0xD8 SHL DUP2 MUL PUSH2 0xFFFF PUSH1 0xD8 SHL NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE SWAP2 SWAP3 POP DUP4 AND EQ PUSH2 0x1C0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0xAC49E518F90A358F652E4400164F05A5D8F7E35E7747279BC3A93DBF584E125A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP1 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC8 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0xD8 SHL DUP3 DIV AND SWAP1 PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV AND DUP8 JUMP JUMPDEST PUSH3 0x2000B SSTORE JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1CC3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH2 0x1CE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D31 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1D27 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x464D JUMP JUMPDEST PUSH1 0xF SIGNEXTEND SWAP1 MSTORE PUSH2 0x465E JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD SWAP3 SWAP8 POP SWAP1 SWAP6 POP DUP7 SWAP5 POP DUP6 SWAP4 POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP6 ISZERO PUSH2 0x1D68 JUMPI PUSH2 0x1D65 DUP3 PUSH2 0x43FC JUMP JUMPDEST SWAP4 POP JUMPDEST DUP7 ISZERO PUSH2 0x1D7A JUMPI PUSH2 0x1D77 DUP2 PUSH2 0x43FC JUMP JUMPDEST SWAP3 POP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1507A8F4 DUP10 DUP10 DUP14 DUP14 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E10 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP9 GT ISZERO PUSH2 0x1E68 JUMPI PUSH2 0x1E26 DUP3 PUSH2 0x43FC JUMP JUMPDEST PUSH2 0x1E30 DUP6 DUP11 PUSH2 0x452D JUMP JUMPDEST GT ISZERO PUSH2 0x1E68 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4D3 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP7 ISZERO PUSH2 0x1EB9 JUMPI PUSH2 0x1E77 DUP2 PUSH2 0x43FC JUMP JUMPDEST PUSH2 0x1E81 DUP5 DUP10 PUSH2 0x452D JUMP JUMPDEST GT ISZERO PUSH2 0x1EB9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4D31 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP12 PUSH1 0x2 SIGNEXTEND DUP14 PUSH1 0x2 SIGNEXTEND DUP16 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x7A53080BA414158BE7EC69B987B5FB7D07DEE101FE85488F0853AE16239D0BDE CALLER DUP16 DUP14 DUP14 PUSH1 0x40 MLOAD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB 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 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP4 SWAP11 SWAP3 SWAP10 POP SWAP2 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1F9D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP1 PUSH2 0x1FEC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x2 SLOAD SWAP1 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH3 0xFFFFFF AND SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE SWAP1 PUSH2 0x2041 SWAP1 DUP8 SWAP1 PUSH3 0xF4240 PUSH2 0x48B5 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH2 0x205F SWAP1 DUP7 SWAP1 PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x48B5 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE DUP1 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x2072 SWAP1 PUSH2 0x43FC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2083 DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x43FC JUMP JUMPDEST SWAP1 POP DUP8 ISZERO PUSH2 0x2098 JUMPI DUP3 MLOAD PUSH2 0x2098 SWAP1 DUP11 DUP11 PUSH2 0x4299 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x20AD JUMPI PUSH2 0x20AD DUP4 PUSH1 0x20 ADD MLOAD DUP11 DUP10 PUSH2 0x4299 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x659EFA6 DUP5 PUSH1 0x60 ADD MLOAD DUP6 PUSH1 0x80 ADD MLOAD DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x214B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x215E DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x43FC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x216F DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x43FC JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x2189 DUP7 PUSH1 0x60 ADD MLOAD DUP7 PUSH2 0x452D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST GT ISZERO PUSH2 0x21C1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x463 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x21D9 DUP7 PUSH1 0x80 ADD MLOAD DUP6 PUSH2 0x452D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST GT ISZERO PUSH2 0x2211 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4631 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 DUP3 SUB DUP4 DUP3 SUB DUP2 ISZERO PUSH2 0x22A0 JUMPI PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH1 0xF AND PUSH1 0x0 DUP2 ISZERO PUSH2 0x2244 JUMPI DUP2 PUSH1 0xFF AND DUP5 DUP2 PUSH2 0x223E JUMPI INVALID JUMPDEST DIV PUSH2 0x2247 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x227A JUMPI PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP5 ADD AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x2294 DUP2 DUP6 SUB PUSH1 0x1 PUSH1 0x80 SHL DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x38E8 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMPDEST DUP1 ISZERO PUSH2 0x232B JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV SWAP1 SHR PUSH1 0xF AND PUSH1 0x0 DUP2 ISZERO PUSH2 0x22D0 JUMPI DUP2 PUSH1 0xFF AND DUP4 DUP2 PUSH2 0x22CA JUMPI INVALID JUMPDEST DIV PUSH2 0x22D3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x2305 JUMPI PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP6 ADD DUP3 AND MUL SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x231F DUP2 DUP5 SUB PUSH1 0x1 PUSH1 0x80 SHL DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x38E8 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP14 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP14 SWAP1 MSTORE DUP1 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND SWAP2 CALLER SWAP2 PUSH32 0xBDBDB71D7860376BA52B25A5028BEEA23581364A40522F6BCFB86BB1F2DCA633 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG3 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x23EA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x0 PUSH2 0x2406 PUSH1 0xC CALLER DUP10 DUP10 PUSH2 0x48EF JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP1 DUP7 AND GT PUSH2 0x2427 JUMPI DUP5 PUSH2 0x2436 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP6 AND GT PUSH2 0x245E JUMPI DUP4 PUSH2 0x2474 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND ISZERO PUSH2 0x24C6 JUMPI PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP7 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 SLOAD PUSH2 0x24C6 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP11 SWAP1 DUP7 AND PUSH2 0x4299 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x2519 JUMPI PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP7 SWAP1 SUB DUP3 AND MUL SWAP2 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 SLOAD PUSH2 0x2519 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP11 SWAP1 DUP6 AND PUSH2 0x4299 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP4 ADD MSTORE DUP5 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x2 DUP9 DUP2 SIGNEXTEND SWAP3 SWAP1 DUP11 SWAP1 SIGNEXTEND SWAP2 CALLER SWAP2 PUSH32 0x70935338E69775456A85DDEF226C395FB668B63FA0115F5F20610B388E6CA9C0 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 DUP4 AND SWAP4 SWAP2 SWAP3 DUP2 DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV AND DUP6 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x265D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8DA5CB5B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x8DA5CB5B SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26BF 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 0x26D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x26EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP3 AND ISZERO DUP1 PUSH2 0x270E JUMPI POP PUSH1 0x4 DUP3 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH2 0x270E JUMPI POP PUSH1 0xA DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x2738 JUMPI POP PUSH1 0xFF DUP2 AND ISZERO DUP1 PUSH2 0x2738 JUMPI POP PUSH1 0x4 DUP2 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH2 0x2738 JUMPI POP PUSH1 0xA DUP2 PUSH1 0xFF AND GT ISZERO JUMPDEST PUSH2 0x2741 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0xFF0 DUP4 DUP4 SHL AND DUP5 ADD PUSH1 0xFF SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DUP2 MUL PUSH32 0xFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND OR DUP5 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP4 DIV PUSH1 0xF DUP2 DUP2 AND DUP4 MSTORE SWAP5 DUP2 SWAP1 SHR SWAP1 SWAP5 AND PUSH1 0x20 DUP3 ADD MSTORE DUP6 DUP3 AND DUP2 DUP5 ADD MSTORE DUP5 DUP3 AND PUSH1 0x60 DUP3 ADD MSTORE SWAP2 MLOAD SWAP3 AND SWAP2 PUSH32 0x973D8D92BB299F4AF6CE49B52A8ADB85AE46B9F214C4C4FC06AC77401237B133 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x283B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8DA5CB5B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x8DA5CB5B SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2889 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x289D 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 0x28B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x28C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP1 DUP6 AND GT PUSH2 0x28E5 JUMPI DUP4 PUSH2 0x28F2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST PUSH1 0x8 SLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP5 AND GT PUSH2 0x2918 JUMPI DUP3 PUSH2 0x292C JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x299A JUMPI PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x295B JUMPI PUSH1 0x0 NOT SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP6 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 SLOAD PUSH2 0x299A SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP8 SWAP1 DUP6 AND PUSH2 0x4299 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x2A0D JUMPI PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x29CB JUMPI PUSH1 0x0 NOT ADD JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP6 SWAP1 SUB DUP3 AND MUL SWAP2 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 SLOAD PUSH2 0x2A0D SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP8 SWAP1 DUP5 AND PUSH2 0x4299 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0x596B573906218D3411850B26A6B437D6C4522FDB43D2D2386263F86D50B8B151 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 PUSH2 0x2B1E PUSH2 0x2A8C PUSH2 0x3232 JUMP JUMPDEST DUP7 DUP7 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x4 SLOAD PUSH1 0x9 SLOAD PUSH1 0x5 SLOAD PUSH1 0xD SWAP7 SWAP6 SWAP5 POP PUSH1 0x1 PUSH1 0xA0 SHL DUP4 DIV PUSH1 0x2 SIGNEXTEND SWAP4 POP PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP4 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP4 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP3 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x4953 AND JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x90 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2B92 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE CALLER DUP2 MSTORE PUSH1 0x2 DUP8 DUP2 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE DUP7 SWAP1 SIGNEXTEND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 SWAP1 PUSH2 0x2BEE SWAP1 PUSH1 0x60 DUP2 ADD PUSH2 0x2BE1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP11 AND PUSH2 0x464D JUMP JUMPDEST PUSH1 0x0 SUB PUSH1 0xF SIGNEXTEND SWAP1 MSTORE PUSH2 0x465E JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 PUSH1 0x0 SUB SWAP5 POP DUP1 PUSH1 0x0 SUB SWAP4 POP PUSH1 0x0 DUP6 GT DUP1 PUSH2 0x2C0F JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST ISZERO PUSH2 0x2C4E JUMPI PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP1 DUP10 ADD DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP4 DUP5 SWAP1 DIV DUP4 AND DUP10 ADD SWAP1 SWAP3 AND SWAP1 SWAP3 MUL SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP9 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE DUP1 DUP3 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP3 SWAP1 DUP12 SWAP1 SIGNEXTEND SWAP2 CALLER SWAP2 PUSH32 0xC396CD989A39F4459B5FA1AED6A9A8DCDBC45908ACFD67E028CD568DA98982C SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2CD5 DUP7 DUP7 PUSH2 0x4B10 JUMP JUMPDEST PUSH2 0x2CDD PUSH2 0x5F1A JUMP JUMPDEST PUSH2 0x2CE5 PUSH2 0x5F1A JUMP JUMPDEST PUSH1 0x2 DUP9 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP12 DUP6 SIGNEXTEND SWAP1 SWAP5 SIGNEXTEND DUP4 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL DUP4 DIV AND ISZERO ISZERO PUSH1 0x80 DUP10 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x60 DUP10 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xD8 SHL DUP4 DIV AND SWAP5 DUP9 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH8 0x100000000000000 DUP3 DIV AND SWAP3 DUP8 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x6 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND DUP6 MSTORE SWAP1 PUSH2 0x2D7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL DUP4 DIV AND ISZERO ISZERO PUSH1 0x80 DUP7 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xD8 SHL DUP4 DIV AND PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH8 0x100000000000000 DUP4 DIV AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x6 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND DUP5 MSTORE PUSH2 0x2DE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x20 DUP5 ADD DUP2 SWAP1 MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DIV DUP2 AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP4 DIV DUP6 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP4 DIV SWAP1 SWAP5 AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP4 DIV DUP2 AND PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE SWAP1 SWAP2 DUP11 DUP3 SIGNEXTEND SWAP2 SIGNEXTEND SLT ISZERO PUSH2 0x2EB5 JUMPI DUP2 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x0 ADD MLOAD SUB DUP3 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x20 ADD MLOAD SUB DUP4 PUSH1 0x40 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD SUB DUP5 PUSH1 0x60 ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD SUB SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP PUSH2 0x2FAE JUMP JUMPDEST DUP8 PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x2F76 JUMPI PUSH1 0x0 PUSH2 0x2ED1 PUSH2 0x3232 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x9 SLOAD PUSH1 0x5 SLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP5 SWAP6 POP PUSH1 0x0 SWAP5 DUP6 SWAP5 DUP6 SWAP5 PUSH2 0x2F28 SWAP5 PUSH1 0xD SWAP5 DUP11 SWAP5 DUP9 SWAP5 SWAP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP3 DIV DUP3 AND SWAP2 PUSH2 0x3998 AND JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP6 PUSH1 0x0 ADD MLOAD DUP8 PUSH1 0x0 ADD MLOAD DUP5 SUB SUB DUP7 PUSH1 0x20 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP5 SUB SUB DUP8 PUSH1 0x40 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD DUP8 SUB SUB DUP9 PUSH1 0x60 ADD MLOAD DUP11 PUSH1 0x60 ADD MLOAD DUP6 SUB SUB SWAP11 POP SWAP11 POP SWAP11 POP SWAP11 POP POP POP POP POP POP POP POP PUSH2 0x2FAE JUMP JUMPDEST DUP3 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x0 ADD MLOAD SUB DUP4 PUSH1 0x20 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD SUB DUP5 PUSH1 0x40 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD SUB DUP6 PUSH1 0x60 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD SUB SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP JUMPDEST SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FC1 PUSH2 0x3232 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV SWAP1 SIGNEXTEND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x6 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH3 0xFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND SWAP5 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP5 DIV PUSH1 0xF SIGNEXTEND SWAP4 PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND SWAP2 PUSH8 0x100000000000000 DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV PUSH4 0xFFFFFFFF AND SWAP2 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP10 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x30D1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4149 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x30DC DUP3 PUSH2 0x3D62 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x30F4 PUSH2 0x30EC PUSH2 0x3232 JUMP JUMPDEST PUSH1 0xD SWAP1 PUSH2 0x4BD9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP1 DUP3 MSTORE PUSH1 0x2 DUP9 DUP2 SIGNEXTEND PUSH1 0x20 DUP1 DUP6 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 DUP6 DUP8 ADD DUP2 SWAP1 MSTORE PUSH2 0xFFFF DUP10 DUP2 AND PUSH1 0x60 DUP9 ADD DUP2 SWAP1 MSTORE SWAP1 DUP10 AND PUSH1 0x80 DUP9 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP9 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xC0 SWAP1 SWAP8 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP8 OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH3 0xFFFFFF SWAP8 DUP8 SWAP1 SIGNEXTEND SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 MUL SWAP6 SWAP1 SWAP6 OR PUSH32 0xFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 SWAP8 MUL SWAP7 SWAP1 SWAP7 OR PUSH2 0xFFFF PUSH1 0xD8 SHL NOT AND PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 SWAP2 MUL OR PUSH32 0xFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP4 SSTORE DUP4 MLOAD SWAP2 DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH32 0x98636036CB66A9C19A37435EFC1E90142190214E8ABEB821BDBA3F2990DD4C95 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SSTORE JUMP JUMPDEST PUSH3 0x2000B SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x324E JUMPI INVALID JUMPDEST SDIV SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x2 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0x3275 JUMPI POP DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x326E JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x327F JUMPI PUSH1 0x0 NOT ADD JUMPDEST DUP4 ISZERO PUSH2 0x32F4 JUMPI PUSH1 0x0 DUP1 PUSH2 0x3291 DUP4 PUSH2 0x4C3C JUMP JUMPDEST PUSH1 0x1 DUP3 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF DUP4 AND SWAP2 SWAP1 SWAP2 SHL DUP1 ADD PUSH1 0x0 NOT ADD SWAP1 DUP2 AND DUP1 ISZERO ISZERO SWAP8 POP SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 DUP6 PUSH2 0x32D6 JUMPI DUP9 DUP4 PUSH1 0xFF AND DUP7 SUB MUL PUSH2 0x32E9 JUMP JUMPDEST DUP9 PUSH2 0x32E0 DUP3 PUSH2 0x4C4E JUMP JUMPDEST DUP5 SUB PUSH1 0xFF AND DUP7 SUB MUL JUMPDEST SWAP7 POP POP POP POP POP PUSH2 0x3372 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3303 DUP4 PUSH1 0x1 ADD PUSH2 0x4C3C JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SUB NOT SWAP1 POP PUSH1 0x0 DUP2 DUP12 PUSH1 0x0 DUP7 PUSH1 0x1 SIGNEXTEND PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 POP DUP1 PUSH1 0x0 EQ ISZERO SWAP6 POP DUP6 PUSH2 0x3355 JUMPI DUP9 DUP4 PUSH1 0xFF SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL PUSH2 0x336B JUMP JUMPDEST DUP9 DUP4 PUSH2 0x3360 DUP4 PUSH2 0x4CEE JUMP JUMPDEST SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL JUMPDEST SWAP7 POP POP POP POP POP JUMPDEST POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x3393 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x339B JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x33D9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x33ED JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x33FF JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x3433 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x3452 JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x3471 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x3490 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x34AF JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x34CE JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x34ED JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x350D JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x352D JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x354D JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x356D JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x358D JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x35AD JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x35CD JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x35ED JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x360E JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x362E JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x364D JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x366A JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x3685 JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x3681 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x3699 JUMPI PUSH1 0x1 PUSH2 0x369C 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 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP1 DUP11 AND LT ISZERO DUP2 DUP8 SLT DUP1 ISZERO SWAP1 PUSH2 0x3733 JUMPI PUSH1 0x0 PUSH2 0x36E7 DUP10 DUP10 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x38E8 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x3700 JUMPI PUSH2 0x36FB DUP13 DUP13 DUP13 PUSH1 0x1 PUSH2 0x4DD8 JUMP JUMPDEST PUSH2 0x370D JUMP JUMPDEST PUSH2 0x370D DUP12 DUP14 DUP13 PUSH1 0x1 PUSH2 0x4E53 JUMP JUMPDEST SWAP6 POP DUP6 DUP2 LT PUSH2 0x371E JUMPI DUP11 SWAP7 POP PUSH2 0x372D JUMP JUMPDEST PUSH2 0x372A DUP13 DUP12 DUP4 DUP7 PUSH2 0x4F10 JUMP JUMPDEST SWAP7 POP JUMPDEST POP PUSH2 0x377D JUMP JUMPDEST DUP2 PUSH2 0x374A JUMPI PUSH2 0x3745 DUP12 DUP12 DUP12 PUSH1 0x0 PUSH2 0x4E53 JUMP JUMPDEST PUSH2 0x3757 JUMP JUMPDEST PUSH2 0x3757 DUP11 DUP13 DUP12 PUSH1 0x0 PUSH2 0x4DD8 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 PUSH1 0x0 SUB LT PUSH2 0x376B JUMPI DUP10 SWAP6 POP PUSH2 0x377D JUMP JUMPDEST PUSH2 0x377A DUP12 DUP11 DUP11 PUSH1 0x0 SUB DUP6 PUSH2 0x4F5C JUMP JUMPDEST SWAP6 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP1 DUP8 AND EQ DUP3 ISZERO PUSH2 0x37E0 JUMPI DUP1 DUP1 ISZERO PUSH2 0x379C JUMPI POP DUP2 JUMPDEST PUSH2 0x37B2 JUMPI PUSH2 0x37AD DUP8 DUP14 DUP13 PUSH1 0x1 PUSH2 0x4E53 JUMP JUMPDEST PUSH2 0x37B4 JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x37C1 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x37D7 JUMPI PUSH2 0x37D2 DUP8 DUP14 DUP13 PUSH1 0x0 PUSH2 0x4DD8 JUMP JUMPDEST PUSH2 0x37D9 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP PUSH2 0x382A JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x37EA JUMPI POP DUP2 JUMPDEST PUSH2 0x3800 JUMPI PUSH2 0x37FB DUP13 DUP9 DUP13 PUSH1 0x1 PUSH2 0x4DD8 JUMP JUMPDEST PUSH2 0x3802 JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x380F JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x3825 JUMPI PUSH2 0x3820 DUP13 DUP9 DUP13 PUSH1 0x0 PUSH2 0x4E53 JUMP JUMPDEST PUSH2 0x3827 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x383A JUMPI POP DUP9 PUSH1 0x0 SUB DUP6 GT JUMPDEST ISZERO PUSH2 0x3846 JUMPI DUP9 PUSH1 0x0 SUB SWAP5 POP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x3865 JUMPI POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x3874 JUMPI DUP6 DUP10 SUB SWAP4 POP PUSH2 0x3891 JUMP JUMPDEST PUSH2 0x388E DUP7 DUP10 PUSH3 0xFFFFFF AND DUP11 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH2 0x48B5 JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 LT PUSH2 0x38B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 SGT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x38CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP3 DUP2 SLT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x38CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x391E JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x3913 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x3991 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x392A 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 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH4 0xFFFFFFFF DUP11 AND PUSH2 0x3A64 JUMPI PUSH1 0x0 DUP13 DUP10 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x39BA JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP6 MSTORE PUSH5 0x100000000 DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP14 AND EQ PUSH2 0x3A49 JUMPI PUSH2 0x3A46 DUP2 DUP14 DUP13 DUP12 DUP12 DUP12 PUSH2 0x4FA8 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD SWAP4 POP SWAP4 POP SWAP4 POP POP PUSH2 0x3B87 JUMP JUMPDEST DUP10 DUP12 SUB PUSH1 0x0 DUP1 PUSH2 0x3A7B DUP16 DUP16 DUP6 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 PUSH2 0x50F2 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x3AB4 JUMPI DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD DUP4 PUSH1 0x80 ADD MLOAD SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x3B87 JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x3AE3 JUMPI DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x3B87 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD SWAP1 DUP5 ADD MLOAD SWAP2 DUP4 SWAP1 SUB SWAP3 DUP7 SUB SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP5 AND SWAP3 SWAP1 DUP6 AND SWAP2 SUB PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0x3B11 JUMPI INVALID JUMPDEST SDIV MUL DUP5 PUSH1 0x20 ADD MLOAD ADD DUP3 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL DUP2 PUSH2 0x3B43 JUMPI INVALID JUMPDEST DIV DUP6 PUSH1 0x40 ADD MLOAD ADD DUP3 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND DUP8 PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x80 ADD MLOAD SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 PUSH2 0x3B73 JUMPI INVALID JUMPDEST DIV MUL DUP7 PUSH1 0x80 ADD MLOAD ADD SWAP8 POP SWAP8 POP SWAP8 POP POP POP POP POP POP JUMPDEST SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP7 DUP8 SIGNEXTEND DUP8 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x40 SWAP1 SWAP8 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD SWAP1 SWAP7 SUB SWAP1 SWAP6 SSTORE SWAP5 DUP5 ADD DUP1 SLOAD SWAP1 SWAP4 SUB SWAP1 SWAP3 SSTORE PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xD8 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH8 0x100000000000000 DUP1 DUP6 DIV DUP3 AND SWAP1 SWAP7 SUB AND SWAP1 SWAP5 MUL PUSH32 0xFFFFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x6 DUP2 DUP2 SIGNEXTEND SWAP1 SWAP6 SUB SWAP1 SWAP5 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND PUSH7 0xFFFFFFFFFFFFFF NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR DUP3 DUP2 DIV DUP5 AND SWAP1 SWAP6 SUB SWAP1 SWAP3 AND MUL PUSH32 0xFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP1 DUP3 AND SWAP1 SWAP5 SUB SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0xF SIGNEXTEND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x3D11 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x0 SUB DUP5 SUB SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x3D0C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C53 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x38CC JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 DUP5 ADD SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0x38CC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C41 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x3D9E JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT JUMPDEST PUSH2 0x3DD3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x20 DUP4 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 GT PUSH1 0x7 SHL DUP2 DUP2 SHR PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x6 SHL SWAP1 DUP2 SHR PUSH4 0xFFFFFFFF DUP2 GT PUSH1 0x5 SHL SWAP1 DUP2 SHR PUSH2 0xFFFF DUP2 GT PUSH1 0x4 SHL SWAP1 DUP2 SHR PUSH1 0xFF DUP2 GT PUSH1 0x3 SWAP1 DUP2 SHL SWAP2 DUP3 SHR PUSH1 0xF DUP2 GT PUSH1 0x2 SHL SWAP1 DUP2 SHR SWAP2 DUP3 GT PUSH1 0x1 SWAP1 DUP2 SHL SWAP3 DUP4 SHR SWAP8 SWAP1 DUP9 GT SWAP7 OR SWAP1 SWAP5 OR SWAP1 SWAP3 OR OR SWAP1 SWAP2 OR OR OR PUSH1 0x80 DUP2 LT PUSH2 0x3E74 JUMPI PUSH1 0x7F DUP2 SUB DUP4 SWAP1 SHR SWAP2 POP PUSH2 0x3E7E JUMP JUMPDEST DUP1 PUSH1 0x7F SUB DUP4 SWAP1 SHL SWAP2 POP JUMPDEST SWAP1 DUP1 MUL PUSH1 0x7F DUP2 DUP2 SHR PUSH1 0xFF DUP4 DUP2 SHR SWAP2 SWAP1 SWAP2 SHR DUP1 MUL DUP1 DUP4 SHR DUP2 DUP4 SHR SHR DUP1 MUL DUP1 DUP5 SHR DUP2 DUP5 SHR SHR DUP1 MUL DUP1 DUP6 SHR DUP2 DUP6 SHR SHR DUP1 MUL DUP1 DUP7 SHR DUP2 DUP7 SHR SHR DUP1 MUL DUP1 DUP8 SHR DUP2 DUP8 SHR SHR DUP1 MUL DUP1 DUP9 SHR DUP2 DUP9 SHR SHR DUP1 MUL DUP1 DUP10 SHR DUP2 DUP10 SHR SHR DUP1 MUL DUP1 DUP11 SHR DUP2 DUP11 SHR SHR DUP1 MUL DUP1 DUP12 SHR DUP2 DUP12 SHR SHR DUP1 MUL DUP1 DUP13 SHR DUP2 DUP13 SHR SHR DUP1 MUL DUP1 DUP14 SHR DUP2 DUP14 SHR SHR DUP1 MUL DUP1 DUP15 SHR SWAP13 DUP2 SWAP1 SHR SWAP13 SWAP1 SWAP13 SHR DUP1 MUL SWAP13 DUP14 SWAP1 SHR SWAP15 SWAP14 PUSH1 0x7F NOT DUP16 ADD PUSH1 0x40 SHL PUSH1 0xC0 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x8000000000000000 AND OR PUSH1 0xC1 SWAP12 SWAP1 SWAP12 SHR PUSH8 0x4000000000000000 AND SWAP11 SWAP1 SWAP11 OR PUSH1 0xC2 SWAP10 SWAP1 SWAP10 SHR PUSH8 0x2000000000000000 AND SWAP9 SWAP1 SWAP9 OR PUSH1 0xC3 SWAP8 SWAP1 SWAP8 SHR PUSH8 0x1000000000000000 AND SWAP7 SWAP1 SWAP7 OR PUSH1 0xC4 SWAP6 SWAP1 SWAP6 SHR PUSH8 0x800000000000000 AND SWAP5 SWAP1 SWAP5 OR PUSH1 0xC5 SWAP4 SWAP1 SWAP4 SHR PUSH8 0x400000000000000 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0xC6 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x200000000000000 AND OR PUSH1 0xC7 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x100000000000000 AND OR PUSH1 0xC8 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x80000000000000 AND OR PUSH1 0xC9 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x40000000000000 AND OR PUSH1 0xCA SWAP2 SWAP1 SWAP2 SHR PUSH7 0x20000000000000 AND OR PUSH1 0xCB SWAP2 SWAP1 SWAP2 SHR PUSH7 0x10000000000000 AND OR PUSH1 0xCC SWAP2 SWAP1 SWAP2 SHR PUSH7 0x8000000000000 AND OR PUSH1 0xCD SWAP2 SWAP1 SWAP2 SHR PUSH7 0x4000000000000 AND OR PUSH10 0x3627A301D71055774C85 DUP2 MUL PUSH16 0x28F6481AB7F045A5AF012A19D003AA9 NOT DUP2 ADD PUSH1 0x80 SWAP1 DUP2 SAR SWAP1 PUSH16 0xDB2DF09E81959A81455E260799A0632F DUP4 ADD SWAP1 SAR PUSH1 0x2 DUP2 DUP2 SIGNEXTEND SWAP1 DUP4 SWAP1 SIGNEXTEND EQ PUSH2 0x407F JUMPI DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4063 DUP3 PUSH2 0x337C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4078 JUMPI DUP2 PUSH2 0x407A JUMP JUMPDEST DUP1 JUMPDEST PUSH2 0x4081 JUMP JUMPDEST DUP2 JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP12 DUP12 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x40A4 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP6 MSTORE PUSH5 0x100000000 DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP12 AND EQ ISZERO PUSH2 0x412F JUMPI DUP11 DUP6 SWAP3 POP SWAP3 POP POP PUSH2 0x428B JUMP JUMPDEST DUP5 PUSH2 0xFFFF AND DUP5 PUSH2 0xFFFF AND GT DUP1 ISZERO PUSH2 0x4150 JUMPI POP PUSH1 0x1 DUP6 SUB PUSH2 0xFFFF AND DUP12 PUSH2 0xFFFF AND EQ JUMPDEST ISZERO PUSH2 0x415D JUMPI DUP4 SWAP2 POP PUSH2 0x4161 JUMP JUMPDEST DUP5 SWAP2 POP JUMPDEST DUP2 PUSH2 0xFFFF AND DUP12 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x4175 JUMPI INVALID JUMPDEST MOD SWAP3 POP PUSH2 0x4186 DUP2 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x4FA8 JUMP JUMPDEST DUP13 DUP5 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x4197 JUMPI INVALID JUMPDEST DUP3 MLOAD PUSH1 0x2 SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH4 0xFFFFFFFF NOT SWAP1 SWAP4 AND PUSH4 0xFFFFFFFF SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR PUSH11 0xFFFFFFFFFFFFFF00000000 NOT AND PUSH5 0x100000000 PUSH7 0xFFFFFFFFFFFFFF PUSH1 0x6 SWAP4 SWAP1 SWAP4 SIGNEXTEND SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL OR PUSH32 0xFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x58 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP3 OR PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xF8 SHL SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR DUP2 SSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMPDEST SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH4 0xA9059CBB PUSH1 0xE0 SHL 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 0x432A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x430B 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 0x438C 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 0x4391 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x43BF JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x43BF JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x43F5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x2A23 PUSH1 0xF1 SHL 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 ADDRESS PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x448A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x446B 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 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x44EA 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 0x44EF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4503 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST PUSH2 0x450C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x38CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E7 NOT DUP2 PUSH2 0x4552 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E8 DUP2 PUSH2 0x4569 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP4 DUP4 SUB PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x4580 JUMPI INVALID JUMPDEST SDIV PUSH1 0x1 ADD SWAP1 POP DUP1 PUSH3 0xFFFFFF AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 AND DUP2 PUSH2 0x459D JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0xFFFF AND GT PUSH2 0x45E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND GT PUSH2 0x45FB JUMPI POP DUP2 PUSH2 0x3991 JUMP JUMPDEST DUP3 JUMPDEST DUP3 PUSH2 0xFFFF AND DUP2 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x4644 JUMPI PUSH1 0x1 DUP6 DUP3 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x4620 JUMPI INVALID JUMPDEST PUSH1 0x2 MUL ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 ADD PUSH2 0x45FD JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x4528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4675 DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD PUSH2 0x4B10 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DIV DUP2 AND DUP6 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP5 DIV DUP2 AND PUSH1 0x60 DUP1 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP6 DIV SWAP1 SWAP2 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP6 DIV DUP2 AND PUSH1 0xA0 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP5 DIV SWAP1 SWAP4 AND ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE DUP9 MLOAD SWAP1 DUP10 ADD MLOAD SWAP5 DUP10 ADD MLOAD SWAP3 DUP10 ADD MLOAD SWAP4 SWAP5 PUSH2 0x4719 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x5339 JUMP JUMPDEST SWAP4 POP DUP5 PUSH1 0x60 ADD MLOAD PUSH1 0xF SIGNEXTEND PUSH1 0x0 EQ PUSH2 0x48AD JUMPI DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x476E JUMPI PUSH2 0x4767 PUSH2 0x4750 DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0x337C JUMP JUMPDEST PUSH2 0x475D DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0x337C JUMP JUMPDEST DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x54BC JUMP JUMPDEST SWAP3 POP PUSH2 0x48AD JUMP JUMPDEST DUP5 PUSH1 0x40 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x4883 JUMPI PUSH1 0x9 SLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH2 0x47DF SWAP1 PUSH2 0x47A4 PUSH2 0x3232 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x5 SLOAD PUSH1 0x60 DUP8 ADD MLOAD PUSH1 0x80 DUP9 ADD MLOAD PUSH1 0xD SWAP6 SWAP5 SWAP4 SWAP3 DUP9 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP3 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP4 DIV DUP4 AND SWAP3 PUSH2 0x408E AND JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP4 DUP5 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SSTORE DUP2 MLOAD PUSH1 0x40 DUP8 ADD MLOAD PUSH2 0x482F SWAP2 SWAP1 PUSH2 0x4825 SWAP1 PUSH2 0x337C JUMP JUMPDEST DUP9 PUSH1 0x60 ADD MLOAD PUSH2 0x54BC JUMP JUMPDEST SWAP4 POP PUSH2 0x484D PUSH2 0x4841 DUP8 PUSH1 0x20 ADD MLOAD PUSH2 0x337C JUMP JUMPDEST DUP4 MLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH2 0x5500 JUMP JUMPDEST SWAP3 POP PUSH2 0x485D DUP2 DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x3CAC JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0x48AD JUMP JUMPDEST PUSH2 0x48AA PUSH2 0x4893 DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0x337C JUMP JUMPDEST PUSH2 0x48A0 DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0x337C JUMP JUMPDEST DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x5500 JUMP JUMPDEST SWAP2 POP JUMPDEST POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48C2 DUP5 DUP5 DUP5 PUSH2 0x38E8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP1 PUSH2 0x48CE JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD GT ISZERO PUSH2 0x3991 JUMPI PUSH1 0x0 NOT DUP2 LT PUSH2 0x48E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND PUSH1 0xE8 SWAP1 DUP2 SHL PUSH1 0x34 DUP8 ADD MSTORE SWAP3 SWAP1 SWAP4 SIGNEXTEND SWAP1 SWAP2 SHL PUSH1 0x37 DUP5 ADD MSTORE DUP1 MLOAD DUP1 DUP5 SUB PUSH1 0x1A ADD DUP2 MSTORE PUSH1 0x3A SWAP1 SWAP4 ADD DUP2 MSTORE DUP3 MLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 KECCAK256 PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 SWAP1 MSTORE SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 PUSH1 0x0 DUP5 PUSH2 0xFFFF AND GT PUSH2 0x4995 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x49AD 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 0x49D7 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x49F2 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 0x4A1C JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4A37 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 0x4A61 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0x4B00 JUMPI PUSH2 0x4A94 DUP14 DUP14 DUP14 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x4A81 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 PUSH2 0x3998 JUMP JUMPDEST DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x4AA0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x4AB3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x4AC6 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x20 SWAP5 DUP6 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP1 MSTORE PUSH1 0x6 SWAP2 DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND SWAP1 MSTORE PUSH1 0x1 ADD PUSH2 0x4A67 JUMP JUMPDEST POP SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x4B50 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x544C55 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0xD89E7 NOT PUSH1 0x2 DUP4 SWAP1 SIGNEXTEND SLT ISZERO PUSH2 0x4B93 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x544C4D PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0xD89E8 PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND SGT ISZERO PUSH2 0x4BD5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x54554D PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE SWAP3 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP4 SLOAD PUSH4 0xFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xF8 SHL OR DUP3 SSTORE SWAP1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND SWAP1 SSTORE SWAP1 DUP2 SWAP1 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH1 0x8 DUP2 SWAP1 SAR SWAP2 PUSH2 0x100 SWAP1 SWAP2 SMOD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x4C5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x80 SHL DUP3 LT PUSH2 0x4C6F JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x4C87 JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x4C9B JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x4CAD JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x4CBE JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x4CCE JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x4CDE JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x4528 JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x4CFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x4D17 JUMPI PUSH1 0x7F NOT ADD PUSH2 0x4D1F JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x4D38 JUMPI PUSH1 0x3F NOT ADD PUSH2 0x4D40 JUMP JUMPDEST PUSH1 0x40 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x4D55 JUMPI PUSH1 0x1F NOT ADD PUSH2 0x4D5D JUMP JUMPDEST PUSH1 0x20 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH2 0xFFFF DUP3 AND ISZERO PUSH2 0x4D70 JUMPI PUSH1 0xF NOT ADD PUSH2 0x4D78 JUMP JUMPDEST PUSH1 0x10 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x4D8A JUMPI PUSH1 0x7 NOT ADD PUSH2 0x4D92 JUMP JUMPDEST PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xF DUP3 AND ISZERO PUSH2 0x4DA4 JUMPI PUSH1 0x3 NOT ADD PUSH2 0x4DAC JUMP JUMPDEST PUSH1 0x4 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x3 DUP3 AND ISZERO PUSH2 0x4DBE JUMPI PUSH1 0x1 NOT ADD PUSH2 0x4DC6 JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x4528 JUMPI PUSH1 0x0 NOT ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4DF8 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP2 PUSH2 0x4E25 JUMPI PUSH2 0x4E20 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x38E8 JUMP JUMPDEST PUSH2 0x4E48 JUMP JUMPDEST PUSH2 0x4E48 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4E73 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP7 SUB DUP2 AND SWAP1 DUP8 AND PUSH2 0x4EAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH2 0x4EDF JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4ED2 DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x38E8 JUMP JUMPDEST DUP2 PUSH2 0x4ED9 JUMPI INVALID JUMPDEST DIV PUSH2 0x4F05 JUMP JUMPDEST PUSH2 0x4F05 PUSH2 0x4EF6 DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x48B5 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x552F JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x4F27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x4F3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x4F4F JUMPI PUSH2 0x4E20 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x553A JUMP JUMPDEST PUSH2 0x4E48 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x561B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x4F73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x4F89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x4F9B JUMPI PUSH2 0x4E20 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x561B JUMP JUMPDEST PUSH2 0x4E48 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x553A JUMP JUMPDEST PUSH2 0x4FB0 PUSH2 0x5F1A JUMP JUMPDEST DUP7 MLOAD DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH2 0x4FC9 JUMPI PUSH1 0x1 PUSH2 0x4FCB JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP PUSH1 0x0 PUSH4 0xFFFFFFFF TIMESTAMP GT PUSH2 0x5016 JUMPI TIMESTAMP DUP5 PUSH4 0xFFFFFFFF AND LT PUSH2 0x4FED JUMPI DUP2 PUSH2 0x5011 JUMP JUMPDEST DUP9 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x500E JUMPI DUP9 MLOAD DUP5 SUB PUSH2 0x5011 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH2 0x5019 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP10 PUSH1 0x2 SIGNEXTEND MUL DUP12 PUSH1 0x20 ADD MLOAD ADD PUSH1 0x6 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x80 DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH2 0x507A JUMPI INVALID JUMPDEST DIV DUP12 PUSH1 0x40 ADD MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0x10 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND SWAP1 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 PUSH2 0x50D1 JUMPI INVALID JUMPDEST DIV DUP12 PUSH1 0x80 ADD MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 MSTORE POP SWAP3 POP POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x50FA PUSH2 0x5F1A JUMP JUMPDEST PUSH2 0x5102 PUSH2 0x5F1A JUMP JUMPDEST DUP11 DUP8 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x5113 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP1 DUP5 MSTORE PUSH5 0x100000000 DUP3 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP3 POP PUSH2 0x5191 SWAP1 DUP12 SWAP1 DUP12 PUSH2 0x5710 JUMP JUMPDEST ISZERO PUSH2 0x51CB JUMPI DUP9 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x51B3 JUMPI PUSH2 0x428B JUMP JUMPDEST DUP2 PUSH2 0x51C2 DUP4 DUP12 DUP12 DUP11 DUP11 DUP11 PUSH2 0x4FA8 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x428B JUMP JUMPDEST DUP11 DUP4 PUSH2 0xFFFF AND DUP9 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x51E0 JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x51F0 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP3 POP PUSH2 0x52D4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE DUP13 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP3 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x1 DUP13 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP2 POP JUMPDEST PUSH2 0x52E3 DUP11 DUP4 PUSH1 0x0 ADD MLOAD DUP12 PUSH2 0x5710 JUMP JUMPDEST PUSH2 0x531A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x13D311 PUSH1 0xEA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x5327 DUP12 DUP12 DUP12 DUP11 DUP8 PUSH2 0x57D3 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5348 PUSH1 0xC DUP8 DUP8 DUP8 PUSH2 0x48EF JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 DUP1 PUSH1 0xF DUP8 SWAP1 SIGNEXTEND ISZERO PUSH2 0x545C JUMPI PUSH1 0x0 PUSH2 0x5369 PUSH2 0x3232 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x9 SLOAD PUSH1 0x5 SLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH2 0x53D4 SWAP3 PUSH1 0xD SWAP3 DUP9 SWAP3 DUP7 SWAP3 PUSH1 0x1 PUSH1 0xA0 SHL DUP4 DIV PUSH1 0x2 SIGNEXTEND SWAP3 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP2 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP3 DIV DUP3 AND SWAP3 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 SWAP2 DIV AND SWAP1 PUSH2 0x3998 AND JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x53FE PUSH1 0xA DUP16 DUP14 DUP16 DUP14 DUP14 DUP10 DUP12 DUP14 PUSH1 0x0 DUP12 DUP14 PUSH2 0x59A8 JUMP JUMPDEST SWAP7 POP PUSH2 0x5416 PUSH1 0xA DUP15 DUP14 DUP16 DUP14 DUP14 DUP10 DUP12 DUP14 PUSH1 0x1 DUP12 DUP14 PUSH2 0x59A8 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP2 SWAP8 POP PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 SWAP2 DIV SWAP1 SIGNEXTEND DUP8 ISZERO PUSH2 0x5443 JUMPI PUSH2 0x5443 DUP16 DUP3 PUSH1 0xB PUSH2 0x5BE0 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP7 ISZERO PUSH2 0x5455 JUMPI PUSH2 0x5455 PUSH1 0xB DUP16 DUP4 PUSH2 0x5BE0 JUMP JUMPDEST POP POP POP POP POP POP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x546E PUSH1 0xA DUP13 DUP13 DUP12 DUP11 DUP11 PUSH2 0x5C46 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x547F DUP8 DUP11 DUP5 DUP5 PUSH2 0x5CF2 JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x54AD JUMPI DUP4 ISZERO PUSH2 0x549C JUMPI PUSH2 0x549C PUSH1 0xA DUP13 PUSH2 0x5E87 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x54AD JUMPI PUSH2 0x54AD PUSH1 0xA DUP12 PUSH2 0x5E87 JUMP JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT PUSH2 0x54E2 JUMPI PUSH2 0x54DD PUSH2 0x54D8 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x4E53 JUMP JUMPDEST PUSH2 0x38A0 JUMP JUMPDEST PUSH2 0x4E4B JUMP JUMPDEST PUSH2 0x54F5 PUSH2 0x54D8 DUP6 DUP6 DUP6 PUSH1 0x0 SUB PUSH1 0x0 PUSH2 0x4E53 JUMP JUMPDEST PUSH1 0x0 SUB SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT PUSH2 0x551C JUMPI PUSH2 0x54DD PUSH2 0x54D8 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x4DD8 JUMP JUMPDEST PUSH2 0x54F5 PUSH2 0x54D8 DUP6 DUP6 DUP6 PUSH1 0x0 SUB PUSH1 0x0 PUSH2 0x4DD8 JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x55AD JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x5570 JUMPI PUSH2 0x556B DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x38E8 JUMP JUMPDEST PUSH2 0x5588 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH1 0x60 DUP6 SWAP1 SHL DUP2 PUSH2 0x5586 JUMPI INVALID JUMPDEST DIV JUMPDEST SWAP1 POP PUSH2 0x55A5 PUSH2 0x55A0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP4 PUSH2 0x452D JUMP JUMPDEST PUSH2 0x5EC8 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4E4B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x55DB JUMPI PUSH2 0x55D6 DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x48B5 JUMP JUMPDEST PUSH2 0x55F2 JUMP JUMPDEST PUSH2 0x55F2 PUSH1 0x60 DUP6 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP8 AND PUSH2 0x552F JUMP JUMPDEST SWAP1 POP DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x5609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB SWAP1 POP PUSH2 0x4E4B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5629 JUMPI POP DUP4 PUSH2 0x4E4B JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND DUP3 ISZERO PUSH2 0x56C9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x5669 JUMPI INVALID JUMPDEST DIV EQ ISZERO PUSH2 0x569A JUMPI DUP2 DUP2 ADD DUP3 DUP2 LT PUSH2 0x5698 JUMPI PUSH2 0x568E DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH2 0x48B5 JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x4E4B JUMP JUMPDEST POP JUMPDEST PUSH2 0x56C0 DUP3 PUSH2 0x56BB DUP8 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP2 PUSH2 0x56B4 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x452D JUMP JUMPDEST PUSH2 0x552F JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x4E4B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x56E0 JUMPI INVALID JUMPDEST DIV EQ DUP1 ISZERO PUSH2 0x56ED JUMPI POP DUP1 DUP3 GT JUMPDEST PUSH2 0x56F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB PUSH2 0x568E PUSH2 0x55A0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 PUSH2 0x48B5 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO DUP1 ISZERO PUSH2 0x573A JUMPI POP DUP4 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND GT ISZERO JUMPDEST ISZERO PUSH2 0x5756 JUMPI DUP2 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO SWAP1 POP PUSH2 0x3991 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x577E JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH5 0x100000000 ADD PUSH2 0x5786 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP6 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x57B7 JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH5 0x100000000 ADD PUSH2 0x57BF JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 SWAP2 GT ISZERO SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x57DB PUSH2 0x5F1A JUMP JUMPDEST PUSH2 0x57E3 PUSH2 0x5F1A JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH2 0xFFFF AND DUP6 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x57F9 JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP6 PUSH2 0xFFFF AND DUP4 ADD SUB SWAP1 POP PUSH1 0x0 JUMPDEST POP PUSH1 0x2 DUP2 DUP4 ADD DIV DUP10 PUSH2 0xFFFF DUP8 AND DUP3 DUP2 PUSH2 0x5826 JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x5832 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP6 POP PUSH2 0x58B7 JUMPI DUP1 PUSH1 0x1 ADD SWAP3 POP PUSH2 0x5811 JUMP JUMPDEST DUP10 DUP7 PUSH2 0xFFFF AND DUP3 PUSH1 0x1 ADD DUP2 PUSH2 0x58C8 JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x58D4 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE DUP6 MLOAD SWAP1 SWAP5 POP PUSH1 0x0 SWAP1 PUSH2 0x595A SWAP1 DUP12 SWAP1 DUP12 PUSH2 0x5710 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x5973 JUMPI POP PUSH2 0x5973 DUP11 DUP11 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x5710 JUMP JUMPDEST ISZERO PUSH2 0x597E JUMPI POP PUSH2 0x599B JUMP JUMPDEST DUP1 PUSH2 0x598E JUMPI PUSH1 0x1 DUP3 SUB SWAP3 POP PUSH2 0x5995 JUMP JUMPDEST DUP2 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP PUSH2 0x5811 JUMP JUMPDEST POP POP POP SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP12 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH2 0x59D3 DUP3 DUP15 PUSH2 0x3CAC JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT ISZERO PUSH2 0x5A21 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C4F PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 DUP2 AND ISZERO SWAP1 DUP3 AND ISZERO DUP2 EQ ISZERO SWAP5 POP ISZERO PUSH2 0x5B2C JUMPI DUP14 PUSH1 0x2 SIGNEXTEND DUP16 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x5AFC JUMPI DUP12 DUP4 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP11 DUP4 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP10 DUP4 PUSH1 0x3 ADD PUSH1 0x7 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP9 DUP4 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH7 0xFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x6 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP8 DUP4 PUSH1 0x3 ADD PUSH1 0x1B PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 DUP4 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xF8 SHL OR SWAP1 SSTORE JUMPDEST DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND OR DUP4 SSTORE DUP7 PUSH2 0x5B81 JUMPI PUSH2 0x5B7C PUSH2 0x5B77 DUP15 PUSH1 0xF SIGNEXTEND DUP6 PUSH1 0x0 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xF SIGNEXTEND PUSH1 0xF SIGNEXTEND PUSH2 0x38D2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x464D JUMP JUMPDEST PUSH2 0x5BAE JUMP JUMPDEST PUSH2 0x5BAE PUSH2 0x5B77 DUP15 PUSH1 0xF SIGNEXTEND DUP6 PUSH1 0x0 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xF SIGNEXTEND PUSH1 0xF SIGNEXTEND PUSH2 0x38B6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 SLOAD PUSH1 0xF SWAP2 SWAP1 SWAP2 SIGNEXTEND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP2 AND OR SWAP1 SWAP3 SSTORE POP SWAP1 SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x5BEF JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x5BFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5C18 DUP4 PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x5C12 JUMPI INVALID JUMPDEST SDIV PUSH2 0x4C3C JUMP JUMPDEST PUSH1 0x1 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x40 SWAP1 SWAP7 KECCAK256 DUP1 SLOAD PUSH1 0xFF SWAP1 SWAP8 AND SWAP2 SWAP1 SWAP2 SHL SWAP1 SWAP6 XOR SWAP1 SWAP5 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP6 DUP2 SIGNEXTEND DUP1 DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP10 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP9 DUP6 SIGNEXTEND DUP6 SIGNEXTEND DUP4 MSTORE SWAP1 DUP3 KECCAK256 SWAP2 SWAP4 DUP5 SWAP4 SWAP2 SWAP3 SWAP2 DUP5 SWAP2 DUP3 SWAP2 SWAP1 DUP11 SWAP1 SIGNEXTEND SLT PUSH2 0x5C8C JUMPI POP POP PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH2 0x5C9F JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SLOAD DUP9 SUB SWAP2 POP DUP4 PUSH1 0x2 ADD SLOAD DUP8 SUB SWAP1 POP JUMPDEST PUSH1 0x0 DUP1 DUP12 PUSH1 0x2 SIGNEXTEND DUP12 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x5CC1 JUMPI POP POP PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x2 DUP5 ADD SLOAD PUSH2 0x5CD4 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SLOAD DUP11 SUB SWAP2 POP DUP5 PUSH1 0x2 ADD SLOAD DUP10 SUB SWAP1 POP JUMPDEST SWAP3 SWAP1 SWAP9 SUB SWAP8 SWAP1 SWAP8 SUB SWAP12 SWAP7 SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 SUB SWAP9 POP SWAP4 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP8 ADD SLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x2 DUP8 ADD SLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x3 DUP7 ADD SLOAD DUP1 DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV SWAP1 SWAP2 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xF DUP6 SWAP1 SIGNEXTEND PUSH2 0x5D91 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x5D89 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4E5 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH2 0x5DA0 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x5D9D SWAP1 DUP7 PUSH2 0x3CAC JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH2 0x5DC4 DUP4 PUSH1 0x20 ADD MLOAD DUP7 SUB DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x38E8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x5DEA DUP5 PUSH1 0x40 ADD MLOAD DUP7 SUB DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x38E8 JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0xF SIGNEXTEND PUSH1 0x0 EQ PUSH2 0x5E11 JUMPI DUP8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND OR DUP9 SSTORE JUMPDEST PUSH1 0x1 DUP9 ADD DUP7 SWAP1 SSTORE PUSH1 0x2 DUP9 ADD DUP6 SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO ISZERO DUP1 PUSH2 0x5E3F JUMPI POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT JUMPDEST ISZERO PUSH2 0x5E7D JUMPI PUSH1 0x3 DUP9 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP6 ADD DUP3 AND OR DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP3 SWAP1 DIV DUP4 AND DUP6 ADD SWAP1 SWAP3 AND MUL OR SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP4 SWAP1 SSTORE SWAP1 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR SUB 0xE6 SWAP14 PUSH3 0xC9A4CC 0xB7 0xBF STATICCALL KECCAK256 CODECOPY 0xE5 0xA5 MUL 0xD9 GT CALLER COINBASE 0x29 0xC1 PUSH10 0xF0C0ADF937FE3FC57364 PUSH20 0x6F6C634300070600330000000000000000000000 ","sourceMap":"143:898:38:-:0;;;267:10;245:32;;143:898;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061025c5760003560e01c80635bb4780811610145578063c45a0155116100bd578063ddca3f431161008c578063f30dba9311610071578063f30dba9314610a85578063f637731d14610b16578063f6eb760f14610b3c5761025c565b8063ddca3f4314610a5d578063f305839914610a7d5761025c565b8063c45a015514610a11578063d0c93a7c14610a19578063d21220a714610a38578063d380c67914610a405761025c565b8063883bdbfd11610114578063a34123a7116100f9578063a34123a71461094b578063a38807f214610985578063adb61832146109f05761025c565b8063883bdbfd146107cd57806394fd4a3e1461091b5761025c565b80635bb478081461073a57806370cf754a146107605780638206a4d11461076857806385b66729146107905761025c565b806332148f67116101d857806346141319116101a75780634f1eb3d81161018c5780634f1eb3d814610670578063514ea4bf146106c15780635339c2961461071a5761025c565b806346141319146105dc578063490e6cbc146105e45761025c565b806332148f67146104a35780633850c7bd146104c45780633beb26c41461051d5780633c8a7d8d1461053a5761025c565b806316ada5471161022f5780631ad8b03b116102145780631ad8b03b146103d5578063218064e51461040c578063252c09d71461043e5761025c565b806316ada547146103975780631a686502146103b15761025c565b806307e32f0a146102615780630dfe168114610280578063128acb08146102a457806314f2705c14610353575b600080fd5b61027e6004803603602081101561027757600080fd5b5035610b59565b005b610288610b66565b604080516001600160a01b039092168252519081900360200190f35b61033a600480360360a08110156102ba57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a0810160808201356401000000008111156102fb57600080fd5b82018360208201111561030d57600080fd5b8035906020019184600183028401116401000000008311171561032f57600080fd5b509092509050610b75565b6040805192835260208301919091528051918290030190f35b61027e6004803603608081101561036957600080fd5b506001600160a01b03813581169160208101359091169062ffffff604082013516906060013560020b611792565b61039f611861565b60408051918252519081900360200190f35b6103b9611869565b604080516001600160801b039092168252519081900360200190f35b6103dd611878565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b61027e6004803603604081101561042257600080fd5b5080356001600160901b0316906020013563ffffffff16611892565b61045b6004803603602081101561045457600080fd5b5035611ad7565b6040805163ffffffff909616865260069490940b60208601526001600160a01b0390921684840152151560608401526001600160c01b03166080830152519081900360a00190f35b61027e600480360360208110156104b957600080fd5b503561ffff16611b32565b6104cc611c23565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b61027e6004803603602081101561053357600080fd5b5035611c73565b61033a600480360360a081101561055057600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a08101608082013564010000000081111561059d57600080fd5b8201836020820111156105af57600080fd5b803590602001918460018302840111640100000000831117156105d157600080fd5b509092509050611c7a565b61039f611f53565b61027e600480360360808110156105fa57600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561063157600080fd5b82018360208201111561064357600080fd5b8035906020019184600183028401116401000000008311171561066557600080fd5b509092509050611f59565b6103dd600480360360a081101561068657600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b03606082013581169160800135166123a1565b6106de600480360360208110156106d757600080fd5b5035612599565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b61039f6004803603602081101561073057600080fd5b503560010b6125d6565b61027e6004803603602081101561075057600080fd5b50356001600160a01b03166125e8565b6103b961260a565b61027e6004803603604081101561077e57600080fd5b5060ff81358116916020013516612619565b6103dd600480360360608110156107a657600080fd5b506001600160a01b03813516906001600160801b03602082013581169160400135166127f2565b61083d600480360360208110156107e357600080fd5b8101906020810181356401000000008111156107fe57600080fd5b82018360208201111561081057600080fd5b8035906020019184602083028401116401000000008311171561083257600080fd5b509092509050612a7c565b60405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561088557818101518382015260200161086d565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156108c45781810151838201526020016108ac565b50505050905001848103825285818151815260200191508051906020019060200280838360005b838110156109035781810151838201526020016108eb565b50505050905001965050505050505060405180910390f35b610923612b2b565b604080516001600160901b03909316835263ffffffff90911660208301528051918290030190f35b61033a6004803603606081101561096157600080fd5b508035600290810b91602081013590910b90604001356001600160801b0316612b49565b6109af6004803603604081101561099b57600080fd5b508035600290810b9160200135900b612cc5565b6040805160069590950b85526001600160a01b03909316602085015263ffffffff909116838301526001600160c01b03166060830152519081900360800190f35b6109f8612fb7565b6040805163ffffffff9092168252519081900360200190f35b610288612fc6565b610a21612fd5565b6040805160029290920b8252519081900360200190f35b610288612fe5565b61027e60048036036020811015610a5657600080fd5b5035612ff4565b610a65612ff9565b6040805162ffffff9092168252519081900360200190f35b61039f61300b565b610aa560048036036020811015610a9b57600080fd5b503560020b613011565b604080516001600160801b03909a168a52600f9890980b60208a015288880196909652606088019490945260069290920b60808701526001600160a01b031660a086015263ffffffff1660c0850152151560e08401526001600160c01b031661010083015251908190036101200190f35b61027e60048036036020811015610b2c57600080fd5b50356001600160a01b031661308e565b61027e60048036036020811015610b5257600080fd5b503561322d565b6202000b80549091019055565b6001546001600160a01b031681565b60008085610baf576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526004546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c08201819052610c68576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610cb35780600001516001600160a01b0316866001600160a01b0316118015610cae575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610ce5565b80600001516001600160a01b0316866001600160a01b0316108015610ce557506401000276a36001600160a01b038716115b610d1c576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6004805460ff60f01b19169055604080516101608101909152600090808a610d4f5760048460a0015160ff16901c610d62565b60108460a0015160ff1681610d6057fe5b065b60ff1681526009546001600160801b03166020820152604001610d83613232565b63ffffffff168152602001600060060b815260200160006001600160a01b0316815260200160001515815260200160006001600160c01b03168152602001600260149054906101000a900462ffffff1662ffffff168152602001600260179054906101000a900460020b60020b8152602001600160009054906101000a90046001600160a01b03166001600160a01b03168152602001600260009054906101000a90046001600160a01b03166001600160a01b031681525090506000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610e8b57600754610e8f565b6006545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610ede5750886001600160a01b031681604001516001600160a01b031614155b1561129f57610eeb615ede565b60408201516001600160a01b031681526060820151610100850151610f1391600b918f61323a565b15156040830152600290810b810b60208301819052620d89e719910b1215610f4457620d89e7196020820152610f63565b6020810151620d89e860029190910b1315610f6357620d89e860208201525b610f70816020015161337c565b6001600160a01b031660608201526040820151610fe5908d610faa578b6001600160a01b031683606001516001600160a01b031611610fc4565b8b6001600160a01b031683606001516001600160a01b0316105b610fd2578260600151610fd4565b8b5b60c0850151855160e08901516136ae565b60c085015260a084015260808301526001600160a01b0316604083015282156110475761101b8160c001518260800151016138a0565b825103825260a081015161103d90611032906138a0565b6020840151906138b6565b6020830152611082565b6110548160a001516138a0565b825101825260c0810151608082015161107c9161107191016138a0565b6020840151906138d2565b60208301525b835160ff16156110c8576000846000015160ff168260c00151816110a257fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615611107576110fb8160c00151600160801b8460c001516001600160801b03166138e8565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b0316141561125e57806040015115611235578360a001516111b957604080850151602080880151928801519087015160055460608a015161118995600d9594600094919390926001600160901b0382169163ffffffff600160901b9091048116919061399816565b6001600160c01b031660c08701526001600160a01b03166080860152600690810b900b6060850152600160a08501525b600061120b82602001518e6111d0576006546111d6565b84608001515b8f6111e55785608001516111e9565b6007545b608089015160608a015160408b015160c08c0151600a96959493929190613b96565b90508c15611217576000035b6112258360c0015182613cac565b6001600160801b031660c0840152505b8b61124457806020015161124d565b60018160200151035b600290810b900b6060830152611299565b80600001516001600160a01b031682604001516001600160a01b0316146112995761128c8260400151613d62565b600290810b900b60608301525b50610eb8565b836020015160020b816060015160020b1461138a576040808501519084015160208087015190860151600554606089015160808a0151600096879661130a96600d969295919490936001600160901b0383169263ffffffff600160901b909104811692919061408e16565b604085015160608601516004805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b9390931692909202919091176001600160a01b0319166001600160a01b03909116179055506113af9050565b6040810151600480546001600160a01b0319166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b0316146113f55760c0810151600980546001600160801b0319166001600160801b039092169190911790555b8a1561144557608081015160065560a08101516001600160801b0316156114405760a0810151600880546001600160801b031981166001600160801b03918216909301169190911790555b61148b565b608081015160075560a08101516001600160801b03161561148b5760a0810151600880546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b1515146114a457602081015181518b036114b1565b80600001518a0381602001515b90965094508a156115db5760008512156114d8576114d88361014001518d87600003614299565b60006114e88461012001516143fc565b9050336001600160a01b031663d804d7a788888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561156c57600080fd5b505af1158015611580573d6000803e3d6000fd5b505050506115928461012001516143fc565b61159c828961452d565b11156115d5576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b506116f6565b60008612156115f7576115f78361012001518d88600003614299565b60006116078461014001516143fc565b9050336001600160a01b031663d804d7a788888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561168b57600080fd5b505af115801561169f573d6000803e3d6000fd5b505050506116b18461014001516143fc565b6116bb828861452d565b11156116f4576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015160c083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506004805460ff60f01b1916600160f01b17905550919890975095505050505050565b6000546001600160a01b0316156117a857600080fd5b60008054336001600160a01b0319918216179091556001805482166001600160a01b0387811691909117909155600280549092169085161762ffffff60a01b1916600160a01b62ffffff85811691909102919091177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16600160b81b84840b929092169190910217905561183b8161453d565b600380546001600160801b0319166001600160801b039290921691909117905550505050565b6202000b5481565b6009546001600160801b031681565b6008546001600160801b0380821691600160801b90041682565b600454600160f01b900460ff166118d6576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b1916815560005460408051638da5cb5b60e01b815290516001600160a01b0390921692638da5cb5b928282019260209290829003018186803b15801561192457600080fd5b505afa158015611938573d6000803e3d6000fd5b505050506040513d602081101561194e57600080fd5b50516001600160a01b0316331461196457600080fd5b428163ffffffff16101561197757600080fd5b6004546119eb90600160b81b900461ffff16611991613232565b600454600954600554600d949392600160a01b810460020b926001600160801b0316916001600160901b0381169163ffffffff600160901b90920482169161ffff600160c81b8304811692600160d81b9004169061408e16565b6004805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b93909216929092021790556040805180820182526001600160901b03841680825263ffffffff841660209283018190526005805471ffffffffffffffffffffffffffffffffffff191683177fffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffff16600160901b830217905583519182529181019190915281517e8866b45af6018e497020f8d16e58c1be320850f245ebdf9d304666bee15e35929181900390910190a150506004805460ff60f01b1916600160f01b179055565b600d8161ffff8110611ae857600080fd5b60020201805460019091015463ffffffff82169250640100000000820460060b91600160581b81046001600160a01b031691600160f81b90910460ff16906001600160c01b031685565b600454600160f01b900460ff16611b76576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b191690819055600160d81b900461ffff166000611b9e600d83856145a7565b6004805461ffff808416600160d81b810261ffff60d81b1990931692909217909255919250831614611c0b576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506004805460ff60f01b1916600160f01b17905550565b6004546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b6202000b55565b6004546000908190600160f01b900460ff16611cc3576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b191690556001600160801b038516611ce357600080fd5b600080611d3160405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b8152602001611d278a6001600160801b031661464d565b600f0b905261465e565b6001546002549297509095508694508593506000925082916001600160a01b0391821691168515611d6857611d65826143fc565b93505b8615611d7a57611d77816143fc565b92505b336001600160a01b0316631507a8f489898d8d6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611dfc57600080fd5b505af1158015611e10573d6000803e3d6000fd5b505050506000881115611e6857611e26826143fc565b611e30858a61452d565b1115611e68576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b8615611eb957611e77816143fc565b611e81848961452d565b1115611eb9576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8b60020b8d60020b8f6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338f8d8d60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506004805460ff60f01b1916600160f01b17905550939a92995091975050505050505050565b60075481565b600454600160f01b900460ff16611f9d576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b191690556009546001600160801b031680611fec576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b6040805160a0810182526001546001600160a01b0390811682526002549081166020830152600160a01b900462ffffff16918101829052600060608201819052608082015290612041908790620f42406148b5565b6060820152604081015161205f90869062ffffff16620f42406148b5565b60808201528051600090612072906143fc565b9050600061208383602001516143fc565b90508715612098578251612098908a8a614299565b86156120ad576120ad83602001518a89614299565b336001600160a01b0316630659efa68460600151856080015189896040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561213757600080fd5b505af115801561214b573d6000803e3d6000fd5b50505050600061215e84600001516143fc565b9050600061216f85602001516143fc565b90508161218986606001518661452d90919063ffffffff16565b11156121c1576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b806121d986608001518561452d90919063ffffffff16565b1115612211576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b83820383820381156122a057600454600160e81b9004600f1660008115612244578160ff16848161223e57fe5b04612247565b60005b90506001600160801b0381161561227a57600880546001600160801b038082168401166001600160801b03199091161790555b612294818503600160801b8c6001600160801b03166138e8565b60068054909101905550505b801561232b5760048054600160e81b9004901c600f16600081156122d0578160ff1683816122ca57fe5b046122d3565b60005b90506001600160801b0381161561230557600880546001600160801b03600160801b8083048216850182160291161790555b61231f818403600160801b8c6001600160801b03166138e8565b60078054909101905550505b604080518d8152602081018d90528082018490526060810183905290516001600160a01b038f169133917fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6339181900360800190a350506004805460ff60f01b1916600160f01b1790555050505050505050505050565b6004546000908190600160f01b900460ff166123ea576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b191690556000612406600c3389896148ef565b60038101549091506001600160801b03908116908616116124275784612436565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b90910481169085161161245e5783612474565b6003810154600160801b90046001600160801b03165b91506001600160801b038316156124c6576003810180546001600160801b031981166001600160801b039182168690038216179091556001546124c6916001600160a01b03909116908a908616614299565b6001600160801b03821615612519576003810180546001600160801b03600160801b808304821686900382160291811691909117909155600254612519916001600160a01b03909116908a908516614299565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506004805460ff60f01b1916600160f01b17905590969095509350505050565b600c6020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b600b6020526000908152604090205481565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160801b031681565b600454600160f01b900460ff1661265d576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b1916815560005460408051638da5cb5b60e01b815290516001600160a01b0390921692638da5cb5b928282019260209290829003018186803b1580156126ab57600080fd5b505afa1580156126bf573d6000803e3d6000fd5b505050506040513d60208110156126d557600080fd5b50516001600160a01b031633146126eb57600080fd5b60ff8216158061270e575060048260ff161015801561270e5750600a8260ff1611155b8015612738575060ff81161580612738575060048160ff16101580156127385750600a8160ff1611155b61274157600080fd5b60048054610ff083831b16840160ff908116600160e81b9081027fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84161784556040805191909304600f81811683529481901c909416602082015285821681840152848216606082015291519216917f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b1339181900360800190a150506004805460ff60f01b1916600160f01b17905550565b6004546000908190600160f01b900460ff1661283b576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b1916815560005460408051638da5cb5b60e01b815290516001600160a01b0390921692638da5cb5b928282019260209290829003018186803b15801561288957600080fd5b505afa15801561289d573d6000803e3d6000fd5b505050506040513d60208110156128b357600080fd5b50516001600160a01b031633146128c957600080fd5b6008546001600160801b03908116908516116128e557836128f2565b6008546001600160801b03165b6008549092506001600160801b03600160801b909104811690841611612918578261292c565b600854600160801b90046001600160801b03165b90506001600160801b0382161561299a576008546001600160801b038381169116141561295b57600019909101905b600880546001600160801b031981166001600160801b0391821685900382161790915560015461299a916001600160a01b039091169087908516614299565b6001600160801b03811615612a0d576008546001600160801b03828116600160801b9092041614156129cb57600019015b600880546001600160801b03600160801b808304821685900382160291811691909117909155600254612a0d916001600160a01b039091169087908416614299565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36004805460ff60f01b1916600160f01b1790559094909350915050565b6060806060612b1e612a8c613232565b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600454600954600554600d96959450600160a01b830460020b935061ffff600160b81b84048116936001600160801b03909316926001600160901b0383169263ffffffff600160901b909104811692600160c81b9092049091169061495316565b9250925092509250925092565b6005546001600160901b03811690600160901b900463ffffffff1682565b6004546000908190600160f01b900460ff16612b92576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6004805460ff60f01b1916905560408051608081018252338152600287810b602083015286900b9181019190915260009081908190612bee9060608101612be16001600160801b038a1661464d565b600003600f0b905261465e565b9250925092508160000394508060000393506000851180612c0f5750600084115b15612c4e576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506004805460ff60f01b1916600160f01b179055509094909350915050565b600080600080612cd58686614b10565b612cdd615f1a565b612ce5615f1a565b600288810b810b6000908152600a602090815260408083208b850b90940b8352918290206003840154600485015460ff600160f81b8304161515608089018190526001600160c01b03909116606089015263ffffffff600160d81b830416948801949094526001600160a01b0367010000000000000082041692870192909252600691820b820b90910b855290612d7b57600080fd5b6003810154600482015460ff600160f81b8304161515608086018190526001600160c01b03909116606086015263ffffffff600160d81b83041660408601526001600160a01b036701000000000000008304166020860152600691820b820b90910b8452612de857600080fd5b50506040805160e0810182526004546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c083015290918a820b910b1215612eb55781600001518360000151038260200151846020015103836040015185604001510384606001518660600151039650965096509650505050612fae565b8760020b816020015160020b1215612f76576000612ed1613232565b60208301516040840151600954600554606087015194955060009485948594612f2894600d948a94889493926001600160801b0316916001600160901b0381169163ffffffff600160901b90920482169161399816565b92509250925085600001518760000151840303866020015188602001518403038760400151896040015187030388606001518a606001518503039a509a509a509a5050505050505050612fae565b826000015182600001510383602001518360200151038460400151846040015103856060015185606001510396509650965096505050505b92959194509250565b6000612fc1613232565b905090565b6000546001600160a01b031681565b60028054600160b81b9004900b81565b6002546001600160a01b031681565b600655565b600254600160a01b900462ffffff1681565b60065481565b600a60205260009081526040902080546001820154600283015460038401546004909401546001600160801b03841694600160801b909404600f0b93600681900b9167010000000000000082046001600160a01b031691600160d81b810463ffffffff1691600160f81b90910460ff16906001600160c01b031689565b6004546001600160a01b0316156130d1576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b60006130dc82613d62565b90506000806130f46130ec613232565b600d90614bd9565b6040805160e0810182526001600160a01b038816808252600288810b6020808501829052600085870181905261ffff898116606088018190529089166080880181905260a0880192909252600160c09097019690965260048054600160f01b6001600160a01b0319909116871762ffffff60a01b1916600160a01b62ffffff9787900b9790971696909602959095177fffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffff16600160c81b9097029690961761ffff60d81b1916600160d81b909102177fff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a150505050565b600755565b6202000b5490565b60008060008460020b8660020b8161324e57fe5b05905060008660020b12801561327557508460020b8660020b8161326e57fe5b0760020b15155b1561327f57600019015b83156132f45760008061329183614c3c565b600182810b810b600090815260208d9052604090205460ff83169190911b800160001901908116801515975092945090925090856132d657888360ff168603026132e9565b886132e082614c4e565b840360ff168603025b965050505050613372565b60008061330383600101614c3c565b91509150600060018260ff166001901b031990506000818b60008660010b60010b815260200190815260200160002054169050806000141595508561335557888360ff0360ff1686600101010261336b565b888361336083614cee565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12613393578260020b61339b565b8260020b6000035b9050620d89e88111156133d9576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b6000600182166133ed57600160801b6133ff565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615613433576ffff97272373d413259a46990580e213a0260801c5b6004821615613452576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613471576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613490576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156134af576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156134ce576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156134ed576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561350d576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561352d576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561354d576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161561356d576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561358d576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156135ad576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156135cd576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156135ed576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561360e576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561362e576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561364d576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561366a576b048a170391f7dc42444e8fa20260801c5b60008460020b131561368557806000198161368157fe5b0490505b64010000000081061561369957600161369c565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a1610158187128015906137335760006136e78989620f42400362ffffff16620f42406138e8565b905082613700576136fb8c8c8c6001614dd8565b61370d565b61370d8b8d8c6001614e53565b955085811061371e578a965061372d565b61372a8c8b8386614f10565b96505b5061377d565b8161374a576137458b8b8b6000614e53565b613757565b6137578a8c8b6000614dd8565b935083886000031061376b5789955061377d565b61377a8b8a8a60000385614f5c565b95505b6001600160a01b038a81169087161482156137e05780801561379c5750815b6137b2576137ad878d8c6001614e53565b6137b4565b855b95508080156137c1575081155b6137d7576137d2878d8c6000614dd8565b6137d9565b845b945061382a565b8080156137ea5750815b613800576137fb8c888c6001614dd8565b613802565b855b955080801561380f575081155b613825576138208c888c6000614e53565b613827565b845b94505b8115801561383a57508860000385115b15613846578860000394505b81801561386557508a6001600160a01b0316876001600160a01b031614155b15613874578589039350613891565b61388e868962ffffff168a620f42400362ffffff166148b5565b93505b50505095509550955095915050565b6000600160ff1b82106138b257600080fd5b5090565b808203828113156000831215146138cc57600080fd5b92915050565b818101828112156000831215146138cc57600080fd5b600080806000198587098686029250828110908390030390508061391e576000841161391357600080fd5b508290049050613991565b80841161392a57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b6000808063ffffffff8a16613a645760008c8961ffff1661ffff81106139ba57fe5b6040805160a08101825260029290920292909201805463ffffffff8082168085526401000000008304600690810b810b900b6020860152600160581b83046001600160a01b031695850195909552600160f81b90910460ff16151560608401526001909101546001600160c01b031660808301529092508d1614613a4957613a46818d8c8b8b8b614fa8565b90505b80602001518160400151826080015193509350935050613b87565b898b03600080613a7b8f8f858f8f8f8f8f8f6150f2565b91509150816000015163ffffffff168363ffffffff161415613ab457816020015182604001518360800151955095509550505050613b87565b805163ffffffff84811691161415613ae357806020015181604001518260800151955095509550505050613b87565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b81613b1157fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b03160281613b4357fe5b048560400151018263ffffffff168463ffffffff1687608001518760800151036001600160c01b031681613b7357fe5b040286608001510197509750975050505050505b99509950999650505050505050565b600296870b870b60009081526020989098526040909720600181018054909603909555948401805490930390925560038301805463ffffffff600160d81b6001600160a01b036701000000000000008085048216909603169094027fffffffffff0000000000000000000000000000000000000000ffffffffffffff90921691909117600681810b90950390940b66ffffffffffffff1666ffffffffffffff19909416939093178281048416909503909216027fff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff909316929092179091556004810180546001600160c01b038082169094039093166001600160c01b03199093169290921790915554600160801b9004600f0b90565b60008082600f0b1215613d1157826001600160801b03168260000384039150816001600160801b031610613d0c576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b6138cc565b826001600160801b03168284019150816001600160801b031610156138cc576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b03831610801590613d9e575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613dd3576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c97908811961790941790921717909117171760808110613e7457607f810383901c9150613e7e565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1461407f57886001600160a01b03166140638261337c565b6001600160a01b03161115614078578161407a565b805b614081565b815b9998505050505050505050565b60008060008b8b61ffff1661ffff81106140a457fe5b6040805160a08101825260029290920292909201805463ffffffff8082168085526401000000008304600690810b810b900b6020860152600160581b83046001600160a01b031695850195909552600160f81b90910460ff16151560608401526001909101546001600160c01b031660808301529092508b16141561412f578a85925092505061428b565b8461ffff168461ffff1611801561415057506001850361ffff168b61ffff16145b1561415d57839150614161565b8491505b8161ffff168b60010161ffff168161417557fe5b069250614186818b8b8b8b8b614fa8565b8c8461ffff1661ffff811061419757fe5b825160029190910291909101805460208401516040850151606086015163ffffffff1990931663ffffffff909516949094176affffffffffffff00000000191664010000000066ffffffffffffff60069390930b9290921691909102177fff0000000000000000000000000000000000000000ffffffffffffffffffffff16600160581b6001600160a01b0390941693909302929092177effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b92151592909202919091178155608090910151600190910180546001600160c01b0319166001600160c01b03909216919091179055505b995099975050505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1781529251825160009485949389169392918291908083835b6020831061432a5780518252601f19909201916020918201910161430b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461438c576040519150601f19603f3d011682016040523d82523d6000602084013e614391565b606091505b50915091508180156143bf5750805115806143bf57508080602001905160208110156143bc57600080fd5b50515b6143f5576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166370a0823160e01b17815291518151600093849384936001600160a01b03881693919290918291908083835b6020831061448a5780518252601f19909201916020918201910161446b565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146144ea576040519150601f19603f3d011682016040523d82523d6000602084013e6144ef565b606091505b509150915081801561450357506020815110155b61450c57600080fd5b80806020019051602081101561452157600080fd5b5051925050505b919050565b808201828110156138cc57600080fd5b60008082600281900b620d89e7198161455257fe5b05029050600083600281900b620d89e88161456957fe5b0502905060008460020b83830360020b8161458057fe5b0560010190508062ffffff166001600160801b0380168161459d57fe5b0495945050505050565b6000808361ffff16116145e5576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff16116145fb575081613991565b825b8261ffff168161ffff161015614644576001858261ffff1661ffff811061462057fe5b60020201805463ffffffff191663ffffffff929092169190911790556001016145fd565b50909392505050565b80600f81900b811461452857600080fd5b600080600061467584602001518560400151614b10565b6040805160e0810182526004546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c0850152885190890151948901519289015193946147199491939092909190615339565b93508460600151600f0b6000146148ad57846020015160020b816020015160020b121561476e57614767614750866020015161337c565b61475d876040015161337c565b87606001516154bc565b92506148ad565b846040015160020b816020015160020b12156148835760095460408201516001600160801b03909116906147df906147a4613232565b602085015160055460608701516080880151600d9594939288926001600160901b0382169263ffffffff600160901b90930483169261408e16565b6004805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b93909216929092021790558151604087015161482f91906148259061337c565b88606001516154bc565b935061484d614841876020015161337c565b83516060890151615500565b925061485d818760600151613cac565b600980546001600160801b0319166001600160801b0392909216919091179055506148ad565b6148aa614893866020015161337c565b6148a0876040015161337c565b8760600151615500565b91505b509193909250565b60006148c28484846138e8565b9050600082806148ce57fe5b84860911156139915760001981106148e557600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b606080606060008461ffff1611614995576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b895167ffffffffffffffff811180156149ad57600080fd5b506040519080825280602002602001820160405280156149d7578160200160208202803683370190505b509250895167ffffffffffffffff811180156149f257600080fd5b50604051908082528060200260200182016040528015614a1c578160200160208202803683370190505b509150895167ffffffffffffffff81118015614a3757600080fd5b50604051908082528060200260200182016040528015614a61578160200160208202803683370190505b50905060005b8a51811015614b0057614a948d8d8d8481518110614a8157fe5b60200260200101518d8d8d8d8d8d613998565b868481518110614aa057fe5b60200260200101868581518110614ab357fe5b60200260200101868681518110614ac657fe5b6001600160c01b03909416602094850291909101909301929092526001600160a01b039092169052600691820b90910b9052600101614a67565b5099509950999650505050505050565b8060020b8260020b12614b50576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b1215614b93576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614bd5576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160a08101825263ffffffff928316808252600060208301819052928201839052600160608301819052608090920192909252835463ffffffff1916909117909116600160f81b17825590810180546001600160c01b0319169055908190565b60020b600881901d9161010090910790565b6000808211614c5c57600080fd5b600160801b8210614c6f57608091821c91015b680100000000000000008210614c8757604091821c91015b6401000000008210614c9b57602091821c91015b620100008210614cad57601091821c91015b6101008210614cbe57600891821c91015b60108210614cce57600491821c91015b60048210614cde57600291821c91015b6002821061452857600101919050565b6000808211614cfc57600080fd5b5060ff6001600160801b03821615614d1757607f1901614d1f565b608082901c91505b67ffffffffffffffff821615614d3857603f1901614d40565b604082901c91505b63ffffffff821615614d5557601f1901614d5d565b602082901c91505b61ffff821615614d7057600f1901614d78565b601082901c91505b60ff821615614d8a5760071901614d92565b600882901c91505b600f821615614da45760031901614dac565b600482901c91505b6003821615614dbe5760011901614dc6565b600282901c91505b60018216156145285760001901919050565b6000836001600160a01b0316856001600160a01b03161115614df8579293925b81614e2557614e20836001600160801b03168686036001600160a01b0316600160601b6138e8565b614e48565b614e48836001600160801b03168686036001600160a01b0316600160601b6148b5565b90505b949350505050565b6000836001600160a01b0316856001600160a01b03161115614e73579293925b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b166001600160a01b038686038116908716614eaf57600080fd5b83614edf57866001600160a01b0316614ed28383896001600160a01b03166138e8565b81614ed957fe5b04614f05565b614f05614ef68383896001600160a01b03166148b5565b886001600160a01b031661552f565b979650505050505050565b600080856001600160a01b031611614f2757600080fd5b6000846001600160801b031611614f3d57600080fd5b81614f4f57614e20858585600161553a565b614e48858585600161561b565b600080856001600160a01b031611614f7357600080fd5b6000846001600160801b031611614f8957600080fd5b81614f9b57614e20858585600061561b565b614e48858585600061553a565b614fb0615f1a565b865186036001600160801b038516614fc9576001614fcb565b845b9450600063ffffffff421161501657428463ffffffff1610614fed5781615011565b886000015163ffffffff168463ffffffff16111561500e5788518403615011565b60005b615019565b60005b90506040518060a001604052808963ffffffff1681526020018363ffffffff168960020b028b602001510160060b8152602001876001600160801b031660808563ffffffff166001600160a01b0316901b6001600160a01b03168161507a57fe5b048b60400151016001600160a01b03168152602001600115158152602001876001600160801b03168363ffffffff166010896001600160901b03166001600160c01b0316901b026001600160c01b0316816150d157fe5b048b60800151016001600160c01b0316815250925050509695505050505050565b6150fa615f1a565b615102615f1a565b8a8761ffff1661ffff811061511357fe5b6040805160a08101825260029290920292909201805463ffffffff81168084526401000000008204600690810b810b900b6020850152600160581b82046001600160a01b031694840194909452600160f81b900460ff1615156060830152600101546001600160c01b031660808201529250615191908b908b615710565b156151cb578863ffffffff16826000015163ffffffff1614156151b35761428b565b816151c2838b8b8a8a8a614fa8565b9150915061428b565b8a8361ffff168860010161ffff16816151e057fe5b0661ffff1661ffff81106151f057fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff161515606082018190526001909201546001600160c01b0316608082015292506152d4576040805160a0810182528c5463ffffffff811682526401000000008104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015260018c01546001600160c01b0316608082015291505b6152e38a83600001518b615710565b61531a576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b6153278b8b8b8a876157d3565b91509150995099975050505050505050565b6000615348600c8787876148ef565b60065460075491925090600080600f87900b1561545c576000615369613232565b600454600954600554929350600092839283926153d492600d9288928692600160a01b830460020b9261ffff600160b81b82048116936001600160801b0316926001600160901b0381169263ffffffff600160901b909204821692600160c81b909104169061399816565b60035492955090935091506001600160801b03166153fe600a8f8d8f8d8d898b8d60008b8d6159a8565b9650615416600a8e8d8f8d8d898b8d60018b8d6159a8565b60028054919750600160b81b909104900b8715615443576154438f82600b615be09092919063ffffffff16565b861561545557615455600b8f83615be0565b5050505050505b60008061546e600a8c8c8b8a8a615c46565b909250905061547f878a8484615cf2565b600089600f0b12156154ad57831561549c5761549c600a8c615e87565b82156154ad576154ad600a8b615e87565b50505050505095945050505050565b60008082600f0b126154e2576154dd6154d88585856001614e53565b6138a0565b614e4b565b6154f56154d88585856000036000614e53565b600003949350505050565b60008082600f0b1261551c576154dd6154d88585856001614dd8565b6154f56154d88585856000036000614dd8565b808204910615150190565b600081156155ad5760006001600160a01b038411156155705761556b84600160601b876001600160801b03166138e8565b615588565b6001600160801b038516606085901b8161558657fe5b045b90506155a56155a06001600160a01b0388168361452d565b615ec8565b915050614e4b565b60006001600160a01b038411156155db576155d684600160601b876001600160801b03166148b5565b6155f2565b6155f2606085901b6001600160801b03871661552f565b905080866001600160a01b03161161560957600080fd5b6001600160a01b038616039050614e4b565b600082615629575083614e4b565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b1682156156c9576001600160a01b0386168481029085828161566957fe5b04141561569a578181018281106156985761568e83896001600160a01b0316836148b5565b9350505050614e4b565b505b6156c0826156bb878a6001600160a01b031686816156b457fe5b049061452d565b61552f565b92505050614e4b565b6001600160a01b038616848102908582816156e057fe5b041480156156ed57508082115b6156f657600080fd5b80820361568e6155a0846001600160a01b038b16846148b5565b60008363ffffffff168363ffffffff161115801561573a57508363ffffffff168263ffffffff1611155b15615756578163ffffffff168363ffffffff1611159050613991565b60008463ffffffff168463ffffffff161161577e578363ffffffff1664010000000001615786565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff16116157b7578363ffffffff16640100000000016157bf565b8363ffffffff165b64ffffffffff169091111595945050505050565b6157db615f1a565b6157e3615f1a565b60008361ffff168560010161ffff16816157f957fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff8716828161582657fe5b0661ffff811061583257fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff161515606082018190526001909201546001600160c01b0316608082015295506158b757806001019250615811565b898661ffff1682600101816158c857fe5b0661ffff81106158d457fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff16151560608201526001909101546001600160c01b03166080820152855190945060009061595a908b908b615710565b905080801561597357506159738a8a8760000151615710565b1561597e575061599b565b8061598e57600182039250615995565b8160010193505b50615811565b5050509550959350505050565b60028b810b900b600090815260208d90526040812080546001600160801b0316826159d3828e613cac565b9050856001600160801b0316816001600160801b03161115615a21576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b038281161590821615811415945015615b2c578d60020b8f60020b13615afc578b83600101819055508a8360020181905550898360030160076101000a8154816001600160a01b0302191690836001600160a01b03160217905550888360030160006101000a81548166ffffffffffffff021916908360060b66ffffffffffffff1602179055508783600301601b6101000a81548163ffffffff021916908363ffffffff160217905550848360040160006101000a8154816001600160c01b0302191690836001600160c01b031602179055505b6003830180547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790555b82546001600160801b0319166001600160801b03821617835586615b8157615b7c615b778e600f0b8560000160109054906101000a9004600f0b600f0b6138d290919063ffffffff16565b61464d565b615bae565b615bae615b778e600f0b8560000160109054906101000a9004600f0b600f0b6138b690919063ffffffff16565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909d9c50505050505050505050505050565b8060020b8260020b81615bef57fe5b0760020b15615bfd57600080fd5b600080615c188360020b8560020b81615c1257fe5b05614c3c565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b12615c8c57505060018201546002830154615c9f565b8360010154880391508360020154870390505b6000808b60020b8b60020b1215615cc157505060018301546002840154615cd4565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b615d915781516001600160801b0316615d89576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b508051615da0565b8151615d9d9086613cac565b90505b6000615dc48360200151860384600001516001600160801b0316600160801b6138e8565b90506000615dea8460400151860385600001516001600160801b0316600160801b6138e8565b905086600f0b600014615e115787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b038216151580615e3f57506000816001600160801b0316115b15615e7d576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b60009081526020929092526040822082815560018101839055908101829055600381019190915560040180546001600160c01b0319169055565b806001600160a01b038116811461452857600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091529056fea26469706673582212201803e69d62c9a4ccb7bffa2039e5a502d911334129c169f0c0adf937fe3fc57364736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x25C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5BB47808 GT PUSH2 0x145 JUMPI DUP1 PUSH4 0xC45A0155 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xDDCA3F43 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xF30DBA93 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xF30DBA93 EQ PUSH2 0xA85 JUMPI DUP1 PUSH4 0xF637731D EQ PUSH2 0xB16 JUMPI DUP1 PUSH4 0xF6EB760F EQ PUSH2 0xB3C JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0xDDCA3F43 EQ PUSH2 0xA5D JUMPI DUP1 PUSH4 0xF3058399 EQ PUSH2 0xA7D JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0xC45A0155 EQ PUSH2 0xA11 JUMPI DUP1 PUSH4 0xD0C93A7C EQ PUSH2 0xA19 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0xA38 JUMPI DUP1 PUSH4 0xD380C679 EQ PUSH2 0xA40 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x883BDBFD GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xA34123A7 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xA34123A7 EQ PUSH2 0x94B JUMPI DUP1 PUSH4 0xA38807F2 EQ PUSH2 0x985 JUMPI DUP1 PUSH4 0xADB61832 EQ PUSH2 0x9F0 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x883BDBFD EQ PUSH2 0x7CD JUMPI DUP1 PUSH4 0x94FD4A3E EQ PUSH2 0x91B JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x5BB47808 EQ PUSH2 0x73A JUMPI DUP1 PUSH4 0x70CF754A EQ PUSH2 0x760 JUMPI DUP1 PUSH4 0x8206A4D1 EQ PUSH2 0x768 JUMPI DUP1 PUSH4 0x85B66729 EQ PUSH2 0x790 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x32148F67 GT PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x46141319 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x4F1EB3D8 GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x4F1EB3D8 EQ PUSH2 0x670 JUMPI DUP1 PUSH4 0x514EA4BF EQ PUSH2 0x6C1 JUMPI DUP1 PUSH4 0x5339C296 EQ PUSH2 0x71A JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x46141319 EQ PUSH2 0x5DC JUMPI DUP1 PUSH4 0x490E6CBC EQ PUSH2 0x5E4 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x32148F67 EQ PUSH2 0x4A3 JUMPI DUP1 PUSH4 0x3850C7BD EQ PUSH2 0x4C4 JUMPI DUP1 PUSH4 0x3BEB26C4 EQ PUSH2 0x51D JUMPI DUP1 PUSH4 0x3C8A7D8D EQ PUSH2 0x53A JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x16ADA547 GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x1AD8B03B GT PUSH2 0x214 JUMPI DUP1 PUSH4 0x1AD8B03B EQ PUSH2 0x3D5 JUMPI DUP1 PUSH4 0x218064E5 EQ PUSH2 0x40C JUMPI DUP1 PUSH4 0x252C09D7 EQ PUSH2 0x43E JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x16ADA547 EQ PUSH2 0x397 JUMPI DUP1 PUSH4 0x1A686502 EQ PUSH2 0x3B1 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x7E32F0A EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x128ACB08 EQ PUSH2 0x2A4 JUMPI DUP1 PUSH4 0x14F2705C EQ PUSH2 0x353 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xB59 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x288 PUSH2 0xB66 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x33A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP3 PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x30D 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 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xB75 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 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH3 0xFFFFFF PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x1792 JUMP JUMPDEST PUSH2 0x39F PUSH2 0x1861 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3B9 PUSH2 0x1869 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3DD PUSH2 0x1878 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x1892 JUMP JUMPDEST PUSH2 0x45B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x454 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1AD7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP7 AND DUP7 MSTORE PUSH1 0x6 SWAP5 SWAP1 SWAP5 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP5 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFFFF AND PUSH2 0x1B32 JUMP JUMPDEST PUSH2 0x4CC PUSH2 0x1C23 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP9 AND DUP9 MSTORE PUSH1 0x2 SWAP7 SWAP1 SWAP7 SIGNEXTEND PUSH1 0x20 DUP9 ADD MSTORE PUSH2 0xFFFF SWAP5 DUP6 AND DUP8 DUP8 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x60 DUP8 ADD MSTORE SWAP3 AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xFF SWAP1 SWAP2 AND PUSH1 0xA0 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xE0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x533 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x33A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP3 PUSH1 0x40 DUP4 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x59D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5AF 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 0x5D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1C7A JUMP JUMPDEST PUSH2 0x39F PUSH2 0x1F53 JUMP JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD 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 0x631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x643 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 0x665 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1F59 JUMP JUMPDEST PUSH2 0x3DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x686 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x80 ADD CALLDATALOAD AND PUSH2 0x23A1 JUMP JUMPDEST PUSH2 0x6DE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2599 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP5 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP5 AND PUSH1 0x60 DUP5 ADD MSTORE SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x39F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x730 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 SIGNEXTEND PUSH2 0x25D6 JUMP JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x750 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x25E8 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x77E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x2619 JUMP JUMPDEST PUSH2 0x3DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x7A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 ADD CALLDATALOAD AND PUSH2 0x27F2 JUMP JUMPDEST PUSH2 0x83D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x7FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2A7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x885 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x86D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8C4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8AC JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x903 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8EB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x923 PUSH2 0x2B2B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x33A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x961 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2B49 JUMP JUMPDEST PUSH2 0x9AF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x99B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x20 ADD CALLDATALOAD SWAP1 SIGNEXTEND PUSH2 0x2CC5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x6 SWAP6 SWAP1 SWAP6 SIGNEXTEND DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP4 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x9F8 PUSH2 0x2FB7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x288 PUSH2 0x2FC6 JUMP JUMPDEST PUSH2 0xA21 PUSH2 0x2FD5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x288 PUSH2 0x2FE5 JUMP JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2FF4 JUMP JUMPDEST PUSH2 0xA65 PUSH2 0x2FF9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0xFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x39F PUSH2 0x300B JUMP JUMPDEST PUSH2 0xAA5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x3011 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP11 AND DUP11 MSTORE PUSH1 0xF SWAP9 SWAP1 SWAP9 SIGNEXTEND PUSH1 0x20 DUP11 ADD MSTORE DUP9 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x60 DUP9 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x6 SWAP3 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xA0 DUP7 ADD MSTORE PUSH4 0xFFFFFFFF AND PUSH1 0xC0 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0xE0 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH2 0x100 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x120 ADD SWAP1 RETURN JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x308E JUMP JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x322D JUMP JUMPDEST PUSH3 0x2000B DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH2 0xBAF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4153 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP2 DIV DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP4 DIV DUP2 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND ISZERO ISZERO PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0xC68 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP8 PUSH2 0xCB3 JUMPI DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT DUP1 ISZERO PUSH2 0xCAE JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND LT JUMPDEST PUSH2 0xCE5 JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP1 ISZERO PUSH2 0xCE5 JUMPI POP PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GT JUMPDEST PUSH2 0xD1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x14D413 PUSH1 0xEA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH2 0x160 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 DUP1 DUP11 PUSH2 0xD4F JUMPI PUSH1 0x4 DUP5 PUSH1 0xA0 ADD MLOAD PUSH1 0xFF AND SWAP1 SHR PUSH2 0xD62 JUMP JUMPDEST PUSH1 0x10 DUP5 PUSH1 0xA0 ADD MLOAD PUSH1 0xFF AND DUP2 PUSH2 0xD60 JUMPI INVALID JUMPDEST MOD JUMPDEST PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD PUSH2 0xD83 PUSH2 0x3232 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x6 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x2 SIGNEXTEND PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP1 DUP10 SGT SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 DUP12 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH2 0xE8B JUMPI PUSH1 0x7 SLOAD PUSH2 0xE8F JUMP JUMPDEST PUSH1 0x6 SLOAD JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE POP SWAP1 POP JUMPDEST DUP1 MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0xEDE JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x129F JUMPI PUSH2 0xEEB PUSH2 0x5EDE JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x100 DUP6 ADD MLOAD PUSH2 0xF13 SWAP2 PUSH1 0xB SWAP2 DUP16 PUSH2 0x323A JUMP JUMPDEST ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE PUSH3 0xD89E7 NOT SWAP2 SIGNEXTEND SLT ISZERO PUSH2 0xF44 JUMPI PUSH3 0xD89E7 NOT PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xF63 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH3 0xD89E8 PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND SGT ISZERO PUSH2 0xF63 JUMPI PUSH3 0xD89E8 PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH2 0xF70 DUP2 PUSH1 0x20 ADD MLOAD PUSH2 0x337C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0xFE5 SWAP1 DUP14 PUSH2 0xFAA JUMPI DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0xFC4 JUMP JUMPDEST DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT JUMPDEST PUSH2 0xFD2 JUMPI DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0xFD4 JUMP JUMPDEST DUP12 JUMPDEST PUSH1 0xC0 DUP6 ADD MLOAD DUP6 MLOAD PUSH1 0xE0 DUP10 ADD MLOAD PUSH2 0x36AE JUMP JUMPDEST PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP4 ADD MSTORE DUP3 ISZERO PUSH2 0x1047 JUMPI PUSH2 0x101B DUP2 PUSH1 0xC0 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD ADD PUSH2 0x38A0 JUMP JUMPDEST DUP3 MLOAD SUB DUP3 MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0x103D SWAP1 PUSH2 0x1032 SWAP1 PUSH2 0x38A0 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 PUSH2 0x38B6 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1082 JUMP JUMPDEST PUSH2 0x1054 DUP2 PUSH1 0xA0 ADD MLOAD PUSH2 0x38A0 JUMP JUMPDEST DUP3 MLOAD ADD DUP3 MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x107C SWAP2 PUSH2 0x1071 SWAP2 ADD PUSH2 0x38A0 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 PUSH2 0x38D2 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE JUMPDEST DUP4 MLOAD PUSH1 0xFF AND ISZERO PUSH2 0x10C8 JUMPI PUSH1 0x0 DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0xFF AND DUP3 PUSH1 0xC0 ADD MLOAD DUP2 PUSH2 0x10A2 JUMPI INVALID JUMPDEST PUSH1 0xC0 DUP5 ADD DUP1 MLOAD SWAP3 SWAP1 SWAP2 DIV SWAP2 DUP3 SWAP1 SUB SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD DUP1 MLOAD SWAP1 SWAP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 MSTORE POP JUMPDEST PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x1107 JUMPI PUSH2 0x10FB DUP2 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x80 SHL DUP5 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x38E8 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP1 MLOAD SWAP1 SWAP2 ADD SWAP1 MSTORE JUMPDEST DUP1 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x125E JUMPI DUP1 PUSH1 0x40 ADD MLOAD ISZERO PUSH2 0x1235 JUMPI DUP4 PUSH1 0xA0 ADD MLOAD PUSH2 0x11B9 JUMPI PUSH1 0x40 DUP1 DUP6 ADD MLOAD PUSH1 0x20 DUP1 DUP9 ADD MLOAD SWAP3 DUP9 ADD MLOAD SWAP1 DUP8 ADD MLOAD PUSH1 0x5 SLOAD PUSH1 0x60 DUP11 ADD MLOAD PUSH2 0x1189 SWAP6 PUSH1 0xD SWAP6 SWAP5 PUSH1 0x0 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP3 AND SWAP2 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP2 SWAP1 PUSH2 0x3998 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0xC0 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 DUP6 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0x120B DUP3 PUSH1 0x20 ADD MLOAD DUP15 PUSH2 0x11D0 JUMPI PUSH1 0x6 SLOAD PUSH2 0x11D6 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD MLOAD JUMPDEST DUP16 PUSH2 0x11E5 JUMPI DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x11E9 JUMP JUMPDEST PUSH1 0x7 SLOAD JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD PUSH1 0x60 DUP11 ADD MLOAD PUSH1 0x40 DUP12 ADD MLOAD PUSH1 0xC0 DUP13 ADD MLOAD PUSH1 0xA SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3B96 JUMP JUMPDEST SWAP1 POP DUP13 ISZERO PUSH2 0x1217 JUMPI PUSH1 0x0 SUB JUMPDEST PUSH2 0x1225 DUP4 PUSH1 0xC0 ADD MLOAD DUP3 PUSH2 0x3CAC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0xC0 DUP5 ADD MSTORE POP JUMPDEST DUP12 PUSH2 0x1244 JUMPI DUP1 PUSH1 0x20 ADD MLOAD PUSH2 0x124D JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 ADD MLOAD SUB JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1299 JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1299 JUMPI PUSH2 0x128C DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x3D62 JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP4 ADD MSTORE JUMPDEST POP PUSH2 0xEB8 JUMP JUMPDEST DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x60 ADD MLOAD PUSH1 0x2 SIGNEXTEND EQ PUSH2 0x138A JUMPI PUSH1 0x40 DUP1 DUP6 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0x20 DUP1 DUP8 ADD MLOAD SWAP1 DUP7 ADD MLOAD PUSH1 0x5 SLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x80 DUP11 ADD MLOAD PUSH1 0x0 SWAP7 DUP8 SWAP7 PUSH2 0x130A SWAP7 PUSH1 0xD SWAP7 SWAP3 SWAP6 SWAP2 SWAP5 SWAP1 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP4 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP3 SWAP2 SWAP1 PUSH2 0x408E AND JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x4 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP6 DUP7 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP6 SWAP1 SWAP5 AND SWAP5 SWAP1 SWAP5 MUL SWAP3 SWAP1 SWAP3 OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH3 0xFFFFFF PUSH1 0x2 SWAP5 SWAP1 SWAP5 SIGNEXTEND SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR SWAP1 SSTORE POP PUSH2 0x13AF SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP1 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND EQ PUSH2 0x13F5 JUMPI PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x9 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP11 ISZERO PUSH2 0x1445 JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x6 SSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x1440 JUMPI PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND SWAP1 SWAP4 ADD AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH2 0x148B JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x7 SSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x148B JUMPI PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP3 AND SWAP1 SWAP5 ADD AND MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP2 ISZERO ISZERO DUP12 ISZERO ISZERO EQ PUSH2 0x14A4 JUMPI PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD DUP12 SUB PUSH2 0x14B1 JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD DUP11 SUB DUP2 PUSH1 0x20 ADD MLOAD JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP11 ISZERO PUSH2 0x15DB JUMPI PUSH1 0x0 DUP6 SLT ISZERO PUSH2 0x14D8 JUMPI PUSH2 0x14D8 DUP4 PUSH2 0x140 ADD MLOAD DUP14 DUP8 PUSH1 0x0 SUB PUSH2 0x4299 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14E8 DUP5 PUSH2 0x120 ADD MLOAD PUSH2 0x43FC JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD804D7A7 DUP9 DUP9 DUP13 DUP13 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x156C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1580 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1592 DUP5 PUSH2 0x120 ADD MLOAD PUSH2 0x43FC JUMP JUMPDEST PUSH2 0x159C DUP3 DUP10 PUSH2 0x452D JUMP JUMPDEST GT ISZERO PUSH2 0x15D5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x494941 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH2 0x16F6 JUMP JUMPDEST PUSH1 0x0 DUP7 SLT ISZERO PUSH2 0x15F7 JUMPI PUSH2 0x15F7 DUP4 PUSH2 0x120 ADD MLOAD DUP14 DUP9 PUSH1 0x0 SUB PUSH2 0x4299 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1607 DUP5 PUSH2 0x140 ADD MLOAD PUSH2 0x43FC JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD804D7A7 DUP9 DUP9 DUP13 DUP13 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x168B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x169F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x16B1 DUP5 PUSH2 0x140 ADD MLOAD PUSH2 0x43FC JUMP JUMPDEST PUSH2 0x16BB DUP3 DUP9 PUSH2 0x452D JUMP JUMPDEST GT ISZERO PUSH2 0x16F4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x494941 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0x60 DUP1 DUP6 ADD MLOAD DUP5 MLOAD DUP12 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP4 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 SIGNEXTEND PUSH1 0x80 DUP3 ADD MSTORE SWAP2 MLOAD SWAP1 DUP15 AND SWAP2 CALLER SWAP2 PUSH32 0xC42079F94A6350D7E6235F29174924F928CC2AC818EB64FED8004E115FBCCA67 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG3 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP2 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x17A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP1 SWAP3 AND SWAP1 DUP6 AND OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH3 0xFFFFFF DUP6 DUP2 AND SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 OR PUSH32 0xFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DUP5 SIGNEXTEND SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH2 0x183B DUP2 PUSH2 0x453D JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH3 0x2000B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV AND DUP3 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x18D6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8DA5CB5B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x8DA5CB5B SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1924 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1938 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 0x194E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1964 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST TIMESTAMP DUP2 PUSH4 0xFFFFFFFF AND LT ISZERO PUSH2 0x1977 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x19EB SWAP1 PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0x1991 PUSH2 0x3232 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x9 SLOAD PUSH1 0x5 SLOAD PUSH1 0xD SWAP5 SWAP4 SWAP3 PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP3 DIV DUP3 AND SWAP2 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xC8 SHL DUP4 DIV DUP2 AND SWAP3 PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 DIV AND SWAP1 PUSH2 0x408E AND JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP4 DUP5 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP5 AND DUP1 DUP3 MSTORE PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x20 SWAP3 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x5 DUP1 SLOAD PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP4 OR PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x90 SHL DUP4 MUL OR SWAP1 SSTORE DUP4 MLOAD SWAP2 DUP3 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD PUSH31 0x8866B45AF6018E497020F8D16E58C1BE320850F245EBDF9D304666BEE15E35 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xD DUP2 PUSH2 0xFFFF DUP2 LT PUSH2 0x1AE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 MUL ADD DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP3 AND SWAP3 POP PUSH5 0x100000000 DUP3 DIV PUSH1 0x6 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP6 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1B76 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 DIV PUSH2 0xFFFF AND PUSH1 0x0 PUSH2 0x1B9E PUSH1 0xD DUP4 DUP6 PUSH2 0x45A7 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0xFFFF DUP1 DUP5 AND PUSH1 0x1 PUSH1 0xD8 SHL DUP2 MUL PUSH2 0xFFFF PUSH1 0xD8 SHL NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE SWAP2 SWAP3 POP DUP4 AND EQ PUSH2 0x1C0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0xAC49E518F90A358F652E4400164F05A5D8F7E35E7747279BC3A93DBF584E125A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP1 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC8 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0xD8 SHL DUP3 DIV AND SWAP1 PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV AND DUP8 JUMP JUMPDEST PUSH3 0x2000B SSTORE JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1CC3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH2 0x1CE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D31 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1D27 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x464D JUMP JUMPDEST PUSH1 0xF SIGNEXTEND SWAP1 MSTORE PUSH2 0x465E JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD SWAP3 SWAP8 POP SWAP1 SWAP6 POP DUP7 SWAP5 POP DUP6 SWAP4 POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP6 ISZERO PUSH2 0x1D68 JUMPI PUSH2 0x1D65 DUP3 PUSH2 0x43FC JUMP JUMPDEST SWAP4 POP JUMPDEST DUP7 ISZERO PUSH2 0x1D7A JUMPI PUSH2 0x1D77 DUP2 PUSH2 0x43FC JUMP JUMPDEST SWAP3 POP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1507A8F4 DUP10 DUP10 DUP14 DUP14 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E10 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP9 GT ISZERO PUSH2 0x1E68 JUMPI PUSH2 0x1E26 DUP3 PUSH2 0x43FC JUMP JUMPDEST PUSH2 0x1E30 DUP6 DUP11 PUSH2 0x452D JUMP JUMPDEST GT ISZERO PUSH2 0x1E68 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4D3 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP7 ISZERO PUSH2 0x1EB9 JUMPI PUSH2 0x1E77 DUP2 PUSH2 0x43FC JUMP JUMPDEST PUSH2 0x1E81 DUP5 DUP10 PUSH2 0x452D JUMP JUMPDEST GT ISZERO PUSH2 0x1EB9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4D31 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP12 PUSH1 0x2 SIGNEXTEND DUP14 PUSH1 0x2 SIGNEXTEND DUP16 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x7A53080BA414158BE7EC69B987B5FB7D07DEE101FE85488F0853AE16239D0BDE CALLER DUP16 DUP14 DUP14 PUSH1 0x40 MLOAD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB 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 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP4 SWAP11 SWAP3 SWAP10 POP SWAP2 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1F9D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP1 PUSH2 0x1FEC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x2 SLOAD SWAP1 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH3 0xFFFFFF AND SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE SWAP1 PUSH2 0x2041 SWAP1 DUP8 SWAP1 PUSH3 0xF4240 PUSH2 0x48B5 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH2 0x205F SWAP1 DUP7 SWAP1 PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x48B5 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE DUP1 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x2072 SWAP1 PUSH2 0x43FC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2083 DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x43FC JUMP JUMPDEST SWAP1 POP DUP8 ISZERO PUSH2 0x2098 JUMPI DUP3 MLOAD PUSH2 0x2098 SWAP1 DUP11 DUP11 PUSH2 0x4299 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x20AD JUMPI PUSH2 0x20AD DUP4 PUSH1 0x20 ADD MLOAD DUP11 DUP10 PUSH2 0x4299 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x659EFA6 DUP5 PUSH1 0x60 ADD MLOAD DUP6 PUSH1 0x80 ADD MLOAD DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x214B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x215E DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x43FC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x216F DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x43FC JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x2189 DUP7 PUSH1 0x60 ADD MLOAD DUP7 PUSH2 0x452D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST GT ISZERO PUSH2 0x21C1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x463 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x21D9 DUP7 PUSH1 0x80 ADD MLOAD DUP6 PUSH2 0x452D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST GT ISZERO PUSH2 0x2211 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4631 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 DUP3 SUB DUP4 DUP3 SUB DUP2 ISZERO PUSH2 0x22A0 JUMPI PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH1 0xF AND PUSH1 0x0 DUP2 ISZERO PUSH2 0x2244 JUMPI DUP2 PUSH1 0xFF AND DUP5 DUP2 PUSH2 0x223E JUMPI INVALID JUMPDEST DIV PUSH2 0x2247 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x227A JUMPI PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP5 ADD AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x2294 DUP2 DUP6 SUB PUSH1 0x1 PUSH1 0x80 SHL DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x38E8 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMPDEST DUP1 ISZERO PUSH2 0x232B JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV SWAP1 SHR PUSH1 0xF AND PUSH1 0x0 DUP2 ISZERO PUSH2 0x22D0 JUMPI DUP2 PUSH1 0xFF AND DUP4 DUP2 PUSH2 0x22CA JUMPI INVALID JUMPDEST DIV PUSH2 0x22D3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x2305 JUMPI PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP6 ADD DUP3 AND MUL SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x231F DUP2 DUP5 SUB PUSH1 0x1 PUSH1 0x80 SHL DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x38E8 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP14 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP14 SWAP1 MSTORE DUP1 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND SWAP2 CALLER SWAP2 PUSH32 0xBDBDB71D7860376BA52B25A5028BEEA23581364A40522F6BCFB86BB1F2DCA633 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG3 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x23EA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x0 PUSH2 0x2406 PUSH1 0xC CALLER DUP10 DUP10 PUSH2 0x48EF JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP1 DUP7 AND GT PUSH2 0x2427 JUMPI DUP5 PUSH2 0x2436 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP6 AND GT PUSH2 0x245E JUMPI DUP4 PUSH2 0x2474 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND ISZERO PUSH2 0x24C6 JUMPI PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP7 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 SLOAD PUSH2 0x24C6 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP11 SWAP1 DUP7 AND PUSH2 0x4299 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x2519 JUMPI PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP7 SWAP1 SUB DUP3 AND MUL SWAP2 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 SLOAD PUSH2 0x2519 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP11 SWAP1 DUP6 AND PUSH2 0x4299 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP4 ADD MSTORE DUP5 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x2 DUP9 DUP2 SIGNEXTEND SWAP3 SWAP1 DUP11 SWAP1 SIGNEXTEND SWAP2 CALLER SWAP2 PUSH32 0x70935338E69775456A85DDEF226C395FB668B63FA0115F5F20610B388E6CA9C0 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 DUP4 AND SWAP4 SWAP2 SWAP3 DUP2 DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV AND DUP6 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x265D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8DA5CB5B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x8DA5CB5B SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26BF 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 0x26D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x26EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP3 AND ISZERO DUP1 PUSH2 0x270E JUMPI POP PUSH1 0x4 DUP3 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH2 0x270E JUMPI POP PUSH1 0xA DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x2738 JUMPI POP PUSH1 0xFF DUP2 AND ISZERO DUP1 PUSH2 0x2738 JUMPI POP PUSH1 0x4 DUP2 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH2 0x2738 JUMPI POP PUSH1 0xA DUP2 PUSH1 0xFF AND GT ISZERO JUMPDEST PUSH2 0x2741 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0xFF0 DUP4 DUP4 SHL AND DUP5 ADD PUSH1 0xFF SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DUP2 MUL PUSH32 0xFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND OR DUP5 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP4 DIV PUSH1 0xF DUP2 DUP2 AND DUP4 MSTORE SWAP5 DUP2 SWAP1 SHR SWAP1 SWAP5 AND PUSH1 0x20 DUP3 ADD MSTORE DUP6 DUP3 AND DUP2 DUP5 ADD MSTORE DUP5 DUP3 AND PUSH1 0x60 DUP3 ADD MSTORE SWAP2 MLOAD SWAP3 AND SWAP2 PUSH32 0x973D8D92BB299F4AF6CE49B52A8ADB85AE46B9F214C4C4FC06AC77401237B133 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x283B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x8DA5CB5B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x8DA5CB5B SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2889 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x289D 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 0x28B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x28C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP1 DUP6 AND GT PUSH2 0x28E5 JUMPI DUP4 PUSH2 0x28F2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST PUSH1 0x8 SLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP5 AND GT PUSH2 0x2918 JUMPI DUP3 PUSH2 0x292C JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x299A JUMPI PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x295B JUMPI PUSH1 0x0 NOT SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP6 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 SLOAD PUSH2 0x299A SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP8 SWAP1 DUP6 AND PUSH2 0x4299 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x2A0D JUMPI PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x29CB JUMPI PUSH1 0x0 NOT ADD JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP6 SWAP1 SUB DUP3 AND MUL SWAP2 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 SLOAD PUSH2 0x2A0D SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP8 SWAP1 DUP5 AND PUSH2 0x4299 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0x596B573906218D3411850B26A6B437D6C4522FDB43D2D2386263F86D50B8B151 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 PUSH2 0x2B1E PUSH2 0x2A8C PUSH2 0x3232 JUMP JUMPDEST DUP7 DUP7 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x4 SLOAD PUSH1 0x9 SLOAD PUSH1 0x5 SLOAD PUSH1 0xD SWAP7 SWAP6 SWAP5 POP PUSH1 0x1 PUSH1 0xA0 SHL DUP4 DIV PUSH1 0x2 SIGNEXTEND SWAP4 POP PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP4 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP4 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP3 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x4953 AND JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x90 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2B92 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE CALLER DUP2 MSTORE PUSH1 0x2 DUP8 DUP2 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE DUP7 SWAP1 SIGNEXTEND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 SWAP1 PUSH2 0x2BEE SWAP1 PUSH1 0x60 DUP2 ADD PUSH2 0x2BE1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP11 AND PUSH2 0x464D JUMP JUMPDEST PUSH1 0x0 SUB PUSH1 0xF SIGNEXTEND SWAP1 MSTORE PUSH2 0x465E JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 PUSH1 0x0 SUB SWAP5 POP DUP1 PUSH1 0x0 SUB SWAP4 POP PUSH1 0x0 DUP6 GT DUP1 PUSH2 0x2C0F JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST ISZERO PUSH2 0x2C4E JUMPI PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP1 DUP10 ADD DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP4 DUP5 SWAP1 DIV DUP4 AND DUP10 ADD SWAP1 SWAP3 AND SWAP1 SWAP3 MUL SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP9 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE DUP1 DUP3 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP3 SWAP1 DUP12 SWAP1 SIGNEXTEND SWAP2 CALLER SWAP2 PUSH32 0xC396CD989A39F4459B5FA1AED6A9A8DCDBC45908ACFD67E028CD568DA98982C SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2CD5 DUP7 DUP7 PUSH2 0x4B10 JUMP JUMPDEST PUSH2 0x2CDD PUSH2 0x5F1A JUMP JUMPDEST PUSH2 0x2CE5 PUSH2 0x5F1A JUMP JUMPDEST PUSH1 0x2 DUP9 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP12 DUP6 SIGNEXTEND SWAP1 SWAP5 SIGNEXTEND DUP4 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL DUP4 DIV AND ISZERO ISZERO PUSH1 0x80 DUP10 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x60 DUP10 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xD8 SHL DUP4 DIV AND SWAP5 DUP9 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH8 0x100000000000000 DUP3 DIV AND SWAP3 DUP8 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x6 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND DUP6 MSTORE SWAP1 PUSH2 0x2D7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL DUP4 DIV AND ISZERO ISZERO PUSH1 0x80 DUP7 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xD8 SHL DUP4 DIV AND PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH8 0x100000000000000 DUP4 DIV AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x6 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND DUP5 MSTORE PUSH2 0x2DE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x20 DUP5 ADD DUP2 SWAP1 MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DIV DUP2 AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP4 DIV DUP6 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP4 DIV SWAP1 SWAP5 AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP4 DIV DUP2 AND PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE SWAP1 SWAP2 DUP11 DUP3 SIGNEXTEND SWAP2 SIGNEXTEND SLT ISZERO PUSH2 0x2EB5 JUMPI DUP2 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x0 ADD MLOAD SUB DUP3 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x20 ADD MLOAD SUB DUP4 PUSH1 0x40 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD SUB DUP5 PUSH1 0x60 ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD SUB SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP PUSH2 0x2FAE JUMP JUMPDEST DUP8 PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x2F76 JUMPI PUSH1 0x0 PUSH2 0x2ED1 PUSH2 0x3232 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x9 SLOAD PUSH1 0x5 SLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP5 SWAP6 POP PUSH1 0x0 SWAP5 DUP6 SWAP5 DUP6 SWAP5 PUSH2 0x2F28 SWAP5 PUSH1 0xD SWAP5 DUP11 SWAP5 DUP9 SWAP5 SWAP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP3 DIV DUP3 AND SWAP2 PUSH2 0x3998 AND JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP6 PUSH1 0x0 ADD MLOAD DUP8 PUSH1 0x0 ADD MLOAD DUP5 SUB SUB DUP7 PUSH1 0x20 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP5 SUB SUB DUP8 PUSH1 0x40 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD DUP8 SUB SUB DUP9 PUSH1 0x60 ADD MLOAD DUP11 PUSH1 0x60 ADD MLOAD DUP6 SUB SUB SWAP11 POP SWAP11 POP SWAP11 POP SWAP11 POP POP POP POP POP POP POP POP PUSH2 0x2FAE JUMP JUMPDEST DUP3 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x0 ADD MLOAD SUB DUP4 PUSH1 0x20 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD SUB DUP5 PUSH1 0x40 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD SUB DUP6 PUSH1 0x60 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD SUB SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP JUMPDEST SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FC1 PUSH2 0x3232 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV SWAP1 SIGNEXTEND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x6 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH3 0xFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND SWAP5 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP5 DIV PUSH1 0xF SIGNEXTEND SWAP4 PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND SWAP2 PUSH8 0x100000000000000 DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV PUSH4 0xFFFFFFFF AND SWAP2 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP10 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x30D1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4149 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x30DC DUP3 PUSH2 0x3D62 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x30F4 PUSH2 0x30EC PUSH2 0x3232 JUMP JUMPDEST PUSH1 0xD SWAP1 PUSH2 0x4BD9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP1 DUP3 MSTORE PUSH1 0x2 DUP9 DUP2 SIGNEXTEND PUSH1 0x20 DUP1 DUP6 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 DUP6 DUP8 ADD DUP2 SWAP1 MSTORE PUSH2 0xFFFF DUP10 DUP2 AND PUSH1 0x60 DUP9 ADD DUP2 SWAP1 MSTORE SWAP1 DUP10 AND PUSH1 0x80 DUP9 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP9 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xC0 SWAP1 SWAP8 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP8 OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH3 0xFFFFFF SWAP8 DUP8 SWAP1 SIGNEXTEND SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 MUL SWAP6 SWAP1 SWAP6 OR PUSH32 0xFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 SWAP8 MUL SWAP7 SWAP1 SWAP7 OR PUSH2 0xFFFF PUSH1 0xD8 SHL NOT AND PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 SWAP2 MUL OR PUSH32 0xFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP4 SSTORE DUP4 MLOAD SWAP2 DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH32 0x98636036CB66A9C19A37435EFC1E90142190214E8ABEB821BDBA3F2990DD4C95 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SSTORE JUMP JUMPDEST PUSH3 0x2000B SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x324E JUMPI INVALID JUMPDEST SDIV SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x2 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0x3275 JUMPI POP DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x326E JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x327F JUMPI PUSH1 0x0 NOT ADD JUMPDEST DUP4 ISZERO PUSH2 0x32F4 JUMPI PUSH1 0x0 DUP1 PUSH2 0x3291 DUP4 PUSH2 0x4C3C JUMP JUMPDEST PUSH1 0x1 DUP3 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF DUP4 AND SWAP2 SWAP1 SWAP2 SHL DUP1 ADD PUSH1 0x0 NOT ADD SWAP1 DUP2 AND DUP1 ISZERO ISZERO SWAP8 POP SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 DUP6 PUSH2 0x32D6 JUMPI DUP9 DUP4 PUSH1 0xFF AND DUP7 SUB MUL PUSH2 0x32E9 JUMP JUMPDEST DUP9 PUSH2 0x32E0 DUP3 PUSH2 0x4C4E JUMP JUMPDEST DUP5 SUB PUSH1 0xFF AND DUP7 SUB MUL JUMPDEST SWAP7 POP POP POP POP POP PUSH2 0x3372 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3303 DUP4 PUSH1 0x1 ADD PUSH2 0x4C3C JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SUB NOT SWAP1 POP PUSH1 0x0 DUP2 DUP12 PUSH1 0x0 DUP7 PUSH1 0x1 SIGNEXTEND PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 POP DUP1 PUSH1 0x0 EQ ISZERO SWAP6 POP DUP6 PUSH2 0x3355 JUMPI DUP9 DUP4 PUSH1 0xFF SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL PUSH2 0x336B JUMP JUMPDEST DUP9 DUP4 PUSH2 0x3360 DUP4 PUSH2 0x4CEE JUMP JUMPDEST SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL JUMPDEST SWAP7 POP POP POP POP POP JUMPDEST POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x3393 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x339B JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x33D9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x33ED JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x33FF JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x3433 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x3452 JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x3471 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x3490 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x34AF JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x34CE JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x34ED JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x350D JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x352D JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x354D JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x356D JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x358D JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x35AD JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x35CD JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x35ED JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x360E JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x362E JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x364D JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x366A JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x3685 JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x3681 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x3699 JUMPI PUSH1 0x1 PUSH2 0x369C 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 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP1 DUP11 AND LT ISZERO DUP2 DUP8 SLT DUP1 ISZERO SWAP1 PUSH2 0x3733 JUMPI PUSH1 0x0 PUSH2 0x36E7 DUP10 DUP10 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x38E8 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x3700 JUMPI PUSH2 0x36FB DUP13 DUP13 DUP13 PUSH1 0x1 PUSH2 0x4DD8 JUMP JUMPDEST PUSH2 0x370D JUMP JUMPDEST PUSH2 0x370D DUP12 DUP14 DUP13 PUSH1 0x1 PUSH2 0x4E53 JUMP JUMPDEST SWAP6 POP DUP6 DUP2 LT PUSH2 0x371E JUMPI DUP11 SWAP7 POP PUSH2 0x372D JUMP JUMPDEST PUSH2 0x372A DUP13 DUP12 DUP4 DUP7 PUSH2 0x4F10 JUMP JUMPDEST SWAP7 POP JUMPDEST POP PUSH2 0x377D JUMP JUMPDEST DUP2 PUSH2 0x374A JUMPI PUSH2 0x3745 DUP12 DUP12 DUP12 PUSH1 0x0 PUSH2 0x4E53 JUMP JUMPDEST PUSH2 0x3757 JUMP JUMPDEST PUSH2 0x3757 DUP11 DUP13 DUP12 PUSH1 0x0 PUSH2 0x4DD8 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 PUSH1 0x0 SUB LT PUSH2 0x376B JUMPI DUP10 SWAP6 POP PUSH2 0x377D JUMP JUMPDEST PUSH2 0x377A DUP12 DUP11 DUP11 PUSH1 0x0 SUB DUP6 PUSH2 0x4F5C JUMP JUMPDEST SWAP6 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP1 DUP8 AND EQ DUP3 ISZERO PUSH2 0x37E0 JUMPI DUP1 DUP1 ISZERO PUSH2 0x379C JUMPI POP DUP2 JUMPDEST PUSH2 0x37B2 JUMPI PUSH2 0x37AD DUP8 DUP14 DUP13 PUSH1 0x1 PUSH2 0x4E53 JUMP JUMPDEST PUSH2 0x37B4 JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x37C1 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x37D7 JUMPI PUSH2 0x37D2 DUP8 DUP14 DUP13 PUSH1 0x0 PUSH2 0x4DD8 JUMP JUMPDEST PUSH2 0x37D9 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP PUSH2 0x382A JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x37EA JUMPI POP DUP2 JUMPDEST PUSH2 0x3800 JUMPI PUSH2 0x37FB DUP13 DUP9 DUP13 PUSH1 0x1 PUSH2 0x4DD8 JUMP JUMPDEST PUSH2 0x3802 JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x380F JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x3825 JUMPI PUSH2 0x3820 DUP13 DUP9 DUP13 PUSH1 0x0 PUSH2 0x4E53 JUMP JUMPDEST PUSH2 0x3827 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x383A JUMPI POP DUP9 PUSH1 0x0 SUB DUP6 GT JUMPDEST ISZERO PUSH2 0x3846 JUMPI DUP9 PUSH1 0x0 SUB SWAP5 POP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x3865 JUMPI POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x3874 JUMPI DUP6 DUP10 SUB SWAP4 POP PUSH2 0x3891 JUMP JUMPDEST PUSH2 0x388E DUP7 DUP10 PUSH3 0xFFFFFF AND DUP11 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH2 0x48B5 JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 LT PUSH2 0x38B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 SGT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x38CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP3 DUP2 SLT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x38CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x391E JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x3913 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x3991 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x392A 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 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH4 0xFFFFFFFF DUP11 AND PUSH2 0x3A64 JUMPI PUSH1 0x0 DUP13 DUP10 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x39BA JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP6 MSTORE PUSH5 0x100000000 DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP14 AND EQ PUSH2 0x3A49 JUMPI PUSH2 0x3A46 DUP2 DUP14 DUP13 DUP12 DUP12 DUP12 PUSH2 0x4FA8 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD SWAP4 POP SWAP4 POP SWAP4 POP POP PUSH2 0x3B87 JUMP JUMPDEST DUP10 DUP12 SUB PUSH1 0x0 DUP1 PUSH2 0x3A7B DUP16 DUP16 DUP6 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 PUSH2 0x50F2 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x3AB4 JUMPI DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD DUP4 PUSH1 0x80 ADD MLOAD SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x3B87 JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x3AE3 JUMPI DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x3B87 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD SWAP1 DUP5 ADD MLOAD SWAP2 DUP4 SWAP1 SUB SWAP3 DUP7 SUB SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP5 AND SWAP3 SWAP1 DUP6 AND SWAP2 SUB PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0x3B11 JUMPI INVALID JUMPDEST SDIV MUL DUP5 PUSH1 0x20 ADD MLOAD ADD DUP3 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL DUP2 PUSH2 0x3B43 JUMPI INVALID JUMPDEST DIV DUP6 PUSH1 0x40 ADD MLOAD ADD DUP3 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND DUP8 PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x80 ADD MLOAD SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 PUSH2 0x3B73 JUMPI INVALID JUMPDEST DIV MUL DUP7 PUSH1 0x80 ADD MLOAD ADD SWAP8 POP SWAP8 POP SWAP8 POP POP POP POP POP POP JUMPDEST SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP7 DUP8 SIGNEXTEND DUP8 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x40 SWAP1 SWAP8 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD SWAP1 SWAP7 SUB SWAP1 SWAP6 SSTORE SWAP5 DUP5 ADD DUP1 SLOAD SWAP1 SWAP4 SUB SWAP1 SWAP3 SSTORE PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xD8 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH8 0x100000000000000 DUP1 DUP6 DIV DUP3 AND SWAP1 SWAP7 SUB AND SWAP1 SWAP5 MUL PUSH32 0xFFFFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x6 DUP2 DUP2 SIGNEXTEND SWAP1 SWAP6 SUB SWAP1 SWAP5 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND PUSH7 0xFFFFFFFFFFFFFF NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR DUP3 DUP2 DIV DUP5 AND SWAP1 SWAP6 SUB SWAP1 SWAP3 AND MUL PUSH32 0xFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP1 DUP3 AND SWAP1 SWAP5 SUB SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0xF SIGNEXTEND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x3D11 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x0 SUB DUP5 SUB SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x3D0C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C53 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x38CC JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 DUP5 ADD SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0x38CC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C41 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x3D9E JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT JUMPDEST PUSH2 0x3DD3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x20 DUP4 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 GT PUSH1 0x7 SHL DUP2 DUP2 SHR PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x6 SHL SWAP1 DUP2 SHR PUSH4 0xFFFFFFFF DUP2 GT PUSH1 0x5 SHL SWAP1 DUP2 SHR PUSH2 0xFFFF DUP2 GT PUSH1 0x4 SHL SWAP1 DUP2 SHR PUSH1 0xFF DUP2 GT PUSH1 0x3 SWAP1 DUP2 SHL SWAP2 DUP3 SHR PUSH1 0xF DUP2 GT PUSH1 0x2 SHL SWAP1 DUP2 SHR SWAP2 DUP3 GT PUSH1 0x1 SWAP1 DUP2 SHL SWAP3 DUP4 SHR SWAP8 SWAP1 DUP9 GT SWAP7 OR SWAP1 SWAP5 OR SWAP1 SWAP3 OR OR SWAP1 SWAP2 OR OR OR PUSH1 0x80 DUP2 LT PUSH2 0x3E74 JUMPI PUSH1 0x7F DUP2 SUB DUP4 SWAP1 SHR SWAP2 POP PUSH2 0x3E7E JUMP JUMPDEST DUP1 PUSH1 0x7F SUB DUP4 SWAP1 SHL SWAP2 POP JUMPDEST SWAP1 DUP1 MUL PUSH1 0x7F DUP2 DUP2 SHR PUSH1 0xFF DUP4 DUP2 SHR SWAP2 SWAP1 SWAP2 SHR DUP1 MUL DUP1 DUP4 SHR DUP2 DUP4 SHR SHR DUP1 MUL DUP1 DUP5 SHR DUP2 DUP5 SHR SHR DUP1 MUL DUP1 DUP6 SHR DUP2 DUP6 SHR SHR DUP1 MUL DUP1 DUP7 SHR DUP2 DUP7 SHR SHR DUP1 MUL DUP1 DUP8 SHR DUP2 DUP8 SHR SHR DUP1 MUL DUP1 DUP9 SHR DUP2 DUP9 SHR SHR DUP1 MUL DUP1 DUP10 SHR DUP2 DUP10 SHR SHR DUP1 MUL DUP1 DUP11 SHR DUP2 DUP11 SHR SHR DUP1 MUL DUP1 DUP12 SHR DUP2 DUP12 SHR SHR DUP1 MUL DUP1 DUP13 SHR DUP2 DUP13 SHR SHR DUP1 MUL DUP1 DUP14 SHR DUP2 DUP14 SHR SHR DUP1 MUL DUP1 DUP15 SHR SWAP13 DUP2 SWAP1 SHR SWAP13 SWAP1 SWAP13 SHR DUP1 MUL SWAP13 DUP14 SWAP1 SHR SWAP15 SWAP14 PUSH1 0x7F NOT DUP16 ADD PUSH1 0x40 SHL PUSH1 0xC0 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x8000000000000000 AND OR PUSH1 0xC1 SWAP12 SWAP1 SWAP12 SHR PUSH8 0x4000000000000000 AND SWAP11 SWAP1 SWAP11 OR PUSH1 0xC2 SWAP10 SWAP1 SWAP10 SHR PUSH8 0x2000000000000000 AND SWAP9 SWAP1 SWAP9 OR PUSH1 0xC3 SWAP8 SWAP1 SWAP8 SHR PUSH8 0x1000000000000000 AND SWAP7 SWAP1 SWAP7 OR PUSH1 0xC4 SWAP6 SWAP1 SWAP6 SHR PUSH8 0x800000000000000 AND SWAP5 SWAP1 SWAP5 OR PUSH1 0xC5 SWAP4 SWAP1 SWAP4 SHR PUSH8 0x400000000000000 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0xC6 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x200000000000000 AND OR PUSH1 0xC7 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x100000000000000 AND OR PUSH1 0xC8 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x80000000000000 AND OR PUSH1 0xC9 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x40000000000000 AND OR PUSH1 0xCA SWAP2 SWAP1 SWAP2 SHR PUSH7 0x20000000000000 AND OR PUSH1 0xCB SWAP2 SWAP1 SWAP2 SHR PUSH7 0x10000000000000 AND OR PUSH1 0xCC SWAP2 SWAP1 SWAP2 SHR PUSH7 0x8000000000000 AND OR PUSH1 0xCD SWAP2 SWAP1 SWAP2 SHR PUSH7 0x4000000000000 AND OR PUSH10 0x3627A301D71055774C85 DUP2 MUL PUSH16 0x28F6481AB7F045A5AF012A19D003AA9 NOT DUP2 ADD PUSH1 0x80 SWAP1 DUP2 SAR SWAP1 PUSH16 0xDB2DF09E81959A81455E260799A0632F DUP4 ADD SWAP1 SAR PUSH1 0x2 DUP2 DUP2 SIGNEXTEND SWAP1 DUP4 SWAP1 SIGNEXTEND EQ PUSH2 0x407F JUMPI DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4063 DUP3 PUSH2 0x337C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4078 JUMPI DUP2 PUSH2 0x407A JUMP JUMPDEST DUP1 JUMPDEST PUSH2 0x4081 JUMP JUMPDEST DUP2 JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP12 DUP12 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x40A4 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP6 MSTORE PUSH5 0x100000000 DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP12 AND EQ ISZERO PUSH2 0x412F JUMPI DUP11 DUP6 SWAP3 POP SWAP3 POP POP PUSH2 0x428B JUMP JUMPDEST DUP5 PUSH2 0xFFFF AND DUP5 PUSH2 0xFFFF AND GT DUP1 ISZERO PUSH2 0x4150 JUMPI POP PUSH1 0x1 DUP6 SUB PUSH2 0xFFFF AND DUP12 PUSH2 0xFFFF AND EQ JUMPDEST ISZERO PUSH2 0x415D JUMPI DUP4 SWAP2 POP PUSH2 0x4161 JUMP JUMPDEST DUP5 SWAP2 POP JUMPDEST DUP2 PUSH2 0xFFFF AND DUP12 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x4175 JUMPI INVALID JUMPDEST MOD SWAP3 POP PUSH2 0x4186 DUP2 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x4FA8 JUMP JUMPDEST DUP13 DUP5 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x4197 JUMPI INVALID JUMPDEST DUP3 MLOAD PUSH1 0x2 SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH4 0xFFFFFFFF NOT SWAP1 SWAP4 AND PUSH4 0xFFFFFFFF SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR PUSH11 0xFFFFFFFFFFFFFF00000000 NOT AND PUSH5 0x100000000 PUSH7 0xFFFFFFFFFFFFFF PUSH1 0x6 SWAP4 SWAP1 SWAP4 SIGNEXTEND SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL OR PUSH32 0xFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x58 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP3 OR PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xF8 SHL SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR DUP2 SSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMPDEST SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH4 0xA9059CBB PUSH1 0xE0 SHL 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 0x432A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x430B 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 0x438C 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 0x4391 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x43BF JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x43BF JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x43F5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x2A23 PUSH1 0xF1 SHL 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 ADDRESS PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x448A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x446B 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 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x44EA 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 0x44EF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4503 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST PUSH2 0x450C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x38CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E7 NOT DUP2 PUSH2 0x4552 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E8 DUP2 PUSH2 0x4569 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP4 DUP4 SUB PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x4580 JUMPI INVALID JUMPDEST SDIV PUSH1 0x1 ADD SWAP1 POP DUP1 PUSH3 0xFFFFFF AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 AND DUP2 PUSH2 0x459D JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0xFFFF AND GT PUSH2 0x45E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND GT PUSH2 0x45FB JUMPI POP DUP2 PUSH2 0x3991 JUMP JUMPDEST DUP3 JUMPDEST DUP3 PUSH2 0xFFFF AND DUP2 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x4644 JUMPI PUSH1 0x1 DUP6 DUP3 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x4620 JUMPI INVALID JUMPDEST PUSH1 0x2 MUL ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 ADD PUSH2 0x45FD JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x4528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4675 DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD PUSH2 0x4B10 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DIV DUP2 AND DUP6 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP5 DIV DUP2 AND PUSH1 0x60 DUP1 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP6 DIV SWAP1 SWAP2 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP6 DIV DUP2 AND PUSH1 0xA0 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP5 DIV SWAP1 SWAP4 AND ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE DUP9 MLOAD SWAP1 DUP10 ADD MLOAD SWAP5 DUP10 ADD MLOAD SWAP3 DUP10 ADD MLOAD SWAP4 SWAP5 PUSH2 0x4719 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x5339 JUMP JUMPDEST SWAP4 POP DUP5 PUSH1 0x60 ADD MLOAD PUSH1 0xF SIGNEXTEND PUSH1 0x0 EQ PUSH2 0x48AD JUMPI DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x476E JUMPI PUSH2 0x4767 PUSH2 0x4750 DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0x337C JUMP JUMPDEST PUSH2 0x475D DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0x337C JUMP JUMPDEST DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x54BC JUMP JUMPDEST SWAP3 POP PUSH2 0x48AD JUMP JUMPDEST DUP5 PUSH1 0x40 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x4883 JUMPI PUSH1 0x9 SLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH2 0x47DF SWAP1 PUSH2 0x47A4 PUSH2 0x3232 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x5 SLOAD PUSH1 0x60 DUP8 ADD MLOAD PUSH1 0x80 DUP9 ADD MLOAD PUSH1 0xD SWAP6 SWAP5 SWAP4 SWAP3 DUP9 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP3 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP4 DIV DUP4 AND SWAP3 PUSH2 0x408E AND JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP4 DUP5 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SSTORE DUP2 MLOAD PUSH1 0x40 DUP8 ADD MLOAD PUSH2 0x482F SWAP2 SWAP1 PUSH2 0x4825 SWAP1 PUSH2 0x337C JUMP JUMPDEST DUP9 PUSH1 0x60 ADD MLOAD PUSH2 0x54BC JUMP JUMPDEST SWAP4 POP PUSH2 0x484D PUSH2 0x4841 DUP8 PUSH1 0x20 ADD MLOAD PUSH2 0x337C JUMP JUMPDEST DUP4 MLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH2 0x5500 JUMP JUMPDEST SWAP3 POP PUSH2 0x485D DUP2 DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x3CAC JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0x48AD JUMP JUMPDEST PUSH2 0x48AA PUSH2 0x4893 DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0x337C JUMP JUMPDEST PUSH2 0x48A0 DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0x337C JUMP JUMPDEST DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x5500 JUMP JUMPDEST SWAP2 POP JUMPDEST POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48C2 DUP5 DUP5 DUP5 PUSH2 0x38E8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP1 PUSH2 0x48CE JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD GT ISZERO PUSH2 0x3991 JUMPI PUSH1 0x0 NOT DUP2 LT PUSH2 0x48E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND PUSH1 0xE8 SWAP1 DUP2 SHL PUSH1 0x34 DUP8 ADD MSTORE SWAP3 SWAP1 SWAP4 SIGNEXTEND SWAP1 SWAP2 SHL PUSH1 0x37 DUP5 ADD MSTORE DUP1 MLOAD DUP1 DUP5 SUB PUSH1 0x1A ADD DUP2 MSTORE PUSH1 0x3A SWAP1 SWAP4 ADD DUP2 MSTORE DUP3 MLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 KECCAK256 PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 SWAP1 MSTORE SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 PUSH1 0x0 DUP5 PUSH2 0xFFFF AND GT PUSH2 0x4995 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x49AD 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 0x49D7 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x49F2 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 0x4A1C JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4A37 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 0x4A61 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0x4B00 JUMPI PUSH2 0x4A94 DUP14 DUP14 DUP14 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x4A81 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 PUSH2 0x3998 JUMP JUMPDEST DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x4AA0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x4AB3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x4AC6 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x20 SWAP5 DUP6 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP1 MSTORE PUSH1 0x6 SWAP2 DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND SWAP1 MSTORE PUSH1 0x1 ADD PUSH2 0x4A67 JUMP JUMPDEST POP SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x4B50 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x544C55 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0xD89E7 NOT PUSH1 0x2 DUP4 SWAP1 SIGNEXTEND SLT ISZERO PUSH2 0x4B93 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x544C4D PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0xD89E8 PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND SGT ISZERO PUSH2 0x4BD5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x54554D PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE SWAP3 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP4 SLOAD PUSH4 0xFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xF8 SHL OR DUP3 SSTORE SWAP1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND SWAP1 SSTORE SWAP1 DUP2 SWAP1 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH1 0x8 DUP2 SWAP1 SAR SWAP2 PUSH2 0x100 SWAP1 SWAP2 SMOD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x4C5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x80 SHL DUP3 LT PUSH2 0x4C6F JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x4C87 JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x4C9B JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x4CAD JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x4CBE JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x4CCE JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x4CDE JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x4528 JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x4CFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x4D17 JUMPI PUSH1 0x7F NOT ADD PUSH2 0x4D1F JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x4D38 JUMPI PUSH1 0x3F NOT ADD PUSH2 0x4D40 JUMP JUMPDEST PUSH1 0x40 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x4D55 JUMPI PUSH1 0x1F NOT ADD PUSH2 0x4D5D JUMP JUMPDEST PUSH1 0x20 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH2 0xFFFF DUP3 AND ISZERO PUSH2 0x4D70 JUMPI PUSH1 0xF NOT ADD PUSH2 0x4D78 JUMP JUMPDEST PUSH1 0x10 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x4D8A JUMPI PUSH1 0x7 NOT ADD PUSH2 0x4D92 JUMP JUMPDEST PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xF DUP3 AND ISZERO PUSH2 0x4DA4 JUMPI PUSH1 0x3 NOT ADD PUSH2 0x4DAC JUMP JUMPDEST PUSH1 0x4 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x3 DUP3 AND ISZERO PUSH2 0x4DBE JUMPI PUSH1 0x1 NOT ADD PUSH2 0x4DC6 JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x4528 JUMPI PUSH1 0x0 NOT ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4DF8 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP2 PUSH2 0x4E25 JUMPI PUSH2 0x4E20 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x38E8 JUMP JUMPDEST PUSH2 0x4E48 JUMP JUMPDEST PUSH2 0x4E48 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4E73 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP7 SUB DUP2 AND SWAP1 DUP8 AND PUSH2 0x4EAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH2 0x4EDF JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4ED2 DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x38E8 JUMP JUMPDEST DUP2 PUSH2 0x4ED9 JUMPI INVALID JUMPDEST DIV PUSH2 0x4F05 JUMP JUMPDEST PUSH2 0x4F05 PUSH2 0x4EF6 DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x48B5 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x552F JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x4F27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x4F3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x4F4F JUMPI PUSH2 0x4E20 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x553A JUMP JUMPDEST PUSH2 0x4E48 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x561B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x4F73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x4F89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x4F9B JUMPI PUSH2 0x4E20 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x561B JUMP JUMPDEST PUSH2 0x4E48 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x553A JUMP JUMPDEST PUSH2 0x4FB0 PUSH2 0x5F1A JUMP JUMPDEST DUP7 MLOAD DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH2 0x4FC9 JUMPI PUSH1 0x1 PUSH2 0x4FCB JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP PUSH1 0x0 PUSH4 0xFFFFFFFF TIMESTAMP GT PUSH2 0x5016 JUMPI TIMESTAMP DUP5 PUSH4 0xFFFFFFFF AND LT PUSH2 0x4FED JUMPI DUP2 PUSH2 0x5011 JUMP JUMPDEST DUP9 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x500E JUMPI DUP9 MLOAD DUP5 SUB PUSH2 0x5011 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH2 0x5019 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP10 PUSH1 0x2 SIGNEXTEND MUL DUP12 PUSH1 0x20 ADD MLOAD ADD PUSH1 0x6 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x80 DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH2 0x507A JUMPI INVALID JUMPDEST DIV DUP12 PUSH1 0x40 ADD MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0x10 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND SWAP1 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 PUSH2 0x50D1 JUMPI INVALID JUMPDEST DIV DUP12 PUSH1 0x80 ADD MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 MSTORE POP SWAP3 POP POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x50FA PUSH2 0x5F1A JUMP JUMPDEST PUSH2 0x5102 PUSH2 0x5F1A JUMP JUMPDEST DUP11 DUP8 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x5113 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP1 DUP5 MSTORE PUSH5 0x100000000 DUP3 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP3 POP PUSH2 0x5191 SWAP1 DUP12 SWAP1 DUP12 PUSH2 0x5710 JUMP JUMPDEST ISZERO PUSH2 0x51CB JUMPI DUP9 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x51B3 JUMPI PUSH2 0x428B JUMP JUMPDEST DUP2 PUSH2 0x51C2 DUP4 DUP12 DUP12 DUP11 DUP11 DUP11 PUSH2 0x4FA8 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x428B JUMP JUMPDEST DUP11 DUP4 PUSH2 0xFFFF AND DUP9 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x51E0 JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x51F0 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP3 POP PUSH2 0x52D4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE DUP13 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP3 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x1 DUP13 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP2 POP JUMPDEST PUSH2 0x52E3 DUP11 DUP4 PUSH1 0x0 ADD MLOAD DUP12 PUSH2 0x5710 JUMP JUMPDEST PUSH2 0x531A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x13D311 PUSH1 0xEA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x5327 DUP12 DUP12 DUP12 DUP11 DUP8 PUSH2 0x57D3 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5348 PUSH1 0xC DUP8 DUP8 DUP8 PUSH2 0x48EF JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 DUP1 PUSH1 0xF DUP8 SWAP1 SIGNEXTEND ISZERO PUSH2 0x545C JUMPI PUSH1 0x0 PUSH2 0x5369 PUSH2 0x3232 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x9 SLOAD PUSH1 0x5 SLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH2 0x53D4 SWAP3 PUSH1 0xD SWAP3 DUP9 SWAP3 DUP7 SWAP3 PUSH1 0x1 PUSH1 0xA0 SHL DUP4 DIV PUSH1 0x2 SIGNEXTEND SWAP3 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP2 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP3 DIV DUP3 AND SWAP3 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 SWAP2 DIV AND SWAP1 PUSH2 0x3998 AND JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x53FE PUSH1 0xA DUP16 DUP14 DUP16 DUP14 DUP14 DUP10 DUP12 DUP14 PUSH1 0x0 DUP12 DUP14 PUSH2 0x59A8 JUMP JUMPDEST SWAP7 POP PUSH2 0x5416 PUSH1 0xA DUP15 DUP14 DUP16 DUP14 DUP14 DUP10 DUP12 DUP14 PUSH1 0x1 DUP12 DUP14 PUSH2 0x59A8 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP2 SWAP8 POP PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 SWAP2 DIV SWAP1 SIGNEXTEND DUP8 ISZERO PUSH2 0x5443 JUMPI PUSH2 0x5443 DUP16 DUP3 PUSH1 0xB PUSH2 0x5BE0 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP7 ISZERO PUSH2 0x5455 JUMPI PUSH2 0x5455 PUSH1 0xB DUP16 DUP4 PUSH2 0x5BE0 JUMP JUMPDEST POP POP POP POP POP POP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x546E PUSH1 0xA DUP13 DUP13 DUP12 DUP11 DUP11 PUSH2 0x5C46 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x547F DUP8 DUP11 DUP5 DUP5 PUSH2 0x5CF2 JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x54AD JUMPI DUP4 ISZERO PUSH2 0x549C JUMPI PUSH2 0x549C PUSH1 0xA DUP13 PUSH2 0x5E87 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x54AD JUMPI PUSH2 0x54AD PUSH1 0xA DUP12 PUSH2 0x5E87 JUMP JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT PUSH2 0x54E2 JUMPI PUSH2 0x54DD PUSH2 0x54D8 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x4E53 JUMP JUMPDEST PUSH2 0x38A0 JUMP JUMPDEST PUSH2 0x4E4B JUMP JUMPDEST PUSH2 0x54F5 PUSH2 0x54D8 DUP6 DUP6 DUP6 PUSH1 0x0 SUB PUSH1 0x0 PUSH2 0x4E53 JUMP JUMPDEST PUSH1 0x0 SUB SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT PUSH2 0x551C JUMPI PUSH2 0x54DD PUSH2 0x54D8 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x4DD8 JUMP JUMPDEST PUSH2 0x54F5 PUSH2 0x54D8 DUP6 DUP6 DUP6 PUSH1 0x0 SUB PUSH1 0x0 PUSH2 0x4DD8 JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x55AD JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x5570 JUMPI PUSH2 0x556B DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x38E8 JUMP JUMPDEST PUSH2 0x5588 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH1 0x60 DUP6 SWAP1 SHL DUP2 PUSH2 0x5586 JUMPI INVALID JUMPDEST DIV JUMPDEST SWAP1 POP PUSH2 0x55A5 PUSH2 0x55A0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP4 PUSH2 0x452D JUMP JUMPDEST PUSH2 0x5EC8 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4E4B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x55DB JUMPI PUSH2 0x55D6 DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x48B5 JUMP JUMPDEST PUSH2 0x55F2 JUMP JUMPDEST PUSH2 0x55F2 PUSH1 0x60 DUP6 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP8 AND PUSH2 0x552F JUMP JUMPDEST SWAP1 POP DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x5609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB SWAP1 POP PUSH2 0x4E4B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5629 JUMPI POP DUP4 PUSH2 0x4E4B JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND DUP3 ISZERO PUSH2 0x56C9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x5669 JUMPI INVALID JUMPDEST DIV EQ ISZERO PUSH2 0x569A JUMPI DUP2 DUP2 ADD DUP3 DUP2 LT PUSH2 0x5698 JUMPI PUSH2 0x568E DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH2 0x48B5 JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x4E4B JUMP JUMPDEST POP JUMPDEST PUSH2 0x56C0 DUP3 PUSH2 0x56BB DUP8 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP2 PUSH2 0x56B4 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x452D JUMP JUMPDEST PUSH2 0x552F JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x4E4B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x56E0 JUMPI INVALID JUMPDEST DIV EQ DUP1 ISZERO PUSH2 0x56ED JUMPI POP DUP1 DUP3 GT JUMPDEST PUSH2 0x56F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB PUSH2 0x568E PUSH2 0x55A0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 PUSH2 0x48B5 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO DUP1 ISZERO PUSH2 0x573A JUMPI POP DUP4 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND GT ISZERO JUMPDEST ISZERO PUSH2 0x5756 JUMPI DUP2 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO SWAP1 POP PUSH2 0x3991 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x577E JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH5 0x100000000 ADD PUSH2 0x5786 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP6 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x57B7 JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH5 0x100000000 ADD PUSH2 0x57BF JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 SWAP2 GT ISZERO SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x57DB PUSH2 0x5F1A JUMP JUMPDEST PUSH2 0x57E3 PUSH2 0x5F1A JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH2 0xFFFF AND DUP6 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x57F9 JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP6 PUSH2 0xFFFF AND DUP4 ADD SUB SWAP1 POP PUSH1 0x0 JUMPDEST POP PUSH1 0x2 DUP2 DUP4 ADD DIV DUP10 PUSH2 0xFFFF DUP8 AND DUP3 DUP2 PUSH2 0x5826 JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x5832 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP6 POP PUSH2 0x58B7 JUMPI DUP1 PUSH1 0x1 ADD SWAP3 POP PUSH2 0x5811 JUMP JUMPDEST DUP10 DUP7 PUSH2 0xFFFF AND DUP3 PUSH1 0x1 ADD DUP2 PUSH2 0x58C8 JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x58D4 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE DUP6 MLOAD SWAP1 SWAP5 POP PUSH1 0x0 SWAP1 PUSH2 0x595A SWAP1 DUP12 SWAP1 DUP12 PUSH2 0x5710 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x5973 JUMPI POP PUSH2 0x5973 DUP11 DUP11 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x5710 JUMP JUMPDEST ISZERO PUSH2 0x597E JUMPI POP PUSH2 0x599B JUMP JUMPDEST DUP1 PUSH2 0x598E JUMPI PUSH1 0x1 DUP3 SUB SWAP3 POP PUSH2 0x5995 JUMP JUMPDEST DUP2 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP PUSH2 0x5811 JUMP JUMPDEST POP POP POP SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP12 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH2 0x59D3 DUP3 DUP15 PUSH2 0x3CAC JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT ISZERO PUSH2 0x5A21 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C4F PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 DUP2 AND ISZERO SWAP1 DUP3 AND ISZERO DUP2 EQ ISZERO SWAP5 POP ISZERO PUSH2 0x5B2C JUMPI DUP14 PUSH1 0x2 SIGNEXTEND DUP16 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x5AFC JUMPI DUP12 DUP4 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP11 DUP4 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP10 DUP4 PUSH1 0x3 ADD PUSH1 0x7 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP9 DUP4 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH7 0xFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x6 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP8 DUP4 PUSH1 0x3 ADD PUSH1 0x1B PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 DUP4 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xF8 SHL OR SWAP1 SSTORE JUMPDEST DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND OR DUP4 SSTORE DUP7 PUSH2 0x5B81 JUMPI PUSH2 0x5B7C PUSH2 0x5B77 DUP15 PUSH1 0xF SIGNEXTEND DUP6 PUSH1 0x0 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xF SIGNEXTEND PUSH1 0xF SIGNEXTEND PUSH2 0x38D2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x464D JUMP JUMPDEST PUSH2 0x5BAE JUMP JUMPDEST PUSH2 0x5BAE PUSH2 0x5B77 DUP15 PUSH1 0xF SIGNEXTEND DUP6 PUSH1 0x0 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xF SIGNEXTEND PUSH1 0xF SIGNEXTEND PUSH2 0x38B6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 SLOAD PUSH1 0xF SWAP2 SWAP1 SWAP2 SIGNEXTEND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP2 AND OR SWAP1 SWAP3 SSTORE POP SWAP1 SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x5BEF JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x5BFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5C18 DUP4 PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x5C12 JUMPI INVALID JUMPDEST SDIV PUSH2 0x4C3C JUMP JUMPDEST PUSH1 0x1 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x40 SWAP1 SWAP7 KECCAK256 DUP1 SLOAD PUSH1 0xFF SWAP1 SWAP8 AND SWAP2 SWAP1 SWAP2 SHL SWAP1 SWAP6 XOR SWAP1 SWAP5 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP6 DUP2 SIGNEXTEND DUP1 DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP10 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP9 DUP6 SIGNEXTEND DUP6 SIGNEXTEND DUP4 MSTORE SWAP1 DUP3 KECCAK256 SWAP2 SWAP4 DUP5 SWAP4 SWAP2 SWAP3 SWAP2 DUP5 SWAP2 DUP3 SWAP2 SWAP1 DUP11 SWAP1 SIGNEXTEND SLT PUSH2 0x5C8C JUMPI POP POP PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH2 0x5C9F JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SLOAD DUP9 SUB SWAP2 POP DUP4 PUSH1 0x2 ADD SLOAD DUP8 SUB SWAP1 POP JUMPDEST PUSH1 0x0 DUP1 DUP12 PUSH1 0x2 SIGNEXTEND DUP12 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x5CC1 JUMPI POP POP PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x2 DUP5 ADD SLOAD PUSH2 0x5CD4 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SLOAD DUP11 SUB SWAP2 POP DUP5 PUSH1 0x2 ADD SLOAD DUP10 SUB SWAP1 POP JUMPDEST SWAP3 SWAP1 SWAP9 SUB SWAP8 SWAP1 SWAP8 SUB SWAP12 SWAP7 SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 SUB SWAP9 POP SWAP4 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP8 ADD SLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x2 DUP8 ADD SLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x3 DUP7 ADD SLOAD DUP1 DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV SWAP1 SWAP2 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xF DUP6 SWAP1 SIGNEXTEND PUSH2 0x5D91 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x5D89 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4E5 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH2 0x5DA0 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x5D9D SWAP1 DUP7 PUSH2 0x3CAC JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH2 0x5DC4 DUP4 PUSH1 0x20 ADD MLOAD DUP7 SUB DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x38E8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x5DEA DUP5 PUSH1 0x40 ADD MLOAD DUP7 SUB DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x38E8 JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0xF SIGNEXTEND PUSH1 0x0 EQ PUSH2 0x5E11 JUMPI DUP8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND OR DUP9 SSTORE JUMPDEST PUSH1 0x1 DUP9 ADD DUP7 SWAP1 SSTORE PUSH1 0x2 DUP9 ADD DUP6 SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO ISZERO DUP1 PUSH2 0x5E3F JUMPI POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT JUMPDEST ISZERO PUSH2 0x5E7D JUMPI PUSH1 0x3 DUP9 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP6 ADD DUP3 AND OR DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP3 SWAP1 DIV DUP4 AND DUP6 ADD SWAP1 SWAP3 AND MUL OR SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP4 SWAP1 SSTORE SWAP1 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR SUB 0xE6 SWAP14 PUSH3 0xC9A4CC 0xB7 0xBF STATICCALL KECCAK256 CODECOPY 0xE5 0xA5 MUL 0xD9 GT CALLER COINBASE 0x29 0xC1 PUSH10 0xF0C0ADF937FE3FC57364 PUSH20 0x6F6C634300070600330000000000000000000000 ","sourceMap":"143:898:38:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;574:71;;;;;;;;;;;;;;;;-1:-1:-1;574:71:38;;:::i;:::-;;1420:30:2;;;:::i;:::-;;;;-1:-1:-1;;;;;1420:30:2;;;;;;;;;;;;;;25374:9665;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25374:9665:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25374:9665:2;;-1:-1:-1;25374:9665:2;-1:-1:-1;25374:9665:2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4458:383;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4458:383:2;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;245:32:38:-;;;:::i;:::-;;;;;;;;;;;;;;;;3245:33:2;;;:::i;:::-;;;;-1:-1:-1;;;;;3245:33:2;;;;;;;;;;;;;;3157:41;;;:::i;:::-;;;;;-1:-1:-1;;;;;3157:41:2;;;;;;-1:-1:-1;;;;;3157:41:2;;;;;;;;;;;;;;;;39504:863;;;;;;;;;;;;;;;;-1:-1:-1;39504:863:2;;-1:-1:-1;;;;;39504:863:2;;;;;;;;:::i;3620:54::-;;;;;;;;;;;;;;;;-1:-1:-1;3620:54:2;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3620:54:2;;;;;;;;;;;;;-1:-1:-1;;;;;3620:54:2;;;;;;;;;;;;;;10792:672;;;;;;;;;;;;;;;;-1:-1:-1;10792:672:2;;;;:::i;2567:27::-;;;:::i;:::-;;;;-1:-1:-1;;;;;2567:27:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;745:72:38;;;;;;;;;;;;;;;;-1:-1:-1;745:72:38;;:::i;19412:1265:2:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19412:1265:2;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19412:1265:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19412:1265:2;;-1:-1:-1;19412:1265:2;-1:-1:-1;19412:1265:2;:::i;2925:44::-;;;:::i;35577:2210::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35577:2210:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35577:2210:2;;-1:-1:-1;35577:2210:2;-1:-1:-1;35577:2210:2;:::i;20725:1058::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20725:1058:2;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20725:1058:2;;;;;;;;;;;;:::i;3516:59::-;;;;;;;;;;;;;;;;-1:-1:-1;3516:59:2;;:::i;:::-;;;;-1:-1:-1;;;;;3516:59:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3419:52;;;;;;;;;;;;;;;;-1:-1:-1;3419:52:2;;;;:::i;653:84:38:-;;;;;;;;;;;;;;;;-1:-1:-1;653:84:38;-1:-1:-1;;;;;653:84:38;;:::i;1743:43:2:-;;;:::i;37840:521::-;;;;;;;;;;;;;;;;-1:-1:-1;37840:521:2;;;;;;;;;;;:::i;38414:1037::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;38414:1037:2;;;;-1:-1:-1;;;;;38414:1037:2;;;;;;;;;;;;:::i;10050:694::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10050:694:2;;-1:-1:-1;10050:694:2;-1:-1:-1;10050:694:2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2752:37;;;:::i;:::-;;;;-1:-1:-1;;;;;2752:37:2;;;;;;;;;;;;;;;;;;;;;;21831:924;;;;;;;;;;;;;;;;-1:-1:-1;21831:924:2;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21831:924:2;;:::i;6188:3809::-;;;;;;;;;;;;;;;;-1:-1:-1;6188:3809:2;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;6188:3809:2;;;;;;;;;;;;;;;-1:-1:-1;;;;;6188:3809:2;;;;;;;;;;;;;;825:100:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1339:31:2;;;:::i;1658:33::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1500:30;;;:::i;286:136:38:-;;;;;;;;;;;;;;;;-1:-1:-1;286:136:38;;:::i;1580:26:2:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2836:44;;;:::i;3325:49::-;;;;;;;;;;;;;;;;-1:-1:-1;3325:49:2;;;;:::i;:::-;;;;-1:-1:-1;;;;;3325:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3325:49:2;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3325:49:2;;;;;;;;;;;;;;11569:639;;;;;;;;;;;;;;;;-1:-1:-1;11569:639:2;-1:-1:-1;;;;;11569:639:2;;:::i;430:136:38:-;;;;;;;;;;;;;;;;-1:-1:-1;430:136:38;;:::i;574:71::-;627:4;:10;;;;;;;574:71::o;1420:30:2:-;;;-1:-1:-1;;;;;1420:30:2;;:::o;25374:9665::-;25575:14;;25626:20;25618:35;;;;;-1:-1:-1;;;25618:35:2;;;;;;;;;;;;-1:-1:-1;;;25618:35:2;;;;;;;;;;;;;;;25666:31;;;;;;;;25692:5;25666:31;-1:-1:-1;;;;;25666:31:2;;;;-1:-1:-1;;;25666:31:2;;;;;;;;;;;;;;;-1:-1:-1;;;25666:31:2;;;;;;;;;;;-1:-1:-1;;;25666:31:2;;;;;;;;-1:-1:-1;;;25666:31:2;;;;;;;;;;-1:-1:-1;;;25666:31:2;;;;;;;;-1:-1:-1;;;25666:31:2;;;;;;;;;;;;;;25710:35;;;;;-1:-1:-1;;;25710:35:2;;;;;;;;;;;;-1:-1:-1;;;25710:35:2;;;;;;;;;;;;;;;25778:10;:230;;25938:10;:23;;;-1:-1:-1;;;;;25918:43:2;:17;-1:-1:-1;;;;;25918:43:2;;:90;;;;-1:-1:-1;1019:49:28;-1:-1:-1;;;;;25965:43:2;;;25918:90;25778:230;;;25828:10;:23;;;-1:-1:-1;;;;;25808:43:2;:17;-1:-1:-1;;;;;25808:43:2;;:90;;;;-1:-1:-1;837:10:28;-1:-1:-1;;;;;25855:43:2;;;25808:90;25756:283;;;;;-1:-1:-1;;;25756:283:2;;;;;;;;;;;;-1:-1:-1;;;25756:283:2;;;;;;;;;;;;;;;26052:5;:22;;-1:-1:-1;;;;26052:22:2;;;26112:511;;;;;;;;;26069:5;;26112:511;26238:10;:74;;26310:1;26284:10;:22;;;:27;;;;26238:74;;;26277:2;26252:10;:22;;;:27;;;;;;;;26238:74;26112:511;;;;26153:9;;-1:-1:-1;;;;;26153:9:2;26112:511;;;;;;26193:17;:15;:17::i;:::-;26112:511;;;;;;26394:1;26112:511;;;;;;26362:1;-1:-1:-1;;;;;26112:511:2;;;;;26437:5;26112:511;;;;;;26490:1;-1:-1:-1;;;;;26112:511:2;;;;;26511:3;;;;;;;;;;;26112:511;;;;;;26542:11;;;;;;;;;;;26112:511;;;;;;26576:6;;;;;;;;;-1:-1:-1;;;;;26576:6:2;-1:-1:-1;;;;;26112:511:2;;;;;26605:6;;;;;;;;;-1:-1:-1;;;;;26605:6:2;-1:-1:-1;;;;;26112:511:2;;;;26087:536;;26636:15;26672:1;26654:15;:19;26636:37;;26686:22;26711:367;;;;;;;;26762:15;26711:367;;;;26810:1;26711:367;;;;26840:10;:23;;;-1:-1:-1;;;;;26711:367:2;;;;;26884:10;:15;;;26711:367;;;;;;26935:10;:56;;26971:20;;26935:56;;;26948:20;;26935:56;26711:367;;;;27019:1;-1:-1:-1;;;;;26711:367:2;;;;;27046:5;:20;;;-1:-1:-1;;;;;26711:367:2;;;;26686:392;;27208:5012;27215:30;;:35;;;;:78;;;27276:17;-1:-1:-1;;;;;27254:39:2;:5;:18;;;-1:-1:-1;;;;;27254:39:2;;;27215:78;27208:5012;;;27310:28;;:::i;:::-;27380:18;;;;-1:-1:-1;;;;;27355:43:2;;;27513:10;;;;27542:17;;;;27451:152;;:10;;27578;27451:43;:152::i;:::-;27415:188;;27431:16;;;27415:188;;;;;;;27416:13;;;27415:188;;;-1:-1:-1;;27738:33:2;;;27734:220;;;-1:-1:-1;;27792:13:2;;;:33;27734:220;;;27851:13;;;;654:9:28;27851:33:2;;;;;;27847:107;;;654:9:28;27905:13:2;;;:33;27847:107;28042:42;28070:4;:13;;;28042:27;:42::i;:::-;-1:-1:-1;;;;;28018:66:2;:21;;;:66;28334:18;;;;28291:392;;28372:10;:98;;28453:17;-1:-1:-1;;;;;28429:41:2;:4;:21;;;-1:-1:-1;;;;;28429:41:2;;28372:98;;;28409:17;-1:-1:-1;;;;;28385:41:2;:4;:21;;;-1:-1:-1;;;;;28385:41:2;;28372:98;28371:186;;28536:4;:21;;;28371:186;;;28495:17;28371:186;28576:15;;;;28610:30;;28659:9;;;;28291:24;:392::i;:::-;28273:14;;;28221:462;28257:14;;;28221:462;28242:13;;;28221:462;-1:-1:-1;;;;;28221:462:2;28222:18;;;28221:462;28700:440;;;;28769:43;28786:4;:14;;;28770:4;:13;;;:30;28769:41;:43::i;:::-;28735:77;;;;;28883:14;;;;28856:53;;28883:25;;:23;:25::i;:::-;28856:22;;;;;:26;:53::i;:::-;28831:22;;;:78;28700:440;;;28984:25;:4;:14;;;:23;:25::i;:::-;28950:59;;;;;29097:14;;;;29081:13;;;;29053:71;;29080:43;;29081:30;29080:41;:43::i;:::-;29053:22;;;;;:26;:71::i;:::-;29028:22;;;:96;28700:440;29278:17;;:21;;;29274:208;;29320:13;29353:5;:17;;;29336:34;;:4;:14;;;:34;;;;;29389:14;;;:23;;29336:34;;;;29389:23;;;;;;29431:17;;;:35;;;;;-1:-1:-1;;;;;29431:35:2;;;-1:-1:-1;29274:208:2;29544:15;;;;-1:-1:-1;;;;;29544:19:2;;29540:139;;29611:68;29627:4;:14;;;-1:-1:-1;;;29663:5:2;:15;;;-1:-1:-1;;;;;29611:68:2;:15;:68::i;:::-;29582:25;;;:97;;;;;;;29540:139;29778:4;:21;;;-1:-1:-1;;;;;29756:43:2;:5;:18;;;-1:-1:-1;;;;;29756:43:2;;29752:2457;;;29896:4;:16;;;29892:1950;;;30114:5;:31;;;30109:854;;30450:20;;;;;30533:15;;;;;30579:27;;;;30637:20;;;;30688:10;:29;30814:33;;;;30393:481;;:12;;30450:20;30501:1;;30533:15;;30579:27;;-1:-1:-1;;;;;30688:29:2;;;30748:35;-1:-1:-1;;;30748:35:2;;;;;;30814:33;30393:26;:481;:::i;:::-;-1:-1:-1;;;;;30174:700:2;30326:37;;;30174:700;-1:-1:-1;;;;;30174:700:2;30256:39;;;30174:700;;;;;;;30205:20;;;30174:700;30935:4;30901:31;;;:38;30109:854;30985:19;31007:478;31045:4;:13;;;31086:10;:61;;31127:20;;31086:61;;;31099:5;:25;;;31086:61;31176:10;:61;;31212:5;:25;;;31176:61;;;31189:20;;31176:61;31265:39;;;;31331:20;;;;31378;;;;31425:37;;;;31007:5;;:478;;;31265:39;31331:20;31378;31007:11;:478::i;:::-;30985:500;;31686:10;31682:44;;;31713:13;;31682:44;31769:53;31792:5;:15;;;31809:12;31769:22;:53::i;:::-;-1:-1:-1;;;;;31751:71:2;:15;;;:71;-1:-1:-1;29892:1950:2;31875:10;:46;;31908:4;:13;;;31875:46;;;31904:1;31888:4;:13;;;:17;31875:46;31862:59;;;;;;:10;;;:59;29752:2457;;;31969:4;:22;;;-1:-1:-1;;;;;31947:44:2;:5;:18;;;-1:-1:-1;;;;;31947:44:2;;31943:266;;32146:47;32174:5;:18;;;32146:27;:47::i;:::-;32133:60;;;;;;:10;;;:60;31943:266;27208:5012;;;;32319:10;:15;;;32305:29;;:5;:10;;;:29;;;32301:903;;32447:27;;;;;32493:20;;;;32532:15;;;;;32566:20;;;;32605:10;:29;32707:33;;;;32759:37;;;;32352:23;;;;32410:401;;:12;;32447:27;;32493:20;;32532:15;;-1:-1:-1;;;;;32605:29:2;;;32653:35;-1:-1:-1;;;32653:35:2;;;;;;32707:33;32759:37;32410:18;:401;:::i;:::-;32934:18;;;;32971:10;;;;32827:5;32826:246;;-1:-1:-1;;;;32826:246:2;-1:-1:-1;;;32826:246:2;;;;;;-1:-1:-1;;;;32826:246:2;-1:-1:-1;;;32826:246:2;;;;;;;;;;;;-1:-1:-1;;;;32826:246:2;-1:-1:-1;;;32826:246:2;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;32826:246:2;-1:-1:-1;;;;;32826:246:2;;;;;;-1:-1:-1;32301:903:2;;-1:-1:-1;32301:903:2;;33174:18;;;;33153:5;:39;;-1:-1:-1;;;;;;33153:39:2;-1:-1:-1;;;;;33153:39:2;;;;;;;;;32301:903;33287:5;:15;;;-1:-1:-1;;;;;33263:39:2;:5;:20;;;-1:-1:-1;;;;;33263:39:2;;33259:72;;33316:15;;;;33304:9;:27;;-1:-1:-1;;;;;;33304:27:2;-1:-1:-1;;;;;33304:27:2;;;;;;;;;33259:72;33517:10;33513:336;;;33567:25;;;;33544:20;:48;33611:17;;;;-1:-1:-1;;;;;33611:21:2;;33607:67;;33657:17;;;;33634:12;:40;;-1:-1:-1;;;;;;33634:40:2;;-1:-1:-1;;;;;33634:40:2;;;;;;;;;;;;;33607:67;33513:336;;;33730:25;;;;33707:20;:48;33774:17;;;;-1:-1:-1;;;;;33774:21:2;;33770:67;;33820:17;;;;33797:12;:40;;-1:-1:-1;;;;;33797:40:2;;;-1:-1:-1;;;33797:40:2;;;;;;;;;;;;;;;;;33770:67;33896:10;33882:24;;:10;:24;;;:204;;34013:22;;;;34055:30;;34037:48;;33882:204;;;33941:5;:30;;;33923:15;:48;33973:5;:22;;;33882:204;33861:225;;-1:-1:-1;33861:225:2;-1:-1:-1;34148:740:2;;;;34193:1;34183:7;:11;34179:88;;;34196:71;34224:5;:12;;;34238:9;34258:7;34257:8;;34196:27;:71::i;:::-;34284:22;34309:21;34317:5;:12;;;34309:7;:21::i;:::-;34284:46;;34365:10;-1:-1:-1;;;;;34345:50:2;;34396:7;34405;34414:4;;34345:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34482:21;34490:5;:12;;;34482:7;:21::i;:::-;34442:36;:14;34469:7;34442:18;:36::i;:::-;:61;;34434:77;;;;;-1:-1:-1;;;34434:77:2;;;;;;;;;;;;-1:-1:-1;;;34434:77:2;;;;;;;;;;;;;;;34148:740;;;;34558:1;34548:7;:11;34544:88;;;34561:71;34589:5;:12;;;34603:9;34623:7;34622:8;;34561:27;:71::i;:::-;34649:22;34674:21;34682:5;:12;;;34674:7;:21::i;:::-;34649:46;;34730:10;-1:-1:-1;;;;;34710:50:2;;34761:7;34770;34779:4;;34710:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34847:21;34855:5;:12;;;34847:7;:21::i;:::-;34807:36;:14;34834:7;34807:18;:36::i;:::-;:61;;34799:77;;;;;-1:-1:-1;;;34799:77:2;;;;;;;;;;;;-1:-1:-1;;;34799:77:2;;;;;;;;;;;;;;;34148:740;;34951:18;;;;;34971:15;;;;34988:10;;;;;34905:94;;;;;;;;;;;-1:-1:-1;;;;;34905:94:2;;;;;;;-1:-1:-1;;;;;34905:94:2;;;;;;;;;;;;;;;;;;;;;;34910:10;;34905:94;;;;;;;;;-1:-1:-1;;35010:5:2;:21;;-1:-1:-1;;;;35010:21:2;-1:-1:-1;;;35010:21:2;;;-1:-1:-1;25374:9665:2;;;;-1:-1:-1;25374:9665:2;-1:-1:-1;;;;;;25374:9665:2:o;4458:383::-;4601:1;4582:7;-1:-1:-1;;;;;4582:7:2;:21;4574:30;;;;;;4617:7;:20;;4627:10;-1:-1:-1;;;;;;4617:20:2;;;;;;;-1:-1:-1;4648:16:2;;;;-1:-1:-1;;;;;4648:16:2;;;;;;;;;;4675:6;:16;;;;;;;;;-1:-1:-1;;;;4702:10:2;-1:-1:-1;;;4702:10:2;;;;;;;;;;;;4723:26;;-1:-1:-1;;;4723:26:2;;;;;;;;;;;;;;4782:51;4723:26;4782:37;:51::i;:::-;4760:19;:73;;-1:-1:-1;;;;;;4760:73:2;-1:-1:-1;;;;;4760:73:2;;;;;;;;;;-1:-1:-1;;;;4458:383:2:o;245:32:38:-;;;;:::o;3245:33:2:-;;;-1:-1:-1;;;;;3245:33:2;;:::o;3157:41::-;;;-1:-1:-1;;;;;3157:41:2;;;;-1:-1:-1;;;3157:41:2;;;;:::o;39504:863::-;4069:5;:14;-1:-1:-1;;;4069:14:2;;;;4061:30;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;;;;4102:5;:22;;-1:-1:-1;;;;4102:22:2;;;4119:5;4368:7;4353:31:::1;::::0;;-1:-1:-1;;;4353:31:2;;;;-1:-1:-1;;;;;4368:7:2;;::::1;::::0;4353:29:::1;::::0;:31;;::::1;::::0;::::1;::::0;;;;;;;4368:7;4353:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4353:31:2;-1:-1:-1;;;;;4339:45:2::1;:10;:45;4331:54;;;::::0;::::1;;39700:15:::2;39672:24;:43;;;;39664:52;;;::::0;::::2;;39819:5;:22:::0;39786:331:::2;::::0;-1:-1:-1;;;39819:22:2;::::2;;;39856:17;:15;:17::i;:::-;39888:5;:10:::0;39913:9:::2;::::0;39937:10:::2;:29:::0;39786:12:::2;::::0;:331;;-1:-1:-1;;;39888:10:2;::::2;;;::::0;-1:-1:-1;;;;;39913:9:2::2;::::0;-1:-1:-1;;;;;39937:29:2;::::2;::::0;39981:35:::2;-1:-1:-1::0;;;39981:35:2;;::::2;::::0;::::2;::::0;40031:28:::2;-1:-1:-1::0;;;40031:28:2;::::2;::::0;::::2;::::0;-1:-1:-1;;;40074:32:2;::::2;;::::0;39786:18:::2;:331;:::i;:::-;39730:5;39729:388:::0;;-1:-1:-1;;;;39729:388:2::2;-1:-1:-1::0;;;39729:388:2::2;::::0;;::::2;;;-1:-1:-1::0;;;;39729:388:2::2;-1:-1:-1::0;;;39729:388:2;;;::::2;::::0;;;::::2;;::::0;;40141:141:::2;::::0;;;;::::2;::::0;;-1:-1:-1;;;;;40141:141:2;::::2;::::0;;;::::2;::::0;::::2;;::::0;;::::2;::::0;;;40128:10:::2;:154:::0;;-1:-1:-1;;40128:154:2::2;::::0;::::2;::::0;::::2;-1:-1:-1::0;;;40128:154:2;::::2;;::::0;;40300:59;;;;;;;::::2;::::0;;;;;;::::2;::::0;;;;;;;;;::::2;-1:-1:-1::0;;4147:5:2;:21;;-1:-1:-1;;;;4147:21:2;-1:-1:-1;;;4147:21:2;;;39504:863::o;3620:54::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3620:54:2;;;;;;-1:-1:-1;;;3620:54:2;;-1:-1:-1;;;;;3620:54:2;;-1:-1:-1;;;3620:54:2;;;;;;-1:-1:-1;;;;;3620:54:2;;:::o;10792:672::-;4069:5;:14;-1:-1:-1;;;4069:14:2;;;;4061:30;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;;;;4102:5;:22;;-1:-1:-1;;;;4102:22:2;;;;;-1:-1:-1;;;10976:32:2;::::1;;;-1:-1:-1::0;11075:113:2::1;:12;10976:32:::0;11151:26;11075:17:::1;:113::i;:::-;11199:5;:64:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;11199:64:2;::::1;-1:-1:-1::0;;;;11199:64:2;;::::1;::::0;;;::::1;::::0;;;11036:152;;-1:-1:-1;11278:62:2;::::1;;11274:182;;11360:96;::::0;;::::1;::::0;;::::1;::::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;11274:182;-1:-1:-1::0;;4147:5:2;:21;;-1:-1:-1;;;;4147:21:2;-1:-1:-1;;;4147:21:2;;;-1:-1:-1;10792:672:2:o;2567:27::-;;;-1:-1:-1;;;;;2567:27:2;;;-1:-1:-1;;;2567:27:2;;;;;;-1:-1:-1;;;2567:27:2;;;;;-1:-1:-1;;;2567:27:2;;;;;-1:-1:-1;;;2567:27:2;;;;;-1:-1:-1;;;2567:27:2;;;;;-1:-1:-1;;;2567:27:2;;;;:::o;745:72:38:-;797:4;:12;745:72::o;19412:1265:2:-;4069:5;:14;19600:15;;;;-1:-1:-1;;;4069:14:2;;;;4061:30;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;;;;4102:5;:22;;-1:-1:-1;;;;4102:22:2;;;-1:-1:-1;;;;;19653:10:2;::::1;19645:19;;;::::0;::::1;;19678:17;19697::::0;19718:251:::1;19748:210;;;;;;;;19795:9;-1:-1:-1::0;;;;;19748:210:2::1;;;;;19834:9;19748:210;;;;;;19873:9;19748:210;;;;;;19917:25;19924:6;-1:-1:-1::0;;;;;19917:14:2::1;:23;:25::i;:::-;19748:210;;::::0;;19718:15:::1;:251::i;:::-;20148:6;::::0;20183::::1;::::0;19675:294;;-1:-1:-1;19675:294:2;;-1:-1:-1;19675:294:2;;-1:-1:-1;19675:294:2;;-1:-1:-1;20064:22:2::1;::::0;-1:-1:-1;20064:22:2;;-1:-1:-1;;;;;20148:6:2;;::::1;::::0;20183::::1;20204:11:::0;;20200:50:::1;;20234:16;20242:7;20234;:16::i;:::-;20217:33;;20200:50;20265:11:::0;;20261:50:::1;;20295:16;20303:7;20295;:16::i;:::-;20278:33;;20261:50;20342:10;-1:-1:-1::0;;;;;20322:50:2::1;;20373:7;20382;20391:4;;20322:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20421:1;20411:7;:11;20407:79;;;20463:16;20471:7;20463;:16::i;:::-;20432:27;:14:::0;20451:7;20432:18:::1;:27::i;:::-;:47;;20424:62;;;::::0;;-1:-1:-1;;;20424:62:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;20424:62:2;;;;;;;;;;;;;::::1;;20501:11:::0;;20497:79:::1;;20553:16;20561:7;20553;:16::i;:::-;20522:27;:14:::0;20541:7;20522:18:::1;:27::i;:::-;:47;;20514:62;;;::::0;;-1:-1:-1;;;20514:62:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;20514:62:2;;;;;;;;;;;;;::::1;;20633:9;20594:75;;20622:9;20594:75;;20611:9;-1:-1:-1::0;;;;;20594:75:2::1;;20599:10;20644:6;20652:7;20661;20594:75;;;;-1:-1:-1::0;;;;;20594:75:2::1;;;;;;-1:-1:-1::0;;;;;20594:75:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;4147:5:2;:21;;-1:-1:-1;;;;4147:21:2;-1:-1:-1;;;4147:21:2;;;-1:-1:-1;19412:1265:2;;;;-1:-1:-1;19412:1265:2;;-1:-1:-1;;;;;;;;19412:1265:2:o;2925:44::-;;;;:::o;35577:2210::-;4069:5;:14;-1:-1:-1;;;4069:14:2;;;;4061:30;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;;;;4102:5;:22;;-1:-1:-1;;;;4102:22:2;;;35764:9:::1;::::0;-1:-1:-1;;;;;35764:9:2::1;35792:14:::0;35784:28:::1;;;::::0;;-1:-1:-1;;;35784:28:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;35784:28:2;;;;;;;;;;;;;::::1;;35851:148;::::0;;::::1;::::0;::::1;::::0;;35885:6:::1;::::0;-1:-1:-1;;;;;35885:6:2;;::::1;35851:148:::0;;35914:6:::1;::::0;;;::::1;35851:148;::::0;::::1;::::0;-1:-1:-1;;;35940:3:2;::::1;;;35851:148:::0;;;;;;-1:-1:-1;35851:148:2;;;;;;;;;;;36025:50:::1;::::0;36051:7;;36071:3:::1;36025:25;:50::i;:::-;36012:10;::::0;::::1;:63:::0;36134:9:::1;::::0;::::1;::::0;36099:50:::1;::::0;36125:7;;36099:50:::1;;36145:3;36099:25;:50::i;:::-;36086:10;::::0;::::1;:63:::0;36193:12;;36160:22:::1;::::0;36185:21:::1;::::0;:7:::1;:21::i;:::-;36160:46;;36217:22;36242:21;36250:5;:12;;;36242:7;:21::i;:::-;36217:46:::0;-1:-1:-1;36280:11:2;;36276:78:::1;;36321:12:::0;;36293:61:::1;::::0;36335:9;36346:7;36293:27:::1;:61::i;:::-;36369:11:::0;;36365:78:::1;;36382:61;36410:5;:12;;;36424:9;36435:7;36382:27;:61::i;:::-;36477:10;-1:-1:-1::0;;;;;36456:52:2::1;;36509:5;:10;;;36521:5;:10;;;36533:4;;36456:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;36551:21;36575;36583:5;:12;;;36575:7;:21::i;:::-;36551:45;;36607:21;36631;36639:5;:12;;;36631:7;:21::i;:::-;36607:45;;36707:13;36673:30;36692:5;:10;;;36673:14;:18;;:30;;;;:::i;:::-;:47;;36665:62;;;::::0;;-1:-1:-1;;;36665:62:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;36665:62:2;;;;;;;;;;;;;::::1;;36780:13;36746:30;36765:5;:10;;;36746:14;:18;;:30;;;;:::i;:::-;:47;;36738:62;;;::::0;;-1:-1:-1;;;36738:62:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;36738:62:2;;;;;;;;;;;;;::::1;;36918:30:::0;;::::1;36975::::0;;::::1;37022:9:::0;;37018:337:::1;;37069:5;:17:::0;-1:-1:-1;;;37069:17:2;::::1;:22:::0;;37048:18:::1;37122:17:::0;;:44:::1;;37154:12;37146:20;;:5;:20;;;;;;37122:44;;;37142:1;37122:44;37106:60:::0;-1:-1:-1;;;;;;37185:18:2;::::1;::::0;37181:61:::1;;37205:12;:37:::0;;-1:-1:-1;;;;;37205:37:2;;::::1;::::0;::::1;;-1:-1:-1::0;;;;;;37205:37:2;;::::1;;::::0;;37181:61:::1;37281:62;37305:5;37297;:13;-1:-1:-1::0;;;37332:10:2::1;-1:-1:-1::0;;;;;37281:62:2::1;:15;:62::i;:::-;37257:20;:86:::0;;;;::::1;::::0;;-1:-1:-1;;37018:337:2::1;37369:9:::0;;37365:337:::1;;37437:1;37416:17:::0;;-1:-1:-1;;;37416:17:2;::::1;:22:::0;;;;37395:18:::1;37469:17:::0;;:44:::1;;37501:12;37493:20;;:5;:20;;;;;;37469:44;;;37489:1;37469:44;37453:60:::0;-1:-1:-1;;;;;;37532:18:2;::::1;::::0;37528:61:::1;;37552:12;:37:::0;;-1:-1:-1;;;;;;;;37552:37:2;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;;::::0;::::1;;::::0;;37528:61:::1;37628:62;37652:5;37644;:13;-1:-1:-1::0;;;37679:10:2::1;-1:-1:-1::0;;;;;37628:62:2::1;:15;:62::i;:::-;37604:20;:86:::0;;;;::::1;::::0;;-1:-1:-1;;37365:337:2::1;37719:60;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37719:60:2;::::1;::::0;37725:10:::1;::::0;37719:60:::1;::::0;;;;;;;::::1;-1:-1:-1::0;;4147:5:2;:21;;-1:-1:-1;;;;4147:21:2;-1:-1:-1;;;4147:21:2;;;-1:-1:-1;;;;;;;;;;;35577:2210:2:o;20725:1058::-;4069:5;:14;20931:15;;;;-1:-1:-1;;;4069:14:2;;;;4061:30;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;;;;4102:5;:22;;-1:-1:-1;;;;4102:22:2;;;4119:5;21122:47:::1;:9;21136:10;21148:9:::0;21159;21122:13:::1;:47::i;:::-;21211:20;::::0;::::1;::::0;21089:80;;-1:-1:-1;;;;;;21211:20:2;;::::1;21192:39:::0;;::::1;;:81;;21257:16;21192:81;;;21234:20;::::0;::::1;::::0;-1:-1:-1;;;;;21234:20:2::1;21192:81;21313:20;::::0;::::1;::::0;21182:91;;-1:-1:-1;;;;;;;;;21313:20:2;;::::1;::::0;::::1;21294:39:::0;;::::1;;:81;;21359:16;21294:81;;;21336:20;::::0;::::1;::::0;-1:-1:-1;;;21336:20:2;::::1;-1:-1:-1::0;;;;;21336:20:2::1;21294:81;21284:91:::0;-1:-1:-1;;;;;;21392:11:2;::::1;::::0;21388:145:::1;;21420:20;::::0;::::1;:31:::0;;-1:-1:-1;;;;;;21420:31:2;::::1;-1:-1:-1::0;;;;;21420:31:2;;::::1;::::0;;::::1;::::0;::::1;;::::0;;;-1:-1:-1;21494:6:2;21466:55:::1;::::0;-1:-1:-1;;;;;21494:6:2;;::::1;::::0;21502:9;;21466:55;::::1;:27;:55::i;:::-;-1:-1:-1::0;;;;;21547:11:2;::::1;::::0;21543:145:::1;;21575:20;::::0;::::1;:31:::0;;-1:-1:-1;;;;;;;;21575:31:2;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;21649:6:::1;::::0;21621:55:::1;::::0;-1:-1:-1;;;;;21649:6:2;;::::1;::::0;21657:9;;21621:55;::::1;:27;:55::i;:::-;21705:70;::::0;;-1:-1:-1;;;;;21705:70:2;::::1;::::0;;-1:-1:-1;;;;;21705:70:2;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;21713:10:::1;::::0;21705:70:::1;::::0;;;;;;;;::::1;-1:-1:-1::0;4147:5:2;:21;;-1:-1:-1;;;;4147:21:2;-1:-1:-1;;;4147:21:2;;;20725:1058;;;;-1:-1:-1;20725:1058:2;-1:-1:-1;;;;20725:1058:2:o;3516:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3516:59:2;;;;;;;;;;-1:-1:-1;;;3516:59:2;;;;:::o;3419:52::-;;;;;;;;;;;;;:::o;653:84:38:-;711:7;:18;;-1:-1:-1;;;;;;711:18:38;-1:-1:-1;;;;;711:18:38;;;;;;;;;;653:84::o;1743:43:2:-;;;-1:-1:-1;;;;;1743:43:2;;:::o;37840:521::-;4069:5;:14;-1:-1:-1;;;4069:14:2;;;;4061:30;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;;;;4102:5;:22;;-1:-1:-1;;;;4102:22:2;;;4119:5;4368:7;4353:31:::1;::::0;;-1:-1:-1;;;4353:31:2;;;;-1:-1:-1;;;;;4368:7:2;;::::1;::::0;4353:29:::1;::::0;:31;;::::1;::::0;::::1;::::0;;;;;;;4368:7;4353:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4353:31:2;-1:-1:-1;;;;;4339:45:2::1;:10;:45;4331:54;;;::::0;::::1;;37978:17:::2;::::0;::::2;::::0;;:62:::2;;;38016:1;38000:12;:17;;;;:39;;;;;38037:2;38021:12;:18;;;;38000:39;37977:149;;;;-1:-1:-1::0;38063:17:2::2;::::0;::::2;::::0;;:62:::2;;;38101:1;38085:12;:17;;;;:39;;;;;38122:2;38106:12;:18;;;;38085:39;37955:182;;;::::0;::::2;;38171:5;:17:::0;;38235;;;;;38219:34;::::2;38171:17;38199:54:::0;;::::2;-1:-1:-1::0;;;38199:54:2;;::::2;::::0;;::::2;;::::0;;38269:84:::2;::::0;;38171:17;;;::::2;38284:19:::0;;;;38269:84;;38305:19;;;;;;;38269:84:::2;::::0;::::2;::::0;;;::::2;::::0;;;;;;::::2;::::0;;;;;;38171:17;::::2;::::0;38269:84:::2;::::0;;;;;;;::::2;-1:-1:-1::0;;4147:5:2;:21;;-1:-1:-1;;;;4147:21:2;-1:-1:-1;;;4147:21:2;;;-1:-1:-1;37840:521:2:o;38414:1037::-;4069:5;:14;38593:15;;;;-1:-1:-1;;;4069:14:2;;;;4061:30;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;;;;4102:5;:22;;-1:-1:-1;;;;4102:22:2;;;4119:5;4368:7;4353:31:::1;::::0;;-1:-1:-1;;;4353:31:2;;;;-1:-1:-1;;;;;4368:7:2;;::::1;::::0;4353:29:::1;::::0;:31;;::::1;::::0;::::1;::::0;;;;;;;4368:7;4353:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4353:31:2;-1:-1:-1;;;;;4339:45:2::1;:10;:45;4331:54;;;::::0;::::1;;38667:12:::2;:19:::0;-1:-1:-1;;;;;38667:19:2;;::::2;38648:38:::0;;::::2;;:79;;38711:16;38648:79;;;38689:12;:19:::0;-1:-1:-1;;;;;38689:19:2::2;38648:79;38767:12;:19:::0;38638:89;;-1:-1:-1;;;;;;;;;38767:19:2;;::::2;::::0;::::2;38748:38:::0;;::::2;;:79;;38811:16;38748:79;;;38789:12;:19:::0;-1:-1:-1;;;38789:19:2;::::2;-1:-1:-1::0;;;;;38789:19:2::2;38748:79;38738:89:::0;-1:-1:-1;;;;;;38844:11:2;::::2;::::0;38840:260:::2;;38887:12;:19:::0;-1:-1:-1;;;;;38876:30:2;;::::2;38887:19:::0;::::2;38876:30;38872:45;;;-1:-1:-1::0;;38908:9:2;;;;38872:45:::2;38988:12;:30:::0;;-1:-1:-1;;;;;;38988:30:2;::::2;-1:-1:-1::0;;;;;38988:30:2;;::::2;::::0;;::::2;::::0;::::2;;::::0;;;-1:-1:-1;39061:6:2;39033:55:::2;::::0;-1:-1:-1;;;;;39061:6:2;;::::2;::::0;39069:9;;39033:55;::::2;:27;:55::i;:::-;-1:-1:-1::0;;;;;39114:11:2;::::2;::::0;39110:260:::2;;39157:12;:19:::0;-1:-1:-1;;;;;39146:30:2;;::::2;-1:-1:-1::0;;;39157:19:2;;::::2;;39146:30;39142:45;;;-1:-1:-1::0;;39178:9:2;39142:45:::2;39258:12;:30:::0;;-1:-1:-1;;;;;;;;39258:30:2;;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;;::::0;;::::2;::::0;;;::::2;::::0;;;39331:6:::2;::::0;39303:55:::2;::::0;-1:-1:-1;;;;;39331:6:2;;::::2;::::0;39339:9;;39303:55;::::2;:27;:55::i;:::-;39387:56;::::0;;-1:-1:-1;;;;;39387:56:2;;::::2;::::0;;;::::2;;::::0;::::2;::::0;;;-1:-1:-1;;;;;39387:56:2;::::2;::::0;39403:10:::2;::::0;39387:56:::2;::::0;;;;;;;;;::::2;4147:5:::0;:21;;-1:-1:-1;;;;4147:21:2;-1:-1:-1;;;4147:21:2;;;38414:1037;;;;-1:-1:-1;38414:1037:2;-1:-1:-1;;38414:1037:2:o;10050:694::-;10180:30;10225:51;10291:49;10388:348;10427:17;:15;:17::i;:::-;10463:11;;10388:348;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10493:5:2;:10;10563:9;;10591:10;:29;10388:12;;:348;;-1:-1:-1;;;;10493:10:2;;;;;-1:-1:-1;10522:22:2;-1:-1:-1;;;10522:22:2;;;;;-1:-1:-1;;;;;10563:9:2;;;;-1:-1:-1;;;;;10591:29:2;;;10639:35;-1:-1:-1;;;10639:35:2;;;;;;-1:-1:-1;;;10693:28:2;;;;;;;10388:20;:348;:::i;:::-;10368:368;;;;;;10050:694;;;;;:::o;2752:37::-;;;-1:-1:-1;;;;;2752:37:2;;;-1:-1:-1;;;2752:37:2;;;;;:::o;21831:924::-;4069:5;:14;21961:15;;;;-1:-1:-1;;;4069:14:2;;;;4061:30;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;-1:-1:-1;;;4061:30:2;;;;;;;;;;;;;;;4102:5;:22;;-1:-1:-1;;;;4102:22:2;;;22109:212:::1;::::0;;::::1;::::0;::::1;::::0;;22156:10:::1;22109:212:::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;4119:5;;;;;;22079:253:::1;::::0;22109:212;;;22280:25:::1;-1:-1:-1::0;;;;;22280:14:2;::::1;:23;:25::i;:::-;22279:26;;22109:212;;::::0;;22079:15:::1;:253::i;:::-;22006:326;;;;;;22364:10;22363:11;;22345:30;;22405:10;22404:11;;22386:30;;22443:1;22433:7;:11;:26;;;;22458:1;22448:7;:11;22433:26;22429:237;;;22542:20;::::0;::::1;::::0;;-1:-1:-1;;;;;22542:20:2;;::::1;:39:::0;;::::1;22476:178:::0;::::1;-1:-1:-1::0;;;22600:20:2;;;::::1;::::0;::::1;:39:::0;::::1;22476:178:::0;;::::1;::::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;;;;22476:178:2::1;;::::0;;22429:237:::1;22683:64;::::0;;-1:-1:-1;;;;;22683:64:2;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;22688:10:::1;::::0;22683:64:::1;::::0;;;;;;;;::::1;-1:-1:-1::0;;4147:5:2;:21;;-1:-1:-1;;;;4147:21:2;-1:-1:-1;;;4147:21:2;;;-1:-1:-1;21831:924:2;;;;-1:-1:-1;21831:924:2;-1:-1:-1;;21831:924:2:o;6188:3809::-;6339:26;6380:37;6432:20;6467:35;6530:32;6541:9;6552;6530:10;:32::i;:::-;6575:31;;:::i;:::-;6617;;:::i;:::-;6702:16;;;;;;6676:23;6702:16;;;:5;:16;;;;;;;;6759;;;;;;;;;;;;7074:27;;;;7214:34;;;;7267:17;-1:-1:-1;;;7267:17:2;;;6790:509;;7015:22;;;6790:509;;;-1:-1:-1;;;;;7214:34:2;;;6957:39;;;6790:509;7175:20;-1:-1:-1;;;7175:20:2;;;6913:25;;;6790:509;;;;-1:-1:-1;;;;;7120:36:2;;;;6853:41;;;6790:509;;;;7074:27;;;;6790:509;;;;;;;6759:16;7314:31;;;;;;7646:27;;;;7786:34;;;;7839:17;-1:-1:-1;;;7839:17:2;;;7362:509;;7587:22;;;7362:509;;;-1:-1:-1;;;;;7786:34:2;;;7529:39;;;7362:509;7747:20;-1:-1:-1;;;7747:20:2;;;7485:25;;;7362:509;-1:-1:-1;;;;;7692:36:2;;;;7425:41;;;7362:509;7646:27;;;;7362:509;;;;;;;7886:31;;;;;;-1:-1:-1;;7941:27:2;;;;;;;;7963:5;7941:27;-1:-1:-1;;;;;7941:27:2;;;;-1:-1:-1;;;7941:27:2;;;;;;;;;;;;;;;;;-1:-1:-1;;;7941:27:2;;;;;;;;;;;-1:-1:-1;;;7941:27:2;;;;;;;;-1:-1:-1;;;7941:27:2;;;;;;;;;;-1:-1:-1;;;7941:27:2;;;;;;;;-1:-1:-1;;;7941:27:2;;;;;;;;;;;;;;7985:23;;;;;;7981:2009;;;8079:10;:25;;;8051:10;:25;;;:53;8167:10;:41;;;8123:10;:41;;;:85;8255:10;:25;;;8227:10;:25;;;:53;8341:10;:39;;;8299:10;:39;;;:81;8025:370;;;;;;;;;;;;;7981:2009;8431:9;8417:23;;:6;:11;;;:23;;;8413:1577;;;8457:11;8471:17;:15;:17::i;:::-;8766:11;;;;8796:23;;;;8838:9;;8866:10;:29;8968;;;;8457:31;;-1:-1:-1;8522:20:2;;;;;;8678:334;;:12;;8457:31;;8522:20;;8766:11;8796:23;-1:-1:-1;;;;;8838:9:2;;-1:-1:-1;;;;;8866:29:2;;;8914:35;-1:-1:-1;;;8914:35:2;;;;;;8678:26;:334;:::i;:::-;8503:509;;;;;;9098:10;:25;;;9070:10;:25;;;9053:14;:42;:70;9264:10;:41;;;9199:10;:41;;;9142:33;:98;:163;9359:10;:25;;;9331:10;:25;;;9324:4;:32;:60;9521:10;:39;;;9458:10;:39;;;9403:31;:94;:157;9027:548;;;;;;;;;;;;;;;;;8413:1577;9662:10;:25;;;9634:10;:25;;;:53;9750:10;:41;;;9706:10;:41;;;:85;9838:10;:25;;;9810:10;:25;;;:53;9924:10;:39;;;9882:10;:39;;;:81;9608:370;;;;;;;;;;;6188:3809;;;;;;;;:::o;825:100:38:-;874:6;900:17;:15;:17::i;:::-;893:24;;825:100;:::o;1339:31:2:-;;;-1:-1:-1;;;;;1339:31:2;;:::o;1658:33::-;;;;-1:-1:-1;;;1658:33:2;;;;;:::o;1500:30::-;;;-1:-1:-1;;;;;1500:30:2;;:::o;286:136:38:-;370:20;:44;286:136::o;1580:26:2:-;;;-1:-1:-1;;;1580:26:2;;;;;:::o;2836:44::-;;;;:::o;3325:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3325:49:2;;;-1:-1:-1;;;3325:49:2;;;;;;;;;;;;;;-1:-1:-1;;;;;3325:49:2;;-1:-1:-1;;;3325:49:2;;;;;-1:-1:-1;;;3325:49:2;;;;;;-1:-1:-1;;;;;3325:49:2;;:::o;11569:639::-;11648:5;:18;-1:-1:-1;;;;;11648:18:2;:23;11640:38;;;;;-1:-1:-1;;;11640:38:2;;;;;;;;;;;;-1:-1:-1;;;11640:38:2;;;;;;;;;;;;;;;11691:10;11704:41;11732:12;11704:27;:41::i;:::-;11691:54;;11759:18;11779:22;11805:42;11829:17;:15;:17::i;:::-;11805:12;;:23;:42::i;:::-;11868:284;;;;;;;;-1:-1:-1;;;;;11868:284:2;;;;;;;;;;;;;;;;-1:-1:-1;11868:284:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12136:4;11868:284;;;;;;;;11860:5;:292;;-1:-1:-1;;;;;;;;;11860:292:2;;;;;-1:-1:-1;;;;11860:292:2;-1:-1:-1;;;11860:292:2;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11860:292:2;;;;;;;-1:-1:-1;;;;11860:292:2;-1:-1:-1;;;11860:292:2;;;;;;;;;;;;;12170:30;;;;;;;;;;;;;11868:284;;-1:-1:-1;11868:284:2;;-1:-1:-1;12170:30:2;;;;;;;;;11569:639;;;;:::o;430:136:38:-;514:20;:44;430:136::o;933:105::-;1025:4;;933:105;:::o;2236:1956:27:-;2425:10;2437:16;2466;2492:11;2485:18;;:4;:18;;;;;;;;2466:37;;2525:1;2518:4;:8;;;:35;;;;;2537:11;2530:18;;:4;:18;;;;;;;;:23;;;;2518:35;2514:53;;;-1:-1:-1;;2555:12:27;2514:53;2619:3;2615:1570;;;2640:13;2655:12;2671:20;2680:10;2671:8;:20::i;:::-;2810:1;2854:13;;;;;2774:12;2854:13;;;;;;;;;;;2810:11;;;;;;;2789:33;;-1:-1:-1;;2789:33:27;2854:20;;;3024:11;;;;-1:-1:-1;2639:52:27;;-1:-1:-1;2639:52:27;;-1:-1:-1;2789:33:27;3024:11;3168:172;;3329:11;3318:6;3312:13;;3299:10;:26;3298:42;3168:172;;;3267:11;3228:34;3255:6;3228:26;:34::i;:::-;3219:6;:43;3213:50;;3200:10;:63;3199:79;3168:172;3161:179;;2615:1570;;;;;;;3472:13;3487:12;3503:24;3512:10;3525:1;3512:14;3503:8;:24::i;:::-;3471:56;;;;3601:12;3634:1;3624:6;3619:11;;:1;:11;;3618:17;3616:20;3601:35;;3651:14;3684:4;3668;:13;3673:7;3668:13;;;;;;;;;;;;;;;;:20;3651:37;;3830:6;3840:1;3830:11;;3816:25;;3974:11;:199;;4162:11;4151:6;4133:15;:24;4127:31;;4110:10;4123:1;4110:14;:48;4109:64;3974:199;;;4078:11;4067:6;4029:35;4057:6;4029:27;:35::i;:::-;:44;4023:51;;4006:10;4019:1;4006:14;:68;4005:84;3974:199;3967:206;;2615:1570;;;;;2236:1956;;;;;;;;:::o;1384:2611:28:-;1447:20;1480:15;1505:1;1498:4;:8;;;:57;;1549:4;1542:12;;1498:57;;;1525:4;1518:12;;1517:13;;1498:57;1480:75;-1:-1:-1;654:9:28;1574:28;;;1566:42;;;;;-1:-1:-1;;;1566:42:28;;;;;;;;;;;;-1:-1:-1;;;1566:42:28;;;;;;;;;;;;;;;1621:13;1647:3;1637:13;;:93;;-1:-1:-1;;;1637:93:28;;;1658:34;1637:93;1621:109;;;-1:-1:-1;1755:3:28;1745:13;;:18;1741:83;;1782:34;1774:42;1821:3;1773:51;1741:83;1849:3;1839:13;;:18;1835:83;;1876:34;1868:42;1915:3;1867:51;1835:83;1943:3;1933:13;;:18;1929:83;;1970:34;1962:42;2009:3;1961:51;1929:83;2037:4;2027:14;;:19;2023:84;;2065:34;2057:42;2104:3;2056:51;2023:84;2132:4;2122:14;;:19;2118:84;;2160:34;2152:42;2199:3;2151:51;2118:84;2227:4;2217:14;;:19;2213:84;;2255:34;2247:42;2294:3;2246:51;2213:84;2322:4;2312:14;;:19;2308:84;;2350:34;2342:42;2389:3;2341:51;2308:84;2417:5;2407:15;;:20;2403:85;;2446:34;2438:42;2485:3;2437:51;2403:85;2513:5;2503:15;;:20;2499:85;;2542:34;2534:42;2581:3;2533:51;2499:85;2609:5;2599:15;;:20;2595:85;;2638:34;2630:42;2677:3;2629:51;2595:85;2705:5;2695:15;;:20;2691:85;;2734:34;2726:42;2773:3;2725:51;2691:85;2801:6;2791:16;;:21;2787:86;;2831:34;2823:42;2870:3;2822:51;2787:86;2898:6;2888:16;;:21;2884:86;;2928:34;2920:42;2967:3;2919:51;2884:86;2995:6;2985:16;;:21;2981:86;;3025:34;3017:42;3064:3;3016:51;2981:86;3092:6;3082:16;;:21;3078:86;;3122:34;3114:42;3161:3;3113:51;3078:86;3189:7;3179:17;;:22;3175:86;;3220:33;3212:41;3258:3;3211:50;3175:86;3286:7;3276:17;;:22;3272:85;;3317:32;3309:40;3354:3;3308:49;3272:85;3382:7;3372:17;;:22;3368:83;;3413:30;3405:38;3448:3;3404:47;3368:83;3476:7;3466:17;;:22;3462:78;;3507:25;3499:33;3537:3;3498:42;3462:78;3564:1;3557:4;:8;;;3553:47;;;3595:5;-1:-1:-1;;3575:25:28;;;;;;3567:33;;3553:47;3964:7;3955:5;:17;:22;:30;;3984:1;3955:30;;;3980:1;3955:30;3938:48;;3948:2;3939:5;:11;;3938:48;3915:72;;1384:2611;;;;;:::o;1411:3315:25:-;1668:24;;;;-1:-1:-1;;;;;1833:41:25;;;;;;;;1900:20;;;;;;1933:1379;;1961:30;1994:61;2018:15;2042:7;2036:3;:13;1994:61;;2051:3;1994:15;:61::i;:::-;1961:94;;2081:10;:224;;2218:87;2248:19;2269:18;2289:9;2300:4;2218:29;:87::i;:::-;2081:224;;;2111:87;2141:18;2161:19;2182:9;2193:4;2111:29;:87::i;:::-;2070:235;;2350:8;2324:22;:34;2320:343;;2379:18;2360:37;;2320:343;;;2453:210;2515:19;2557:9;2589:22;2634:10;2453:39;:210::i;:::-;2434:229;;2320:343;1933:1379;;;;2708:10;:226;;2846:88;2876:19;2897:18;2917:9;2928:5;2846:29;:88::i;:::-;2708:226;;;2738:88;2768:18;2788:19;2809:9;2820:5;2738:29;:88::i;:::-;2696:238;;2982:9;2962:15;2961:16;;2953:38;2949:351;;3012:18;2993:37;;2949:351;;;3086:214;3149:19;3191:9;3232:15;3231:16;;3271:10;3086:40;:214::i;:::-;3067:233;;2949:351;-1:-1:-1;;;;;3335:38:25;;;;;;;3427:746;;;;3469:3;:14;;;;;3476:7;3469:14;:147;;3531:85;3561:16;3579:19;3600:9;3611:4;3531:29;:85::i;:::-;3469:147;;;3503:8;3469:147;3458:158;;3643:3;:15;;;;;3651:7;3650:8;3643:15;:150;;3707:86;3737:16;3755:19;3776:9;3787:5;3707:29;:86::i;:::-;3643:150;;;3678:9;3643:150;3631:162;;3427:746;;;3837:3;:14;;;;;3844:7;3837:14;:147;;3899:85;3929:19;3950:16;3968:9;3979:4;3899:29;:85::i;:::-;3837:147;;;3871:8;3837:147;3826:158;;4011:3;:15;;;;;4019:7;4018:8;4011:15;:150;;4075:86;4105:19;4126:16;4144:9;4155:5;4075:29;:86::i;:::-;4011:150;;;4046:9;4011:150;3999:162;;3427:746;4266:7;4265:8;:49;;;;;4298:15;4297:16;;4277:9;:37;4265:49;4261:119;;;4352:15;4351:16;;4331:37;;4261:119;4396:7;:49;;;;;4427:18;-1:-1:-1;;;;;4407:38:25;:16;-1:-1:-1;;;;;4407:38:25;;;4396:49;4392:327;;;4595:8;4576:15;4568:35;4556:47;;4392:327;;;4648:59;4674:8;4684:7;4648:59;;4699:7;4693:3;:13;4648:59;;:25;:59::i;:::-;4636:71;;4392:327;1411:3315;;;;;;;;;;;;;:::o;947:124:23:-;999:8;-1:-1:-1;;;1028:1:23;:10;1020:19;;;;;;-1:-1:-1;1061:1:23;947:124::o;1615:122:20:-;1705:5;;;1700:16;;;;1671:8;1721:6;;;1700:28;1692:37;;;;;;1615:122;;;;:::o;1310:::-;1400:5;;;1395:16;;;;1366:8;1416:6;;;1395:28;1387:37;;;;;762:3868:18;878:14;;;-1:-1:-1;;1394:1:18;1391;1384:20;1427:9;;;;-1:-1:-1;1479:13:18;;;1463:14;;;;1459:34;;-1:-1:-1;1579:10:18;1575:185;;1628:1;1614:11;:15;1606:24;;;;;;-1:-1:-1;1683:23:18;;;;-1:-1:-1;1735:13:18;;1575:185;1891:5;1877:11;:19;1869:28;;;;;;2182:17;2260:11;2257:1;2254;2247:25;2623:12;2638;;;:26;;2761:22;;;;;3584:1;3565;:15;;3564:21;;3815:17;;;3811:21;;3804:28;3874:17;;;3870:21;;3863:28;3934:17;;;3930:21;;3923:28;3994:17;;;3990:21;;3983:28;4054:17;;;4050:21;;4043:28;4115:17;;;4111:21;;;4104:28;3144:12;;;;3140:23;;;3165:1;3136:31;2393:20;;;2382:32;;;3197:12;;;;2437:21;;;;2894:16;;;;3188:21;;;;4587:11;;;;;-1:-1:-1;;762:3868:18;;;;;;:::o;15841:3314:21:-;16207:20;;;16369:15;;;16365:573;;16401:23;16427:4;16432:5;16427:11;;;;;;;;;16401:37;;;;;;;;16427:11;;;;;;;;;16401:37;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16401:37:21;;-1:-1:-1;;;;;16401:37:21;;;;;;;;-1:-1:-1;;;16401:37:21;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16401:37:21;;;;;;;-1:-1:-1;16457:27:21;;;16453:286;;16510:229;16542:4;16569;16596;16623:9;16655:18;16696:24;16510:9;:229::i;:::-;16503:236;;16453:286;16780:4;:19;;;16818:4;:38;;;16875:4;:36;;;16754:172;;;;;;;;;16365:573;16966:17;;;16950:13;;17097:297;17142:4;16966;:17;17213:4;17236:5;17260:9;17288:18;17325:24;17368:11;17097:26;:297::i;:::-;16996:398;;;;17421:10;:25;;;17411:35;;:6;:35;;;17407:1741;;;17532:10;:25;;;17576:10;:44;;;17639:10;:42;;;17506:190;;;;;;;;;;;17407:1741;17728:24;;17718:34;;;;;;;17714:1434;;;17839:9;:24;;;17882:9;:43;;;17944:9;:41;;;17813:187;;;;;;;;;;;17714:1434;18143:25;;18099:24;;18357:25;;;;;18330:24;;;;18099:69;;;;;18204:34;;;18328:139;;;;;18329:102;;;;18330:52;18329:102;;;;;;;;18328:139;18279:10;:25;;;:188;18795:20;18588:227;;18780:11;18589:202;;18706:10;:44;;;18627:9;:43;;;:123;-1:-1:-1;;;;;18589:188:21;:202;18588:227;;;;;;18486:10;:44;;;:352;19110:11;18923:198;;19065:20;18924:161;;18994:10;:42;;;18925:9;:41;;;:111;-1:-1:-1;;;;;18924:161:21;;;;;;;18923:198;18857:10;:42;;;:264;18253:883;;;;;;;;;;;15841:3314;;;;;;;;;;;;;;:::o;9387:1017:26:-;9789:10;;;;;;9732:19;9789:10;;;;;;;;;;;;9862:26;;;;;9839:49;;;9810:78;;;9951:26;;;;;9928:49;;;9899:78;;;10062:35;;;;;10220:19;-1:-1:-1;;;;;;;;10062:35:26;;;;;;10026:71;;;9988:109;;;;;;;;;;;;10154:26;;;;10137:43;;;10108:72;;;;;-1:-1:-1;;10108:72:26;;;;;;;10220:19;;;;;10213:26;;;10191:48;;;;;;;;;;;;;;;10320:33;;;;;-1:-1:-1;;;;;10320:33:26;;;10286:67;;;10250:103;;;-1:-1:-1;;;;;;10250:103:26;;;;;;;;;;10379:17;-1:-1:-1;;;10379:17:26;;;;;9387:1017::o;392:242:19:-;454:9;484:1;480;:5;;;476:151;;;534:1;-1:-1:-1;;;;;510:25:19;528:1;527:2;;515:1;:15;511:19;;;-1:-1:-1;;;;;510:25:19;;502:40;;;;;-1:-1:-1;;;502:40:19;;;;;;;;;;;;-1:-1:-1;;;502:40:19;;;;;;;;;;;;;;;476:151;;;607:1;-1:-1:-1;;;;;583:25:19;600:1;588;:14;584:18;;;-1:-1:-1;;;;;583:25:19;;;575:40;;;;;-1:-1:-1;;;575:40:19;;;;;;;;;;;;-1:-1:-1;;;575:40:19;;;;;;;;;;;;;;4421:4424:28;4494:10;837;-1:-1:-1;;;;;4625:30:28;;;;;;:63;;-1:-1:-1;1019:49:28;-1:-1:-1;;;;;4659:29:28;;;4625:63;4617:77;;;;;-1:-1:-1;;;4617:77:28;;;;;;;;;;;;-1:-1:-1;;;4617:77:28;;;;;;;;;;;;;;;4721:27;4746:2;4721:27;;;;-1:-1:-1;;;;;4857:41:28;;4854:1;4850:49;4949:9;;;5025:18;5019:25;;5016:1;5012:33;5095:9;;;5171:10;5165:17;;5162:1;5158:25;5233:9;;;5309:6;5303:13;;5300:1;5296:21;5367:9;;;5443:4;5437:11;;5434:1;5430:19;;;5499:9;;;5575:3;5569:10;;5566:1;5562:18;5630:9;;;5700:10;;;5697:1;5693:18;;;5761:9;;;;5824:10;;;5066;;5204;;;5338;;;5470;5601;;;5732;5855;5899:3;5892:10;;5888:80;;5924:3;5918;:9;5908:5;:20;;5904:24;;5888:80;;;5964:3;5958;:9;5948:5;:20;;5944:24;;5888:80;6072:9;;;6067:3;6063:19;;;6105:11;;;;6179:9;;;;6247;;6238:19;;;6280:11;;;6354:9;6422;;6413:19;;;6455:11;;;6529:9;6597;;6588:19;;;6630:11;;;6704:9;6772;;6763:19;;;6805:11;;;6879:9;6947;;6938:19;;;6980:11;;;7054:9;7122;;7113:19;;;7155:11;;;7229:9;7297;;7288:19;;;7330:11;;;7404:9;7472;;7463:19;;;7505:11;;;7579:9;7647;;7638:19;;;7680:11;;;7754:9;7822;;7813:19;;;7855:11;;;7929:9;7997;;7988:19;;;8030:11;;;8104:9;8172;;8163:19;;;8205:11;;;;8279:9;;;;8347;;8338:19;;;;;6072:9;-1:-1:-1;;5997:17:28;;6019:2;5996:25;6149:10;;;;;;;6139:21;6324:10;;;;;;;6314:21;;;;6499:10;;;;;;;6489:21;;;;6674:10;;;;;;;6664:21;;;;6849:10;;;;;;;6839:21;;;;7024:10;;;;;;;7014:21;;;;7199:10;;;;;;;7189:21;7374:10;;;;;;;7364:21;7549:10;;;;;;;7539:21;7724:10;;;;;;;7714:21;7899:10;;;;;;;7889:21;8074:10;;;;;;;8064:21;8249:10;;;;;;;8239:21;8424:10;;;;;;;8414:21;8489:24;8481:32;;-1:-1:-1;;8567:53:28;;6011:3;8566:62;;;;8678:39;8662:55;;8661:64;;8746:17;;;;;;;;;:91;;8806:12;-1:-1:-1;;;;;8776:42:28;:26;8795:6;8776:18;:26::i;:::-;-1:-1:-1;;;;;8776:42:28;;;:61;;8830:7;8776:61;;;8821:6;8776:61;8746:91;;;8766:7;8746:91;8739:98;4421:4424;-1:-1:-1;;;;;;;;;4421:4424:28:o;6414:1139:21:-;6741:19;6762:25;6800:23;6826:4;6831:5;6826:11;;;;;;;;;6800:37;;;;;;;;6826:11;;;;;;;;;6800:37;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6800:37:21;;-1:-1:-1;;;;;6800:37:21;;;;;;;;-1:-1:-1;;;6800:37:21;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6800:37:21;;;;;;;-1:-1:-1;6930:37:21;;;6926:70;;;6977:5;6984:11;6969:27;;;;;;;6926:70;7100:11;7082:29;;:15;:29;;;:59;;;;;7139:1;7125:11;:15;7115:26;;:5;:26;;;7082:59;7078:193;;;7179:15;7158:36;;7078:193;;;7248:11;7227:32;;7078:193;7312:18;7298:32;;7299:5;7307:1;7299:9;7298:32;;;;;;;;7283:47;;7362:183;7386:4;7405:14;7434:4;7453:9;7477:18;7510:24;7362:9;:183::i;:::-;7341:4;7346:12;7341:18;;;;;;;;;:204;;:18;;;;;;;;;:204;;;;;;;;;;;;;;-1:-1:-1;;7341:204:21;;;;;;;;;;;-1:-1:-1;;7341:204:21;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;7341:204:21;;;;;;;;;;;;;-1:-1:-1;;;7341:204:21;;;;;;;;;;;;;;;;;;-1:-1:-1;7341:204:21;;;;;-1:-1:-1;;;;;;7341:204:21;-1:-1:-1;;;;;7341:204:21;;;;;;;;;-1:-1:-1;6414:1139:21;;;;;;;;;;;;;:::o;615:347:29:-;794:66;;;-1:-1:-1;;;;;794:66:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;794:66:29;;;769:102;;;;734:12;;;;769:10;;;;794:66;769:102;;;794:66;769:102;;794:66;769:102;;;;;;;;;;-1:-1:-1;;769:102:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;733:138;;;;890:7;:57;;;;-1:-1:-1;902:11:29;;:16;;:44;;;933:4;922:24;;;;;;;;;;;;;;;-1:-1:-1;922:24:29;902:44;882:72;;;;;-1:-1:-1;;;882:72:29;;;;;;;;;;;;-1:-1:-1;;;882:72:29;;;;;;;;;;;;;;;615:347;;;;;:::o;5588:324:2:-;5729:71;;;5794:4;5729:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5729:71:2;;;5698:113;;;;5642:7;;;;;;-1:-1:-1;;;;;5698:16:2;;;5729:71;;5698:113;;;;5729:71;5698:113;;5729:71;5698:113;;;;;;;;;;-1:-1:-1;;5698:113:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5662:149;;;;5830:7;:28;;;;;5856:2;5841:4;:11;:17;;5830:28;5822:37;;;;;;5888:4;5877:27;;;;;;;;;;;;;;;-1:-1:-1;5877:27:2;;-1:-1:-1;;;5588:324:2;;;;:::o;445:113:20:-;538:5;;;533:16;;;;525:25;;;;;2461:369:26;2545:7;;2617:11;2582:31;;;;-1:-1:-1;;2582:31:26;;;;;;2581:47;;-1:-1:-1;2639:13:26;2691:11;2656:31;;;;654:9:28;2656:31:26;;;;;;2655:47;2639:63;;2713:15;2760:11;2738:33;;2749:7;2739;:17;2738:33;;;;;;;;2775:1;2731:45;2713:63;;2814:8;2794:28;;-1:-1:-1;;;;;2794:28:26;;;;;;;;;2461:369;-1:-1:-1;;;;;2461:369:26:o;7939:561:21:-;8067:6;8104:1;8094:7;:11;;;8086:25;;;;;-1:-1:-1;;;8086:25:21;;;;;;;;;;;;-1:-1:-1;;;8086:25:21;;;;;;;;;;;;;;;8219:7;8211:15;;:4;:15;;;8207:35;;-1:-1:-1;8235:7:21;8228:14;;8207:35;8420:7;8404:66;8433:4;8429:8;;:1;:8;;;8404:66;;;8469:1;8444:4;8449:1;8444:7;;;;;;;;;;;;:26;;-1:-1:-1;;8444:26:21;;;;;;;;;;;;-1:-1:-1;8439:3:21;8404:66;;;-1:-1:-1;8488:4:21;;7939:561;-1:-1:-1;;;7939:561:21:o;668:109:23:-;767:1;748:20;;;;;;740:29;;;;;12974:2965:2;13084:30;13129:14;13158;13200:46;13211:6;:16;;;13229:6;:16;;;13200:10;:46::i;:::-;13259:27;;;;;;;;13281:5;13259:27;-1:-1:-1;;;;;13259:27:2;;;;-1:-1:-1;;;13259:27:2;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13259:27:2;;;;;;;;-1:-1:-1;;;13259:27:2;;;;;;;;;;;;-1:-1:-1;;;13259:27:2;;;;;;;;;;-1:-1:-1;;;13259:27:2;;;;;;;;-1:-1:-1;;;13259:27:2;;;;;;;;;;;;13370:12;;13397:16;;;;13428;;;;13459:21;;;;13259:27;;13340:177;;13370:12;;13397:16;;13428;;13459:21;13340:15;:177::i;:::-;13329:188;;13534:6;:21;;;:26;;13559:1;13534:26;13530:2402;;13595:6;:16;;;13581:30;;:6;:11;;;:30;;;13577:2344;;;13873:228;13925:45;13953:6;:16;;;13925:27;:45::i;:::-;13993;14021:6;:16;;;13993:27;:45::i;:::-;14061:6;:21;;;13873:29;:228::i;:::-;13863:238;;13577:2344;;;14141:6;:16;;;14127:30;;:6;:11;;;:30;;;14123:1798;;;14264:9;;14464:23;;;;-1:-1:-1;;;;;14264:9:2;;;;14423:413;;14510:17;:15;:17::i;:::-;14550:11;;;;14622:10;:29;14732;;;;14784:33;;;;14423:12;;:413;;14550:11;14584:15;;-1:-1:-1;;;;;14622:29:2;;;14674:35;-1:-1:-1;;;14674:35:2;;;;;;14423:18;:413;:::i;:::-;14367:5;14366:470;;-1:-1:-1;;;;14366:470:2;-1:-1:-1;;;14366:470:2;;;;;;-1:-1:-1;;;;14366:470:2;-1:-1:-1;;;14366:470:2;;;;;;;;;;;14919:19;;14989:16;;;;14867:202;;14919:19;14961:45;;:27;:45::i;:::-;15029:6;:21;;;14867:29;:202::i;:::-;14857:212;;15098:202;15150:45;15178:6;:16;;;15150:27;:45::i;:::-;15218:19;;15260:21;;;;15098:29;:202::i;:::-;15088:212;;15333:62;15356:15;15373:6;:21;;;15333:22;:62::i;:::-;15321:9;:74;;-1:-1:-1;;;;;;15321:74:2;-1:-1:-1;;;;;15321:74:2;;;;;;;;;;-1:-1:-1;14123:1798:2;;;15677:228;15729:45;15757:6;:16;;;15729:27;:45::i;:::-;15797;15825:6;:16;;;15797:27;:45::i;:::-;15865:6;:21;;;15677:29;:228::i;:::-;15667:238;;14123:1798;12974:2965;;;;;;:::o;4919:325:18:-;5045:14;5081:25;5088:1;5091;5094:11;5081:6;:25::i;:::-;5072:34;;5149:1;5134:11;5121:25;;;;;5131:1;5128;5121:25;:29;5117:120;;;-1:-1:-1;;5175:6:18;:26;5167:35;;;;;;5217:8;;4919:325;;;;;:::o;1282:291:22:-;1518:45;;;;;;;;-1:-1:-1;;1518:45:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1508:56;;;;;;;;;-1:-1:-1;1503:62:22;;;;;;;;;1282:291::o;20288:1360:21:-;20658:30;20703:51;20769:49;20868:1;20854:11;:15;;;20846:29;;;;;-1:-1:-1;;;20846:29:21;;;;;;;;;;;;-1:-1:-1;;;20846:29:21;;;;;;;;;;;;;;;20918:11;:18;20906:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20906:31:21;;20888:49;;20999:11;:18;20985:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20985:33:21;;20948:70;;21078:11;:18;21064:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21064:33:21;;21029:68;;21113:9;21108:533;21132:11;:18;21128:1;:22;21108:533;;;21337:292;21369:4;21392;21415:11;21427:1;21415:14;;;;;;;;;;;;;;21448:4;21471:5;21495:9;21523:18;21560:24;21603:11;21337:13;:292::i;:::-;21191:15;21207:1;21191:18;;;;;;;;;;;;;21228:34;21263:1;21228:37;;;;;;;;;;;;;21284:32;21317:1;21284:35;;;;;;;;-1:-1:-1;;;;;21172:457:21;;;21284:35;;;;;;;;;;;21172:457;;;;-1:-1:-1;;;;;21172:457:21;;;;;;;;;;;;;;21152:3;;21108:533;;;;20288:1360;;;;;;;;;;;;;:::o;4900:237:2:-;4998:9;4986:21;;:9;:21;;;4978:37;;;;;-1:-1:-1;;;4978:37:2;;;;;;;;;;;;-1:-1:-1;;;4978:37:2;;;;;;;;;;;;;;;-1:-1:-1;;5034:30:2;;;;;;5026:46;;;;;-1:-1:-1;;;5026:46:2;;;;;;;;;;;;-1:-1:-1;;;5026:46:2;;;;;;;;;;;;;;;654:9:28;5091:30:2;;;;;;5083:46;;;;;-1:-1:-1;;;5083:46:2;;;;;;;;;;;;-1:-1:-1;;;5083:46:2;;;;;;;;;;;;;;;4900:237;;:::o;4616:429:21:-;4790:223;;;;;;;;;;;;;;;-1:-1:-1;4790:223:21;;;;;;;;;;;;4948:4;4790:223;;;;;;;;;;;;;;4780:233;;-1:-1:-1;;4780:233:21;;;;;;;-1:-1:-1;;;4780:233:21;;;;;;;;-1:-1:-1;;;;;;4780:233:21;;;4948:4;;;4616:429::o;706:163:27:-;814:9;;822:1;814:9;;;;857:3;850:10;;;;706:163::o;683:763:15:-;745:7;777:1;773;:5;765:14;;;;;;-1:-1:-1;;;796:1:15;:40;792:105;;859:3;853:9;;;;877:8;792:105;916:19;911:1;:24;907:87;;958:2;952:8;;;;975:7;907:87;1013:11;1008:1;:16;1004:79;;1047:2;1041:8;;;;1064:7;1004:79;1102:7;1097:1;:12;1093:75;;1132:2;1126:8;;;;1149:7;1093:75;1187:5;1182:1;:10;1178:71;;1215:1;1209:7;;;;1231:6;1178:71;1268:4;1263:1;:9;1259:70;;1295:1;1289:7;;;;1311:6;1259:70;1348:3;1343:1;:8;1339:69;;1374:1;1368:7;;;;1390:6;1339:69;1427:3;1422:1;:8;1418:20;;1437:1;1432:6;683:763;;;:::o;1945:934::-;2008:7;2040:1;2036;:5;2028:14;;;;;;-1:-1:-1;2059:3:15;-1:-1:-1;;;;;2077:21:15;;:25;2073:108;;-1:-1:-1;;2119:8:15;2073:108;;;2166:3;2160:9;;;;;2073:108;2199:16;2195:20;;:24;2191:105;;-1:-1:-1;;2236:7:15;2191:105;;;2282:2;2276:8;;;;;2191:105;2314:16;2310:20;;:24;2306:105;;-1:-1:-1;;2351:7:15;2306:105;;;2397:2;2391:8;;;;;2306:105;2429:16;2425:20;;:24;2421:105;;-1:-1:-1;;2466:7:15;2421:105;;;2512:2;2506:8;;;;;2421:105;2544:15;2540:19;;:23;2536:102;;-1:-1:-1;;2580:6:15;2536:102;;;2625:1;2619:7;;;;;2536:102;2656:3;2652:7;;:11;2648:90;;-1:-1:-1;;2680:6:15;2648:90;;;2725:1;2719:7;;;;;2648:90;2756:3;2752:7;;:11;2748:90;;-1:-1:-1;;2780:6:15;2748:90;;;2825:1;2819:7;;;;;2748:90;2856:3;2852:7;;:11;2848:23;;-1:-1:-1;;2865:6:15;1945:934;;;:::o;8842:544:24:-;9012:15;9060:13;-1:-1:-1;;;;;9044:29:24;:13;-1:-1:-1;;;;;9044:29:24;;9040:98;;;9109:13;;9124;9040:98;9171:7;:207;;9303:75;9319:9;-1:-1:-1;;;;;9303:75:24;9346:13;9330;:29;-1:-1:-1;;;;;9303:75:24;-1:-1:-1;;;9303:15:24;:75::i;:::-;9171:207;;;9198:85;9224:9;-1:-1:-1;;;;;9198:85:24;9251:13;9235;:29;-1:-1:-1;;;;;9198:85:24;-1:-1:-1;;;9198:25:24;:85::i;:::-;9151:227;;8842:544;;;;;;;:::o;7579:799::-;7749:15;7797:13;-1:-1:-1;;;;;7781:29:24;:13;-1:-1:-1;;;;;7781:29:24;;7777:98;;;7846:13;;7861;7777:98;7909:45;316:2:17;7909:45:24;;;;-1:-1:-1;;;;;7986:29:24;;;7965:50;;;8036:17;;8028:26;;;;;;8087:7;:283;;8357:13;-1:-1:-1;;;;;8300:70:24;:54;8316:10;8328;8340:13;-1:-1:-1;;;;;8300:54:24;:15;:54::i;:::-;:70;;;;;;8087:283;;;8114:166;8161:64;8187:10;8199;8211:13;-1:-1:-1;;;;;8161:64:24;:25;:64::i;:::-;8248:13;-1:-1:-1;;;;;8114:166:24;:24;:166::i;:::-;8067:303;7579:799;-1:-1:-1;;;;;;;7579:799:24:o;5338:564::-;5511:16;5559:1;5548:8;-1:-1:-1;;;;;5548:12:24;;5540:21;;;;;;5592:1;5580:9;-1:-1:-1;;;;;5580:13:24;;5572:22;;;;;;5694:10;:200;;5818:76;5858:8;5868:9;5879:8;5889:4;5818:39;:76::i;5694:200::-;5724:74;5762:8;5772:9;5783:8;5793:4;5724:37;:74::i;6457:564::-;6632:16;6680:1;6669:8;-1:-1:-1;;;;;6669:12:24;;6661:21;;;;;;6713:1;6701:9;-1:-1:-1;;;;;6701:13:24;;6693:22;;;;;;6809:10;:204;;6937:76;6975:8;6985:9;6996;7007:5;6937:37;:76::i;6809:204::-;6839:78;6879:8;6889:9;6900;6911:5;6839:39;:78::i;2208:1950:21:-;2450:18;;:::i;:::-;2513:19;;2496:36;;-1:-1:-1;;;;;2555:13:21;;:29;;2583:1;2555:29;;;2571:9;2555:29;2543:41;-1:-1:-1;3204:31:21;3256:16;3238:15;:34;:280;;3332:15;3305:24;:42;;;:213;;3513:5;3305:213;;;3391:4;:19;;;3363:47;;:24;:47;;;;:134;;3478:19;;3451:46;;3363:134;;;3430:1;3363:134;3238:280;;;3288:1;3238:280;3204:314;;3549:601;;;;;;;;3596:14;3549:601;;;;;;3681:5;3667:19;;3673:4;3667:11;;:19;3645:4;:19;;;:41;3549:601;;;;;;3851:9;-1:-1:-1;;;;;3825:35:21;3844:3;3834:5;3826:14;;-1:-1:-1;;;;;3826:21:21;;;-1:-1:-1;;;;;3825:35:21;;;;;;;3740:4;:60;;;:121;-1:-1:-1;;;;;3549:601:21;;;;;3893:4;3549:601;;;;;;4124:9;-1:-1:-1;;;;;4032:101:21;4096:24;4033:87;;4065:2;4042:18;-1:-1:-1;;;;;4034:27:21;-1:-1:-1;;;;;4034:33:21;;;4033:87;-1:-1:-1;;;;;4032:101:21;;;;;;;3949:4;:58;;;:185;-1:-1:-1;;;;;3549:601:21;;;;3529:621;;;;2208:1950;;;;;;;;:::o;12611:1848::-;12971:29;;:::i;:::-;13002:28;;:::i;:::-;13125:4;13130:5;13125:11;;;;;;;;;13112:24;;;;;;;;13125:11;;;;;;;;;13112:24;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13112:24:21;;-1:-1:-1;;;;;13112:24:21;;;;;;;;-1:-1:-1;;;13112:24:21;;;;;;;;;;;;;-1:-1:-1;;;;;13112:24:21;;;;;;-1:-1:-1;13254:44:21;;13258:4;;13291:6;13254:3;:44::i;:::-;13250:731;;;13348:6;13319:35;;:10;:25;;;:35;;;13315:655;;;13484:30;;13315:655;13637:10;13670:265;13706:10;13743:6;13776:4;13807:9;13843:18;13888:24;13670:9;:265::i;:::-;13607:347;;;;;;13315:655;14060:4;14079:11;14065:25;;14066:5;14074:1;14066:9;14065:25;;;;;;;;14060:31;;;;;;;;;14047:44;;;;;;;;14060:31;;;;;;;;;14047:44;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14047:44:21;;-1:-1:-1;;;;;14047:44:21;;;;;;;;-1:-1:-1;;;14047:44:21;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14047:44:21;;;;;;-1:-1:-1;14102:49:21;;14131:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14131:20:21;;-1:-1:-1;;;;;14131:20:21;;;;;;;;-1:-1:-1;;;14131:20:21;;;;;;;;;;;;;;;-1:-1:-1;;;;;14131:20:21;;;;;;-1:-1:-1;14102:49:21;14261:44;14265:4;14271:10;:25;;;14298:6;14261:3;:44::i;:::-;14253:60;;;;;-1:-1:-1;;;14253:60:21;;;;;;;;;;;;-1:-1:-1;;;14253:60:21;;;;;;;;;;;;;;;14399:52;14412:4;14418;14424:6;14432:5;14439:11;14399:12;:52::i;:::-;14392:59;;;;12611:1848;;;;;;;;;;;;:::o;16270:3094:2:-;16448:30;16502:42;:9;16516:5;16523:9;16534;16502:13;:42::i;:::-;16589:20;;16682;;16491:53;;-1:-1:-1;16589:20:2;16557:29;;16855:19;;;;;16851:1885;;16891:11;16905:17;:15;:17::i;:::-;17200:5;:10;17270:9;;17298:10;:29;16891:31;;-1:-1:-1;16956:20:2;;;;;;17112:331;;:12;;16891:31;;16956:20;;-1:-1:-1;;;17200:10:2;;;;;17229:22;-1:-1:-1;;;17229:22:2;;;;;-1:-1:-1;;;;;17270:9:2;;-1:-1:-1;;;;;17298:29:2;;;17346:35;-1:-1:-1;;;17346:35:2;;;;;;-1:-1:-1;;;17400:28:2;;;;;17112:26;:331;:::i;:::-;17491:19;;16937:506;;-1:-1:-1;16937:506:2;;-1:-1:-1;16937:506:2;-1:-1:-1;;;;;;17491:19:2;17570:412;:5;17601:9;17629:4;17652:14;17685:21;17725;16937:506;;17850:4;17460:28;17491:19;16937:506;17570:12;:412::i;:::-;17555:427;-1:-1:-1;18012:411:2;:5;18043:9;18071:4;18094:14;18127:21;18167;18207:33;18259:14;18292:4;18315;18338:20;18377:31;18012:12;:411::i;:::-;18461:11;;;17997:426;;-1:-1:-1;;;;18461:11:2;;;;;18517:97;;;;18554:44;18574:9;18585:12;18554:10;:19;;:44;;;;;:::i;:::-;18632:12;18628:97;;;18665:44;:10;18685:9;18696:12;18665:19;:44::i;:::-;16851:1885;;;;;;;18749:28;;18811:174;:5;18850:9;18874;18898:4;18917:21;18953;18811:24;:174::i;:::-;18748:237;;-1:-1:-1;18748:237:2;-1:-1:-1;18998:75:2;:8;19014:14;18748:237;;18998:15;:75::i;:::-;19164:1;19147:14;:18;;;19143:214;;;19186:12;19182:75;;;19219:22;:5;19231:9;19219:11;:22::i;:::-;19275:12;19271:75;;;19308:22;:5;19320:9;19308:11;:22::i;:::-;16270:3094;;;;;;;;;;;;;:::o;9737:421:24:-;9883:14;9942:1;9930:9;:13;;;:220;;10068:82;:71;10084:13;10099;10122:9;10134:4;10068:15;:71::i;:::-;:80;:82::i;:::-;9930:220;;;9964:84;:73;9980:13;9995;10019:9;10018:10;;10031:5;9964:15;:73::i;:84::-;9963:85;;9910:240;9737:421;-1:-1:-1;;;;9737:421:24:o;10509:::-;10655:14;10714:1;10702:9;:13;;;:220;;10840:82;:71;10856:13;10871;10894:9;10906:4;10840:15;:71::i;10702:220::-;10736:84;:73;10752:13;10767;10791:9;10790:10;;10803:5;10736:15;:73::i;503:169:30:-;626:9;;;640;;637:16;;622:32;;602:63::o;3664:1116:24:-;3842:7;4022:3;4018:755;;;4042:16;-1:-1:-1;;;;;4080:27:24;;;:174;;4202:52;4218:6;-1:-1:-1;;;4244:9:24;-1:-1:-1;;;;;4202:52:24;:15;:52::i;:::-;4080:174;;;-1:-1:-1;;;;;4131:47:24;;316:2:17;4132:33:24;;;4131:47;;;;;;4080:174;4042:227;-1:-1:-1;4293:43:24;:31;-1:-1:-1;;;;;4293:17:24;;4042:227;4293:21;:31::i;:::-;:41;:43::i;:::-;4286:50;;;;;4018:755;4369:16;-1:-1:-1;;;;;4407:27:24;;;:207;;4552:62;4578:6;-1:-1:-1;;;4604:9:24;-1:-1:-1;;;;;4552:62:24;:25;:62::i;:::-;4407:207;;;4458:70;316:2:17;4483:33:24;;;-1:-1:-1;;;;;4458:70:24;;:24;:70::i;:::-;4369:260;;4665:8;4654;-1:-1:-1;;;;;4654:19:24;;4646:28;;;;;;-1:-1:-1;;;;;4741:19:24;;;;-1:-1:-1;4726:35:24;;1432:1394;1608:7;1745:11;1741:32;;-1:-1:-1;1765:8:24;1758:15;;1741:32;1805:45;316:2:17;1805:45:24;;;;1863:956;;;;-1:-1:-1;;;;;1921:50:24;;1932:17;;;;1953:6;1932:17;1953:6;1921:38;;;;;:50;1917:328;;;2014:20;;;2057:25;;;2053:176;;2168:60;2194:10;2206:8;-1:-1:-1;;;;;2168:60:24;2216:11;2168:25;:60::i;:::-;2153:76;;;;;;;2053:176;1917:328;;2276:73;2301:10;2313:35;2341:6;2327:8;-1:-1:-1;;;;;2314:21:24;:10;:21;;;;;;;2313:27;:35::i;:::-;2276:24;:73::i;:::-;2261:89;;;;;;1863:956;-1:-1:-1;;;;;2581:50:24;;2592:17;;;;2613:6;2592:17;2613:6;2581:38;;;;;:50;:74;;;;;2648:7;2635:10;:20;2581:74;2573:83;;;;;;2693:20;;;2735:72;:60;2693:10;-1:-1:-1;;;;;2735:60:24;;2693:20;2735:25;:60::i;8942:353:21:-;9010:4;9097;9092:9;;:1;:9;;;;:22;;;;;9110:4;9105:9;;:1;:9;;;;9092:22;9088:41;;;9128:1;9123:6;;:1;:6;;;;9116:13;;;;9088:41;9142:17;9166:4;9162:8;;:1;:8;;;:26;;9177:1;:11;;9181:7;9177:11;9162:26;;;9173:1;9162:26;;;9142:46;;;;9199:17;9223:4;9219:8;;:1;:8;;;:26;;9234:1;:11;;9238:7;9234:11;9219:26;;;9230:1;9219:26;;;9199:46;;9265:22;;;;;8942:353;-1:-1:-1;;;;;8942:353:21:o;10263:1144::-;10481:29;;:::i;:::-;10512:28;;:::i;:::-;10558:9;10584:11;10570:25;;10571:5;10579:1;10571:9;10570:25;;;;;;;;10558:37;;;;10628:9;10658:1;10644:11;10640:15;;:1;:15;:19;10628:31;;10692:9;10712:688;-1:-1:-1;10754:1:21;10745:5;;;10744:11;10785:4;10790:15;;;10744:11;10790:15;;;;;;10785:21;;;;;;;10772:34;;;;;;;;10785:21;;;;;;;;;10772:34;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10772:34:21;;-1:-1:-1;;;;;10772:34:21;;;;;;;;-1:-1:-1;;;10772:34:21;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10772:34:21;;;;;;-1:-1:-1;10916:100:21;;10968:1;10972;10968:5;10964:9;;10992:8;;10916:100;11044:4;11059:11;11049:21;;11050:1;11054;11050:5;11049:21;;;;;;11044:27;;;;;;;11032:39;;;;;;;;11044:27;;;;;;;;;11032:39;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11032:39:21;;-1:-1:-1;;;;;11032:39:21;;;;;;;;-1:-1:-1;;;11032:39:21;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11032:39:21;;;;;11121:25;;11032:39;;-1:-1:-1;;;11111:44:21;;11115:4;;11148:6;11111:3;:44::i;:::-;11088:67;;11225:15;:62;;;;;11244:43;11248:4;11254:6;11262:9;:24;;;11244:3;:43::i;:::-;11221:90;;;11306:5;;;11221:90;11333:15;11328:60;;11358:1;11354;:5;11350:9;;11328:60;;;11383:1;11387;11383:5;11379:9;;11328:60;10712:688;;;;10263:1144;;;;;;;;;;;:::o;6433:1865:26:-;6941:10;;;;;;6891:12;6941:10;;;;;;;;;;6995:19;;-1:-1:-1;;;;;6995:19:26;6891:12;7055:60;6995:19;7100:14;7055:22;:60::i;:::-;7025:90;;7159:12;-1:-1:-1;;;;;7136:35:26;:19;-1:-1:-1;;;;;7136:35:26;;;7128:50;;;;;-1:-1:-1;;;7128:50:26;;;;;;;;;;;;-1:-1:-1;;;7128:50:26;;;;;;;;;;;;;;;-1:-1:-1;;;;;7232:25:26;;;;7202:24;;;;7201:57;;;;-1:-1:-1;7201:57:26;7271:668;;7442:11;7434:19;;:4;:19;;;7430:460;;7503:20;7474:4;:26;;:49;;;;7571:20;7542:4;:26;;:49;;;;7648:33;7610:4;:35;;;:71;;;;;-1:-1:-1;;;;;7610:71:26;;;;;-1:-1:-1;;;;;7610:71:26;;;;;;7729:14;7700:4;:26;;;:43;;;;;;;;;;;;;;;;;;;;7784:4;7762;:19;;;:26;;;;;;;;;;;;;;;;;;7843:31;7807:4;:33;;;:67;;;;;-1:-1:-1;;;;;7807:67:26;;;;;-1:-1:-1;;;;;7807:67:26;;;;;;7430:460;7904:16;;;:23;;;;-1:-1:-1;;;7904:23:26;;;7271:668;7951:41;;-1:-1:-1;;;;;;7951:41:26;-1:-1:-1;;;;;7951:41:26;;;;;8141:5;:149;;8234:56;:45;8264:14;8234:45;;8241:4;:17;;;;;;;;;;;;8234:25;;:29;;:45;;;;:::i;:::-;:54;:56::i;:::-;8141:149;;;8162:56;:45;8192:14;8162:45;;8169:4;:17;;;;;;;;;;;;8162:25;;:29;;:45;;;;:::i;:56::-;8121:169;;;;;;;-1:-1:-1;;;;;8121:169:26;;;-1:-1:-1;;;8121:169:26;;;;;;;-1:-1:-1;6433:1865:26;;;-1:-1:-1;;;;;;;;;;;;;6433:1865:26:o;1131:357:27:-;1289:11;1282:18;;:4;:18;;;;;;;;:23;;;1274:32;;;;;;1352:13;1367:12;1383:28;1399:11;1392:18;;:4;:18;;;;;;;;1383:8;:28::i;:::-;1437:1;1459:13;;;;;1422:12;1459:13;;;;;;;;;;;;:21;;1437:11;;;;;;;;1459:21;;;;;;-1:-1:-1;;;;1131:357:27:o;3617:1604:26:-;3976:15;;;;;;;3884:28;3976:15;;;;;;;;;;;4023;;;;;;;;;;3884:28;;;;3976:15;;4023;3884:28;;;;4170:24;;;;;4166:362;;-1:-1:-1;;4233:27:26;;;;4297;;;;4166:362;;;4402:5;:27;;;4379:20;:50;4357:72;;4489:5;:27;;;4466:20;:50;4444:72;;4166:362;4579:27;4617;4673:9;4659:23;;:11;:23;;;4655:361;;;-1:-1:-1;;4721:27:26;;;;4785;;;;4655:361;;;4890:5;:27;;;4867:20;:50;4845:72;;4977:5;:27;;;4954:20;:50;4932:72;;4655:361;5051:42;;;;:64;;;;;5149:42;;;;:64;;;;;-1:-1:-1;3617:1604:26;;-1:-1:-1;;;;;;;3617:1604:26:o;2060:1399:22:-;2241:24;;;;;;;;;;-1:-1:-1;;;;;2241:24:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2241:24:22;;;;;;;;;:17;2314:19;;;;2310:280;;2358:15;;-1:-1:-1;;;;;2358:19:22;2350:34;;;;;-1:-1:-1;;;2350:34:22;;;;;;;;;;;;-1:-1:-1;;;2350:34:22;;;;;;;;;;;;;;;-1:-1:-1;2459:15:22;;2310:280;;;2546:15;;2523:55;;2563:14;2523:22;:55::i;:::-;2507:71;;2310:280;2641:19;2685:107;2724:5;:30;;;2701:20;:53;2756:5;:15;;;-1:-1:-1;;;;;2685:107:22;-1:-1:-1;;;2685:15:22;:107::i;:::-;2641:162;;2814:19;2858:107;2897:5;:30;;;2874:20;:53;2929:5;:15;;;-1:-1:-1;;;;;2858:107:22;-1:-1:-1;;;2858:15:22;:107::i;:::-;2814:162;;3025:14;:19;;3043:1;3025:19;3021:55;;3046:30;;-1:-1:-1;;;;;;3046:30:22;-1:-1:-1;;;;;3046:30:22;;;;;3021:55;3087:29;;;:52;;;3150:29;;;:52;;;-1:-1:-1;;;;;3217:15:22;;;;;:34;;;3250:1;3236:11;-1:-1:-1;;;;;3236:15:22;;3217:34;3213:239;;;3363:16;;;:31;;-1:-1:-1;;;;;;3363:31:22;;-1:-1:-1;;;;;3363:31:22;;;;;;;;3409;;;-1:-1:-1;;;3409:31:22;;;;;;;;;;;;;;;3213:239;2060:1399;;;;;;;;:::o;8490:114:26:-;8586:10;;;;;;;;;;;;;;;;;;8579:17;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8579:17:26;;;8490:114::o;366:113:23:-;469:1;-1:-1:-1;;;;;449:21:23;;;;441:30;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o"},"methodIdentifiers":{"advanceTime(uint256)":"07e32f0a","blockTimestamp()":"adb61832","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(address,address,uint24,int24)":"14f2705c","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","rewardSlot()":"94fd4a3e","setFactory(address)":"5bb47808","setFeeGrowthGlobal0X128(uint256)":"d380c679","setFeeGrowthGlobal1X128(uint256)":"f6eb760f","setFeeProtocol(uint8,uint8)":"8206a4d1","setRewardRate(uint144,uint32)":"218064e5","setTime(uint256)":"3beb26c4","slot0()":"3850c7bd","snapshotCumulativesInside(int24,int24)":"a38807f2","swap(address,bool,int256,uint160,bytes)":"128acb08","tickBitmap(int16)":"5339c296","tickSpacing()":"d0c93a7c","ticks(int24)":"f30dba93","time()":"16ada547","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\":false,\"internalType\":\"uint144\",\"name\":\"rewardPerSecondX48\",\"type\":\"uint144\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"rewardRateEffectiveUntil\",\"type\":\"uint32\"}],\"name\":\"SetRewardRate\",\"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\":\"uint256\",\"name\":\"by\",\"type\":\"uint256\"}],\"name\":\"advanceTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockTimestamp\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"_fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"_tickSpacing\",\"type\":\"int24\"}],\"name\":\"initialize\",\"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\":\"\",\"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\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityCumulativeX64\",\"type\":\"uint192\"}],\"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[]\"},{\"internalType\":\"uint192[]\",\"name\":\"rewardPerLiquidityCumulativeX64s\",\"type\":\"uint192[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"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\":\"rewardSlot\",\"outputs\":[{\"internalType\":\"uint144\",\"name\":\"rewardPerSecondX48\",\"type\":\"uint144\"},{\"internalType\":\"uint32\",\"name\":\"rewardRateEffectiveUntil\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory_\",\"type\":\"address\"}],\"name\":\"setFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_feeGrowthGlobal0X128\",\"type\":\"uint256\"}],\"name\":\"setFeeGrowthGlobal0X128\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_feeGrowthGlobal1X128\",\"type\":\"uint256\"}],\"name\":\"setFeeGrowthGlobal1X128\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint144\",\"name\":\"rewardPerSecondX48\",\"type\":\"uint144\"},{\"internalType\":\"uint32\",\"name\":\"rewardRateEffectiveUntil\",\"type\":\"uint32\"}],\"name\":\"setRewardRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time_\",\"type\":\"uint256\"}],\"name\":\"setTime\",\"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\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityInsideX64\",\"type\":\"uint192\"}],\"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\":\"\",\"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\":\"\",\"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\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityOutsideX64\",\"type\":\"uint192\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"time\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":{\"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\"}},\"flash(address,uint256,uint256,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IElixirFlashCallback#elixirFlashCallbackCan 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(address,address,uint24,int24)\":{\"params\":{\"_fee\":\"The pool's fee in hundredths of a bip, i.e. 1e-6\",\"_tickSpacing\":\"The pool tick spacing\",\"_token0\":\"The first of the two tokens of the pool, sorted by address\",\"_token1\":\"The second of the two tokens of the pool, sorted by address\"}},\"initialize(uint160)\":{\"details\":\"not locked because it initializes unlocked\",\"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 IElixirMintCallback#elixirMintCallback 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\"}},\"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\"}},\"setFeeProtocol(uint8,uint8)\":{\"params\":{\"feeProtocol0\":\"new protocol fee for token0 of the pool\",\"feeProtocol1\":\"new protocol fee for token1 of the pool\"}},\"setRewardRate(uint144,uint32)\":{\"params\":{\"rewardPerSecondX48\":\"The new reward rate per second (in Q48)\",\"rewardRateEffectiveUntil\":\"The timestamp when the new reward rate will expire\"}},\"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 IElixirSwapCallback#elixirSwapCallback\",\"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\"}}},\"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\"},\"SetRewardRate(uint144,uint32)\":{\"notice\":\"Emitted when the reward rate is changed by the owner\"},\"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 IElixirFactory 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(address,address,uint24,int24)\":{\"notice\":\"Initialize the pool to set immutable parameters\"},\"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\"},\"rewardSlot()\":{\"notice\":\"The rewardSlot storage slot in the pool stores variables necessary to update Oracle.Observation.rewardPerLiquidityCumulativeX64 accumulator.\"},\"setFeeProtocol(uint8,uint8)\":{\"notice\":\"Set the denominator of the protocol's % share of the fees\"},\"setRewardRate(uint144,uint32)\":{\"notice\":\"Set the reward rate the active liquidity receives per second\"},\"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\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/MockTimeElixirPool.sol\":\"MockTimeElixirPool\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/ElixirPool.sol\":{\"keccak256\":\"0x5d775a147fc8a4b970a3633f7ea45c5eaf6d881e2f1ecf08fc2520c236c4c410\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://8955a0b5c280769dbd37768f05d932cdf054cf9e48379f634beb36369d5311ee\",\"dweb:/ipfs/QmbXdQSPjWSHM8Yf64eg8jtXWizKRzEBqmWCHjgdaAKAEH\"]},\"contracts/elixir-core/interfaces/IERC20Minimal.sol\":{\"keccak256\":\"0xd38b95824b4675c864898a9c6de1f8470da22df3045b70469baf63a84ba9c07a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2410bc2a7705f0e189a561329567a7908bf7e999b858b4f6b1a3702b394397e6\",\"dweb:/ipfs/QmPoLXFfp8BJzpVtHaXMPHQsB82YUSrwpGzzzE3stt9p21\"]},\"contracts/elixir-core/interfaces/IElixirFactory.sol\":{\"keccak256\":\"0xeed23ad43ddda20bfb439f677f8f768460e46e6b2624381ea45c6dc59e56c1ea\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9bbded0c2ed0d252b28a26f18603b6c1dc6d49e761621e057d112de0cb00ead\",\"dweb:/ipfs/QmaWXq8nuhisTR5j2DfWfqYVbEJ1wWxZA6LyAdoHmiM83G\"]},\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/callback/IElixirFlashCallback.sol\":{\"keccak256\":\"0xdeaad77f26bd65623a61d416dd0eb06a016c3120ed01776a4065bda8e877974e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3df48e416cf6aacb410d048f9781951aef0ade903f6149d7522d469a605432f6\",\"dweb:/ipfs/QmSRm8Xi25ABRh7C8w2WDNUP4i7Pnro7jHML51BcgQYFds\"]},\"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol\":{\"keccak256\":\"0xc15f6629fbba11617680a3df47f3a590dcc8360b731788b2783c827c0ba3667a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5ca98b55c62541f6685c762569b82b7c7a774398f406554520f874221153250f\",\"dweb:/ipfs/QmVCL8LwVC1LuarhTUVDYijd7W4cmaU5HjVJr5KgqLEdTe\"]},\"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol\":{\"keccak256\":\"0xc9fbc830c4c6b20c2e87b16569730bce747f3c9cde95efee554f1c6f07cc60b0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b94f129f0ad86cbc99ff550c65bc0ab2b9e754b7f3c2734f09f51ffb908864d\",\"dweb:/ipfs/QmUuJ7zyX1vWC7SfpsDhBqXGCKMS24pvSzirPVMU3sSkK8\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-core/libraries/BitMath.sol\":{\"keccak256\":\"0x14c52bf69e189d123dc9fa84ebdca0d879cb020b7df4953678345a8e567aaf7f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aba03531acefeef92920d5208618ae8dfa9f9a918e2c5bfbf5798110ba8f60de\",\"dweb:/ipfs/QmUSm4Js5hMFvhBW4DvMhBPhhXTbwZ8ix9beZUNEppvAhv\"]},\"contracts/elixir-core/libraries/FixedPoint128.sol\":{\"keccak256\":\"0x558d30194d1a7f76eb5e983633625efd87b13ac0862792a69a305ce69003ab14\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89bca54921a13c0c863c055f18b3108582491fcc091d7188b58e05786c7f2b55\",\"dweb:/ipfs/QmfS5jM1WxULWx4FNB3CJC7KAWDpMpzRgFSGV5dp8RaCJr\"]},\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x3ec938fd1b7cc8751df9e2ed90fd0abf32ffacc42cf4b6edbf7138629d747944\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a741475c8a3b5ae8eac7d328170c5a6811920dac22d3800197e39abe0ba42e01\",\"dweb:/ipfs/Qmc2fs5kxp437hWxtLZ6CB8g7vt3bkwKLxE7MMo9D5TAF9\"]},\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]},\"contracts/elixir-core/libraries/Oracle.sol\":{\"keccak256\":\"0xb927015d21b9ea6fbcf518218811d938b8bba57250f77459e364421a6a6459c6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://773ae95cce9134e52b8a05574c6691869680cdd1f17129a1138c268c76b77607\",\"dweb:/ipfs/QmZsmHuzYWLWJiTD2PKuzVqfuJUB33ajQ2Rp3N3PkQAern\"]},\"contracts/elixir-core/libraries/Position.sol\":{\"keccak256\":\"0x10a2b97bd9637d674eda7b44b07968ae299ca21542a1037dac54e440fa3a9509\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e0f0fe616663505eae382788656678f8d493887756695d6fa3c94dee967c820a\",\"dweb:/ipfs/QmVeBy5kg2KRuGvrVrk9N3umzHv2697vjinBzJZf3FVSQf\"]},\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]},\"contracts/elixir-core/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0x2c9f7a00da077c5f777cd8a47711257952b2748b0fe7c188fa990b279940d78a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0a6b8809b92e411169924b7b355ebff8fac6e4e8b389318ff331d3220f02ec92\",\"dweb:/ipfs/QmZVMTo4zNPT4Rge5u3KTNr16XR7CqG1AupW3aybHty6N5\"]},\"contracts/elixir-core/libraries/SwapMath.sol\":{\"keccak256\":\"0xaf0c258b9f5d1629f1797ad13996f422f303addc1bdb5dc3333ab3f352f306b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d7a3b8d7d38ed7b7a8d7541ff4e0c78c7230c49f31a9a21eb1b5974adf80fa81\",\"dweb:/ipfs/QmXvjE4AjfYGVqRpgrGj1sgJWdjfo8mhrTnNK9fwrDYP77\"]},\"contracts/elixir-core/libraries/Tick.sol\":{\"keccak256\":\"0x20ddf3dd595491c899fde27706d0cd1d10ba2785589bd5e3d5f0830062254c3b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8d706f8b5bf653ac9cd4b5bbdfd6867eb072821b920141a283466c67f0fdf26\",\"dweb:/ipfs/QmfBZFTVNZhN4tNssH9en4Qz93tWovTijou5i6N8k9kZJM\"]},\"contracts/elixir-core/libraries/TickBitmap.sol\":{\"keccak256\":\"0x90bb71c25bffebc89c0f234a1c806f081ebb19f8ba7bc4cab693f03d4363a863\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3527c33112d6cb3f8349f0783ffcdfabb52dbfe7c2d214cba03ed25b834b0352\",\"dweb:/ipfs/QmXyJ9MrtwGEQunhyyrBnCFAEVpFqRUf8oWMfJBv3fdC3q\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-core/libraries/TransferHelper.sol\":{\"keccak256\":\"0x45053903dbe795b9309eaf4b147093082f99d78b0097f15a8c2a37d42d67d2bc\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d994b26b6da1a9b3972ea4e52aa423c65f9359c6a105128f4a357435e21c4b3e\",\"dweb:/ipfs/QmetiZX1jyobSeSnPMgYfhhg8qCsrHfF6GqbttrFLJrJzK\"]},\"contracts/elixir-core/libraries/UnsafeMath.sol\":{\"keccak256\":\"0x3c829e89e91323d9c3e0f15272baa9aa1d28291e7633ee4f1414774e6eca0a7d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f99f38de11092e98d43f1d14061fcfa7309a80ae93d2b7af99c9256c97312c23\",\"dweb:/ipfs/QmQXXUR1PhKUFVZXwwekW23YE9Zy7r3GvdtcDyc2nNTpSb\"]},\"contracts/elixir-core/test/MockTimeElixirPool.sol\":{\"keccak256\":\"0xebfd94ed08b4da4040f4d37886fff67f7b1450b8b8a4bbda21f8c363b146c254\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://24c1a776fc15e98d2a8f292adacf98f7693adef6929e717ab1c85bdc40596b46\",\"dweb:/ipfs/QmSDcisJseAenkESA7YGhbEPJPyLJZoEsCLcZ6RnEKf44Y\"]}},\"version\":1}"}},"contracts/elixir-core/test/MockTimeElixirPoolDeployer.sol":{"MockTimeElixirPoolDeployer":{"abi":[{"inputs":[{"internalType":"address","name":"_implementation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"}],"name":"PoolDeployed","type":"event"},{"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"},{"internalType":"int24","name":"tickSpacing","type":"int24"}],"name":"deploy","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b506040516103d83803806103d88339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b031661036e61006a6000398060ab528060d4525061036e6000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80635c60da1b1461003b578063fad5359f1461005f575b600080fd5b6100436100a9565b604080516001600160a01b039092168252519081900360200190f35b610043600480360360a081101561007557600080fd5b506001600160a01b03813581169160208101358216916040820135169062ffffff606082013516906080013560020b6100cd565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006101467f000000000000000000000000000000000000000000000000000000000000000086868660405160200180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff168152602001935050505060405160208183030381529060405280519060200120610276565b6040805163053c9c1760e21b81526001600160a01b038881166004830152878116602483015262ffffff87166044830152600286900b60648301529151929350908316916314f2705c9160848082019260009290919082900301818387803b1580156101b157600080fd5b505af11580156101c5573d6000803e3d6000fd5b50505050806001600160a01b0316635bb47808876040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561021857600080fd5b505af115801561022c573d6000803e3d6000fd5b5050604080516001600160a01b038516815290517ff0d1eeab175eee2e20b8dc452773bf2257b25724b323b42bc6e5b4616233ae1f9350908190036020019150a195945050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f59150506001600160a01b038116610332576040805162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c6564000000000000000000604482015290519081900360640190fd5b9291505056fea26469706673582212202c0576becf5a6c8c2de412cded8fe1f5c91a090cd5f602e733e4e9f848b999ee64736f6c63430007060033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x3D8 CODESIZE SUB DUP1 PUSH2 0x3D8 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 0x36E PUSH2 0x6A PUSH1 0x0 CODECOPY DUP1 PUSH1 0xAB MSTORE DUP1 PUSH1 0xD4 MSTORE POP PUSH2 0x36E 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 0x5C60DA1B EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xFAD5359F EQ PUSH2 0x5F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0xA9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x43 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH3 0xFFFFFF PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0xCD JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x146 PUSH32 0x0 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 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 PUSH2 0x276 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x53C9C17 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH3 0xFFFFFF DUP8 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x2 DUP7 SWAP1 SIGNEXTEND PUSH1 0x64 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 DUP4 AND SWAP2 PUSH4 0x14F2705C SWAP2 PUSH1 0x84 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5BB47808 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x22C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xF0D1EEAB175EEE2E20B8DC452773BF2257B25724B323B42BC6E5B4616233AE1F SWAP4 POP SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP2 POP LOG1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP4 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE DUP3 PUSH1 0x37 DUP3 PUSH1 0x0 CREATE2 SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x332 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A2063726561746532206661696C6564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2C SDIV PUSH23 0xBECF5A6C8C2DE412CDED8FE1F5C91A090CD5F602E733E4 0xE9 0xF8 0x48 0xB9 SWAP10 0xEE PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"210:1191:39:-:0;;;562:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;562:88:39;610:32;;;;-1:-1:-1;;;;;;610:32:39;;;-1:-1:-1;;;;;210:1191:39;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{"8527":[{"length":32,"start":171},{"length":32,"start":212}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c80635c60da1b1461003b578063fad5359f1461005f575b600080fd5b6100436100a9565b604080516001600160a01b039092168252519081900360200190f35b610043600480360360a081101561007557600080fd5b506001600160a01b03813581169160208101358216916040820135169062ffffff606082013516906080013560020b6100cd565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006101467f000000000000000000000000000000000000000000000000000000000000000086868660405160200180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff168152602001935050505060405160208183030381529060405280519060200120610276565b6040805163053c9c1760e21b81526001600160a01b038881166004830152878116602483015262ffffff87166044830152600286900b60648301529151929350908316916314f2705c9160848082019260009290919082900301818387803b1580156101b157600080fd5b505af11580156101c5573d6000803e3d6000fd5b50505050806001600160a01b0316635bb47808876040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561021857600080fd5b505af115801561022c573d6000803e3d6000fd5b5050604080516001600160a01b038516815290517ff0d1eeab175eee2e20b8dc452773bf2257b25724b323b42bc6e5b4616233ae1f9350908190036020019150a195945050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f59150506001600160a01b038116610332576040805162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c6564000000000000000000604482015290519081900360640190fd5b9291505056fea26469706673582212202c0576becf5a6c8c2de412cded8fe1f5c91a090cd5f602e733e4e9f848b999ee64736f6c63430007060033","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 0x5C60DA1B EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xFAD5359F EQ PUSH2 0x5F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0xA9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x43 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH3 0xFFFFFF PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0xCD JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x146 PUSH32 0x0 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 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 PUSH2 0x276 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x53C9C17 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH3 0xFFFFFF DUP8 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x2 DUP7 SWAP1 SIGNEXTEND PUSH1 0x64 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 DUP4 AND SWAP2 PUSH4 0x14F2705C SWAP2 PUSH1 0x84 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5BB47808 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x22C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xF0D1EEAB175EEE2E20B8DC452773BF2257B25724B323B42BC6E5B4616233AE1F SWAP4 POP SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP2 POP LOG1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP4 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE DUP3 PUSH1 0x37 DUP3 PUSH1 0x0 CREATE2 SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x332 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A2063726561746532206661696C6564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2C SDIV PUSH23 0xBECF5A6C8C2DE412CDED8FE1F5C91A090CD5F602E733E4 0xE9 0xF8 0x48 0xB9 SWAP10 0xEE PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"210:1191:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;253:39;;;:::i;:::-;;;;-1:-1:-1;;;;;253:39:39;;;;;;;;;;;;;;658:740;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;658:740:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;253:39::-;;;:::o;658:740::-;824:12;1075:122;1115:14;1165:6;1173;1181:3;1154:31;;;;;;-1:-1:-1;;;;;1154:31:39;;;;;;-1:-1:-1;;;;;1154:31:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1144:42;;;;;;1075:25;:122::i;:::-;1208:62;;;-1:-1:-1;;;1208:62:39;;-1:-1:-1;;;;;1208:62:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1068:129;;-1:-1:-1;1208:28:39;;;;;;:62;;;;;-1:-1:-1;;1208:62:39;;;;;;;;-1:-1:-1;1208:28:39;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1300:4;-1:-1:-1;;;;;1281:35:39;;1317:7;1281:44;;;;;;;;;;;;;-1:-1:-1;;;;;1281:44:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1341:18:39;;;-1:-1:-1;;;;;1341:18:39;;;;;;;;-1:-1:-1;1341:18:39;;;;;;;-1:-1:-1;1341:18:39;658:740;;;;;;;:::o;1820:590:166:-;1896:16;2020:4;2014:11;2050:66;2045:3;2038:79;2163:6;2157:4;2153:17;2146:4;2141:3;2137:14;2130:41;2207:66;2200:4;2195:3;2191:14;2184:90;2321:4;2315;2310:3;2307:1;2299:27;2287:39;-1:-1:-1;;;;;;;2353:22:166;;2345:58;;;;;-1:-1:-1;;;2345:58:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;1820:590;;;;:::o"},"methodIdentifiers":{"deploy(address,address,address,uint24,int24)":"fad5359f","implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_implementation\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolDeployed\",\"type\":\"event\"},{\"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\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"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/elixir-core/test/MockTimeElixirPoolDeployer.sol\":\"MockTimeElixirPoolDeployer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/ElixirPool.sol\":{\"keccak256\":\"0x5d775a147fc8a4b970a3633f7ea45c5eaf6d881e2f1ecf08fc2520c236c4c410\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://8955a0b5c280769dbd37768f05d932cdf054cf9e48379f634beb36369d5311ee\",\"dweb:/ipfs/QmbXdQSPjWSHM8Yf64eg8jtXWizKRzEBqmWCHjgdaAKAEH\"]},\"contracts/elixir-core/interfaces/IERC20Minimal.sol\":{\"keccak256\":\"0xd38b95824b4675c864898a9c6de1f8470da22df3045b70469baf63a84ba9c07a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2410bc2a7705f0e189a561329567a7908bf7e999b858b4f6b1a3702b394397e6\",\"dweb:/ipfs/QmPoLXFfp8BJzpVtHaXMPHQsB82YUSrwpGzzzE3stt9p21\"]},\"contracts/elixir-core/interfaces/IElixirFactory.sol\":{\"keccak256\":\"0xeed23ad43ddda20bfb439f677f8f768460e46e6b2624381ea45c6dc59e56c1ea\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9bbded0c2ed0d252b28a26f18603b6c1dc6d49e761621e057d112de0cb00ead\",\"dweb:/ipfs/QmaWXq8nuhisTR5j2DfWfqYVbEJ1wWxZA6LyAdoHmiM83G\"]},\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/callback/IElixirFlashCallback.sol\":{\"keccak256\":\"0xdeaad77f26bd65623a61d416dd0eb06a016c3120ed01776a4065bda8e877974e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3df48e416cf6aacb410d048f9781951aef0ade903f6149d7522d469a605432f6\",\"dweb:/ipfs/QmSRm8Xi25ABRh7C8w2WDNUP4i7Pnro7jHML51BcgQYFds\"]},\"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol\":{\"keccak256\":\"0xc15f6629fbba11617680a3df47f3a590dcc8360b731788b2783c827c0ba3667a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5ca98b55c62541f6685c762569b82b7c7a774398f406554520f874221153250f\",\"dweb:/ipfs/QmVCL8LwVC1LuarhTUVDYijd7W4cmaU5HjVJr5KgqLEdTe\"]},\"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol\":{\"keccak256\":\"0xc9fbc830c4c6b20c2e87b16569730bce747f3c9cde95efee554f1c6f07cc60b0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b94f129f0ad86cbc99ff550c65bc0ab2b9e754b7f3c2734f09f51ffb908864d\",\"dweb:/ipfs/QmUuJ7zyX1vWC7SfpsDhBqXGCKMS24pvSzirPVMU3sSkK8\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-core/libraries/BitMath.sol\":{\"keccak256\":\"0x14c52bf69e189d123dc9fa84ebdca0d879cb020b7df4953678345a8e567aaf7f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aba03531acefeef92920d5208618ae8dfa9f9a918e2c5bfbf5798110ba8f60de\",\"dweb:/ipfs/QmUSm4Js5hMFvhBW4DvMhBPhhXTbwZ8ix9beZUNEppvAhv\"]},\"contracts/elixir-core/libraries/FixedPoint128.sol\":{\"keccak256\":\"0x558d30194d1a7f76eb5e983633625efd87b13ac0862792a69a305ce69003ab14\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89bca54921a13c0c863c055f18b3108582491fcc091d7188b58e05786c7f2b55\",\"dweb:/ipfs/QmfS5jM1WxULWx4FNB3CJC7KAWDpMpzRgFSGV5dp8RaCJr\"]},\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x3ec938fd1b7cc8751df9e2ed90fd0abf32ffacc42cf4b6edbf7138629d747944\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a741475c8a3b5ae8eac7d328170c5a6811920dac22d3800197e39abe0ba42e01\",\"dweb:/ipfs/Qmc2fs5kxp437hWxtLZ6CB8g7vt3bkwKLxE7MMo9D5TAF9\"]},\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]},\"contracts/elixir-core/libraries/Oracle.sol\":{\"keccak256\":\"0xb927015d21b9ea6fbcf518218811d938b8bba57250f77459e364421a6a6459c6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://773ae95cce9134e52b8a05574c6691869680cdd1f17129a1138c268c76b77607\",\"dweb:/ipfs/QmZsmHuzYWLWJiTD2PKuzVqfuJUB33ajQ2Rp3N3PkQAern\"]},\"contracts/elixir-core/libraries/Position.sol\":{\"keccak256\":\"0x10a2b97bd9637d674eda7b44b07968ae299ca21542a1037dac54e440fa3a9509\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e0f0fe616663505eae382788656678f8d493887756695d6fa3c94dee967c820a\",\"dweb:/ipfs/QmVeBy5kg2KRuGvrVrk9N3umzHv2697vjinBzJZf3FVSQf\"]},\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]},\"contracts/elixir-core/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0x2c9f7a00da077c5f777cd8a47711257952b2748b0fe7c188fa990b279940d78a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0a6b8809b92e411169924b7b355ebff8fac6e4e8b389318ff331d3220f02ec92\",\"dweb:/ipfs/QmZVMTo4zNPT4Rge5u3KTNr16XR7CqG1AupW3aybHty6N5\"]},\"contracts/elixir-core/libraries/SwapMath.sol\":{\"keccak256\":\"0xaf0c258b9f5d1629f1797ad13996f422f303addc1bdb5dc3333ab3f352f306b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d7a3b8d7d38ed7b7a8d7541ff4e0c78c7230c49f31a9a21eb1b5974adf80fa81\",\"dweb:/ipfs/QmXvjE4AjfYGVqRpgrGj1sgJWdjfo8mhrTnNK9fwrDYP77\"]},\"contracts/elixir-core/libraries/Tick.sol\":{\"keccak256\":\"0x20ddf3dd595491c899fde27706d0cd1d10ba2785589bd5e3d5f0830062254c3b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8d706f8b5bf653ac9cd4b5bbdfd6867eb072821b920141a283466c67f0fdf26\",\"dweb:/ipfs/QmfBZFTVNZhN4tNssH9en4Qz93tWovTijou5i6N8k9kZJM\"]},\"contracts/elixir-core/libraries/TickBitmap.sol\":{\"keccak256\":\"0x90bb71c25bffebc89c0f234a1c806f081ebb19f8ba7bc4cab693f03d4363a863\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3527c33112d6cb3f8349f0783ffcdfabb52dbfe7c2d214cba03ed25b834b0352\",\"dweb:/ipfs/QmXyJ9MrtwGEQunhyyrBnCFAEVpFqRUf8oWMfJBv3fdC3q\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-core/libraries/TransferHelper.sol\":{\"keccak256\":\"0x45053903dbe795b9309eaf4b147093082f99d78b0097f15a8c2a37d42d67d2bc\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d994b26b6da1a9b3972ea4e52aa423c65f9359c6a105128f4a357435e21c4b3e\",\"dweb:/ipfs/QmetiZX1jyobSeSnPMgYfhhg8qCsrHfF6GqbttrFLJrJzK\"]},\"contracts/elixir-core/libraries/UnsafeMath.sol\":{\"keccak256\":\"0x3c829e89e91323d9c3e0f15272baa9aa1d28291e7633ee4f1414774e6eca0a7d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f99f38de11092e98d43f1d14061fcfa7309a80ae93d2b7af99c9256c97312c23\",\"dweb:/ipfs/QmQXXUR1PhKUFVZXwwekW23YE9Zy7r3GvdtcDyc2nNTpSb\"]},\"contracts/elixir-core/test/MockTimeElixirPool.sol\":{\"keccak256\":\"0xebfd94ed08b4da4040f4d37886fff67f7b1450b8b8a4bbda21f8c363b146c254\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://24c1a776fc15e98d2a8f292adacf98f7693adef6929e717ab1c85bdc40596b46\",\"dweb:/ipfs/QmSDcisJseAenkESA7YGhbEPJPyLJZoEsCLcZ6RnEKf44Y\"]},\"contracts/elixir-core/test/MockTimeElixirPoolDeployer.sol\":{\"keccak256\":\"0x024d00308af623fb2d56528b817a8d953057a64e4ab7b7e6e7078d5ad9331004\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://533836fecfbd93099cdc84d7b84747735e938d79f07d07bebdc4d03bdc11021c\",\"dweb:/ipfs/QmTQ8KpSA2QGwdrnQXb9EqsJP48VnJdz59if3cvgPTWA56\"]},\"openzeppelin-contracts-solc-0.7/proxy/Clones.sol\":{\"keccak256\":\"0x0d24348f536f928d8b42789737bf34762faee065667ab530ea20969a9d9920d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb3289aa8c10ec1edf1dbfce9562298e3e6b20a80f38a1338cb127510dbdda50\",\"dweb:/ipfs/QmZoX93r4bTL89d2gvxuVsr7QmkMVRpEymekZXoopGwymJ\"]}},\"version\":1}"}},"contracts/elixir-core/test/OracleEchidnaTest.sol":{"OracleEchidnaTest":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint32","name":"by","type":"uint32"}],"name":"advanceTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"secondsAgo","type":"uint32"}],"name":"checkTimeWeightedAveragesAlwaysFitsType","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"index","type":"uint16"}],"name":"checkTwoAdjacentObservationsTickCumulativeModTimeElapsedAlways0","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"echidna_AlwaysInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"echidna_canAlwaysObserve0IfInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"echidna_cardinalityAlwaysLteNext","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"echidna_indexAlwaysLtCardinality","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"cardinality","type":"uint16"}],"name":"grow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"time","type":"uint32"},{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"advanceTimeBy","type":"uint32"},{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"}],"name":"update","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060405161001d9061005f565b604051809103906000f080158015610039573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117905561006c565b611a4a806112d083390190565b6112558061007b6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063ae505b5211610076578063e9f71da91161005b578063e9f71da914610134578063f7fd2cfa14610147578063f7fe55101461015a576100be565b8063ae505b5214610124578063de3277391461012c576100be565b806391e2b63c116100a757806391e2b63c146100eb578063a958357614610109578063ae13714b1461011c576100be565b80634d50e016146100c3578063761eb23e146100d8575b600080fd5b6100d66100d1366004610fe9565b61016d565b005b6100d66100e6366004610f8e565b610233565b6100f3610298565b6040516101009190611170565b60405180910390f35b6100d6610117366004610fcd565b6103b7565b6100f36105f8565b6100f3610726565b6100f3610865565b6100d6610142366004610f8e565b61097f565b6100d6610155366004610fcd565b610c3d565b6100d6610168366004610fe9565b610c76565b6000546040805160608101825263ffffffff86168152600285900b60208201526fffffffffffffffffffffffffffffffff841681830152905163daf50f6b60e01b81526001600160a01b039092169163daf50f6b916101ce91600401611184565b600060405180830381600087803b1580156101e857600080fd5b505af11580156101fc573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b1790555050505050565b600054604051633b0f591f60e11b81526001600160a01b039091169063761eb23e90610263908490600401611198565b600060405180830381600087803b15801561027d57600080fd5b505af1158015610291573d6000803e3d6000fd5b5050505050565b6000805460405163252c09d760e01b815282916001600160a01b03169063252c09d7906102c990849060040161117b565b60a06040518083038186803b1580156102e157600080fd5b505afa1580156102f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610319919061104d565b50935050505060008054906101000a90046001600160a01b03166001600160a01b031663dbffe9ad6040518163ffffffff1660e01b815260040160206040518083038186803b15801561036b57600080fd5b505afa15801561037f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a39190610fb1565b61ffff1615806103b05750805b9150505b90565b600054600160a01b900460ff166103cd57600080fd5b60008163ffffffff16116103e057600080fd5b604080516002808252606082018352600092602083019080368337019050509050818160008151811061040f57fe5b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061043857fe5b63ffffffff909216602092830291909101909101526000805460405163883bdbfd60e01b8152829182916001600160a01b039091169063883bdbfd90610482908790600401611126565b60006040518083038186803b15801561049a57600080fd5b505afa1580156104ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104d69190810190610eaa565b9250925092506000836000815181106104eb57fe5b60200260200101518460018151811061050057fe5b602002602001015103905060008663ffffffff1660060b8260060b8161052257fe5b05905060008260060b12801561054f57508663ffffffff1660060b8260060b8161054857fe5b0760060b15155b1561055957600019015b627fffff600682900b138015906105785750627fffff19600682900b12155b61057e57fe5b600060208560008151811061058f57fe5b6020026020010151866001815181106105a457fe5b6020026020010151036001600160a01b0316901b6001600160a01b0380168963ffffffff1602816105d157fe5b0490506fffffffffffffffffffffffffffffffff8111156105ee57fe5b5050505050505050565b60008060009054906101000a90046001600160a01b03166001600160a01b031663dbffe9ad6040518163ffffffff1660e01b815260040160206040518083038186803b15801561064757600080fd5b505afa15801561065b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067f9190610fb1565b61ffff1660008054906101000a90046001600160a01b03166001600160a01b0316632986c0e56040518163ffffffff1660e01b815260040160206040518083038186803b1580156106cf57600080fd5b505afa1580156106e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107079190610fb1565b61ffff1610806107215750600054600160a01b900460ff16155b905090565b60008054600160a01b900460ff16610740575060016103b4565b6040805160018082528183019092526000916020808301908036833701905050905060008160008151811061077157fe5b63ffffffff90921660209283029190910190910152600080546040516001600160a01b039091169063883bdbfd60e01b906107b0908590602401611126565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161081b91906110ed565b600060405180830381855afa9150503d8060008114610856576040519150601f19603f3d011682016040523d82523d6000602084013e61085b565b606091505b5090935050505090565b60008060009054906101000a90046001600160a01b03166001600160a01b031663dd158c186040518163ffffffff1660e01b815260040160206040518083038186803b1580156108b457600080fd5b505afa1580156108c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec9190610fb1565b61ffff1660008054906101000a90046001600160a01b03166001600160a01b031663dbffe9ad6040518163ffffffff1660e01b815260040160206040518083038186803b15801561093c57600080fd5b505afa158015610950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190610fb1565b61ffff161115905090565b60008060009054906101000a90046001600160a01b03166001600160a01b031663dbffe9ad6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ce57600080fd5b505afa1580156109e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a069190610fb1565b90508061ffff168261ffff16108015610ab5575060005460408051632986c0e560e01b8152905161ffff8416926001600160a01b031691632986c0e5916004808301926020929190829003018186803b158015610a6257600080fd5b505afa158015610a76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9a9190610fb1565b60010161ffff1681610aa857fe5b0661ffff168261ffff1614155b610abe57600080fd5b60008054819081906001600160a01b031663252c09d761ffff871615610ae75760018703610aec565b600186035b6040518263ffffffff1660e01b8152600401610b089190611198565b60a06040518083038186803b158015610b2057600080fd5b505afa158015610b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b58919061104d565b506000805460405163252c09d760e01b81529598509396509094509283928392506001600160a01b03169063252c09d790610b97908b90600401611198565b60a06040518083038186803b158015610baf57600080fd5b505afa158015610bc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be7919061104d565b509350509250925083610bf957600080fd5b80610c0357600080fd5b85830363ffffffff8116610c1357fe5b8063ffffffff1686840360060b81610c2757fe5b0760060b15610c3257fe5b505050505050505050565b610c4681610d17565b600054604051637bfe967d60e11b81526001600160a01b039091169063f7fd2cfa906102639084906004016111a7565b610c7f83610d17565b6000546040805160608101825263ffffffff86168152600285900b60208201526fffffffffffffffffffffffffffffffff84168183015290516365829dc560e01b81526001600160a01b03909216916365829dc591610ce091600401611184565b600060405180830381600087803b158015610cfa57600080fd5b505af1158015610d0e573d6000803e3d6000fd5b50505050505050565b60005463ffffffff600160a81b90910481168281019091161015610d3a57600080fd5b6000805463ffffffff600160a81b8083048216909401169092027fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff909216919091179055565b600082601f830112610d90578081fd5b81516020610da5610da0836111dc565b6111b8565b8281528181019085830183850287018401881015610dc1578586fd5b855b85811015610de657610dd482610e6b565b84529284019290840190600101610dc3565b5090979650505050505050565b600082601f830112610e03578081fd5b81516020610e13610da0836111dc565b8281528181019085830183850287018401881015610e2f578586fd5b855b85811015610de657610e4282610e82565b84529284019290840190600101610e31565b8051600681900b8114610e6657600080fd5b919050565b80516001600160a01b0381168114610e6657600080fd5b805177ffffffffffffffffffffffffffffffffffffffffffffffff81168114610e6657600080fd5b600080600060608486031215610ebe578283fd5b835167ffffffffffffffff80821115610ed5578485fd5b818601915086601f830112610ee8578485fd5b81516020610ef8610da0836111dc565b82815281810190858301838502870184018c1015610f1457898afd5b8996505b84871015610f3d57610f2981610e54565b835260019690960195918301918301610f18565b5091890151919750909350505080821115610f56578384fd5b610f6287838801610d80565b93506040860151915080821115610f77578283fd5b50610f8486828701610df3565b9150509250925092565b600060208284031215610f9f578081fd5b8135610faa816111fa565b9392505050565b600060208284031215610fc2578081fd5b8151610faa816111fa565b600060208284031215610fde578081fd5b8135610faa8161120d565b600080600060608486031215610ffd578283fd5b83356110088161120d565b92506020840135600281900b811461101e578283fd5b915060408401356fffffffffffffffffffffffffffffffff81168114611042578182fd5b809150509250925092565b600080600080600060a08688031215611064578081fd5b855161106f8161120d565b945061107d60208701610e54565b935061108b60408701610e6b565b92506060860151801515811461109f578182fd5b91506110ad60808701610e82565b90509295509295909350565b805163ffffffff16825260208082015160020b908301526040908101516fffffffffffffffffffffffffffffffff16910152565b60008251815b8181101561110d57602081860181015185830152016110f3565b8181111561111b5782828501525b509190910192915050565b6020808252825182820181905260009190848201906040850190845b8181101561116457835163ffffffff1683529284019291840191600101611142565b50909695505050505050565b901515815260200190565b90815260200190565b6060810161119282846110b9565b92915050565b61ffff91909116815260200190565b63ffffffff91909116815260200190565b60405181810167ffffffffffffffff811182821017156111d457fe5b604052919050565b600067ffffffffffffffff8211156111f057fe5b5060209081020190565b61ffff8116811461120a57600080fd5b50565b63ffffffff8116811461120a57600080fdfea2646970667358221220bd1bc2d9cd54dd36b9c2e9bbc6d5e1725fa2f24af5e14304b81c762a65c889cd64736f6c63430007060033608060405234801561001057600080fd5b50611a2a806100206000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806374e69cef11610097578063daf50f6b11610066578063daf50f6b14610220578063dbffe9ad14610233578063dd158c181461023b578063f7fd2cfa1461024357610100565b806374e69cef146101b8578063761eb23e146101d8578063883bdbfd146101eb578063d81740db1461020d57610100565b80633eaf5d9f116100d35780633eaf5d9f1461017157806358319b4d146101865780636142258a1461019b57806365829dc5146101a357610100565b806316ada547146101055780631a68650214610123578063252c09d7146101385780632986c0e51461015c575b600080fd5b61010d610256565b60405161011a91906119a1565b60405180910390f35b61012b610264565b60405161011a9190611961565b61014b610146366004611804565b61027c565b60405161011a9594939291906119b2565b6101646102d7565b60405161011a9190611989565b6101796102ea565b60405161011a919061191c565b61018e6102fd565b60405161011a9190611975565b61010d61030e565b6101b66101b13660046117a0565b610323565b005b6101cb6101c6366004611722565b610451565b60405161011a9190611998565b6101b66101e63660046117e2565b610515565b6101fe6101f9366004611722565b610553565b60405161011a93929190611883565b6101b661021b3660046116b2565b610612565b6101b661022e3660046117a0565b6107bc565b610164610907565b61016461091a565b6101b661025136600461181c565b61092d565b6201fffe5463ffffffff1681565b6201fffe54600160381b90046001600160801b031681565b60008161ffff811061028d57600080fd5b60020201805460019091015463ffffffff82169250640100000000820460060b91600160581b81046001600160a01b031691600160f81b90910460ff16906001600160c01b031685565b6201fffe54600160b81b900461ffff1681565b6201fffe54640100000000900460020b81565b6201ffff546001600160901b031681565b6201ffff54600160901b900463ffffffff1681565b610333610251602083018361181c565b6201fffe546201ffff546103a99160009161ffff600160b81b830481169263ffffffff80821693640100000000830460020b936001600160801b03600160381b850416936001600160901b03831693600160901b909304831692600160c81b8204831692600160d81b9092049091169061095016565b6201fffe805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b93909216929092021790556103ec604082016020830161177f565b6201fffe805460029290920b62ffffff166401000000000266ffffff000000001990921691909117905561042660608201604083016117bb565b6201fffe60076101000a8154816001600160801b0302191690836001600160801b0316021790555050565b6201fffe5460009063ffffffff811690640100000000810460020b90600160381b81046001600160801b031690600160b81b900461ffff16845a90506105048589898080602002602001604051908101604052809392919081815260200183836020028082843760009201829052506201ffff546201fffe5491969594508b93508992508a916001600160901b03821691600160901b900463ffffffff90811691600160c81b900461ffff1690610b6c16565b5050505a9003979650505050505050565b6201fffe5461053290600090600160d81b900461ffff1683610d29565b6201fffe601b6101000a81548161ffff021916908361ffff16021790555050565b60608060606106056201fffe60009054906101000a900463ffffffff1686868080602002602001604051908101604052809392919081815260200183836020028082843760009201829052506201fffe546201ffff549196959450640100000000810460020b935061ffff600160b81b8204811693506001600160801b03600160381b830416926001600160901b0381169263ffffffff600160901b909204821692600160c81b9091041690610b6c16565b9250925092509250925092565b6201fffe546201ffff54640100000000820460020b916001600160801b03600160381b8204169161ffff600160b81b8304811692600160c81b8104821692600160d81b82049092169163ffffffff918216916001600160901b03821691600160901b90041660005b89811015610713578a8a8281811061068e57fe5b6106a4926020606090920201908101915061181c565b909301926106ba600088868c8c88888d8d610950565b90975095508a8a828181106106cb57fe5b90506060020160200160208101906106e3919061177f565b98508a8a828181106106f157fe5b905060600201604001602081019061070991906117bb565b975060010161067a565b50506201fffe805466ffffff00000000191664010000000062ffffff60029a909a0b99909916989098029790971776ffffffffffffffffffffffffffffffff000000000000001916600160381b6001600160801b0397909716969096029590951761ffff60b81b1916600160b81b61ffff958616021761ffff60c81b1916600160c81b93909416929092029290921763ffffffff191663ffffffff919091161790925550505050565b6201fffe54600160c81b900461ffff16156107f25760405162461bcd60e51b81526004016107e99061192a565b60405180910390fd5b6107ff602082018261181c565b6201fffe805463ffffffff191663ffffffff9290921691909117905561082b604082016020830161177f565b6201fffe805460029290920b62ffffff166401000000000266ffffff000000001990921691909117905561086560608201604083016117bb565b6201fffe80546001600160801b0392909216600160381b0276ffffffffffffffffffffffffffffffff00000000000000199092169190911790556108b76108af602083018361181c565b600090610dd2565b6201fffe80547fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160d81b61ffff938416021761ffff60c81b1916600160c81b939092169290920217905550565b6201fffe54600160c81b900461ffff1681565b6201fffe54600160d81b900461ffff1681565b6201fffe805463ffffffff19811663ffffffff9182169390930116919091179055565b60008060008b8b61ffff1661ffff811061096657fe5b6040805160a08101825260029290920292909201805463ffffffff8082168085526401000000008304600690810b810b900b6020860152600160581b83046001600160a01b031695850195909552600160f81b90910460ff16151560608401526001909101546001600160c01b031660808301529092508b1614156109f1578a859250925050610b5e565b8461ffff168461ffff16118015610a1257506001850361ffff168b61ffff16145b15610a1f57839150610a23565b8491505b8161ffff168b60010161ffff1681610a3757fe5b069250610a48818b8b8b8b8b610e46565b8c8461ffff1661ffff8110610a5957fe5b825160029190910291909101805460208401516040850151606086015163ffffffff1990931663ffffffff909516949094176affffffffffffff00000000191664010000000066ffffffffffffff60069390930b9290921691909102177fff0000000000000000000000000000000000000000ffffffffffffffffffffff16600160581b6001600160a01b0390941693909302929092177effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b921515929092029190911781556080909101516001909101805477ffffffffffffffffffffffffffffffffffffffffffffffff19166001600160c01b03909216919091179055505b995099975050505050505050565b606080606060008461ffff1611610bae576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b895167ffffffffffffffff81118015610bc657600080fd5b50604051908082528060200260200182016040528015610bf0578160200160208202803683370190505b509250895167ffffffffffffffff81118015610c0b57600080fd5b50604051908082528060200260200182016040528015610c35578160200160208202803683370190505b509150895167ffffffffffffffff81118015610c5057600080fd5b50604051908082528060200260200182016040528015610c7a578160200160208202803683370190505b50905060005b8a51811015610d1957610cad8d8d8d8481518110610c9a57fe5b60200260200101518d8d8d8d8d8d610f90565b868481518110610cb957fe5b60200260200101868581518110610ccc57fe5b60200260200101868681518110610cdf57fe5b6001600160c01b03909416602094850291909101909301929092526001600160a01b039092169052600691820b90910b9052600101610c80565b5099509950999650505050505050565b6000808361ffff1611610d67576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611610d7d575081610dcb565b825b8261ffff168161ffff161015610dc6576001858261ffff1661ffff8110610da257fe5b60020201805463ffffffff191663ffffffff92909216919091179055600101610d7f565b508190505b9392505050565b6040805160a08101825263ffffffff928316808252600060208301819052928201839052600160608301819052608090920192909252835463ffffffff1916909117909116600160f81b178255908101805477ffffffffffffffffffffffffffffffffffffffffffffffff19169055908190565b610e4e61166d565b865186036001600160801b038516610e67576001610e69565b845b9450600063ffffffff4211610eb457428463ffffffff1610610e8b5781610eaf565b886000015163ffffffff168463ffffffff161115610eac5788518403610eaf565b60005b610eb7565b60005b90506040518060a001604052808963ffffffff1681526020018363ffffffff168960020b028b602001510160060b8152602001876001600160801b031660808563ffffffff166001600160a01b0316901b6001600160a01b031681610f1857fe5b048b60400151016001600160a01b03168152602001600115158152602001876001600160801b03168363ffffffff166010896001600160901b03166001600160c01b0316901b026001600160c01b031681610f6f57fe5b048b60800151016001600160c01b0316815250925050509695505050505050565b6000808063ffffffff8a1661105c5760008c8961ffff1661ffff8110610fb257fe5b6040805160a08101825260029290920292909201805463ffffffff8082168085526401000000008304600690810b810b900b6020860152600160581b83046001600160a01b031695850195909552600160f81b90910460ff16151560608401526001909101546001600160c01b031660808301529092508d16146110415761103e818d8c8b8b8b610e46565b90505b8060200151816040015182608001519350935093505061117f565b898b036000806110738f8f858f8f8f8f8f8f61118e565b91509150816000015163ffffffff168363ffffffff1614156110ac5781602001518260400151836080015195509550955050505061117f565b805163ffffffff848116911614156110db5780602001518160400151826080015195509550955050505061117f565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161110957fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b0316028161113b57fe5b048560400151018263ffffffff168463ffffffff1687608001518760800151036001600160c01b03168161116b57fe5b040286608001510197509750975050505050505b99509950999650505050505050565b61119661166d565b61119e61166d565b8a8761ffff1661ffff81106111af57fe5b6040805160a08101825260029290920292909201805463ffffffff81168084526401000000008204600690810b810b900b6020850152600160581b82046001600160a01b031694840194909452600160f81b900460ff1615156060830152600101546001600160c01b03166080820152925061122d908b908b6113d5565b15611267578863ffffffff16826000015163ffffffff16141561124f57610b5e565b8161125e838b8b8a8a8a610e46565b91509150610b5e565b8a8361ffff168860010161ffff168161127c57fe5b0661ffff1661ffff811061128c57fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff161515606082018190526001909201546001600160c01b031660808201529250611370576040805160a0810182528c5463ffffffff811682526401000000008104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015260018c01546001600160c01b0316608082015291505b61137f8a83600001518b6113d5565b6113b6576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b6113c38b8b8b8a87611498565b91509150995099975050505050505050565b60008363ffffffff168363ffffffff16111580156113ff57508363ffffffff168263ffffffff1611155b1561141b578163ffffffff168363ffffffff1611159050610dcb565b60008463ffffffff168463ffffffff1611611443578363ffffffff166401000000000161144b565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff161161147c578363ffffffff1664010000000001611484565b8363ffffffff165b64ffffffffff169091111595945050505050565b6114a061166d565b6114a861166d565b60008361ffff168560010161ffff16816114be57fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff871682816114eb57fe5b0661ffff81106114f757fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff161515606082018190526001909201546001600160c01b03166080820152955061157c578060010192506114d6565b898661ffff16826001018161158d57fe5b0661ffff811061159957fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff16151560608201526001909101546001600160c01b03166080820152855190945060009061161f908b908b6113d5565b905080801561163857506116388a8a87600001516113d5565b156116435750611660565b806116535760018203925061165a565b8160010193505b506114d6565b5050509550959350505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b6000606082840312156116ac578081fd5b50919050565b600080602083850312156116c4578182fd5b823567ffffffffffffffff808211156116db578384fd5b818501915085601f8301126116ee578384fd5b8135818111156116fc578485fd5b866020606083028501011115611710578485fd5b60209290920196919550909350505050565b60008060208385031215611734578182fd5b823567ffffffffffffffff8082111561174b578384fd5b818501915085601f83011261175e578384fd5b81358181111561176c578485fd5b8660208083028501011115611710578485fd5b600060208284031215611790578081fd5b81358060020b8114610dcb578182fd5b6000606082840312156117b1578081fd5b610dcb838361169b565b6000602082840312156117cc578081fd5b81356001600160801b0381168114610dcb578182fd5b6000602082840312156117f3578081fd5b813561ffff81168114610dcb578182fd5b600060208284031215611815578081fd5b5035919050565b60006020828403121561182d578081fd5b813563ffffffff81168114610dcb578182fd5b6000815180845260208085019450808401835b838110156118785781516001600160c01b031687529582019590820190600101611853565b509495945050505050565b606080825284519082018190526000906020906080840190828801845b828110156118bf57815160060b845292840192908401906001016118a0565b50505083810382850152855180825286830191830190845b818110156118fc5783516001600160a01b0316835292840192918401916001016118d7565b505084810360408601526119108187611840565b98975050505050505050565b60029190910b815260200190565b60208082526013908201527f616c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6001600160801b0391909116815260200190565b6001600160901b0391909116815260200190565b61ffff91909116815260200190565b90815260200190565b63ffffffff91909116815260200190565b63ffffffff95909516855260069390930b60208501526001600160a01b03919091166040840152151560608301526001600160c01b0316608082015260a0019056fea264697066735822122002acd38f8925afceb7b92c6e72f0d8cdee7003d69e28036bf58a85170063364c64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x6C JUMP JUMPDEST PUSH2 0x1A4A DUP1 PUSH2 0x12D0 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x1255 DUP1 PUSH2 0x7B 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 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAE505B52 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xE9F71DA9 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xE9F71DA9 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0xF7FD2CFA EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0xF7FE5510 EQ PUSH2 0x15A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0xAE505B52 EQ PUSH2 0x124 JUMPI DUP1 PUSH4 0xDE327739 EQ PUSH2 0x12C JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x91E2B63C GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x91E2B63C EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA9583576 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0xAE13714B EQ PUSH2 0x11C JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x4D50E016 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x761EB23E EQ PUSH2 0xD8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0xFE9 JUMP JUMPDEST PUSH2 0x16D JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD6 PUSH2 0xE6 CALLDATASIZE PUSH1 0x4 PUSH2 0xF8E JUMP JUMPDEST PUSH2 0x233 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x100 SWAP2 SWAP1 PUSH2 0x1170 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD6 PUSH2 0x117 CALLDATASIZE PUSH1 0x4 PUSH2 0xFCD JUMP JUMPDEST PUSH2 0x3B7 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x5F8 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x726 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x865 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x142 CALLDATASIZE PUSH1 0x4 PUSH2 0xF8E JUMP JUMPDEST PUSH2 0x97F JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x155 CALLDATASIZE PUSH1 0x4 PUSH2 0xFCD JUMP JUMPDEST PUSH2 0xC3D JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x168 CALLDATASIZE PUSH1 0x4 PUSH2 0xFE9 JUMP JUMPDEST PUSH2 0xC76 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP7 AND DUP2 MSTORE PUSH1 0x2 DUP6 SWAP1 SIGNEXTEND PUSH1 0x20 DUP3 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH4 0xDAF50F6B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xDAF50F6B SWAP2 PUSH2 0x1CE SWAP2 PUSH1 0x4 ADD PUSH2 0x1184 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH4 0x3B0F591F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x761EB23E SWAP1 PUSH2 0x263 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1198 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x291 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x252C09D7 PUSH1 0xE0 SHL DUP2 MSTORE DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x252C09D7 SWAP1 PUSH2 0x2C9 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x117B JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F5 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 0x319 SWAP2 SWAP1 PUSH2 0x104D JUMP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDBFFE9AD 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 0x36B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x37F 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 0x3A3 SWAP2 SWAP1 PUSH2 0xFB1 JUMP JUMPDEST PUSH2 0xFFFF AND ISZERO DUP1 PUSH2 0x3B0 JUMPI POP DUP1 JUMPDEST SWAP2 POP POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH4 0xFFFFFFFF AND GT PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 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 DUP2 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x40F 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 0x438 JUMPI INVALID JUMPDEST PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x883BDBFD PUSH1 0xE0 SHL DUP2 MSTORE DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x883BDBFD SWAP1 PUSH2 0x482 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1126 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x49A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4AE 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 PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x4D6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xEAA JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4EB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x500 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB SWAP1 POP PUSH1 0x0 DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0x6 SIGNEXTEND DUP3 PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0x522 JUMPI INVALID JUMPDEST SDIV SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x6 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0x54F JUMPI POP DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0x6 SIGNEXTEND DUP3 PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0x548 JUMPI INVALID JUMPDEST SMOD PUSH1 0x6 SIGNEXTEND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x559 JUMPI PUSH1 0x0 NOT ADD JUMPDEST PUSH3 0x7FFFFF PUSH1 0x6 DUP3 SWAP1 SIGNEXTEND SGT DUP1 ISZERO SWAP1 PUSH2 0x578 JUMPI POP PUSH3 0x7FFFFF NOT PUSH1 0x6 DUP3 SWAP1 SIGNEXTEND SLT ISZERO JUMPDEST PUSH2 0x57E JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x58F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x5A4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 AND DUP10 PUSH4 0xFFFFFFFF AND MUL DUP2 PUSH2 0x5D1 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5EE JUMPI INVALID JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDBFFE9AD 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 0x647 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x65B 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 0x67F SWAP2 SWAP1 PUSH2 0xFB1 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2986C0E5 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 0x6CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6E3 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 0x707 SWAP2 SWAP1 PUSH2 0xFB1 JUMP JUMPDEST PUSH2 0xFFFF AND LT DUP1 PUSH2 0x721 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x740 JUMPI POP PUSH1 0x1 PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x771 JUMPI INVALID JUMPDEST PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x883BDBFD PUSH1 0xE0 SHL SWAP1 PUSH2 0x7B0 SWAP1 DUP6 SWAP1 PUSH1 0x24 ADD PUSH2 0x1126 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x81B SWAP2 SWAP1 PUSH2 0x10ED JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x856 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 0x85B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDD158C18 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 0x8B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8C8 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 0x8EC SWAP2 SWAP1 PUSH2 0xFB1 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDBFFE9AD 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 0x93C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x950 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 0x974 SWAP2 SWAP1 PUSH2 0xFB1 JUMP JUMPDEST PUSH2 0xFFFF AND GT ISZERO SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDBFFE9AD 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 0x9CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9E2 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 0xA06 SWAP2 SWAP1 PUSH2 0xFB1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND LT DUP1 ISZERO PUSH2 0xAB5 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2986C0E5 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH2 0xFFFF DUP5 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x2986C0E5 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA76 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 0xA9A SWAP2 SWAP1 PUSH2 0xFB1 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0xAA8 JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND EQ ISZERO JUMPDEST PUSH2 0xABE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x252C09D7 PUSH2 0xFFFF DUP8 AND ISZERO PUSH2 0xAE7 JUMPI PUSH1 0x1 DUP8 SUB PUSH2 0xAEC JUMP JUMPDEST PUSH1 0x1 DUP7 SUB JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB08 SWAP2 SWAP1 PUSH2 0x1198 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB34 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 0xB58 SWAP2 SWAP1 PUSH2 0x104D JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x252C09D7 PUSH1 0xE0 SHL DUP2 MSTORE SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP1 SWAP5 POP SWAP3 DUP4 SWAP3 DUP4 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x252C09D7 SWAP1 PUSH2 0xB97 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x1198 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBC3 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 0xBE7 SWAP2 SWAP1 PUSH2 0x104D JUMP JUMPDEST POP SWAP4 POP POP SWAP3 POP SWAP3 POP DUP4 PUSH2 0xBF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH2 0xC03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP4 SUB PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0xC13 JUMPI INVALID JUMPDEST DUP1 PUSH4 0xFFFFFFFF AND DUP7 DUP5 SUB PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0xC27 JUMPI INVALID JUMPDEST SMOD PUSH1 0x6 SIGNEXTEND ISZERO PUSH2 0xC32 JUMPI INVALID JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xC46 DUP2 PUSH2 0xD17 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH4 0x7BFE967D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7FD2CFA SWAP1 PUSH2 0x263 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x11A7 JUMP JUMPDEST PUSH2 0xC7F DUP4 PUSH2 0xD17 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP7 AND DUP2 MSTORE PUSH1 0x2 DUP6 SWAP1 SIGNEXTEND PUSH1 0x20 DUP3 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH4 0x65829DC5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x65829DC5 SWAP2 PUSH2 0xCE0 SWAP2 PUSH1 0x4 ADD PUSH2 0x1184 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD0E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 SWAP2 DIV DUP2 AND DUP3 DUP2 ADD SWAP1 SWAP2 AND LT ISZERO PUSH2 0xD3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xA8 SHL DUP1 DUP4 DIV DUP3 AND SWAP1 SWAP5 ADD AND SWAP1 SWAP3 MUL PUSH32 0xFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xD90 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0xDA5 PUSH2 0xDA0 DUP4 PUSH2 0x11DC JUMP JUMPDEST PUSH2 0x11B8 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD DUP4 DUP6 MUL DUP8 ADD DUP5 ADD DUP9 LT ISZERO PUSH2 0xDC1 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0xDE6 JUMPI PUSH2 0xDD4 DUP3 PUSH2 0xE6B JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xDC3 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE03 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0xE13 PUSH2 0xDA0 DUP4 PUSH2 0x11DC JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD DUP4 DUP6 MUL DUP8 ADD DUP5 ADD DUP9 LT ISZERO PUSH2 0xE2F JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0xDE6 JUMPI PUSH2 0xE42 DUP3 PUSH2 0xE82 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xE31 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0xE66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xE66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xEBE JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xED5 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xEE8 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0xEF8 PUSH2 0xDA0 DUP4 PUSH2 0x11DC JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD DUP4 DUP6 MUL DUP8 ADD DUP5 ADD DUP13 LT ISZERO PUSH2 0xF14 JUMPI DUP10 DUP11 REVERT JUMPDEST DUP10 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0xF3D JUMPI PUSH2 0xF29 DUP2 PUSH2 0xE54 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0xF18 JUMP JUMPDEST POP SWAP2 DUP10 ADD MLOAD SWAP2 SWAP8 POP SWAP1 SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0xF56 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0xF62 DUP8 DUP4 DUP9 ADD PUSH2 0xD80 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF77 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0xF84 DUP7 DUP3 DUP8 ADD PUSH2 0xDF3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF9F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFAA DUP2 PUSH2 0x11FA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFC2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xFAA DUP2 PUSH2 0x11FA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFDE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFAA DUP2 PUSH2 0x120D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xFFD JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1008 DUP2 PUSH2 0x120D JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x101E JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1042 JUMPI DUP2 DUP3 REVERT 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 0x1064 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x106F DUP2 PUSH2 0x120D JUMP JUMPDEST SWAP5 POP PUSH2 0x107D PUSH1 0x20 DUP8 ADD PUSH2 0xE54 JUMP JUMPDEST SWAP4 POP PUSH2 0x108B PUSH1 0x40 DUP8 ADD PUSH2 0xE6B JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x109F JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP2 POP PUSH2 0x10AD PUSH1 0x80 DUP8 ADD PUSH2 0xE82 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD PUSH1 0x2 SIGNEXTEND SWAP1 DUP4 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x110D JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x10F3 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x111B JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1164 JUMPI DUP4 MLOAD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1142 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x1192 DUP3 DUP5 PUSH2 0x10B9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x11D4 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x11F0 JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x120A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x120A JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBD SHL 0xC2 0xD9 0xCD SLOAD 0xDD CALLDATASIZE 0xB9 0xC2 0xE9 0xBB 0xC6 0xD5 0xE1 PUSH19 0x5FA2F24AF5E14304B81C762A65C889CD64736F PUSH13 0x63430007060033608060405234 DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2A 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 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x74E69CEF GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDAF50F6B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDAF50F6B EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xDBFFE9AD EQ PUSH2 0x233 JUMPI DUP1 PUSH4 0xDD158C18 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0xF7FD2CFA EQ PUSH2 0x243 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x74E69CEF EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x761EB23E EQ PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x883BDBFD EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xD81740DB EQ PUSH2 0x20D JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x3EAF5D9F GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x3EAF5D9F EQ PUSH2 0x171 JUMPI DUP1 PUSH4 0x58319B4D EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x6142258A EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x65829DC5 EQ PUSH2 0x1A3 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x16ADA547 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x1A686502 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x252C09D7 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0x2986C0E5 EQ PUSH2 0x15C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x256 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x19A1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x12B PUSH2 0x264 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x1961 JUMP JUMPDEST PUSH2 0x14B PUSH2 0x146 CALLDATASIZE PUSH1 0x4 PUSH2 0x1804 JUMP JUMPDEST PUSH2 0x27C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x19B2 JUMP JUMPDEST PUSH2 0x164 PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x1989 JUMP JUMPDEST PUSH2 0x179 PUSH2 0x2EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x191C JUMP JUMPDEST PUSH2 0x18E PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x1975 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x30E JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x1B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x17A0 JUMP JUMPDEST PUSH2 0x323 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CB PUSH2 0x1C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1722 JUMP JUMPDEST PUSH2 0x451 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x1998 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x1E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x17E2 JUMP JUMPDEST PUSH2 0x515 JUMP JUMPDEST PUSH2 0x1FE PUSH2 0x1F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1722 JUMP JUMPDEST PUSH2 0x553 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1883 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x21B CALLDATASIZE PUSH1 0x4 PUSH2 0x16B2 JUMP JUMPDEST PUSH2 0x612 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x22E CALLDATASIZE PUSH1 0x4 PUSH2 0x17A0 JUMP JUMPDEST PUSH2 0x7BC JUMP JUMPDEST PUSH2 0x164 PUSH2 0x907 JUMP JUMPDEST PUSH2 0x164 PUSH2 0x91A JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x251 CALLDATASIZE PUSH1 0x4 PUSH2 0x181C JUMP JUMPDEST PUSH2 0x92D JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH1 0x1 PUSH1 0x38 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0xFFFF DUP2 LT PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 MUL ADD DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP3 AND SWAP3 POP PUSH5 0x100000000 DUP3 DIV PUSH1 0x6 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP6 JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV PUSH2 0xFFFF AND DUP2 JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH1 0x2 SIGNEXTEND DUP2 JUMP JUMPDEST PUSH3 0x1FFFF SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB AND DUP2 JUMP JUMPDEST PUSH3 0x1FFFF SLOAD PUSH1 0x1 PUSH1 0x90 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x333 PUSH2 0x251 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x181C JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH3 0x1FFFF SLOAD PUSH2 0x3A9 SWAP2 PUSH1 0x0 SWAP2 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP4 DIV DUP2 AND SWAP3 PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP4 PUSH5 0x100000000 DUP4 DIV PUSH1 0x2 SIGNEXTEND SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x38 SHL DUP6 DIV AND SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP4 AND SWAP4 PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP4 DIV DUP4 AND SWAP3 PUSH1 0x1 PUSH1 0xC8 SHL DUP3 DIV DUP4 AND SWAP3 PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x950 AND JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP4 DUP5 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SSTORE PUSH2 0x3EC PUSH1 0x40 DUP3 ADD PUSH1 0x20 DUP4 ADD PUSH2 0x177F JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND PUSH3 0xFFFFFF AND PUSH5 0x100000000 MUL PUSH7 0xFFFFFF00000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x426 PUSH1 0x60 DUP3 ADD PUSH1 0x40 DUP4 ADD PUSH2 0x17BB JUMP JUMPDEST PUSH3 0x1FFFE PUSH1 0x7 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH1 0x0 SWAP1 PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0x38 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV PUSH2 0xFFFF AND DUP5 GAS SWAP1 POP PUSH2 0x504 DUP6 DUP10 DUP10 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP PUSH3 0x1FFFF SLOAD PUSH3 0x1FFFE SLOAD SWAP2 SWAP7 SWAP6 SWAP5 POP DUP12 SWAP4 POP DUP10 SWAP3 POP DUP11 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x90 SHL SWAP1 DIV PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 DIV PUSH2 0xFFFF AND SWAP1 PUSH2 0xB6C AND JUMP JUMPDEST POP POP POP GAS SWAP1 SUB SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH2 0x532 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 DIV PUSH2 0xFFFF AND DUP4 PUSH2 0xD29 JUMP JUMPDEST PUSH3 0x1FFFE PUSH1 0x1B PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 PUSH2 0x605 PUSH3 0x1FFFE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP7 DUP7 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP PUSH3 0x1FFFE SLOAD PUSH3 0x1FFFF SLOAD SWAP2 SWAP7 SWAP6 SWAP5 POP PUSH5 0x100000000 DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP4 POP PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x38 SHL DUP4 DIV AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP2 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP3 DIV DUP3 AND SWAP3 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 SWAP2 DIV AND SWAP1 PUSH2 0xB6C AND JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH3 0x1FFFF SLOAD PUSH5 0x100000000 DUP3 DIV PUSH1 0x2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x38 SHL DUP3 DIV AND SWAP2 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP4 DIV DUP2 AND SWAP3 PUSH1 0x1 PUSH1 0xC8 SHL DUP2 DIV DUP3 AND SWAP3 PUSH1 0x1 PUSH1 0xD8 SHL DUP3 DIV SWAP1 SWAP3 AND SWAP2 PUSH4 0xFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x90 SHL SWAP1 DIV AND PUSH1 0x0 JUMPDEST DUP10 DUP2 LT ISZERO PUSH2 0x713 JUMPI DUP11 DUP11 DUP3 DUP2 DUP2 LT PUSH2 0x68E JUMPI INVALID JUMPDEST PUSH2 0x6A4 SWAP3 PUSH1 0x20 PUSH1 0x60 SWAP1 SWAP3 MUL ADD SWAP1 DUP2 ADD SWAP2 POP PUSH2 0x181C JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP3 PUSH2 0x6BA PUSH1 0x0 DUP9 DUP7 DUP13 DUP13 DUP9 DUP9 DUP14 DUP14 PUSH2 0x950 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP DUP11 DUP11 DUP3 DUP2 DUP2 LT PUSH2 0x6CB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x60 MUL ADD PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x6E3 SWAP2 SWAP1 PUSH2 0x177F JUMP JUMPDEST SWAP9 POP DUP11 DUP11 DUP3 DUP2 DUP2 LT PUSH2 0x6F1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x60 MUL ADD PUSH1 0x40 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x709 SWAP2 SWAP1 PUSH2 0x17BB JUMP JUMPDEST SWAP8 POP PUSH1 0x1 ADD PUSH2 0x67A JUMP JUMPDEST POP POP PUSH3 0x1FFFE DUP1 SLOAD PUSH7 0xFFFFFF00000000 NOT AND PUSH5 0x100000000 PUSH3 0xFFFFFF PUSH1 0x2 SWAP11 SWAP1 SWAP11 SIGNEXTEND SWAP10 SWAP1 SWAP10 AND SWAP9 SWAP1 SWAP9 MUL SWAP8 SWAP1 SWAP8 OR PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000 NOT AND PUSH1 0x1 PUSH1 0x38 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 MUL SWAP6 SWAP1 SWAP6 OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL PUSH2 0xFFFF SWAP6 DUP7 AND MUL OR PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL SWAP4 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 OR PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND OR SWAP1 SWAP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 DIV PUSH2 0xFFFF AND ISZERO PUSH2 0x7F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7E9 SWAP1 PUSH2 0x192A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7FF PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x181C JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x82B PUSH1 0x40 DUP3 ADD PUSH1 0x20 DUP4 ADD PUSH2 0x177F JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND PUSH3 0xFFFFFF AND PUSH5 0x100000000 MUL PUSH7 0xFFFFFF00000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x865 PUSH1 0x60 DUP3 ADD PUSH1 0x40 DUP4 ADD PUSH2 0x17BB JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x38 SHL MUL PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x8B7 PUSH2 0x8AF PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x181C JUMP JUMPDEST PUSH1 0x0 SWAP1 PUSH2 0xDD2 JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH32 0xFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xD8 SHL PUSH2 0xFFFF SWAP4 DUP5 AND MUL OR PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 DIV PUSH2 0xFFFF AND DUP2 JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 DIV PUSH2 0xFFFF AND DUP2 JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH4 0xFFFFFFFF NOT DUP2 AND PUSH4 0xFFFFFFFF SWAP2 DUP3 AND SWAP4 SWAP1 SWAP4 ADD AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP12 DUP12 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x966 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP6 MSTORE PUSH5 0x100000000 DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP12 AND EQ ISZERO PUSH2 0x9F1 JUMPI DUP11 DUP6 SWAP3 POP SWAP3 POP POP PUSH2 0xB5E JUMP JUMPDEST DUP5 PUSH2 0xFFFF AND DUP5 PUSH2 0xFFFF AND GT DUP1 ISZERO PUSH2 0xA12 JUMPI POP PUSH1 0x1 DUP6 SUB PUSH2 0xFFFF AND DUP12 PUSH2 0xFFFF AND EQ JUMPDEST ISZERO PUSH2 0xA1F JUMPI DUP4 SWAP2 POP PUSH2 0xA23 JUMP JUMPDEST DUP5 SWAP2 POP JUMPDEST DUP2 PUSH2 0xFFFF AND DUP12 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0xA37 JUMPI INVALID JUMPDEST MOD SWAP3 POP PUSH2 0xA48 DUP2 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0xE46 JUMP JUMPDEST DUP13 DUP5 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0xA59 JUMPI INVALID JUMPDEST DUP3 MLOAD PUSH1 0x2 SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH4 0xFFFFFFFF NOT SWAP1 SWAP4 AND PUSH4 0xFFFFFFFF SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR PUSH11 0xFFFFFFFFFFFFFF00000000 NOT AND PUSH5 0x100000000 PUSH7 0xFFFFFFFFFFFFFF PUSH1 0x6 SWAP4 SWAP1 SWAP4 SIGNEXTEND SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL OR PUSH32 0xFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x58 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP3 OR PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xF8 SHL SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR DUP2 SSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMPDEST SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 PUSH1 0x0 DUP5 PUSH2 0xFFFF AND GT PUSH2 0xBAE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xBC6 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 0xBF0 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xC0B 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 0xC35 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xC50 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 0xC7A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0xD19 JUMPI PUSH2 0xCAD DUP14 DUP14 DUP14 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC9A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 PUSH2 0xF90 JUMP JUMPDEST DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCB9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xCCC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0xCDF JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x20 SWAP5 DUP6 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP1 MSTORE PUSH1 0x6 SWAP2 DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND SWAP1 MSTORE PUSH1 0x1 ADD PUSH2 0xC80 JUMP JUMPDEST POP SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0xFFFF AND GT PUSH2 0xD67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND GT PUSH2 0xD7D JUMPI POP DUP2 PUSH2 0xDCB JUMP JUMPDEST DUP3 JUMPDEST DUP3 PUSH2 0xFFFF AND DUP2 PUSH2 0xFFFF AND LT ISZERO PUSH2 0xDC6 JUMPI PUSH1 0x1 DUP6 DUP3 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0xDA2 JUMPI INVALID JUMPDEST PUSH1 0x2 MUL ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 ADD PUSH2 0xD7F JUMP JUMPDEST POP DUP2 SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE SWAP3 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP4 SLOAD PUSH4 0xFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xF8 SHL OR DUP3 SSTORE SWAP1 DUP2 ADD DUP1 SLOAD PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE SWAP1 DUP2 SWAP1 JUMP JUMPDEST PUSH2 0xE4E PUSH2 0x166D JUMP JUMPDEST DUP7 MLOAD DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH2 0xE67 JUMPI PUSH1 0x1 PUSH2 0xE69 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP PUSH1 0x0 PUSH4 0xFFFFFFFF TIMESTAMP GT PUSH2 0xEB4 JUMPI TIMESTAMP DUP5 PUSH4 0xFFFFFFFF AND LT PUSH2 0xE8B JUMPI DUP2 PUSH2 0xEAF JUMP JUMPDEST DUP9 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0xEAC JUMPI DUP9 MLOAD DUP5 SUB PUSH2 0xEAF JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH2 0xEB7 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP10 PUSH1 0x2 SIGNEXTEND MUL DUP12 PUSH1 0x20 ADD MLOAD ADD PUSH1 0x6 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x80 DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH2 0xF18 JUMPI INVALID JUMPDEST DIV DUP12 PUSH1 0x40 ADD MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0x10 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND SWAP1 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 PUSH2 0xF6F JUMPI INVALID JUMPDEST DIV DUP12 PUSH1 0x80 ADD MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 MSTORE POP SWAP3 POP POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH4 0xFFFFFFFF DUP11 AND PUSH2 0x105C JUMPI PUSH1 0x0 DUP13 DUP10 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0xFB2 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP6 MSTORE PUSH5 0x100000000 DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP14 AND EQ PUSH2 0x1041 JUMPI PUSH2 0x103E DUP2 DUP14 DUP13 DUP12 DUP12 DUP12 PUSH2 0xE46 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD SWAP4 POP SWAP4 POP SWAP4 POP POP PUSH2 0x117F JUMP JUMPDEST DUP10 DUP12 SUB PUSH1 0x0 DUP1 PUSH2 0x1073 DUP16 DUP16 DUP6 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 PUSH2 0x118E JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x10AC JUMPI DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD DUP4 PUSH1 0x80 ADD MLOAD SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x117F JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x10DB JUMPI DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x117F JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD SWAP1 DUP5 ADD MLOAD SWAP2 DUP4 SWAP1 SUB SWAP3 DUP7 SUB SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP5 AND SWAP3 SWAP1 DUP6 AND SWAP2 SUB PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0x1109 JUMPI INVALID JUMPDEST SDIV MUL DUP5 PUSH1 0x20 ADD MLOAD ADD DUP3 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL DUP2 PUSH2 0x113B JUMPI INVALID JUMPDEST DIV DUP6 PUSH1 0x40 ADD MLOAD ADD DUP3 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND DUP8 PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x80 ADD MLOAD SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 PUSH2 0x116B JUMPI INVALID JUMPDEST DIV MUL DUP7 PUSH1 0x80 ADD MLOAD ADD SWAP8 POP SWAP8 POP SWAP8 POP POP POP POP POP POP JUMPDEST SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1196 PUSH2 0x166D JUMP JUMPDEST PUSH2 0x119E PUSH2 0x166D JUMP JUMPDEST DUP11 DUP8 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x11AF JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP1 DUP5 MSTORE PUSH5 0x100000000 DUP3 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP3 POP PUSH2 0x122D SWAP1 DUP12 SWAP1 DUP12 PUSH2 0x13D5 JUMP JUMPDEST ISZERO PUSH2 0x1267 JUMPI DUP9 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x124F JUMPI PUSH2 0xB5E JUMP JUMPDEST DUP2 PUSH2 0x125E DUP4 DUP12 DUP12 DUP11 DUP11 DUP11 PUSH2 0xE46 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xB5E JUMP JUMPDEST DUP11 DUP4 PUSH2 0xFFFF AND DUP9 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x127C JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x128C JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP3 POP PUSH2 0x1370 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE DUP13 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP3 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x1 DUP13 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP2 POP JUMPDEST PUSH2 0x137F DUP11 DUP4 PUSH1 0x0 ADD MLOAD DUP12 PUSH2 0x13D5 JUMP JUMPDEST PUSH2 0x13B6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x13D311 PUSH1 0xEA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13C3 DUP12 DUP12 DUP12 DUP11 DUP8 PUSH2 0x1498 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO DUP1 ISZERO PUSH2 0x13FF JUMPI POP DUP4 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND GT ISZERO JUMPDEST ISZERO PUSH2 0x141B JUMPI DUP2 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO SWAP1 POP PUSH2 0xDCB JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x1443 JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH5 0x100000000 ADD PUSH2 0x144B JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP6 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x147C JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH5 0x100000000 ADD PUSH2 0x1484 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 SWAP2 GT ISZERO SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x14A0 PUSH2 0x166D JUMP JUMPDEST PUSH2 0x14A8 PUSH2 0x166D JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH2 0xFFFF AND DUP6 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x14BE JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP6 PUSH2 0xFFFF AND DUP4 ADD SUB SWAP1 POP PUSH1 0x0 JUMPDEST POP PUSH1 0x2 DUP2 DUP4 ADD DIV DUP10 PUSH2 0xFFFF DUP8 AND DUP3 DUP2 PUSH2 0x14EB JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x14F7 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP6 POP PUSH2 0x157C JUMPI DUP1 PUSH1 0x1 ADD SWAP3 POP PUSH2 0x14D6 JUMP JUMPDEST DUP10 DUP7 PUSH2 0xFFFF AND DUP3 PUSH1 0x1 ADD DUP2 PUSH2 0x158D JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x1599 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE DUP6 MLOAD SWAP1 SWAP5 POP PUSH1 0x0 SWAP1 PUSH2 0x161F SWAP1 DUP12 SWAP1 DUP12 PUSH2 0x13D5 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x1638 JUMPI POP PUSH2 0x1638 DUP11 DUP11 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x13D5 JUMP JUMPDEST ISZERO PUSH2 0x1643 JUMPI POP PUSH2 0x1660 JUMP JUMPDEST DUP1 PUSH2 0x1653 JUMPI PUSH1 0x1 DUP3 SUB SWAP3 POP PUSH2 0x165A JUMP JUMPDEST DUP2 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP PUSH2 0x14D6 JUMP JUMPDEST POP POP POP SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16AC JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x16C4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x16DB JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x16EE JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x16FC JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 PUSH1 0x60 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x1710 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 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1734 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x174B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x175E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x176C JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x1710 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1790 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0xDCB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17B1 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xDCB DUP4 DUP4 PUSH2 0x169B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17CC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xDCB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17F3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xDCB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1815 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x182D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xDCB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1878 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1853 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MSTORE DUP5 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x80 DUP5 ADD SWAP1 DUP3 DUP9 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x18BF JUMPI DUP2 MLOAD PUSH1 0x6 SIGNEXTEND DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x18A0 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP6 MLOAD DUP1 DUP3 MSTORE DUP7 DUP4 ADD SWAP2 DUP4 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x18FC JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x18D7 JUMP JUMPDEST POP POP DUP5 DUP2 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x1910 DUP2 DUP8 PUSH2 0x1840 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x616C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0xFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP6 SWAP1 SWAP6 AND DUP6 MSTORE PUSH1 0x6 SWAP4 SWAP1 SWAP4 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x40 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MUL 0xAC 0xD3 DUP16 DUP10 0x25 0xAF 0xCE 0xB7 0xB9 0x2C PUSH15 0x72F0D8CDEE7003D69E28036BF58A85 OR STOP PUSH4 0x364C6473 PUSH16 0x6C634300070600330000000000000000 ","sourceMap":"118:6035:40:-:0;;;251:58;;;;;;;;;;285:16;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;276:6:40;:25;;-1:-1:-1;;;;;;276:25:40;-1:-1:-1;;;;;276:25:40;;;;;;;;;;118:6035;;;;;;;;;;:::o;:::-;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:9273:178","statements":[{"nodeType":"YulBlock","src":"6:3:178","statements":[]},{"body":{"nodeType":"YulBlock","src":"95:645:178","statements":[{"body":{"nodeType":"YulBlock","src":"144:24:178","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"153:5:178"},{"name":"array","nodeType":"YulIdentifier","src":"160:5:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"146:6:178"},"nodeType":"YulFunctionCall","src":"146:20:178"},"nodeType":"YulExpressionStatement","src":"146:20:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"123:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"131:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"119:3:178"},"nodeType":"YulFunctionCall","src":"119:17:178"},{"name":"end","nodeType":"YulIdentifier","src":"138:3:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"115:3:178"},"nodeType":"YulFunctionCall","src":"115:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"108:6:178"},"nodeType":"YulFunctionCall","src":"108:35:178"},"nodeType":"YulIf","src":"105:2:178"},{"nodeType":"YulVariableDeclaration","src":"177:23:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"193:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"187:5:178"},"nodeType":"YulFunctionCall","src":"187:13:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"181:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"209:14:178","value":{"kind":"number","nodeType":"YulLiteral","src":"219:4:178","type":"","value":"0x20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"213:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"232:74:178","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"302:2:178"}],"functionName":{"name":"array_allocation_size_t_array$_t_int56_$dyn","nodeType":"YulIdentifier","src":"258:43:178"},"nodeType":"YulFunctionCall","src":"258:47:178"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"243:14:178"},"nodeType":"YulFunctionCall","src":"243:63:178"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"236:3:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"315:16:178","value":{"name":"dst","nodeType":"YulIdentifier","src":"328:3:178"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"319:5:178","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"347:3:178"},{"name":"_1","nodeType":"YulIdentifier","src":"352:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"340:6:178"},"nodeType":"YulFunctionCall","src":"340:15:178"},"nodeType":"YulExpressionStatement","src":"340:15:178"},{"nodeType":"YulAssignment","src":"364:19:178","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"375:3:178"},{"name":"_2","nodeType":"YulIdentifier","src":"380:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"371:3:178"},"nodeType":"YulFunctionCall","src":"371:12:178"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"364:3:178"}]},{"nodeType":"YulVariableDeclaration","src":"392:26:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"407:6:178"},{"name":"_2","nodeType":"YulIdentifier","src":"415:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"403:3:178"},"nodeType":"YulFunctionCall","src":"403:15:178"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"396:3:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"473:24:178","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"482:5:178"},{"name":"array","nodeType":"YulIdentifier","src":"489:5:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"475:6:178"},"nodeType":"YulFunctionCall","src":"475:20:178"},"nodeType":"YulExpressionStatement","src":"475:20:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"441:6:178"},{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"453:2:178"},{"name":"_2","nodeType":"YulIdentifier","src":"457:2:178"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"449:3:178"},"nodeType":"YulFunctionCall","src":"449:11:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"437:3:178"},"nodeType":"YulFunctionCall","src":"437:24:178"},{"name":"_2","nodeType":"YulIdentifier","src":"463:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"433:3:178"},"nodeType":"YulFunctionCall","src":"433:33:178"},{"name":"end","nodeType":"YulIdentifier","src":"468:3:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"430:2:178"},"nodeType":"YulFunctionCall","src":"430:42:178"},"nodeType":"YulIf","src":"427:2:178"},{"nodeType":"YulVariableDeclaration","src":"506:14:178","value":{"name":"array","nodeType":"YulIdentifier","src":"515:5:178"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"510:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"574:137:178","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"595:3:178"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"632:3:178"}],"functionName":{"name":"abi_decode_t_uint160_fromMemory","nodeType":"YulIdentifier","src":"600:31:178"},"nodeType":"YulFunctionCall","src":"600:36:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"588:6:178"},"nodeType":"YulFunctionCall","src":"588:49:178"},"nodeType":"YulExpressionStatement","src":"588:49:178"},{"nodeType":"YulAssignment","src":"650:19:178","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"661:3:178"},{"name":"_2","nodeType":"YulIdentifier","src":"666:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"657:3:178"},"nodeType":"YulFunctionCall","src":"657:12:178"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"650:3:178"}]},{"nodeType":"YulAssignment","src":"682:19:178","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"693:3:178"},{"name":"_2","nodeType":"YulIdentifier","src":"698:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"689:3:178"},"nodeType":"YulFunctionCall","src":"689:12:178"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"682:3:178"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"540:1:178"},{"name":"_1","nodeType":"YulIdentifier","src":"543:2:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"537:2:178"},"nodeType":"YulFunctionCall","src":"537:9:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"547:18:178","statements":[{"nodeType":"YulAssignment","src":"549:14:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"558:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"561:1:178","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"554:3:178"},"nodeType":"YulFunctionCall","src":"554:9:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"549:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"533:3:178","statements":[]},"src":"529:182:178"},{"nodeType":"YulAssignment","src":"720:14:178","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"729:5:178"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"720:5:178"}]}]},"name":"abi_decode_t_array$_t_uint160_$dyn_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"69:6:178","type":""},{"name":"end","nodeType":"YulTypedName","src":"77:3:178","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"85:5:178","type":""}],"src":"14:726:178"},{"body":{"nodeType":"YulBlock","src":"826:645:178","statements":[{"body":{"nodeType":"YulBlock","src":"875:24:178","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"884:5:178"},{"name":"array","nodeType":"YulIdentifier","src":"891:5:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"877:6:178"},"nodeType":"YulFunctionCall","src":"877:20:178"},"nodeType":"YulExpressionStatement","src":"877:20:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"854:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"862:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"850:3:178"},"nodeType":"YulFunctionCall","src":"850:17:178"},{"name":"end","nodeType":"YulIdentifier","src":"869:3:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"846:3:178"},"nodeType":"YulFunctionCall","src":"846:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"839:6:178"},"nodeType":"YulFunctionCall","src":"839:35:178"},"nodeType":"YulIf","src":"836:2:178"},{"nodeType":"YulVariableDeclaration","src":"908:23:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"924:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"918:5:178"},"nodeType":"YulFunctionCall","src":"918:13:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"912:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"940:14:178","value":{"kind":"number","nodeType":"YulLiteral","src":"950:4:178","type":"","value":"0x20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"944:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"963:74:178","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1033:2:178"}],"functionName":{"name":"array_allocation_size_t_array$_t_int56_$dyn","nodeType":"YulIdentifier","src":"989:43:178"},"nodeType":"YulFunctionCall","src":"989:47:178"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"974:14:178"},"nodeType":"YulFunctionCall","src":"974:63:178"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"967:3:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1046:16:178","value":{"name":"dst","nodeType":"YulIdentifier","src":"1059:3:178"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"1050:5:178","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1078:3:178"},{"name":"_1","nodeType":"YulIdentifier","src":"1083:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1071:6:178"},"nodeType":"YulFunctionCall","src":"1071:15:178"},"nodeType":"YulExpressionStatement","src":"1071:15:178"},{"nodeType":"YulAssignment","src":"1095:19:178","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1106:3:178"},{"name":"_2","nodeType":"YulIdentifier","src":"1111:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1102:3:178"},"nodeType":"YulFunctionCall","src":"1102:12:178"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"1095:3:178"}]},{"nodeType":"YulVariableDeclaration","src":"1123:26:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1138:6:178"},{"name":"_2","nodeType":"YulIdentifier","src":"1146:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1134:3:178"},"nodeType":"YulFunctionCall","src":"1134:15:178"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"1127:3:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"1204:24:178","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"1213:5:178"},{"name":"array","nodeType":"YulIdentifier","src":"1220:5:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1206:6:178"},"nodeType":"YulFunctionCall","src":"1206:20:178"},"nodeType":"YulExpressionStatement","src":"1206:20:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1172:6:178"},{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1184:2:178"},{"name":"_2","nodeType":"YulIdentifier","src":"1188:2:178"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"1180:3:178"},"nodeType":"YulFunctionCall","src":"1180:11:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1168:3:178"},"nodeType":"YulFunctionCall","src":"1168:24:178"},{"name":"_2","nodeType":"YulIdentifier","src":"1194:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1164:3:178"},"nodeType":"YulFunctionCall","src":"1164:33:178"},{"name":"end","nodeType":"YulIdentifier","src":"1199:3:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1161:2:178"},"nodeType":"YulFunctionCall","src":"1161:42:178"},"nodeType":"YulIf","src":"1158:2:178"},{"nodeType":"YulVariableDeclaration","src":"1237:14:178","value":{"name":"array","nodeType":"YulIdentifier","src":"1246:5:178"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1241:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"1305:137:178","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1326:3:178"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1363:3:178"}],"functionName":{"name":"abi_decode_t_uint192_fromMemory","nodeType":"YulIdentifier","src":"1331:31:178"},"nodeType":"YulFunctionCall","src":"1331:36:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1319:6:178"},"nodeType":"YulFunctionCall","src":"1319:49:178"},"nodeType":"YulExpressionStatement","src":"1319:49:178"},{"nodeType":"YulAssignment","src":"1381:19:178","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1392:3:178"},{"name":"_2","nodeType":"YulIdentifier","src":"1397:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1388:3:178"},"nodeType":"YulFunctionCall","src":"1388:12:178"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"1381:3:178"}]},{"nodeType":"YulAssignment","src":"1413:19:178","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1424:3:178"},{"name":"_2","nodeType":"YulIdentifier","src":"1429:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1420:3:178"},"nodeType":"YulFunctionCall","src":"1420:12:178"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"1413:3:178"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1271:1:178"},{"name":"_1","nodeType":"YulIdentifier","src":"1274:2:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1268:2:178"},"nodeType":"YulFunctionCall","src":"1268:9:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1278:18:178","statements":[{"nodeType":"YulAssignment","src":"1280:14:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1289:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"1292:1:178","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1285:3:178"},"nodeType":"YulFunctionCall","src":"1285:9:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1280:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"1264:3:178","statements":[]},"src":"1260:182:178"},{"nodeType":"YulAssignment","src":"1451:14:178","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"1460:5:178"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"1451:5:178"}]}]},"name":"abi_decode_t_array$_t_uint192_$dyn_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"800:6:178","type":""},{"name":"end","nodeType":"YulTypedName","src":"808:3:178","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"816:5:178","type":""}],"src":"745:726:178"},{"body":{"nodeType":"YulBlock","src":"1536:106:178","statements":[{"nodeType":"YulAssignment","src":"1546:22:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1561:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1555:5:178"},"nodeType":"YulFunctionCall","src":"1555:13:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1546:5:178"}]},{"body":{"nodeType":"YulBlock","src":"1620:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1629:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1632:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1622:6:178"},"nodeType":"YulFunctionCall","src":"1622:12:178"},"nodeType":"YulExpressionStatement","src":"1622:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1590:5:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1608:1:178","type":"","value":"6"},{"name":"value","nodeType":"YulIdentifier","src":"1611:5:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"1597:10:178"},"nodeType":"YulFunctionCall","src":"1597:20:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1587:2:178"},"nodeType":"YulFunctionCall","src":"1587:31:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1580:6:178"},"nodeType":"YulFunctionCall","src":"1580:39:178"},"nodeType":"YulIf","src":"1577:2:178"}]},"name":"abi_decode_t_int56_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1515:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1526:5:178","type":""}],"src":"1476:166:178"},{"body":{"nodeType":"YulBlock","src":"1709:140:178","statements":[{"nodeType":"YulAssignment","src":"1719:22:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1734:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1728:5:178"},"nodeType":"YulFunctionCall","src":"1728:13:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1719:5:178"}]},{"body":{"nodeType":"YulBlock","src":"1827:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1836:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1839:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1829:6:178"},"nodeType":"YulFunctionCall","src":"1829:12:178"},"nodeType":"YulExpressionStatement","src":"1829:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1763:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1774:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"1781:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1770:3:178"},"nodeType":"YulFunctionCall","src":"1770:54:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1760:2:178"},"nodeType":"YulFunctionCall","src":"1760:65:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1753:6:178"},"nodeType":"YulFunctionCall","src":"1753:73:178"},"nodeType":"YulIf","src":"1750:2:178"}]},"name":"abi_decode_t_uint160_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1688:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1699:5:178","type":""}],"src":"1647:202:178"},{"body":{"nodeType":"YulBlock","src":"1916:148:178","statements":[{"nodeType":"YulAssignment","src":"1926:22:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1941:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1935:5:178"},"nodeType":"YulFunctionCall","src":"1935:13:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1926:5:178"}]},{"body":{"nodeType":"YulBlock","src":"2042:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2051:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2054:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2044:6:178"},"nodeType":"YulFunctionCall","src":"2044:12:178"},"nodeType":"YulExpressionStatement","src":"2044:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1970:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1981:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"1988:50:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1977:3:178"},"nodeType":"YulFunctionCall","src":"1977:62:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1967:2:178"},"nodeType":"YulFunctionCall","src":"1967:73:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1960:6:178"},"nodeType":"YulFunctionCall","src":"1960:81:178"},"nodeType":"YulIf","src":"1957:2:178"}]},"name":"abi_decode_t_uint192_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1895:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1906:5:178","type":""}],"src":"1854:210:178"},{"body":{"nodeType":"YulBlock","src":"2257:1290:178","statements":[{"body":{"nodeType":"YulBlock","src":"2303:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2312:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2320:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2305:6:178"},"nodeType":"YulFunctionCall","src":"2305:22:178"},"nodeType":"YulExpressionStatement","src":"2305:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2278:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"2287:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2274:3:178"},"nodeType":"YulFunctionCall","src":"2274:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"2299:2:178","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2270:3:178"},"nodeType":"YulFunctionCall","src":"2270:32:178"},"nodeType":"YulIf","src":"2267:2:178"},{"nodeType":"YulVariableDeclaration","src":"2338:30:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2358:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2352:5:178"},"nodeType":"YulFunctionCall","src":"2352:16:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2342:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2377:28:178","value":{"kind":"number","nodeType":"YulLiteral","src":"2387:18:178","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2381:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2432:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2441:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2449:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2434:6:178"},"nodeType":"YulFunctionCall","src":"2434:22:178"},"nodeType":"YulExpressionStatement","src":"2434:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2420:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"2428:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2417:2:178"},"nodeType":"YulFunctionCall","src":"2417:14:178"},"nodeType":"YulIf","src":"2414:2:178"},{"nodeType":"YulVariableDeclaration","src":"2467:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2481:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"2492:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2477:3:178"},"nodeType":"YulFunctionCall","src":"2477:22:178"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2471:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2547:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2556:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2564:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2549:6:178"},"nodeType":"YulFunctionCall","src":"2549:22:178"},"nodeType":"YulExpressionStatement","src":"2549:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2526:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"2530:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2522:3:178"},"nodeType":"YulFunctionCall","src":"2522:13:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2537:7:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2518:3:178"},"nodeType":"YulFunctionCall","src":"2518:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2511:6:178"},"nodeType":"YulFunctionCall","src":"2511:35:178"},"nodeType":"YulIf","src":"2508:2:178"},{"nodeType":"YulVariableDeclaration","src":"2582:19:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2598:2:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2592:5:178"},"nodeType":"YulFunctionCall","src":"2592:9:178"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2586:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2610:14:178","value":{"kind":"number","nodeType":"YulLiteral","src":"2620:4:178","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"2614:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2633:74:178","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2703:2:178"}],"functionName":{"name":"array_allocation_size_t_array$_t_int56_$dyn","nodeType":"YulIdentifier","src":"2659:43:178"},"nodeType":"YulFunctionCall","src":"2659:47:178"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"2644:14:178"},"nodeType":"YulFunctionCall","src":"2644:63:178"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"2637:3:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2716:16:178","value":{"name":"dst","nodeType":"YulIdentifier","src":"2729:3:178"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"2720:5:178","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2748:3:178"},{"name":"_3","nodeType":"YulIdentifier","src":"2753:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2741:6:178"},"nodeType":"YulFunctionCall","src":"2741:15:178"},"nodeType":"YulExpressionStatement","src":"2741:15:178"},{"nodeType":"YulAssignment","src":"2765:19:178","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2776:3:178"},{"name":"_4","nodeType":"YulIdentifier","src":"2781:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2772:3:178"},"nodeType":"YulFunctionCall","src":"2772:12:178"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"2765:3:178"}]},{"nodeType":"YulVariableDeclaration","src":"2793:22:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2808:2:178"},{"name":"_4","nodeType":"YulIdentifier","src":"2812:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2804:3:178"},"nodeType":"YulFunctionCall","src":"2804:11:178"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"2797:3:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2870:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2879:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2887:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2872:6:178"},"nodeType":"YulFunctionCall","src":"2872:22:178"},"nodeType":"YulExpressionStatement","src":"2872:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2838:2:178"},{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2846:2:178"},{"name":"_4","nodeType":"YulIdentifier","src":"2850:2:178"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2842:3:178"},"nodeType":"YulFunctionCall","src":"2842:11:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2834:3:178"},"nodeType":"YulFunctionCall","src":"2834:20:178"},{"name":"_4","nodeType":"YulIdentifier","src":"2856:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2830:3:178"},"nodeType":"YulFunctionCall","src":"2830:29:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2861:7:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2827:2:178"},"nodeType":"YulFunctionCall","src":"2827:42:178"},"nodeType":"YulIf","src":"2824:2:178"},{"nodeType":"YulVariableDeclaration","src":"2905:15:178","value":{"name":"value0","nodeType":"YulIdentifier","src":"2914:6:178"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"2909:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2974:135:178","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2995:3:178"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3030:3:178"}],"functionName":{"name":"abi_decode_t_int56_fromMemory","nodeType":"YulIdentifier","src":"3000:29:178"},"nodeType":"YulFunctionCall","src":"3000:34:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2988:6:178"},"nodeType":"YulFunctionCall","src":"2988:47:178"},"nodeType":"YulExpressionStatement","src":"2988:47:178"},{"nodeType":"YulAssignment","src":"3048:19:178","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3059:3:178"},{"name":"_4","nodeType":"YulIdentifier","src":"3064:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3055:3:178"},"nodeType":"YulFunctionCall","src":"3055:12:178"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3048:3:178"}]},{"nodeType":"YulAssignment","src":"3080:19:178","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3091:3:178"},{"name":"_4","nodeType":"YulIdentifier","src":"3096:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3087:3:178"},"nodeType":"YulFunctionCall","src":"3087:12:178"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"3080:3:178"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2940:1:178"},{"name":"_3","nodeType":"YulIdentifier","src":"2943:2:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2937:2:178"},"nodeType":"YulFunctionCall","src":"2937:9:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2947:18:178","statements":[{"nodeType":"YulAssignment","src":"2949:14:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2958:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"2961:1:178","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2954:3:178"},"nodeType":"YulFunctionCall","src":"2954:9:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"2949:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"2933:3:178","statements":[]},"src":"2929:180:178"},{"nodeType":"YulAssignment","src":"3118:15:178","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"3128:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3118:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"3142:41:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3168:9:178"},{"name":"_4","nodeType":"YulIdentifier","src":"3179:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3164:3:178"},"nodeType":"YulFunctionCall","src":"3164:18:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3158:5:178"},"nodeType":"YulFunctionCall","src":"3158:25:178"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"3146:8:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3212:26:178","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"3221:6:178"},{"name":"value1","nodeType":"YulIdentifier","src":"3229:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3214:6:178"},"nodeType":"YulFunctionCall","src":"3214:22:178"},"nodeType":"YulExpressionStatement","src":"3214:22:178"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"3198:8:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3208:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3195:2:178"},"nodeType":"YulFunctionCall","src":"3195:16:178"},"nodeType":"YulIf","src":"3192:2:178"},{"nodeType":"YulAssignment","src":"3247:90:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3307:9:178"},{"name":"offset_1","nodeType":"YulIdentifier","src":"3318:8:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3303:3:178"},"nodeType":"YulFunctionCall","src":"3303:24:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3329:7:178"}],"functionName":{"name":"abi_decode_t_array$_t_uint160_$dyn_fromMemory","nodeType":"YulIdentifier","src":"3257:45:178"},"nodeType":"YulFunctionCall","src":"3257:80:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3247:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"3346:41:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3372:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3383:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3368:3:178"},"nodeType":"YulFunctionCall","src":"3368:18:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3362:5:178"},"nodeType":"YulFunctionCall","src":"3362:25:178"},"variables":[{"name":"offset_2","nodeType":"YulTypedName","src":"3350:8:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3416:26:178","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"3425:6:178"},{"name":"value2","nodeType":"YulIdentifier","src":"3433:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3418:6:178"},"nodeType":"YulFunctionCall","src":"3418:22:178"},"nodeType":"YulExpressionStatement","src":"3418:22:178"}]},"condition":{"arguments":[{"name":"offset_2","nodeType":"YulIdentifier","src":"3402:8:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3412:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3399:2:178"},"nodeType":"YulFunctionCall","src":"3399:16:178"},"nodeType":"YulIf","src":"3396:2:178"},{"nodeType":"YulAssignment","src":"3451:90:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3511:9:178"},{"name":"offset_2","nodeType":"YulIdentifier","src":"3522:8:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3507:3:178"},"nodeType":"YulFunctionCall","src":"3507:24:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3533:7:178"}],"functionName":{"name":"abi_decode_t_array$_t_uint192_$dyn_fromMemory","nodeType":"YulIdentifier","src":"3461:45:178"},"nodeType":"YulFunctionCall","src":"3461:80:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3451:6:178"}]}]},"name":"abi_decode_tuple_t_array$_t_int56_$dyn_memory_ptrt_array$_t_uint160_$dyn_memory_ptrt_array$_t_uint192_$dyn_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2207:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2218:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2230:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2238:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2246:6:178","type":""}],"src":"2069:1478:178"},{"body":{"nodeType":"YulBlock","src":"3621:188:178","statements":[{"body":{"nodeType":"YulBlock","src":"3667:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3676:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3684:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3669:6:178"},"nodeType":"YulFunctionCall","src":"3669:22:178"},"nodeType":"YulExpressionStatement","src":"3669:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3642:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"3651:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3638:3:178"},"nodeType":"YulFunctionCall","src":"3638:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"3663:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3634:3:178"},"nodeType":"YulFunctionCall","src":"3634:32:178"},"nodeType":"YulIf","src":"3631:2:178"},{"nodeType":"YulVariableDeclaration","src":"3702:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3728:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3715:12:178"},"nodeType":"YulFunctionCall","src":"3715:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3706:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3773:5:178"}],"functionName":{"name":"validator_revert_t_uint16","nodeType":"YulIdentifier","src":"3747:25:178"},"nodeType":"YulFunctionCall","src":"3747:32:178"},"nodeType":"YulExpressionStatement","src":"3747:32:178"},{"nodeType":"YulAssignment","src":"3788:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"3798:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3788:6:178"}]}]},"name":"abi_decode_tuple_t_uint16","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3587:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3598:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3610:6:178","type":""}],"src":"3552:257:178"},{"body":{"nodeType":"YulBlock","src":"3894:181:178","statements":[{"body":{"nodeType":"YulBlock","src":"3940:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3949:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3957:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3942:6:178"},"nodeType":"YulFunctionCall","src":"3942:22:178"},"nodeType":"YulExpressionStatement","src":"3942:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3915:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"3924:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3911:3:178"},"nodeType":"YulFunctionCall","src":"3911:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"3936:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3907:3:178"},"nodeType":"YulFunctionCall","src":"3907:32:178"},"nodeType":"YulIf","src":"3904:2:178"},{"nodeType":"YulVariableDeclaration","src":"3975:29:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3994:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3988:5:178"},"nodeType":"YulFunctionCall","src":"3988:16:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3979:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4039:5:178"}],"functionName":{"name":"validator_revert_t_uint16","nodeType":"YulIdentifier","src":"4013:25:178"},"nodeType":"YulFunctionCall","src":"4013:32:178"},"nodeType":"YulExpressionStatement","src":"4013:32:178"},{"nodeType":"YulAssignment","src":"4054:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"4064:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4054:6:178"}]}]},"name":"abi_decode_tuple_t_uint16_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3860:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3871:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3883:6:178","type":""}],"src":"3814:261:178"},{"body":{"nodeType":"YulBlock","src":"4149:188:178","statements":[{"body":{"nodeType":"YulBlock","src":"4195:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4204:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"4212:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4197:6:178"},"nodeType":"YulFunctionCall","src":"4197:22:178"},"nodeType":"YulExpressionStatement","src":"4197:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4170:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"4179:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4166:3:178"},"nodeType":"YulFunctionCall","src":"4166:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"4191:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4162:3:178"},"nodeType":"YulFunctionCall","src":"4162:32:178"},"nodeType":"YulIf","src":"4159:2:178"},{"nodeType":"YulVariableDeclaration","src":"4230:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4256:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4243:12:178"},"nodeType":"YulFunctionCall","src":"4243:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4234:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4301:5:178"}],"functionName":{"name":"validator_revert_t_uint32","nodeType":"YulIdentifier","src":"4275:25:178"},"nodeType":"YulFunctionCall","src":"4275:32:178"},"nodeType":"YulExpressionStatement","src":"4275:32:178"},{"nodeType":"YulAssignment","src":"4316:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"4326:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4316:6:178"}]}]},"name":"abi_decode_tuple_t_uint32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4115:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4126:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4138:6:178","type":""}],"src":"4080:257:178"},{"body":{"nodeType":"YulBlock","src":"4443:542:178","statements":[{"body":{"nodeType":"YulBlock","src":"4489:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4498:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"4506:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4491:6:178"},"nodeType":"YulFunctionCall","src":"4491:22:178"},"nodeType":"YulExpressionStatement","src":"4491:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4464:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"4473:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4460:3:178"},"nodeType":"YulFunctionCall","src":"4460:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"4485:2:178","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4456:3:178"},"nodeType":"YulFunctionCall","src":"4456:32:178"},"nodeType":"YulIf","src":"4453:2:178"},{"nodeType":"YulVariableDeclaration","src":"4524:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4550:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4537:12:178"},"nodeType":"YulFunctionCall","src":"4537:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4528:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4595:5:178"}],"functionName":{"name":"validator_revert_t_uint32","nodeType":"YulIdentifier","src":"4569:25:178"},"nodeType":"YulFunctionCall","src":"4569:32:178"},"nodeType":"YulExpressionStatement","src":"4569:32:178"},{"nodeType":"YulAssignment","src":"4610:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"4620:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4610:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"4634:47:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4666:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4677:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4662:3:178"},"nodeType":"YulFunctionCall","src":"4662:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4649:12:178"},"nodeType":"YulFunctionCall","src":"4649:32:178"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"4638:7:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"4737:26:178","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"4746:6:178"},{"name":"value1","nodeType":"YulIdentifier","src":"4754:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4739:6:178"},"nodeType":"YulFunctionCall","src":"4739:22:178"},"nodeType":"YulExpressionStatement","src":"4739:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"4703:7:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4723:1:178","type":"","value":"2"},{"name":"value_1","nodeType":"YulIdentifier","src":"4726:7:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"4712:10:178"},"nodeType":"YulFunctionCall","src":"4712:22:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4700:2:178"},"nodeType":"YulFunctionCall","src":"4700:35:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4693:6:178"},"nodeType":"YulFunctionCall","src":"4693:43:178"},"nodeType":"YulIf","src":"4690:2:178"},{"nodeType":"YulAssignment","src":"4772:17:178","value":{"name":"value_1","nodeType":"YulIdentifier","src":"4782:7:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4772:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"4798:47:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4830:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4841:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4826:3:178"},"nodeType":"YulFunctionCall","src":"4826:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4813:12:178"},"nodeType":"YulFunctionCall","src":"4813:32:178"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"4802:7:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"4927:26:178","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4936:6:178"},{"name":"value2","nodeType":"YulIdentifier","src":"4944:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4929:6:178"},"nodeType":"YulFunctionCall","src":"4929:22:178"},"nodeType":"YulExpressionStatement","src":"4929:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"4867:7:178"},{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"4880:7:178"},{"kind":"number","nodeType":"YulLiteral","src":"4889:34:178","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4876:3:178"},"nodeType":"YulFunctionCall","src":"4876:48:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4864:2:178"},"nodeType":"YulFunctionCall","src":"4864:61:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4857:6:178"},"nodeType":"YulFunctionCall","src":"4857:69:178"},"nodeType":"YulIf","src":"4854:2:178"},{"nodeType":"YulAssignment","src":"4962:17:178","value":{"name":"value_2","nodeType":"YulIdentifier","src":"4972:7:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4962:6:178"}]}]},"name":"abi_decode_tuple_t_uint32t_int24t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4393:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4404:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4416:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4424:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4432:6:178","type":""}],"src":"4342:643:178"},{"body":{"nodeType":"YulBlock","src":"5133:549:178","statements":[{"body":{"nodeType":"YulBlock","src":"5180:26:178","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"5189:6:178"},{"name":"value4","nodeType":"YulIdentifier","src":"5197:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5182:6:178"},"nodeType":"YulFunctionCall","src":"5182:22:178"},"nodeType":"YulExpressionStatement","src":"5182:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5154:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"5163:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5150:3:178"},"nodeType":"YulFunctionCall","src":"5150:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"5175:3:178","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5146:3:178"},"nodeType":"YulFunctionCall","src":"5146:33:178"},"nodeType":"YulIf","src":"5143:2:178"},{"nodeType":"YulVariableDeclaration","src":"5215:29:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5234:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5228:5:178"},"nodeType":"YulFunctionCall","src":"5228:16:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"5219:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5279:5:178"}],"functionName":{"name":"validator_revert_t_uint32","nodeType":"YulIdentifier","src":"5253:25:178"},"nodeType":"YulFunctionCall","src":"5253:32:178"},"nodeType":"YulExpressionStatement","src":"5253:32:178"},{"nodeType":"YulAssignment","src":"5294:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"5304:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5294:6:178"}]},{"nodeType":"YulAssignment","src":"5318:59:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5362:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5373:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5358:3:178"},"nodeType":"YulFunctionCall","src":"5358:18:178"}],"functionName":{"name":"abi_decode_t_int56_fromMemory","nodeType":"YulIdentifier","src":"5328:29:178"},"nodeType":"YulFunctionCall","src":"5328:49:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5318:6:178"}]},{"nodeType":"YulAssignment","src":"5386:61:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5432:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5443:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5428:3:178"},"nodeType":"YulFunctionCall","src":"5428:18:178"}],"functionName":{"name":"abi_decode_t_uint160_fromMemory","nodeType":"YulIdentifier","src":"5396:31:178"},"nodeType":"YulFunctionCall","src":"5396:51:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5386:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"5456:40:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5481:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5492:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5477:3:178"},"nodeType":"YulFunctionCall","src":"5477:18:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5471:5:178"},"nodeType":"YulFunctionCall","src":"5471:25:178"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"5460:7:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"5553:26:178","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"5562:6:178"},{"name":"value4","nodeType":"YulIdentifier","src":"5570:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5555:6:178"},"nodeType":"YulFunctionCall","src":"5555:22:178"},"nodeType":"YulExpressionStatement","src":"5555:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"5518:7:178"},{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"5541:7:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5534:6:178"},"nodeType":"YulFunctionCall","src":"5534:15:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5527:6:178"},"nodeType":"YulFunctionCall","src":"5527:23:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5515:2:178"},"nodeType":"YulFunctionCall","src":"5515:36:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5508:6:178"},"nodeType":"YulFunctionCall","src":"5508:44:178"},"nodeType":"YulIf","src":"5505:2:178"},{"nodeType":"YulAssignment","src":"5588:17:178","value":{"name":"value_1","nodeType":"YulIdentifier","src":"5598:7:178"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"5588:6:178"}]},{"nodeType":"YulAssignment","src":"5614:62:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5660:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5671:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5656:3:178"},"nodeType":"YulFunctionCall","src":"5656:19:178"}],"functionName":{"name":"abi_decode_t_uint192_fromMemory","nodeType":"YulIdentifier","src":"5624:31:178"},"nodeType":"YulFunctionCall","src":"5624:52:178"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"5614:6:178"}]}]},"name":"abi_decode_tuple_t_uint32t_int56t_uint160t_boolt_uint192_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5067:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5078:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5090:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5098:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5106:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"5114:6:178","type":""},{"name":"value4","nodeType":"YulTypedName","src":"5122:6:178","type":""}],"src":"4990:692:178"},{"body":{"nodeType":"YulBlock","src":"5750:226:178","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5767:3:178"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5782:5:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5776:5:178"},"nodeType":"YulFunctionCall","src":"5776:12:178"},{"kind":"number","nodeType":"YulLiteral","src":"5790:10:178","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5772:3:178"},"nodeType":"YulFunctionCall","src":"5772:29:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5760:6:178"},"nodeType":"YulFunctionCall","src":"5760:42:178"},"nodeType":"YulExpressionStatement","src":"5760:42:178"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5822:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"5827:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5818:3:178"},"nodeType":"YulFunctionCall","src":"5818:14:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5845:1:178","type":"","value":"2"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5858:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"5865:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5854:3:178"},"nodeType":"YulFunctionCall","src":"5854:16:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5848:5:178"},"nodeType":"YulFunctionCall","src":"5848:23:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"5834:10:178"},"nodeType":"YulFunctionCall","src":"5834:38:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5811:6:178"},"nodeType":"YulFunctionCall","src":"5811:62:178"},"nodeType":"YulExpressionStatement","src":"5811:62:178"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5893:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"5898:4:178","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5889:3:178"},"nodeType":"YulFunctionCall","src":"5889:14:178"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5919:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"5926:4:178","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5915:3:178"},"nodeType":"YulFunctionCall","src":"5915:16:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5909:5:178"},"nodeType":"YulFunctionCall","src":"5909:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"5934:34:178","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5905:3:178"},"nodeType":"YulFunctionCall","src":"5905:64:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5882:6:178"},"nodeType":"YulFunctionCall","src":"5882:88:178"},"nodeType":"YulExpressionStatement","src":"5882:88:178"}]},"name":"abi_encode_t_struct$_InitializeParams","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5734:5:178","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5741:3:178","type":""}],"src":"5687:289:178"},{"body":{"nodeType":"YulBlock","src":"6118:293:178","statements":[{"nodeType":"YulVariableDeclaration","src":"6128:27:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6148:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6142:5:178"},"nodeType":"YulFunctionCall","src":"6142:13:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6132:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6164:12:178","value":{"name":"end","nodeType":"YulIdentifier","src":"6173:3:178"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6168:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"6237:77:178","statements":[{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6262:3:178"},{"name":"i","nodeType":"YulIdentifier","src":"6267:1:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6258:3:178"},"nodeType":"YulFunctionCall","src":"6258:11:178"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6285:6:178"},{"name":"i","nodeType":"YulIdentifier","src":"6293:1:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6281:3:178"},"nodeType":"YulFunctionCall","src":"6281:14:178"},{"kind":"number","nodeType":"YulLiteral","src":"6297:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6277:3:178"},"nodeType":"YulFunctionCall","src":"6277:25:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6271:5:178"},"nodeType":"YulFunctionCall","src":"6271:32:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6251:6:178"},"nodeType":"YulFunctionCall","src":"6251:53:178"},"nodeType":"YulExpressionStatement","src":"6251:53:178"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6196:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"6199:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6193:2:178"},"nodeType":"YulFunctionCall","src":"6193:13:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6207:21:178","statements":[{"nodeType":"YulAssignment","src":"6209:17:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6218:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"6221:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6214:3:178"},"nodeType":"YulFunctionCall","src":"6214:12:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6209:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"6189:3:178","statements":[]},"src":"6185:129:178"},{"body":{"nodeType":"YulBlock","src":"6340:33:178","statements":[{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6353:3:178"},{"name":"length","nodeType":"YulIdentifier","src":"6358:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6349:3:178"},"nodeType":"YulFunctionCall","src":"6349:16:178"},{"name":"end","nodeType":"YulIdentifier","src":"6367:3:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6342:6:178"},"nodeType":"YulFunctionCall","src":"6342:29:178"},"nodeType":"YulExpressionStatement","src":"6342:29:178"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6329:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"6332:6:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6326:2:178"},"nodeType":"YulFunctionCall","src":"6326:13:178"},"nodeType":"YulIf","src":"6323:2:178"},{"nodeType":"YulAssignment","src":"6382:23:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6393:3:178"},{"name":"length","nodeType":"YulIdentifier","src":"6398:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6389:3:178"},"nodeType":"YulFunctionCall","src":"6389:16:178"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6382:3:178"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"6094:3:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6099:6:178","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6110:3:178","type":""}],"src":"5981:430:178"},{"body":{"nodeType":"YulBlock","src":"6565:501:178","statements":[{"nodeType":"YulVariableDeclaration","src":"6575:12:178","value":{"kind":"number","nodeType":"YulLiteral","src":"6585:2:178","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6579:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6596:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6614:9:178"},{"name":"_1","nodeType":"YulIdentifier","src":"6625:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6610:3:178"},"nodeType":"YulFunctionCall","src":"6610:18:178"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6600:6:178","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6644:9:178"},{"name":"_1","nodeType":"YulIdentifier","src":"6655:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6637:6:178"},"nodeType":"YulFunctionCall","src":"6637:21:178"},"nodeType":"YulExpressionStatement","src":"6637:21:178"},{"nodeType":"YulVariableDeclaration","src":"6667:17:178","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"6678:6:178"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"6671:3:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6693:27:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6713:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6707:5:178"},"nodeType":"YulFunctionCall","src":"6707:13:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6697:6:178","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6736:6:178"},{"name":"length","nodeType":"YulIdentifier","src":"6744:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6729:6:178"},"nodeType":"YulFunctionCall","src":"6729:22:178"},"nodeType":"YulExpressionStatement","src":"6729:22:178"},{"nodeType":"YulAssignment","src":"6760:25:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6771:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"6782:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6767:3:178"},"nodeType":"YulFunctionCall","src":"6767:18:178"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6760:3:178"}]},{"nodeType":"YulVariableDeclaration","src":"6794:29:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6812:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"6820:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6808:3:178"},"nodeType":"YulFunctionCall","src":"6808:15:178"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"6798:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6832:13:178","value":{"name":"tail","nodeType":"YulIdentifier","src":"6841:4:178"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6836:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"6903:137:178","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6924:3:178"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6939:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6933:5:178"},"nodeType":"YulFunctionCall","src":"6933:13:178"},{"kind":"number","nodeType":"YulLiteral","src":"6948:10:178","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6929:3:178"},"nodeType":"YulFunctionCall","src":"6929:30:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6917:6:178"},"nodeType":"YulFunctionCall","src":"6917:43:178"},"nodeType":"YulExpressionStatement","src":"6917:43:178"},{"nodeType":"YulAssignment","src":"6973:19:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6984:3:178"},{"name":"_1","nodeType":"YulIdentifier","src":"6989:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6980:3:178"},"nodeType":"YulFunctionCall","src":"6980:12:178"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6973:3:178"}]},{"nodeType":"YulAssignment","src":"7005:25:178","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7019:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"7027:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7015:3:178"},"nodeType":"YulFunctionCall","src":"7015:15:178"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7005:6:178"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6865:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"6868:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6862:2:178"},"nodeType":"YulFunctionCall","src":"6862:13:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6876:18:178","statements":[{"nodeType":"YulAssignment","src":"6878:14:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6887:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"6890:1:178","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6883:3:178"},"nodeType":"YulFunctionCall","src":"6883:9:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6878:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"6858:3:178","statements":[]},"src":"6854:186:178"},{"nodeType":"YulAssignment","src":"7049:11:178","value":{"name":"pos","nodeType":"YulIdentifier","src":"7057:3:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7049:4:178"}]}]},"name":"abi_encode_tuple_t_array$_t_uint32_$dyn_memory_ptr__to_t_array$_t_uint32_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6534:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6545:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6556:4:178","type":""}],"src":"6416:650:178"},{"body":{"nodeType":"YulBlock","src":"7166:92:178","statements":[{"nodeType":"YulAssignment","src":"7176:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7188:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"7199:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7184:3:178"},"nodeType":"YulFunctionCall","src":"7184:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7176:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7218:9:178"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7243:6:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7236:6:178"},"nodeType":"YulFunctionCall","src":"7236:14:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7229:6:178"},"nodeType":"YulFunctionCall","src":"7229:22:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7211:6:178"},"nodeType":"YulFunctionCall","src":"7211:41:178"},"nodeType":"YulExpressionStatement","src":"7211:41:178"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7135:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7146:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7157:4:178","type":""}],"src":"7071:187:178"},{"body":{"nodeType":"YulBlock","src":"7372:76:178","statements":[{"nodeType":"YulAssignment","src":"7382:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7394:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"7405:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7390:3:178"},"nodeType":"YulFunctionCall","src":"7390:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7382:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7424:9:178"},{"name":"value0","nodeType":"YulIdentifier","src":"7435:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7417:6:178"},"nodeType":"YulFunctionCall","src":"7417:25:178"},"nodeType":"YulExpressionStatement","src":"7417:25:178"}]},"name":"abi_encode_tuple_t_rational_0_by_1__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7341:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7352:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7363:4:178","type":""}],"src":"7263:185:178"},{"body":{"nodeType":"YulBlock","src":"7622:107:178","statements":[{"nodeType":"YulAssignment","src":"7632:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7644:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"7655:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7640:3:178"},"nodeType":"YulFunctionCall","src":"7640:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7632:4:178"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7705:6:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"7713:9:178"}],"functionName":{"name":"abi_encode_t_struct$_InitializeParams","nodeType":"YulIdentifier","src":"7667:37:178"},"nodeType":"YulFunctionCall","src":"7667:56:178"},"nodeType":"YulExpressionStatement","src":"7667:56:178"}]},"name":"abi_encode_tuple_t_struct$_InitializeParams_$9230_memory_ptr__to_t_struct$_InitializeParams_$9230_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7591:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7602:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7613:4:178","type":""}],"src":"7453:276:178"},{"body":{"nodeType":"YulBlock","src":"7895:107:178","statements":[{"nodeType":"YulAssignment","src":"7905:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7917:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"7928:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7913:3:178"},"nodeType":"YulFunctionCall","src":"7913:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7905:4:178"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7978:6:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"7986:9:178"}],"functionName":{"name":"abi_encode_t_struct$_InitializeParams","nodeType":"YulIdentifier","src":"7940:37:178"},"nodeType":"YulFunctionCall","src":"7940:56:178"},"nodeType":"YulExpressionStatement","src":"7940:56:178"}]},"name":"abi_encode_tuple_t_struct$_UpdateParams_$9285_memory_ptr__to_t_struct$_UpdateParams_$9285_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7864:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7875:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7886:4:178","type":""}],"src":"7734:268:178"},{"body":{"nodeType":"YulBlock","src":"8106:89:178","statements":[{"nodeType":"YulAssignment","src":"8116:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8128:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"8139:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8124:3:178"},"nodeType":"YulFunctionCall","src":"8124:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8116:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8158:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8173:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"8181:6:178","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8169:3:178"},"nodeType":"YulFunctionCall","src":"8169:19:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8151:6:178"},"nodeType":"YulFunctionCall","src":"8151:38:178"},"nodeType":"YulExpressionStatement","src":"8151:38:178"}]},"name":"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8075:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8086:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8097:4:178","type":""}],"src":"8007:188:178"},{"body":{"nodeType":"YulBlock","src":"8300:89:178","statements":[{"nodeType":"YulAssignment","src":"8310:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8322:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"8333:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8318:3:178"},"nodeType":"YulFunctionCall","src":"8318:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8310:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8352:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8367:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"8375:6:178","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8363:3:178"},"nodeType":"YulFunctionCall","src":"8363:19:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8345:6:178"},"nodeType":"YulFunctionCall","src":"8345:38:178"},"nodeType":"YulExpressionStatement","src":"8345:38:178"}]},"name":"abi_encode_tuple_t_uint16__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8269:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8280:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8291:4:178","type":""}],"src":"8200:189:178"},{"body":{"nodeType":"YulBlock","src":"8493:93:178","statements":[{"nodeType":"YulAssignment","src":"8503:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8515:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"8526:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8511:3:178"},"nodeType":"YulFunctionCall","src":"8511:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8503:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8545:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8560:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"8568:10:178","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8556:3:178"},"nodeType":"YulFunctionCall","src":"8556:23:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8538:6:178"},"nodeType":"YulFunctionCall","src":"8538:42:178"},"nodeType":"YulExpressionStatement","src":"8538:42:178"}]},"name":"abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8462:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8473:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8484:4:178","type":""}],"src":"8394:192:178"},{"body":{"nodeType":"YulBlock","src":"8635:198:178","statements":[{"nodeType":"YulAssignment","src":"8645:19:178","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8661:2:178","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8655:5:178"},"nodeType":"YulFunctionCall","src":"8655:9:178"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8645:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"8673:35:178","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8695:6:178"},{"name":"size","nodeType":"YulIdentifier","src":"8703:4:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8691:3:178"},"nodeType":"YulFunctionCall","src":"8691:17:178"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"8677:10:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"8783:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"8785:7:178"},"nodeType":"YulFunctionCall","src":"8785:9:178"},"nodeType":"YulExpressionStatement","src":"8785:9:178"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8726:10:178"},{"kind":"number","nodeType":"YulLiteral","src":"8738:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8723:2:178"},"nodeType":"YulFunctionCall","src":"8723:34:178"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8762:10:178"},{"name":"memPtr","nodeType":"YulIdentifier","src":"8774:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8759:2:178"},"nodeType":"YulFunctionCall","src":"8759:22:178"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8720:2:178"},"nodeType":"YulFunctionCall","src":"8720:62:178"},"nodeType":"YulIf","src":"8717:2:178"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8812:2:178","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8816:10:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8805:6:178"},"nodeType":"YulFunctionCall","src":"8805:22:178"},"nodeType":"YulExpressionStatement","src":"8805:22:178"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"8615:4:178","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"8624:6:178","type":""}],"src":"8591:242:178"},{"body":{"nodeType":"YulBlock","src":"8911:108:178","statements":[{"body":{"nodeType":"YulBlock","src":"8955:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"8957:7:178"},"nodeType":"YulFunctionCall","src":"8957:9:178"},"nodeType":"YulExpressionStatement","src":"8957:9:178"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8927:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"8935:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8924:2:178"},"nodeType":"YulFunctionCall","src":"8924:30:178"},"nodeType":"YulIf","src":"8921:2:178"},{"nodeType":"YulAssignment","src":"8977:36:178","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8993:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"9001:4:178","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"8989:3:178"},"nodeType":"YulFunctionCall","src":"8989:17:178"},{"kind":"number","nodeType":"YulLiteral","src":"9008:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8985:3:178"},"nodeType":"YulFunctionCall","src":"8985:28:178"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"8977:4:178"}]}]},"name":"array_allocation_size_t_array$_t_int56_$dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"8891:6:178","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"8902:4:178","type":""}],"src":"8838:181:178"},{"body":{"nodeType":"YulBlock","src":"9070:73:178","statements":[{"body":{"nodeType":"YulBlock","src":"9121:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9130:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9133:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9123:6:178"},"nodeType":"YulFunctionCall","src":"9123:12:178"},"nodeType":"YulExpressionStatement","src":"9123:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9093:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9104:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"9111:6:178","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9100:3:178"},"nodeType":"YulFunctionCall","src":"9100:18:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"9090:2:178"},"nodeType":"YulFunctionCall","src":"9090:29:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9083:6:178"},"nodeType":"YulFunctionCall","src":"9083:37:178"},"nodeType":"YulIf","src":"9080:2:178"}]},"name":"validator_revert_t_uint16","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9059:5:178","type":""}],"src":"9024:119:178"},{"body":{"nodeType":"YulBlock","src":"9194:77:178","statements":[{"body":{"nodeType":"YulBlock","src":"9249:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9258:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9261:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9251:6:178"},"nodeType":"YulFunctionCall","src":"9251:12:178"},"nodeType":"YulExpressionStatement","src":"9251:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9217:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9228:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"9235:10:178","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9224:3:178"},"nodeType":"YulFunctionCall","src":"9224:22:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"9214:2:178"},"nodeType":"YulFunctionCall","src":"9214:33:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9207:6:178"},"nodeType":"YulFunctionCall","src":"9207:41:178"},"nodeType":"YulIf","src":"9204:2:178"}]},"name":"validator_revert_t_uint32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9183:5:178","type":""}],"src":"9148:123:178"}]},"contents":"{\n    { }\n    function abi_decode_t_array$_t_uint160_$dyn_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := mload(offset)\n        let _2 := 0x20\n        let dst := allocateMemory(array_allocation_size_t_array$_t_int56_$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_uint160_fromMemory(src))\n            dst := add(dst, _2)\n            src := add(src, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_t_array$_t_uint192_$dyn_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := mload(offset)\n        let _2 := 0x20\n        let dst := allocateMemory(array_allocation_size_t_array$_t_int56_$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_uint192_fromMemory(src))\n            dst := add(dst, _2)\n            src := add(src, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_t_int56_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, signextend(6, value))) { revert(0, 0) }\n    }\n    function abi_decode_t_uint160_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_t_uint192_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_array$_t_int56_$dyn_memory_ptrt_array$_t_uint160_$dyn_memory_ptrt_array$_t_uint192_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { 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        let _4 := 0x20\n        let dst := allocateMemory(array_allocation_size_t_array$_t_int56_$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_int56_fromMemory(src))\n            dst := add(dst, _4)\n            src := add(src, _4)\n        }\n        value0 := dst_1\n        let offset_1 := mload(add(headStart, _4))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_array$_t_uint160_$dyn_fromMemory(add(headStart, offset_1), dataEnd)\n        let offset_2 := mload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(value2, value2) }\n        value2 := abi_decode_t_array$_t_uint192_$dyn_fromMemory(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_uint16(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_uint16(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint16_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_t_uint16(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_uint32(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint32t_int24t_uint128(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_uint32(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, signextend(2, value_1))) { revert(value1, value1) }\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        if iszero(eq(value_2, and(value_2, 0xffffffffffffffffffffffffffffffff))) { revert(value2, value2) }\n        value2 := value_2\n    }\n    function abi_decode_tuple_t_uint32t_int56t_uint160t_boolt_uint192_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        let value := mload(headStart)\n        validator_revert_t_uint32(value)\n        value0 := value\n        value1 := abi_decode_t_int56_fromMemory(add(headStart, 32))\n        value2 := abi_decode_t_uint160_fromMemory(add(headStart, 64))\n        let value_1 := mload(add(headStart, 96))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(value4, value4) }\n        value3 := value_1\n        value4 := abi_decode_t_uint192_fromMemory(add(headStart, 128))\n    }\n    function abi_encode_t_struct$_InitializeParams(value, pos)\n    {\n        mstore(pos, and(mload(value), 0xffffffff))\n        mstore(add(pos, 0x20), signextend(2, mload(add(value, 0x20))))\n        mstore(add(pos, 0x40), and(mload(add(value, 0x40)), 0xffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        let i := end\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(pos, i), mload(add(add(value0, i), 0x20)))\n        }\n        if gt(i, length) { mstore(add(pos, length), end) }\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_array$_t_uint32_$dyn_memory_ptr__to_t_array$_t_uint32_$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 srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_rational_0_by_1__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_struct$_InitializeParams_$9230_memory_ptr__to_t_struct$_InitializeParams_$9230_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        abi_encode_t_struct$_InitializeParams(value0, headStart)\n    }\n    function abi_encode_tuple_t_struct$_UpdateParams_$9285_memory_ptr__to_t_struct$_UpdateParams_$9285_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        abi_encode_t_struct$_InitializeParams(value0, headStart)\n    }\n    function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffff))\n    }\n    function abi_encode_tuple_t_uint16__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffff))\n    }\n    function abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff))\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_int56_$dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(mul(length, 0x20), 0x20)\n    }\n    function validator_revert_t_uint16(value)\n    {\n        if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n    }\n    function validator_revert_t_uint32(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n}","id":178,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100be5760003560e01c8063ae505b5211610076578063e9f71da91161005b578063e9f71da914610134578063f7fd2cfa14610147578063f7fe55101461015a576100be565b8063ae505b5214610124578063de3277391461012c576100be565b806391e2b63c116100a757806391e2b63c146100eb578063a958357614610109578063ae13714b1461011c576100be565b80634d50e016146100c3578063761eb23e146100d8575b600080fd5b6100d66100d1366004610fe9565b61016d565b005b6100d66100e6366004610f8e565b610233565b6100f3610298565b6040516101009190611170565b60405180910390f35b6100d6610117366004610fcd565b6103b7565b6100f36105f8565b6100f3610726565b6100f3610865565b6100d6610142366004610f8e565b61097f565b6100d6610155366004610fcd565b610c3d565b6100d6610168366004610fe9565b610c76565b6000546040805160608101825263ffffffff86168152600285900b60208201526fffffffffffffffffffffffffffffffff841681830152905163daf50f6b60e01b81526001600160a01b039092169163daf50f6b916101ce91600401611184565b600060405180830381600087803b1580156101e857600080fd5b505af11580156101fc573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b1790555050505050565b600054604051633b0f591f60e11b81526001600160a01b039091169063761eb23e90610263908490600401611198565b600060405180830381600087803b15801561027d57600080fd5b505af1158015610291573d6000803e3d6000fd5b5050505050565b6000805460405163252c09d760e01b815282916001600160a01b03169063252c09d7906102c990849060040161117b565b60a06040518083038186803b1580156102e157600080fd5b505afa1580156102f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610319919061104d565b50935050505060008054906101000a90046001600160a01b03166001600160a01b031663dbffe9ad6040518163ffffffff1660e01b815260040160206040518083038186803b15801561036b57600080fd5b505afa15801561037f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a39190610fb1565b61ffff1615806103b05750805b9150505b90565b600054600160a01b900460ff166103cd57600080fd5b60008163ffffffff16116103e057600080fd5b604080516002808252606082018352600092602083019080368337019050509050818160008151811061040f57fe5b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061043857fe5b63ffffffff909216602092830291909101909101526000805460405163883bdbfd60e01b8152829182916001600160a01b039091169063883bdbfd90610482908790600401611126565b60006040518083038186803b15801561049a57600080fd5b505afa1580156104ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104d69190810190610eaa565b9250925092506000836000815181106104eb57fe5b60200260200101518460018151811061050057fe5b602002602001015103905060008663ffffffff1660060b8260060b8161052257fe5b05905060008260060b12801561054f57508663ffffffff1660060b8260060b8161054857fe5b0760060b15155b1561055957600019015b627fffff600682900b138015906105785750627fffff19600682900b12155b61057e57fe5b600060208560008151811061058f57fe5b6020026020010151866001815181106105a457fe5b6020026020010151036001600160a01b0316901b6001600160a01b0380168963ffffffff1602816105d157fe5b0490506fffffffffffffffffffffffffffffffff8111156105ee57fe5b5050505050505050565b60008060009054906101000a90046001600160a01b03166001600160a01b031663dbffe9ad6040518163ffffffff1660e01b815260040160206040518083038186803b15801561064757600080fd5b505afa15801561065b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067f9190610fb1565b61ffff1660008054906101000a90046001600160a01b03166001600160a01b0316632986c0e56040518163ffffffff1660e01b815260040160206040518083038186803b1580156106cf57600080fd5b505afa1580156106e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107079190610fb1565b61ffff1610806107215750600054600160a01b900460ff16155b905090565b60008054600160a01b900460ff16610740575060016103b4565b6040805160018082528183019092526000916020808301908036833701905050905060008160008151811061077157fe5b63ffffffff90921660209283029190910190910152600080546040516001600160a01b039091169063883bdbfd60e01b906107b0908590602401611126565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161081b91906110ed565b600060405180830381855afa9150503d8060008114610856576040519150601f19603f3d011682016040523d82523d6000602084013e61085b565b606091505b5090935050505090565b60008060009054906101000a90046001600160a01b03166001600160a01b031663dd158c186040518163ffffffff1660e01b815260040160206040518083038186803b1580156108b457600080fd5b505afa1580156108c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec9190610fb1565b61ffff1660008054906101000a90046001600160a01b03166001600160a01b031663dbffe9ad6040518163ffffffff1660e01b815260040160206040518083038186803b15801561093c57600080fd5b505afa158015610950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190610fb1565b61ffff161115905090565b60008060009054906101000a90046001600160a01b03166001600160a01b031663dbffe9ad6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ce57600080fd5b505afa1580156109e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a069190610fb1565b90508061ffff168261ffff16108015610ab5575060005460408051632986c0e560e01b8152905161ffff8416926001600160a01b031691632986c0e5916004808301926020929190829003018186803b158015610a6257600080fd5b505afa158015610a76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9a9190610fb1565b60010161ffff1681610aa857fe5b0661ffff168261ffff1614155b610abe57600080fd5b60008054819081906001600160a01b031663252c09d761ffff871615610ae75760018703610aec565b600186035b6040518263ffffffff1660e01b8152600401610b089190611198565b60a06040518083038186803b158015610b2057600080fd5b505afa158015610b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b58919061104d565b506000805460405163252c09d760e01b81529598509396509094509283928392506001600160a01b03169063252c09d790610b97908b90600401611198565b60a06040518083038186803b158015610baf57600080fd5b505afa158015610bc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be7919061104d565b509350509250925083610bf957600080fd5b80610c0357600080fd5b85830363ffffffff8116610c1357fe5b8063ffffffff1686840360060b81610c2757fe5b0760060b15610c3257fe5b505050505050505050565b610c4681610d17565b600054604051637bfe967d60e11b81526001600160a01b039091169063f7fd2cfa906102639084906004016111a7565b610c7f83610d17565b6000546040805160608101825263ffffffff86168152600285900b60208201526fffffffffffffffffffffffffffffffff84168183015290516365829dc560e01b81526001600160a01b03909216916365829dc591610ce091600401611184565b600060405180830381600087803b158015610cfa57600080fd5b505af1158015610d0e573d6000803e3d6000fd5b50505050505050565b60005463ffffffff600160a81b90910481168281019091161015610d3a57600080fd5b6000805463ffffffff600160a81b8083048216909401169092027fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff909216919091179055565b600082601f830112610d90578081fd5b81516020610da5610da0836111dc565b6111b8565b8281528181019085830183850287018401881015610dc1578586fd5b855b85811015610de657610dd482610e6b565b84529284019290840190600101610dc3565b5090979650505050505050565b600082601f830112610e03578081fd5b81516020610e13610da0836111dc565b8281528181019085830183850287018401881015610e2f578586fd5b855b85811015610de657610e4282610e82565b84529284019290840190600101610e31565b8051600681900b8114610e6657600080fd5b919050565b80516001600160a01b0381168114610e6657600080fd5b805177ffffffffffffffffffffffffffffffffffffffffffffffff81168114610e6657600080fd5b600080600060608486031215610ebe578283fd5b835167ffffffffffffffff80821115610ed5578485fd5b818601915086601f830112610ee8578485fd5b81516020610ef8610da0836111dc565b82815281810190858301838502870184018c1015610f1457898afd5b8996505b84871015610f3d57610f2981610e54565b835260019690960195918301918301610f18565b5091890151919750909350505080821115610f56578384fd5b610f6287838801610d80565b93506040860151915080821115610f77578283fd5b50610f8486828701610df3565b9150509250925092565b600060208284031215610f9f578081fd5b8135610faa816111fa565b9392505050565b600060208284031215610fc2578081fd5b8151610faa816111fa565b600060208284031215610fde578081fd5b8135610faa8161120d565b600080600060608486031215610ffd578283fd5b83356110088161120d565b92506020840135600281900b811461101e578283fd5b915060408401356fffffffffffffffffffffffffffffffff81168114611042578182fd5b809150509250925092565b600080600080600060a08688031215611064578081fd5b855161106f8161120d565b945061107d60208701610e54565b935061108b60408701610e6b565b92506060860151801515811461109f578182fd5b91506110ad60808701610e82565b90509295509295909350565b805163ffffffff16825260208082015160020b908301526040908101516fffffffffffffffffffffffffffffffff16910152565b60008251815b8181101561110d57602081860181015185830152016110f3565b8181111561111b5782828501525b509190910192915050565b6020808252825182820181905260009190848201906040850190845b8181101561116457835163ffffffff1683529284019291840191600101611142565b50909695505050505050565b901515815260200190565b90815260200190565b6060810161119282846110b9565b92915050565b61ffff91909116815260200190565b63ffffffff91909116815260200190565b60405181810167ffffffffffffffff811182821017156111d457fe5b604052919050565b600067ffffffffffffffff8211156111f057fe5b5060209081020190565b61ffff8116811461120a57600080fd5b50565b63ffffffff8116811461120a57600080fdfea2646970667358221220bd1bc2d9cd54dd36b9c2e9bbc6d5e1725fa2f24af5e14304b81c762a65c889cd64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAE505B52 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xE9F71DA9 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xE9F71DA9 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0xF7FD2CFA EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0xF7FE5510 EQ PUSH2 0x15A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0xAE505B52 EQ PUSH2 0x124 JUMPI DUP1 PUSH4 0xDE327739 EQ PUSH2 0x12C JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x91E2B63C GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x91E2B63C EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA9583576 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0xAE13714B EQ PUSH2 0x11C JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x4D50E016 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x761EB23E EQ PUSH2 0xD8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0xFE9 JUMP JUMPDEST PUSH2 0x16D JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD6 PUSH2 0xE6 CALLDATASIZE PUSH1 0x4 PUSH2 0xF8E JUMP JUMPDEST PUSH2 0x233 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x100 SWAP2 SWAP1 PUSH2 0x1170 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD6 PUSH2 0x117 CALLDATASIZE PUSH1 0x4 PUSH2 0xFCD JUMP JUMPDEST PUSH2 0x3B7 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x5F8 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x726 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x865 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x142 CALLDATASIZE PUSH1 0x4 PUSH2 0xF8E JUMP JUMPDEST PUSH2 0x97F JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x155 CALLDATASIZE PUSH1 0x4 PUSH2 0xFCD JUMP JUMPDEST PUSH2 0xC3D JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x168 CALLDATASIZE PUSH1 0x4 PUSH2 0xFE9 JUMP JUMPDEST PUSH2 0xC76 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP7 AND DUP2 MSTORE PUSH1 0x2 DUP6 SWAP1 SIGNEXTEND PUSH1 0x20 DUP3 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH4 0xDAF50F6B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xDAF50F6B SWAP2 PUSH2 0x1CE SWAP2 PUSH1 0x4 ADD PUSH2 0x1184 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH4 0x3B0F591F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x761EB23E SWAP1 PUSH2 0x263 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1198 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x291 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x252C09D7 PUSH1 0xE0 SHL DUP2 MSTORE DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x252C09D7 SWAP1 PUSH2 0x2C9 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x117B JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F5 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 0x319 SWAP2 SWAP1 PUSH2 0x104D JUMP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDBFFE9AD 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 0x36B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x37F 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 0x3A3 SWAP2 SWAP1 PUSH2 0xFB1 JUMP JUMPDEST PUSH2 0xFFFF AND ISZERO DUP1 PUSH2 0x3B0 JUMPI POP DUP1 JUMPDEST SWAP2 POP POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH4 0xFFFFFFFF AND GT PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 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 DUP2 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x40F 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 0x438 JUMPI INVALID JUMPDEST PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x883BDBFD PUSH1 0xE0 SHL DUP2 MSTORE DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x883BDBFD SWAP1 PUSH2 0x482 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1126 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x49A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4AE 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 PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x4D6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xEAA JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4EB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x500 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB SWAP1 POP PUSH1 0x0 DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0x6 SIGNEXTEND DUP3 PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0x522 JUMPI INVALID JUMPDEST SDIV SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x6 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0x54F JUMPI POP DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0x6 SIGNEXTEND DUP3 PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0x548 JUMPI INVALID JUMPDEST SMOD PUSH1 0x6 SIGNEXTEND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x559 JUMPI PUSH1 0x0 NOT ADD JUMPDEST PUSH3 0x7FFFFF PUSH1 0x6 DUP3 SWAP1 SIGNEXTEND SGT DUP1 ISZERO SWAP1 PUSH2 0x578 JUMPI POP PUSH3 0x7FFFFF NOT PUSH1 0x6 DUP3 SWAP1 SIGNEXTEND SLT ISZERO JUMPDEST PUSH2 0x57E JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x58F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x5A4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 AND DUP10 PUSH4 0xFFFFFFFF AND MUL DUP2 PUSH2 0x5D1 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5EE JUMPI INVALID JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDBFFE9AD 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 0x647 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x65B 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 0x67F SWAP2 SWAP1 PUSH2 0xFB1 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2986C0E5 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 0x6CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6E3 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 0x707 SWAP2 SWAP1 PUSH2 0xFB1 JUMP JUMPDEST PUSH2 0xFFFF AND LT DUP1 PUSH2 0x721 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x740 JUMPI POP PUSH1 0x1 PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x771 JUMPI INVALID JUMPDEST PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x883BDBFD PUSH1 0xE0 SHL SWAP1 PUSH2 0x7B0 SWAP1 DUP6 SWAP1 PUSH1 0x24 ADD PUSH2 0x1126 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x81B SWAP2 SWAP1 PUSH2 0x10ED JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x856 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 0x85B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDD158C18 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 0x8B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8C8 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 0x8EC SWAP2 SWAP1 PUSH2 0xFB1 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDBFFE9AD 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 0x93C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x950 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 0x974 SWAP2 SWAP1 PUSH2 0xFB1 JUMP JUMPDEST PUSH2 0xFFFF AND GT ISZERO SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDBFFE9AD 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 0x9CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9E2 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 0xA06 SWAP2 SWAP1 PUSH2 0xFB1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND LT DUP1 ISZERO PUSH2 0xAB5 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2986C0E5 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH2 0xFFFF DUP5 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x2986C0E5 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA76 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 0xA9A SWAP2 SWAP1 PUSH2 0xFB1 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0xAA8 JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND EQ ISZERO JUMPDEST PUSH2 0xABE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x252C09D7 PUSH2 0xFFFF DUP8 AND ISZERO PUSH2 0xAE7 JUMPI PUSH1 0x1 DUP8 SUB PUSH2 0xAEC JUMP JUMPDEST PUSH1 0x1 DUP7 SUB JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB08 SWAP2 SWAP1 PUSH2 0x1198 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB34 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 0xB58 SWAP2 SWAP1 PUSH2 0x104D JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x252C09D7 PUSH1 0xE0 SHL DUP2 MSTORE SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP1 SWAP5 POP SWAP3 DUP4 SWAP3 DUP4 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x252C09D7 SWAP1 PUSH2 0xB97 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x1198 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBC3 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 0xBE7 SWAP2 SWAP1 PUSH2 0x104D JUMP JUMPDEST POP SWAP4 POP POP SWAP3 POP SWAP3 POP DUP4 PUSH2 0xBF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH2 0xC03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP4 SUB PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0xC13 JUMPI INVALID JUMPDEST DUP1 PUSH4 0xFFFFFFFF AND DUP7 DUP5 SUB PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0xC27 JUMPI INVALID JUMPDEST SMOD PUSH1 0x6 SIGNEXTEND ISZERO PUSH2 0xC32 JUMPI INVALID JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xC46 DUP2 PUSH2 0xD17 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH4 0x7BFE967D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7FD2CFA SWAP1 PUSH2 0x263 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x11A7 JUMP JUMPDEST PUSH2 0xC7F DUP4 PUSH2 0xD17 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP7 AND DUP2 MSTORE PUSH1 0x2 DUP6 SWAP1 SIGNEXTEND PUSH1 0x20 DUP3 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH4 0x65829DC5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x65829DC5 SWAP2 PUSH2 0xCE0 SWAP2 PUSH1 0x4 ADD PUSH2 0x1184 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD0E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 SWAP2 DIV DUP2 AND DUP3 DUP2 ADD SWAP1 SWAP2 AND LT ISZERO PUSH2 0xD3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xA8 SHL DUP1 DUP4 DIV DUP3 AND SWAP1 SWAP5 ADD AND SWAP1 SWAP3 MUL PUSH32 0xFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xD90 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0xDA5 PUSH2 0xDA0 DUP4 PUSH2 0x11DC JUMP JUMPDEST PUSH2 0x11B8 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD DUP4 DUP6 MUL DUP8 ADD DUP5 ADD DUP9 LT ISZERO PUSH2 0xDC1 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0xDE6 JUMPI PUSH2 0xDD4 DUP3 PUSH2 0xE6B JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xDC3 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE03 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0xE13 PUSH2 0xDA0 DUP4 PUSH2 0x11DC JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD DUP4 DUP6 MUL DUP8 ADD DUP5 ADD DUP9 LT ISZERO PUSH2 0xE2F JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0xDE6 JUMPI PUSH2 0xE42 DUP3 PUSH2 0xE82 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xE31 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0xE66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xE66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xEBE JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xED5 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xEE8 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0xEF8 PUSH2 0xDA0 DUP4 PUSH2 0x11DC JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD DUP4 DUP6 MUL DUP8 ADD DUP5 ADD DUP13 LT ISZERO PUSH2 0xF14 JUMPI DUP10 DUP11 REVERT JUMPDEST DUP10 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0xF3D JUMPI PUSH2 0xF29 DUP2 PUSH2 0xE54 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0xF18 JUMP JUMPDEST POP SWAP2 DUP10 ADD MLOAD SWAP2 SWAP8 POP SWAP1 SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0xF56 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0xF62 DUP8 DUP4 DUP9 ADD PUSH2 0xD80 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF77 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0xF84 DUP7 DUP3 DUP8 ADD PUSH2 0xDF3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF9F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFAA DUP2 PUSH2 0x11FA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFC2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xFAA DUP2 PUSH2 0x11FA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFDE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFAA DUP2 PUSH2 0x120D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xFFD JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1008 DUP2 PUSH2 0x120D JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x101E JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1042 JUMPI DUP2 DUP3 REVERT 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 0x1064 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x106F DUP2 PUSH2 0x120D JUMP JUMPDEST SWAP5 POP PUSH2 0x107D PUSH1 0x20 DUP8 ADD PUSH2 0xE54 JUMP JUMPDEST SWAP4 POP PUSH2 0x108B PUSH1 0x40 DUP8 ADD PUSH2 0xE6B JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x109F JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP2 POP PUSH2 0x10AD PUSH1 0x80 DUP8 ADD PUSH2 0xE82 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD PUSH1 0x2 SIGNEXTEND SWAP1 DUP4 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x110D JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x10F3 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x111B JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1164 JUMPI DUP4 MLOAD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1142 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x1192 DUP3 DUP5 PUSH2 0x10B9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x11D4 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x11F0 JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x120A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x120A JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBD SHL 0xC2 0xD9 0xCD SLOAD 0xDD CALLDATASIZE 0xB9 0xC2 0xE9 0xBB 0xC6 0xD5 0xE1 PUSH19 0x5FA2F24AF5E14304B81C762A65C889CD64736F PUSH13 0x63430007060033000000000000 ","sourceMap":"118:6035:40:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:305;;;;;;:::i;:::-;;:::i;:::-;;1319:86;;;;;;:::i;:::-;;:::i;2928:198::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4740:1410;;;;;;:::i;:::-;;:::i;2768:152::-;;;:::i;3289:417::-;;;:::i;3134:147::-;;;:::i;3714:1018::-;;;;;;:::i;:::-;;:::i;766:110::-;;;;;;:::i;:::-;;:::i;945:366::-;;;;;;:::i;:::-;;:::i;317:305::-;401:6;;433:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;401:184;;-1:-1:-1;;;401:184:40;;-1:-1:-1;;;;;401:6:40;;;;:17;;:184;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;596:11:40;:18;;;;-1:-1:-1;;;596:18:40;;;-1:-1:-1;;;;;317:305:40:o;1319:86::-;1373:6;;:24;;-1:-1:-1;;;1373:24:40;;-1:-1:-1;;;;;1373:6:40;;;;:11;;:24;;1385:11;;1373:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1319:86;:::o;2928:198::-;2988:4;3036:6;;:22;;-1:-1:-1;;;3036:22:40;;2988:4;;-1:-1:-1;;;;;3036:6:40;;:19;;:22;;2988:4;;3036:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3005:53;;;;;;3076:6;;;;;;;;-1:-1:-1;;;;;3076:6:40;-1:-1:-1;;;;;3076:18:40;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:25;;;;:42;;;3105:13;3076:42;3069:49;;;2928:198;;:::o;4740:1410::-;4857:11;;-1:-1:-1;;;4857:11:40;;;;4849:20;;;;;;4901:1;4888:10;:14;;;4880:23;;;;;;4944:15;;;4957:1;4944:15;;;;;;;;4914:27;;4944:15;;;;;;;;;;-1:-1:-1;4944:15:40;4914:45;;4987:10;4970:11;4982:1;4970:14;;;;;;;;;;;;;:27;;;;;;;;;;;5025:1;5008:11;5020:1;5008:14;;;;;;;;:18;;;;:14;;;;;;;;;;;:18;5052:30;5226:6;;:27;;-1:-1:-1;;;5226:27:40;;5052:30;;;;-1:-1:-1;;;;;5226:6:40;;;;:14;;:27;;5241:11;;5226:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5226:27:40;;;;;;;;;;;;:::i;:::-;5037:216;;;;;;5344:15;5383;5399:1;5383:18;;;;;;;;;;;;;;5362:15;5378:1;5362:18;;;;;;;;;;;;;;:39;5344:57;;5412:22;5455:10;5449:17;;5437:29;;:9;:29;;;;;;;;5412:54;;5493:1;5481:9;:13;;;:51;;;;;5516:10;5510:17;;5498:29;;:9;:29;;;;;;;;:34;;;;5481:51;5477:102;;;-1:-1:-1;;5549:18:40;5477:102;5713:15;5693:35;;;;;;;;:91;;-1:-1:-1;;;5749:35:40;;;;;;5693:91;5672:123;;;;5808:41;6066:2;6010:34;6045:1;6010:37;;;;;;;;;;;;;;5949:34;5984:1;5949:37;;;;;;;;;;;;;;:98;-1:-1:-1;;;;;5923:139:40;:145;;-1:-1:-1;;;;;5853:52:40;;5861:10;5853:19;;:52;5852:217;;;;;;;-1:-1:-1;6124:17:40;6087:54;;;6080:62;;;;4740:1410;;;;;;;;:::o;2768:152::-;2835:4;2876:6;;;;;;;;;-1:-1:-1;;;;;2876:6:40;-1:-1:-1;;;;;2876:18:40;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2859:37;;:6;;;;;;;;-1:-1:-1;;;;;2859:6:40;-1:-1:-1;;;;;2859:12:40;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:37;;;:53;;;-1:-1:-1;2901:11:40;;-1:-1:-1;;;2901:11:40;;;;2900:12;2859:53;2852:60;;2768:152;:::o;3289:417::-;3389:4;3416:11;;-1:-1:-1;;;3416:11:40;;;;3411:56;;-1:-1:-1;3451:4:40;3444:11;;3411:56;3499:15;;;3512:1;3499:15;;;;;;;;;3477:19;;3499:15;;;;;;;;;;;-1:-1:-1;3499:15:40;3477:37;;3534:1;3525:3;3529:1;3525:6;;;;;;;;:10;;;;:6;;;;;;;;;;;:10;3547:12;3573:6;;3606:56;;-1:-1:-1;;;;;3573:6:40;;;;-1:-1:-1;;;3629:27:40;3606:56;;3658:3;;3606:56;;;:::i;:::-;;;;-1:-1:-1;;3606:56:40;;;;;;;;;;;;;;;;;;;;;;;;;;;3565:108;;;;3606:56;3565:108;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3546:127:40;;-1:-1:-1;;;;3289:417:40;:::o;3134:147::-;3201:4;3249:6;;;;;;;;;-1:-1:-1;;;;;3249:6:40;-1:-1:-1;;;;;3249:22:40;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3225:48;;:6;;;;;;;;-1:-1:-1;;;;;3225:6:40;-1:-1:-1;;;;;3225:18:40;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;;;3218:55;;3134:147;:::o;3714:1018::-;3842:18;3863:6;;;;;;;;;-1:-1:-1;;;;;3863:6:40;-1:-1:-1;;;;;3863:18:40;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3842:41;;4030:11;4022:19;;:5;:19;;;:66;;;;-1:-1:-1;4055:6:40;;:14;;;-1:-1:-1;;;4055:14:40;;;;4054:34;;;;-1:-1:-1;;;;;4055:6:40;;:12;;:14;;;;;;;;;;;;;;:6;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4072:1;4055:18;4054:34;;;;;;;;4045:43;;:5;:43;;;;4022:66;4000:99;;;;;;4127:22;4249:6;;4127:22;;;;-1:-1:-1;;;;;4249:6:40;:19;4269:10;;;;:40;;4308:1;4300:5;:9;4269:40;;;4296:1;4282:11;:15;4269:40;4249:61;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4336:22:40;4458:6;;:26;;-1:-1:-1;;;4458:26:40;;4112:198;;-1:-1:-1;4112:198:40;;-1:-1:-1;4112:198:40;;-1:-1:-1;4336:22:40;;;;;-1:-1:-1;;;;;;4458:6:40;;:19;;:26;;4478:5;;4458:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4321:163;;;;;;;;4505:12;4497:21;;;;;;4537:12;4529:21;;;;;;4584:33;;;4635:15;;;4628:23;;;;4707:11;4669:49;;4688:15;4670;:33;4669:49;;;;;;;;:54;;;4662:62;;;;3714:1018;;;;;;;;;:::o;766:110::-;816:19;832:2;816:15;:19::i;:::-;846:6;;:22;;-1:-1:-1;;;846:22:40;;-1:-1:-1;;;;;846:6:40;;;;:18;;:22;;865:2;;846:22;;;:::i;945:366::-;1068:30;1084:13;1068:15;:30::i;:::-;1109:6;;1137:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;1109:194;;-1:-1:-1;;;1109:194:40;;-1:-1:-1;;;;;1109:6:40;;;;:13;;:194;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;945:366;;;:::o;630:128::-;712:10;;;-1:-1:-1;;;712:10:40;;;;;693:15;;;:29;;;;;685:38;;;;;;734:10;:16;;;-1:-1:-1;;;734:16:40;;;;;;;;;;;;;;;;;;;;;;630:128::o;14:726:178:-;;138:3;131:4;123:6;119:17;115:27;105:2;;160:5;153;146:20;105:2;193:6;187:13;219:4;243:63;258:47;302:2;258:47;:::i;:::-;243:63;:::i;:::-;340:15;;;371:12;;;;403:15;;;449:11;;;437:24;;433:33;;430:42;-1:-1:-1;427:2:178;;;489:5;482;475:20;427:2;515:5;529:182;543:2;540:1;537:9;529:182;;;600:36;632:3;600:36;:::i;:::-;588:49;;657:12;;;;689;;;;561:1;554:9;529:182;;;-1:-1:-1;729:5:178;;95:645;-1:-1:-1;;;;;;;95:645:178:o;745:726::-;;869:3;862:4;854:6;850:17;846:27;836:2;;891:5;884;877:20;836:2;924:6;918:13;950:4;974:63;989:47;1033:2;989:47;:::i;974:63::-;1071:15;;;1102:12;;;;1134:15;;;1180:11;;;1168:24;;1164:33;;1161:42;-1:-1:-1;1158:2:178;;;1220:5;1213;1206:20;1158:2;1246:5;1260:182;1274:2;1271:1;1268:9;1260:182;;;1331:36;1363:3;1331:36;:::i;:::-;1319:49;;1388:12;;;;1420;;;;1292:1;1285:9;1260:182;;1476:166;1555:13;;1608:1;1597:20;;;1587:31;;1577:2;;1632:1;1629;1622:12;1577:2;1536:106;;;:::o;1647:202::-;1728:13;;-1:-1:-1;;;;;1770:54:178;;1760:65;;1750:2;;1839:1;1836;1829:12;1854:210;1935:13;;1988:50;1977:62;;1967:73;;1957:2;;2054:1;2051;2044:12;2069:1478;;;;2299:2;2287:9;2278:7;2274:23;2270:32;2267:2;;;2320:6;2312;2305:22;2267:2;2358:9;2352:16;2387:18;2428:2;2420:6;2417:14;2414:2;;;2449:6;2441;2434:22;2414:2;2492:6;2481:9;2477:22;2467:32;;2537:7;2530:4;2526:2;2522:13;2518:27;2508:2;;2564:6;2556;2549:22;2508:2;2598;2592:9;2620:4;2644:63;2659:47;2703:2;2659:47;:::i;2644:63::-;2741:15;;;2772:12;;;;2804:11;;;2842;;;2834:20;;2830:29;;2827:42;-1:-1:-1;2824:2:178;;;2887:6;2879;2872:22;2824:2;2914:6;2905:15;;2929:180;2943:2;2940:1;2937:9;2929:180;;;3000:34;3030:3;3000:34;:::i;:::-;2988:47;;2961:1;2954:9;;;;;3055:12;;;;3087;;2929:180;;;-1:-1:-1;3164:18:178;;;3158:25;3128:5;;-1:-1:-1;3158:25:178;;-1:-1:-1;;;3195:16:178;;;3192:2;;;3229:6;3221;3214:22;3192:2;3257:80;3329:7;3318:8;3307:9;3303:24;3257:80;:::i;:::-;3247:90;;3383:2;3372:9;3368:18;3362:25;3346:41;;3412:2;3402:8;3399:16;3396:2;;;3433:6;3425;3418:22;3396:2;;3461:80;3533:7;3522:8;3511:9;3507:24;3461:80;:::i;:::-;3451:90;;;2257:1290;;;;;:::o;3552:257::-;;3663:2;3651:9;3642:7;3638:23;3634:32;3631:2;;;3684:6;3676;3669:22;3631:2;3728:9;3715:23;3747:32;3773:5;3747:32;:::i;:::-;3798:5;3621:188;-1:-1:-1;;;3621:188:178:o;3814:261::-;;3936:2;3924:9;3915:7;3911:23;3907:32;3904:2;;;3957:6;3949;3942:22;3904:2;3994:9;3988:16;4013:32;4039:5;4013:32;:::i;4080:257::-;;4191:2;4179:9;4170:7;4166:23;4162:32;4159:2;;;4212:6;4204;4197:22;4159:2;4256:9;4243:23;4275:32;4301:5;4275:32;:::i;4342:643::-;;;;4485:2;4473:9;4464:7;4460:23;4456:32;4453:2;;;4506:6;4498;4491:22;4453:2;4550:9;4537:23;4569:32;4595:5;4569:32;:::i;:::-;4620:5;-1:-1:-1;4677:2:178;4662:18;;4649:32;4723:1;4712:22;;;4700:35;;4690:2;;4754:6;4746;4739:22;4690:2;4782:7;-1:-1:-1;4841:2:178;4826:18;;4813:32;4889:34;4876:48;;4864:61;;4854:2;;4944:6;4936;4929:22;4854:2;4972:7;4962:17;;;4443:542;;;;;:::o;4990:692::-;;;;;;5175:3;5163:9;5154:7;5150:23;5146:33;5143:2;;;5197:6;5189;5182:22;5143:2;5234:9;5228:16;5253:32;5279:5;5253:32;:::i;:::-;5304:5;-1:-1:-1;5328:49:178;5373:2;5358:18;;5328:49;:::i;:::-;5318:59;;5396:51;5443:2;5432:9;5428:18;5396:51;:::i;:::-;5386:61;;5492:2;5481:9;5477:18;5471:25;5541:7;5534:15;5527:23;5518:7;5515:36;5505:2;;5570:6;5562;5555:22;5505:2;5598:7;-1:-1:-1;5624:52:178;5671:3;5656:19;;5624:52;:::i;:::-;5614:62;;5133:549;;;;;;;;:::o;5687:289::-;5776:12;;5790:10;5772:29;5760:42;;5865:4;5854:16;;;5848:23;5845:1;5834:38;5818:14;;;5811:62;5926:4;5915:16;;;5909:23;5934:34;5905:64;5889:14;;5882:88;5750:226::o;5981:430::-;;6148:6;6142:13;6173:3;6185:129;6199:6;6196:1;6193:13;6185:129;;;6297:4;6281:14;;;6277:25;;6271:32;6258:11;;;6251:53;6214:12;6185:129;;;6332:6;6329:1;6326:13;6323:2;;;6367:3;6358:6;6353:3;6349:16;6342:29;6323:2;-1:-1:-1;6389:16:178;;;;;6118:293;-1:-1:-1;;6118:293:178:o;6416:650::-;6585:2;6637:21;;;6707:13;;6610:18;;;6729:22;;;6416:650;;6585:2;6808:15;;;;6782:2;6767:18;;;6416:650;6854:186;6868:6;6865:1;6862:13;6854:186;;;6933:13;;6948:10;6929:30;6917:43;;7015:15;;;;6980:12;;;;6890:1;6883:9;6854:186;;;-1:-1:-1;7057:3:178;;6565:501;-1:-1:-1;;;;;;6565:501:178:o;7071:187::-;7236:14;;7229:22;7211:41;;7199:2;7184:18;;7166:92::o;7263:185::-;7417:25;;;7405:2;7390:18;;7372:76::o;7453:276::-;7655:2;7640:18;;7667:56;7644:9;7705:6;7667:56;:::i;:::-;7622:107;;;;:::o;8007:188::-;8181:6;8169:19;;;;8151:38;;8139:2;8124:18;;8106:89::o;8394:192::-;8568:10;8556:23;;;;8538:42;;8526:2;8511:18;;8493:93::o;8591:242::-;8661:2;8655:9;8691:17;;;8738:18;8723:34;;8759:22;;;8720:62;8717:2;;;8785:9;8717:2;8812;8805:22;8635:198;;-1:-1:-1;8635:198:178:o;8838:181::-;;8935:18;8927:6;8924:30;8921:2;;;8957:9;8921:2;-1:-1:-1;9008:4:178;8989:17;;;8985:28;;8911:108::o;9024:119::-;9111:6;9104:5;9100:18;9093:5;9090:29;9080:2;;9133:1;9130;9123:12;9080:2;9070:73;:::o;9148:123::-;9235:10;9228:5;9224:22;9217:5;9214:33;9204:2;;9261:1;9258;9251:12"},"methodIdentifiers":{"advanceTime(uint32)":"f7fd2cfa","checkTimeWeightedAveragesAlwaysFitsType(uint32)":"a9583576","checkTwoAdjacentObservationsTickCumulativeModTimeElapsedAlways0(uint16)":"e9f71da9","echidna_AlwaysInitialized()":"91e2b63c","echidna_canAlwaysObserve0IfInitialized()":"ae505b52","echidna_cardinalityAlwaysLteNext()":"de327739","echidna_indexAlwaysLtCardinality()":"ae13714b","grow(uint16)":"761eb23e","initialize(uint32,int24,uint128)":"4d50e016","update(uint32,int24,uint128)":"f7fe5510"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"by\",\"type\":\"uint32\"}],\"name\":\"advanceTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"secondsAgo\",\"type\":\"uint32\"}],\"name\":\"checkTimeWeightedAveragesAlwaysFitsType\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"}],\"name\":\"checkTwoAdjacentObservationsTickCumulativeModTimeElapsedAlways0\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"echidna_AlwaysInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"echidna_canAlwaysObserve0IfInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"echidna_cardinalityAlwaysLteNext\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"echidna_indexAlwaysLtCardinality\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"cardinality\",\"type\":\"uint16\"}],\"name\":\"grow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"time\",\"type\":\"uint32\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"advanceTimeBy\",\"type\":\"uint32\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"name\":\"update\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/OracleEchidnaTest.sol\":\"OracleEchidnaTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/Oracle.sol\":{\"keccak256\":\"0xb927015d21b9ea6fbcf518218811d938b8bba57250f77459e364421a6a6459c6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://773ae95cce9134e52b8a05574c6691869680cdd1f17129a1138c268c76b77607\",\"dweb:/ipfs/QmZsmHuzYWLWJiTD2PKuzVqfuJUB33ajQ2Rp3N3PkQAern\"]},\"contracts/elixir-core/test/OracleEchidnaTest.sol\":{\"keccak256\":\"0x51b3f6448508cf3fd08b78224bb398a98833a574b67e98612d3725d406f77a07\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://bd3e09290fdfe1706069f182d09973ca21d220449c0acceb1b884879d8377e8d\",\"dweb:/ipfs/QmNM7RNAm3qRS4wo9AG27WEy18Mfm2sJA7vsZd28kX86nH\"]},\"contracts/elixir-core/test/OracleTest.sol\":{\"keccak256\":\"0x8068e7d3ac4c342617b640dce2a88e3ca13d7ea11305f8ed66e252354560c318\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://875661a226aa2c438630c9746c608a841457d1226b52bb9e85bed472313025f7\",\"dweb:/ipfs/QmZJyeY8xt7NAxJeZKuhToRTFrmRH4niCZTsY3swDoice4\"]}},\"version\":1}"}},"contracts/elixir-core/test/OracleTest.sol":{"OracleTest":{"abi":[{"inputs":[{"internalType":"uint32","name":"by","type":"uint32"}],"name":"advanceTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"advanceTimeBy","type":"uint32"},{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"}],"internalType":"struct OracleTest.UpdateParams[]","name":"params","type":"tuple[]"}],"name":"batchUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cardinality","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cardinalityNext","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32[]","name":"secondsAgos","type":"uint32[]"}],"name":"getGasCostOfObserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_cardinalityNext","type":"uint16"}],"name":"grow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"index","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"time","type":"uint32"},{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"}],"internalType":"struct OracleTest.InitializeParams","name":"params","type":"tuple"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidity","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","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"},{"internalType":"uint192","name":"rewardPerLiquidityCumulativeX64","type":"uint192"}],"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[]"},{"internalType":"uint192[]","name":"rewardPerLiquidityCumulativeX64s","type":"uint192[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerSecondX48","outputs":[{"internalType":"uint144","name":"","type":"uint144"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRateEffectiveUntil","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tick","outputs":[{"internalType":"int24","name":"","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"time","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"advanceTimeBy","type":"uint32"},{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"}],"internalType":"struct OracleTest.UpdateParams","name":"params","type":"tuple"}],"name":"update","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50611a2a806100206000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806374e69cef11610097578063daf50f6b11610066578063daf50f6b14610220578063dbffe9ad14610233578063dd158c181461023b578063f7fd2cfa1461024357610100565b806374e69cef146101b8578063761eb23e146101d8578063883bdbfd146101eb578063d81740db1461020d57610100565b80633eaf5d9f116100d35780633eaf5d9f1461017157806358319b4d146101865780636142258a1461019b57806365829dc5146101a357610100565b806316ada547146101055780631a68650214610123578063252c09d7146101385780632986c0e51461015c575b600080fd5b61010d610256565b60405161011a91906119a1565b60405180910390f35b61012b610264565b60405161011a9190611961565b61014b610146366004611804565b61027c565b60405161011a9594939291906119b2565b6101646102d7565b60405161011a9190611989565b6101796102ea565b60405161011a919061191c565b61018e6102fd565b60405161011a9190611975565b61010d61030e565b6101b66101b13660046117a0565b610323565b005b6101cb6101c6366004611722565b610451565b60405161011a9190611998565b6101b66101e63660046117e2565b610515565b6101fe6101f9366004611722565b610553565b60405161011a93929190611883565b6101b661021b3660046116b2565b610612565b6101b661022e3660046117a0565b6107bc565b610164610907565b61016461091a565b6101b661025136600461181c565b61092d565b6201fffe5463ffffffff1681565b6201fffe54600160381b90046001600160801b031681565b60008161ffff811061028d57600080fd5b60020201805460019091015463ffffffff82169250640100000000820460060b91600160581b81046001600160a01b031691600160f81b90910460ff16906001600160c01b031685565b6201fffe54600160b81b900461ffff1681565b6201fffe54640100000000900460020b81565b6201ffff546001600160901b031681565b6201ffff54600160901b900463ffffffff1681565b610333610251602083018361181c565b6201fffe546201ffff546103a99160009161ffff600160b81b830481169263ffffffff80821693640100000000830460020b936001600160801b03600160381b850416936001600160901b03831693600160901b909304831692600160c81b8204831692600160d81b9092049091169061095016565b6201fffe805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b93909216929092021790556103ec604082016020830161177f565b6201fffe805460029290920b62ffffff166401000000000266ffffff000000001990921691909117905561042660608201604083016117bb565b6201fffe60076101000a8154816001600160801b0302191690836001600160801b0316021790555050565b6201fffe5460009063ffffffff811690640100000000810460020b90600160381b81046001600160801b031690600160b81b900461ffff16845a90506105048589898080602002602001604051908101604052809392919081815260200183836020028082843760009201829052506201ffff546201fffe5491969594508b93508992508a916001600160901b03821691600160901b900463ffffffff90811691600160c81b900461ffff1690610b6c16565b5050505a9003979650505050505050565b6201fffe5461053290600090600160d81b900461ffff1683610d29565b6201fffe601b6101000a81548161ffff021916908361ffff16021790555050565b60608060606106056201fffe60009054906101000a900463ffffffff1686868080602002602001604051908101604052809392919081815260200183836020028082843760009201829052506201fffe546201ffff549196959450640100000000810460020b935061ffff600160b81b8204811693506001600160801b03600160381b830416926001600160901b0381169263ffffffff600160901b909204821692600160c81b9091041690610b6c16565b9250925092509250925092565b6201fffe546201ffff54640100000000820460020b916001600160801b03600160381b8204169161ffff600160b81b8304811692600160c81b8104821692600160d81b82049092169163ffffffff918216916001600160901b03821691600160901b90041660005b89811015610713578a8a8281811061068e57fe5b6106a4926020606090920201908101915061181c565b909301926106ba600088868c8c88888d8d610950565b90975095508a8a828181106106cb57fe5b90506060020160200160208101906106e3919061177f565b98508a8a828181106106f157fe5b905060600201604001602081019061070991906117bb565b975060010161067a565b50506201fffe805466ffffff00000000191664010000000062ffffff60029a909a0b99909916989098029790971776ffffffffffffffffffffffffffffffff000000000000001916600160381b6001600160801b0397909716969096029590951761ffff60b81b1916600160b81b61ffff958616021761ffff60c81b1916600160c81b93909416929092029290921763ffffffff191663ffffffff919091161790925550505050565b6201fffe54600160c81b900461ffff16156107f25760405162461bcd60e51b81526004016107e99061192a565b60405180910390fd5b6107ff602082018261181c565b6201fffe805463ffffffff191663ffffffff9290921691909117905561082b604082016020830161177f565b6201fffe805460029290920b62ffffff166401000000000266ffffff000000001990921691909117905561086560608201604083016117bb565b6201fffe80546001600160801b0392909216600160381b0276ffffffffffffffffffffffffffffffff00000000000000199092169190911790556108b76108af602083018361181c565b600090610dd2565b6201fffe80547fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160d81b61ffff938416021761ffff60c81b1916600160c81b939092169290920217905550565b6201fffe54600160c81b900461ffff1681565b6201fffe54600160d81b900461ffff1681565b6201fffe805463ffffffff19811663ffffffff9182169390930116919091179055565b60008060008b8b61ffff1661ffff811061096657fe5b6040805160a08101825260029290920292909201805463ffffffff8082168085526401000000008304600690810b810b900b6020860152600160581b83046001600160a01b031695850195909552600160f81b90910460ff16151560608401526001909101546001600160c01b031660808301529092508b1614156109f1578a859250925050610b5e565b8461ffff168461ffff16118015610a1257506001850361ffff168b61ffff16145b15610a1f57839150610a23565b8491505b8161ffff168b60010161ffff1681610a3757fe5b069250610a48818b8b8b8b8b610e46565b8c8461ffff1661ffff8110610a5957fe5b825160029190910291909101805460208401516040850151606086015163ffffffff1990931663ffffffff909516949094176affffffffffffff00000000191664010000000066ffffffffffffff60069390930b9290921691909102177fff0000000000000000000000000000000000000000ffffffffffffffffffffff16600160581b6001600160a01b0390941693909302929092177effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b921515929092029190911781556080909101516001909101805477ffffffffffffffffffffffffffffffffffffffffffffffff19166001600160c01b03909216919091179055505b995099975050505050505050565b606080606060008461ffff1611610bae576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b895167ffffffffffffffff81118015610bc657600080fd5b50604051908082528060200260200182016040528015610bf0578160200160208202803683370190505b509250895167ffffffffffffffff81118015610c0b57600080fd5b50604051908082528060200260200182016040528015610c35578160200160208202803683370190505b509150895167ffffffffffffffff81118015610c5057600080fd5b50604051908082528060200260200182016040528015610c7a578160200160208202803683370190505b50905060005b8a51811015610d1957610cad8d8d8d8481518110610c9a57fe5b60200260200101518d8d8d8d8d8d610f90565b868481518110610cb957fe5b60200260200101868581518110610ccc57fe5b60200260200101868681518110610cdf57fe5b6001600160c01b03909416602094850291909101909301929092526001600160a01b039092169052600691820b90910b9052600101610c80565b5099509950999650505050505050565b6000808361ffff1611610d67576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611610d7d575081610dcb565b825b8261ffff168161ffff161015610dc6576001858261ffff1661ffff8110610da257fe5b60020201805463ffffffff191663ffffffff92909216919091179055600101610d7f565b508190505b9392505050565b6040805160a08101825263ffffffff928316808252600060208301819052928201839052600160608301819052608090920192909252835463ffffffff1916909117909116600160f81b178255908101805477ffffffffffffffffffffffffffffffffffffffffffffffff19169055908190565b610e4e61166d565b865186036001600160801b038516610e67576001610e69565b845b9450600063ffffffff4211610eb457428463ffffffff1610610e8b5781610eaf565b886000015163ffffffff168463ffffffff161115610eac5788518403610eaf565b60005b610eb7565b60005b90506040518060a001604052808963ffffffff1681526020018363ffffffff168960020b028b602001510160060b8152602001876001600160801b031660808563ffffffff166001600160a01b0316901b6001600160a01b031681610f1857fe5b048b60400151016001600160a01b03168152602001600115158152602001876001600160801b03168363ffffffff166010896001600160901b03166001600160c01b0316901b026001600160c01b031681610f6f57fe5b048b60800151016001600160c01b0316815250925050509695505050505050565b6000808063ffffffff8a1661105c5760008c8961ffff1661ffff8110610fb257fe5b6040805160a08101825260029290920292909201805463ffffffff8082168085526401000000008304600690810b810b900b6020860152600160581b83046001600160a01b031695850195909552600160f81b90910460ff16151560608401526001909101546001600160c01b031660808301529092508d16146110415761103e818d8c8b8b8b610e46565b90505b8060200151816040015182608001519350935093505061117f565b898b036000806110738f8f858f8f8f8f8f8f61118e565b91509150816000015163ffffffff168363ffffffff1614156110ac5781602001518260400151836080015195509550955050505061117f565b805163ffffffff848116911614156110db5780602001518160400151826080015195509550955050505061117f565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161110957fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b0316028161113b57fe5b048560400151018263ffffffff168463ffffffff1687608001518760800151036001600160c01b03168161116b57fe5b040286608001510197509750975050505050505b99509950999650505050505050565b61119661166d565b61119e61166d565b8a8761ffff1661ffff81106111af57fe5b6040805160a08101825260029290920292909201805463ffffffff81168084526401000000008204600690810b810b900b6020850152600160581b82046001600160a01b031694840194909452600160f81b900460ff1615156060830152600101546001600160c01b03166080820152925061122d908b908b6113d5565b15611267578863ffffffff16826000015163ffffffff16141561124f57610b5e565b8161125e838b8b8a8a8a610e46565b91509150610b5e565b8a8361ffff168860010161ffff168161127c57fe5b0661ffff1661ffff811061128c57fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff161515606082018190526001909201546001600160c01b031660808201529250611370576040805160a0810182528c5463ffffffff811682526401000000008104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015260018c01546001600160c01b0316608082015291505b61137f8a83600001518b6113d5565b6113b6576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b6113c38b8b8b8a87611498565b91509150995099975050505050505050565b60008363ffffffff168363ffffffff16111580156113ff57508363ffffffff168263ffffffff1611155b1561141b578163ffffffff168363ffffffff1611159050610dcb565b60008463ffffffff168463ffffffff1611611443578363ffffffff166401000000000161144b565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff161161147c578363ffffffff1664010000000001611484565b8363ffffffff165b64ffffffffff169091111595945050505050565b6114a061166d565b6114a861166d565b60008361ffff168560010161ffff16816114be57fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff871682816114eb57fe5b0661ffff81106114f757fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff161515606082018190526001909201546001600160c01b03166080820152955061157c578060010192506114d6565b898661ffff16826001018161158d57fe5b0661ffff811061159957fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff16151560608201526001909101546001600160c01b03166080820152855190945060009061161f908b908b6113d5565b905080801561163857506116388a8a87600001516113d5565b156116435750611660565b806116535760018203925061165a565b8160010193505b506114d6565b5050509550959350505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b6000606082840312156116ac578081fd5b50919050565b600080602083850312156116c4578182fd5b823567ffffffffffffffff808211156116db578384fd5b818501915085601f8301126116ee578384fd5b8135818111156116fc578485fd5b866020606083028501011115611710578485fd5b60209290920196919550909350505050565b60008060208385031215611734578182fd5b823567ffffffffffffffff8082111561174b578384fd5b818501915085601f83011261175e578384fd5b81358181111561176c578485fd5b8660208083028501011115611710578485fd5b600060208284031215611790578081fd5b81358060020b8114610dcb578182fd5b6000606082840312156117b1578081fd5b610dcb838361169b565b6000602082840312156117cc578081fd5b81356001600160801b0381168114610dcb578182fd5b6000602082840312156117f3578081fd5b813561ffff81168114610dcb578182fd5b600060208284031215611815578081fd5b5035919050565b60006020828403121561182d578081fd5b813563ffffffff81168114610dcb578182fd5b6000815180845260208085019450808401835b838110156118785781516001600160c01b031687529582019590820190600101611853565b509495945050505050565b606080825284519082018190526000906020906080840190828801845b828110156118bf57815160060b845292840192908401906001016118a0565b50505083810382850152855180825286830191830190845b818110156118fc5783516001600160a01b0316835292840192918401916001016118d7565b505084810360408601526119108187611840565b98975050505050505050565b60029190910b815260200190565b60208082526013908201527f616c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6001600160801b0391909116815260200190565b6001600160901b0391909116815260200190565b61ffff91909116815260200190565b90815260200190565b63ffffffff91909116815260200190565b63ffffffff95909516855260069390930b60208501526001600160a01b03919091166040840152151560608301526001600160c01b0316608082015260a0019056fea264697066735822122002acd38f8925afceb7b92c6e72f0d8cdee7003d69e28036bf58a85170063364c64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2A 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 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x74E69CEF GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDAF50F6B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDAF50F6B EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xDBFFE9AD EQ PUSH2 0x233 JUMPI DUP1 PUSH4 0xDD158C18 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0xF7FD2CFA EQ PUSH2 0x243 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x74E69CEF EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x761EB23E EQ PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x883BDBFD EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xD81740DB EQ PUSH2 0x20D JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x3EAF5D9F GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x3EAF5D9F EQ PUSH2 0x171 JUMPI DUP1 PUSH4 0x58319B4D EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x6142258A EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x65829DC5 EQ PUSH2 0x1A3 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x16ADA547 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x1A686502 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x252C09D7 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0x2986C0E5 EQ PUSH2 0x15C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x256 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x19A1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x12B PUSH2 0x264 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x1961 JUMP JUMPDEST PUSH2 0x14B PUSH2 0x146 CALLDATASIZE PUSH1 0x4 PUSH2 0x1804 JUMP JUMPDEST PUSH2 0x27C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x19B2 JUMP JUMPDEST PUSH2 0x164 PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x1989 JUMP JUMPDEST PUSH2 0x179 PUSH2 0x2EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x191C JUMP JUMPDEST PUSH2 0x18E PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x1975 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x30E JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x1B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x17A0 JUMP JUMPDEST PUSH2 0x323 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CB PUSH2 0x1C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1722 JUMP JUMPDEST PUSH2 0x451 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x1998 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x1E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x17E2 JUMP JUMPDEST PUSH2 0x515 JUMP JUMPDEST PUSH2 0x1FE PUSH2 0x1F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1722 JUMP JUMPDEST PUSH2 0x553 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1883 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x21B CALLDATASIZE PUSH1 0x4 PUSH2 0x16B2 JUMP JUMPDEST PUSH2 0x612 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x22E CALLDATASIZE PUSH1 0x4 PUSH2 0x17A0 JUMP JUMPDEST PUSH2 0x7BC JUMP JUMPDEST PUSH2 0x164 PUSH2 0x907 JUMP JUMPDEST PUSH2 0x164 PUSH2 0x91A JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x251 CALLDATASIZE PUSH1 0x4 PUSH2 0x181C JUMP JUMPDEST PUSH2 0x92D JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH1 0x1 PUSH1 0x38 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0xFFFF DUP2 LT PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 MUL ADD DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP3 AND SWAP3 POP PUSH5 0x100000000 DUP3 DIV PUSH1 0x6 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP6 JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV PUSH2 0xFFFF AND DUP2 JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH1 0x2 SIGNEXTEND DUP2 JUMP JUMPDEST PUSH3 0x1FFFF SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB AND DUP2 JUMP JUMPDEST PUSH3 0x1FFFF SLOAD PUSH1 0x1 PUSH1 0x90 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x333 PUSH2 0x251 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x181C JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH3 0x1FFFF SLOAD PUSH2 0x3A9 SWAP2 PUSH1 0x0 SWAP2 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP4 DIV DUP2 AND SWAP3 PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP4 PUSH5 0x100000000 DUP4 DIV PUSH1 0x2 SIGNEXTEND SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x38 SHL DUP6 DIV AND SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP4 AND SWAP4 PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP4 DIV DUP4 AND SWAP3 PUSH1 0x1 PUSH1 0xC8 SHL DUP3 DIV DUP4 AND SWAP3 PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x950 AND JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP4 DUP5 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SSTORE PUSH2 0x3EC PUSH1 0x40 DUP3 ADD PUSH1 0x20 DUP4 ADD PUSH2 0x177F JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND PUSH3 0xFFFFFF AND PUSH5 0x100000000 MUL PUSH7 0xFFFFFF00000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x426 PUSH1 0x60 DUP3 ADD PUSH1 0x40 DUP4 ADD PUSH2 0x17BB JUMP JUMPDEST PUSH3 0x1FFFE PUSH1 0x7 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH1 0x0 SWAP1 PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0x38 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV PUSH2 0xFFFF AND DUP5 GAS SWAP1 POP PUSH2 0x504 DUP6 DUP10 DUP10 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP PUSH3 0x1FFFF SLOAD PUSH3 0x1FFFE SLOAD SWAP2 SWAP7 SWAP6 SWAP5 POP DUP12 SWAP4 POP DUP10 SWAP3 POP DUP11 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x90 SHL SWAP1 DIV PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 DIV PUSH2 0xFFFF AND SWAP1 PUSH2 0xB6C AND JUMP JUMPDEST POP POP POP GAS SWAP1 SUB SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH2 0x532 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 DIV PUSH2 0xFFFF AND DUP4 PUSH2 0xD29 JUMP JUMPDEST PUSH3 0x1FFFE PUSH1 0x1B PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 PUSH2 0x605 PUSH3 0x1FFFE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP7 DUP7 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP PUSH3 0x1FFFE SLOAD PUSH3 0x1FFFF SLOAD SWAP2 SWAP7 SWAP6 SWAP5 POP PUSH5 0x100000000 DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP4 POP PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x38 SHL DUP4 DIV AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP2 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP3 DIV DUP3 AND SWAP3 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 SWAP2 DIV AND SWAP1 PUSH2 0xB6C AND JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH3 0x1FFFF SLOAD PUSH5 0x100000000 DUP3 DIV PUSH1 0x2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x38 SHL DUP3 DIV AND SWAP2 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP4 DIV DUP2 AND SWAP3 PUSH1 0x1 PUSH1 0xC8 SHL DUP2 DIV DUP3 AND SWAP3 PUSH1 0x1 PUSH1 0xD8 SHL DUP3 DIV SWAP1 SWAP3 AND SWAP2 PUSH4 0xFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x90 SHL SWAP1 DIV AND PUSH1 0x0 JUMPDEST DUP10 DUP2 LT ISZERO PUSH2 0x713 JUMPI DUP11 DUP11 DUP3 DUP2 DUP2 LT PUSH2 0x68E JUMPI INVALID JUMPDEST PUSH2 0x6A4 SWAP3 PUSH1 0x20 PUSH1 0x60 SWAP1 SWAP3 MUL ADD SWAP1 DUP2 ADD SWAP2 POP PUSH2 0x181C JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP3 PUSH2 0x6BA PUSH1 0x0 DUP9 DUP7 DUP13 DUP13 DUP9 DUP9 DUP14 DUP14 PUSH2 0x950 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP DUP11 DUP11 DUP3 DUP2 DUP2 LT PUSH2 0x6CB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x60 MUL ADD PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x6E3 SWAP2 SWAP1 PUSH2 0x177F JUMP JUMPDEST SWAP9 POP DUP11 DUP11 DUP3 DUP2 DUP2 LT PUSH2 0x6F1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x60 MUL ADD PUSH1 0x40 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x709 SWAP2 SWAP1 PUSH2 0x17BB JUMP JUMPDEST SWAP8 POP PUSH1 0x1 ADD PUSH2 0x67A JUMP JUMPDEST POP POP PUSH3 0x1FFFE DUP1 SLOAD PUSH7 0xFFFFFF00000000 NOT AND PUSH5 0x100000000 PUSH3 0xFFFFFF PUSH1 0x2 SWAP11 SWAP1 SWAP11 SIGNEXTEND SWAP10 SWAP1 SWAP10 AND SWAP9 SWAP1 SWAP9 MUL SWAP8 SWAP1 SWAP8 OR PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000 NOT AND PUSH1 0x1 PUSH1 0x38 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 MUL SWAP6 SWAP1 SWAP6 OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL PUSH2 0xFFFF SWAP6 DUP7 AND MUL OR PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL SWAP4 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 OR PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND OR SWAP1 SWAP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 DIV PUSH2 0xFFFF AND ISZERO PUSH2 0x7F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7E9 SWAP1 PUSH2 0x192A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7FF PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x181C JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x82B PUSH1 0x40 DUP3 ADD PUSH1 0x20 DUP4 ADD PUSH2 0x177F JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND PUSH3 0xFFFFFF AND PUSH5 0x100000000 MUL PUSH7 0xFFFFFF00000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x865 PUSH1 0x60 DUP3 ADD PUSH1 0x40 DUP4 ADD PUSH2 0x17BB JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x38 SHL MUL PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x8B7 PUSH2 0x8AF PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x181C JUMP JUMPDEST PUSH1 0x0 SWAP1 PUSH2 0xDD2 JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH32 0xFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xD8 SHL PUSH2 0xFFFF SWAP4 DUP5 AND MUL OR PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 DIV PUSH2 0xFFFF AND DUP2 JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 DIV PUSH2 0xFFFF AND DUP2 JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH4 0xFFFFFFFF NOT DUP2 AND PUSH4 0xFFFFFFFF SWAP2 DUP3 AND SWAP4 SWAP1 SWAP4 ADD AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP12 DUP12 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x966 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP6 MSTORE PUSH5 0x100000000 DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP12 AND EQ ISZERO PUSH2 0x9F1 JUMPI DUP11 DUP6 SWAP3 POP SWAP3 POP POP PUSH2 0xB5E JUMP JUMPDEST DUP5 PUSH2 0xFFFF AND DUP5 PUSH2 0xFFFF AND GT DUP1 ISZERO PUSH2 0xA12 JUMPI POP PUSH1 0x1 DUP6 SUB PUSH2 0xFFFF AND DUP12 PUSH2 0xFFFF AND EQ JUMPDEST ISZERO PUSH2 0xA1F JUMPI DUP4 SWAP2 POP PUSH2 0xA23 JUMP JUMPDEST DUP5 SWAP2 POP JUMPDEST DUP2 PUSH2 0xFFFF AND DUP12 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0xA37 JUMPI INVALID JUMPDEST MOD SWAP3 POP PUSH2 0xA48 DUP2 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0xE46 JUMP JUMPDEST DUP13 DUP5 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0xA59 JUMPI INVALID JUMPDEST DUP3 MLOAD PUSH1 0x2 SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH4 0xFFFFFFFF NOT SWAP1 SWAP4 AND PUSH4 0xFFFFFFFF SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR PUSH11 0xFFFFFFFFFFFFFF00000000 NOT AND PUSH5 0x100000000 PUSH7 0xFFFFFFFFFFFFFF PUSH1 0x6 SWAP4 SWAP1 SWAP4 SIGNEXTEND SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL OR PUSH32 0xFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x58 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP3 OR PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xF8 SHL SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR DUP2 SSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMPDEST SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 PUSH1 0x0 DUP5 PUSH2 0xFFFF AND GT PUSH2 0xBAE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xBC6 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 0xBF0 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xC0B 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 0xC35 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xC50 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 0xC7A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0xD19 JUMPI PUSH2 0xCAD DUP14 DUP14 DUP14 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC9A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 PUSH2 0xF90 JUMP JUMPDEST DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCB9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xCCC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0xCDF JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x20 SWAP5 DUP6 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP1 MSTORE PUSH1 0x6 SWAP2 DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND SWAP1 MSTORE PUSH1 0x1 ADD PUSH2 0xC80 JUMP JUMPDEST POP SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0xFFFF AND GT PUSH2 0xD67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND GT PUSH2 0xD7D JUMPI POP DUP2 PUSH2 0xDCB JUMP JUMPDEST DUP3 JUMPDEST DUP3 PUSH2 0xFFFF AND DUP2 PUSH2 0xFFFF AND LT ISZERO PUSH2 0xDC6 JUMPI PUSH1 0x1 DUP6 DUP3 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0xDA2 JUMPI INVALID JUMPDEST PUSH1 0x2 MUL ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 ADD PUSH2 0xD7F JUMP JUMPDEST POP DUP2 SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE SWAP3 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP4 SLOAD PUSH4 0xFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xF8 SHL OR DUP3 SSTORE SWAP1 DUP2 ADD DUP1 SLOAD PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE SWAP1 DUP2 SWAP1 JUMP JUMPDEST PUSH2 0xE4E PUSH2 0x166D JUMP JUMPDEST DUP7 MLOAD DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH2 0xE67 JUMPI PUSH1 0x1 PUSH2 0xE69 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP PUSH1 0x0 PUSH4 0xFFFFFFFF TIMESTAMP GT PUSH2 0xEB4 JUMPI TIMESTAMP DUP5 PUSH4 0xFFFFFFFF AND LT PUSH2 0xE8B JUMPI DUP2 PUSH2 0xEAF JUMP JUMPDEST DUP9 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0xEAC JUMPI DUP9 MLOAD DUP5 SUB PUSH2 0xEAF JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH2 0xEB7 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP10 PUSH1 0x2 SIGNEXTEND MUL DUP12 PUSH1 0x20 ADD MLOAD ADD PUSH1 0x6 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x80 DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH2 0xF18 JUMPI INVALID JUMPDEST DIV DUP12 PUSH1 0x40 ADD MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0x10 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND SWAP1 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 PUSH2 0xF6F JUMPI INVALID JUMPDEST DIV DUP12 PUSH1 0x80 ADD MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 MSTORE POP SWAP3 POP POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH4 0xFFFFFFFF DUP11 AND PUSH2 0x105C JUMPI PUSH1 0x0 DUP13 DUP10 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0xFB2 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP6 MSTORE PUSH5 0x100000000 DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP14 AND EQ PUSH2 0x1041 JUMPI PUSH2 0x103E DUP2 DUP14 DUP13 DUP12 DUP12 DUP12 PUSH2 0xE46 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD SWAP4 POP SWAP4 POP SWAP4 POP POP PUSH2 0x117F JUMP JUMPDEST DUP10 DUP12 SUB PUSH1 0x0 DUP1 PUSH2 0x1073 DUP16 DUP16 DUP6 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 PUSH2 0x118E JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x10AC JUMPI DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD DUP4 PUSH1 0x80 ADD MLOAD SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x117F JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x10DB JUMPI DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x117F JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD SWAP1 DUP5 ADD MLOAD SWAP2 DUP4 SWAP1 SUB SWAP3 DUP7 SUB SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP5 AND SWAP3 SWAP1 DUP6 AND SWAP2 SUB PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0x1109 JUMPI INVALID JUMPDEST SDIV MUL DUP5 PUSH1 0x20 ADD MLOAD ADD DUP3 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL DUP2 PUSH2 0x113B JUMPI INVALID JUMPDEST DIV DUP6 PUSH1 0x40 ADD MLOAD ADD DUP3 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND DUP8 PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x80 ADD MLOAD SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 PUSH2 0x116B JUMPI INVALID JUMPDEST DIV MUL DUP7 PUSH1 0x80 ADD MLOAD ADD SWAP8 POP SWAP8 POP SWAP8 POP POP POP POP POP POP JUMPDEST SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1196 PUSH2 0x166D JUMP JUMPDEST PUSH2 0x119E PUSH2 0x166D JUMP JUMPDEST DUP11 DUP8 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x11AF JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP1 DUP5 MSTORE PUSH5 0x100000000 DUP3 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP3 POP PUSH2 0x122D SWAP1 DUP12 SWAP1 DUP12 PUSH2 0x13D5 JUMP JUMPDEST ISZERO PUSH2 0x1267 JUMPI DUP9 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x124F JUMPI PUSH2 0xB5E JUMP JUMPDEST DUP2 PUSH2 0x125E DUP4 DUP12 DUP12 DUP11 DUP11 DUP11 PUSH2 0xE46 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xB5E JUMP JUMPDEST DUP11 DUP4 PUSH2 0xFFFF AND DUP9 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x127C JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x128C JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP3 POP PUSH2 0x1370 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE DUP13 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP3 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x1 DUP13 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP2 POP JUMPDEST PUSH2 0x137F DUP11 DUP4 PUSH1 0x0 ADD MLOAD DUP12 PUSH2 0x13D5 JUMP JUMPDEST PUSH2 0x13B6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x13D311 PUSH1 0xEA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13C3 DUP12 DUP12 DUP12 DUP11 DUP8 PUSH2 0x1498 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO DUP1 ISZERO PUSH2 0x13FF JUMPI POP DUP4 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND GT ISZERO JUMPDEST ISZERO PUSH2 0x141B JUMPI DUP2 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO SWAP1 POP PUSH2 0xDCB JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x1443 JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH5 0x100000000 ADD PUSH2 0x144B JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP6 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x147C JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH5 0x100000000 ADD PUSH2 0x1484 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 SWAP2 GT ISZERO SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x14A0 PUSH2 0x166D JUMP JUMPDEST PUSH2 0x14A8 PUSH2 0x166D JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH2 0xFFFF AND DUP6 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x14BE JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP6 PUSH2 0xFFFF AND DUP4 ADD SUB SWAP1 POP PUSH1 0x0 JUMPDEST POP PUSH1 0x2 DUP2 DUP4 ADD DIV DUP10 PUSH2 0xFFFF DUP8 AND DUP3 DUP2 PUSH2 0x14EB JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x14F7 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP6 POP PUSH2 0x157C JUMPI DUP1 PUSH1 0x1 ADD SWAP3 POP PUSH2 0x14D6 JUMP JUMPDEST DUP10 DUP7 PUSH2 0xFFFF AND DUP3 PUSH1 0x1 ADD DUP2 PUSH2 0x158D JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x1599 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE DUP6 MLOAD SWAP1 SWAP5 POP PUSH1 0x0 SWAP1 PUSH2 0x161F SWAP1 DUP12 SWAP1 DUP12 PUSH2 0x13D5 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x1638 JUMPI POP PUSH2 0x1638 DUP11 DUP11 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x13D5 JUMP JUMPDEST ISZERO PUSH2 0x1643 JUMPI POP PUSH2 0x1660 JUMP JUMPDEST DUP1 PUSH2 0x1653 JUMPI PUSH1 0x1 DUP3 SUB SWAP3 POP PUSH2 0x165A JUMP JUMPDEST DUP2 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP PUSH2 0x14D6 JUMP JUMPDEST POP POP POP SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16AC JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x16C4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x16DB JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x16EE JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x16FC JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 PUSH1 0x60 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x1710 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 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1734 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x174B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x175E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x176C JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x1710 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1790 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0xDCB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17B1 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xDCB DUP4 DUP4 PUSH2 0x169B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17CC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xDCB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17F3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xDCB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1815 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x182D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xDCB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1878 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1853 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MSTORE DUP5 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x80 DUP5 ADD SWAP1 DUP3 DUP9 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x18BF JUMPI DUP2 MLOAD PUSH1 0x6 SIGNEXTEND DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x18A0 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP6 MLOAD DUP1 DUP3 MSTORE DUP7 DUP4 ADD SWAP2 DUP4 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x18FC JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x18D7 JUMP JUMPDEST POP POP DUP5 DUP2 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x1910 DUP2 DUP8 PUSH2 0x1840 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x616C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0xFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP6 SWAP1 SWAP6 AND DUP6 MSTORE PUSH1 0x6 SWAP4 SWAP1 SWAP4 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x40 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MUL 0xAC 0xD3 DUP16 DUP10 0x25 0xAF 0xCE 0xB7 0xB9 0x2C PUSH15 0x72F0D8CDEE7003D69E28036BF58A85 OR STOP PUSH4 0x364C6473 PUSH16 0x6C634300070600330000000000000000 ","sourceMap":"125:4076:41:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7609:178","statements":[{"nodeType":"YulBlock","src":"6:3:178","statements":[]},{"body":{"nodeType":"YulBlock","src":"96:93:178","statements":[{"body":{"nodeType":"YulBlock","src":"135:24:178","statements":[{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"144:5:178"},{"name":"value","nodeType":"YulIdentifier","src":"151:5:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"137:6:178"},"nodeType":"YulFunctionCall","src":"137:20:178"},"nodeType":"YulExpressionStatement","src":"137:20:178"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"117:3:178"},{"name":"offset","nodeType":"YulIdentifier","src":"122:6:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"113:3:178"},"nodeType":"YulFunctionCall","src":"113:16:178"},{"kind":"number","nodeType":"YulLiteral","src":"131:2:178","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"109:3:178"},"nodeType":"YulFunctionCall","src":"109:25:178"},"nodeType":"YulIf","src":"106:2:178"},{"nodeType":"YulAssignment","src":"168:15:178","value":{"name":"offset","nodeType":"YulIdentifier","src":"177:6:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"168:5:178"}]}]},"name":"abi_decode_t_struct$_InitializeParams_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"70:6:178","type":""},{"name":"end","nodeType":"YulTypedName","src":"78:3:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"86:5:178","type":""}],"src":"14:175:178"},{"body":{"nodeType":"YulBlock","src":"331:563:178","statements":[{"body":{"nodeType":"YulBlock","src":"377:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"386:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"394:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"379:6:178"},"nodeType":"YulFunctionCall","src":"379:22:178"},"nodeType":"YulExpressionStatement","src":"379:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"352:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"361:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"348:3:178"},"nodeType":"YulFunctionCall","src":"348:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"373:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"344:3:178"},"nodeType":"YulFunctionCall","src":"344:32:178"},"nodeType":"YulIf","src":"341:2:178"},{"nodeType":"YulVariableDeclaration","src":"412:37:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"439:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"426:12:178"},"nodeType":"YulFunctionCall","src":"426:23:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"416:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"458:28:178","value":{"kind":"number","nodeType":"YulLiteral","src":"468:18:178","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"462:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"513:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"522:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"530:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"515:6:178"},"nodeType":"YulFunctionCall","src":"515:22:178"},"nodeType":"YulExpressionStatement","src":"515:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"501:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"509:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"498:2:178"},"nodeType":"YulFunctionCall","src":"498:14:178"},"nodeType":"YulIf","src":"495:2:178"},{"nodeType":"YulVariableDeclaration","src":"548:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"562:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"573:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"558:3:178"},"nodeType":"YulFunctionCall","src":"558:22:178"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"552:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"628:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"637:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"645:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"630:6:178"},"nodeType":"YulFunctionCall","src":"630:22:178"},"nodeType":"YulExpressionStatement","src":"630:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"607:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"611:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"603:3:178"},"nodeType":"YulFunctionCall","src":"603:13:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"618:7:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"599:3:178"},"nodeType":"YulFunctionCall","src":"599:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"592:6:178"},"nodeType":"YulFunctionCall","src":"592:35:178"},"nodeType":"YulIf","src":"589:2:178"},{"nodeType":"YulVariableDeclaration","src":"663:30:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"690:2:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"677:12:178"},"nodeType":"YulFunctionCall","src":"677:16:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"667:6:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"720:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"729:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"737:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"722:6:178"},"nodeType":"YulFunctionCall","src":"722:22:178"},"nodeType":"YulExpressionStatement","src":"722:22:178"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"708:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"716:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"705:2:178"},"nodeType":"YulFunctionCall","src":"705:14:178"},"nodeType":"YulIf","src":"702:2:178"},{"body":{"nodeType":"YulBlock","src":"807:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"816:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"824:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"809:6:178"},"nodeType":"YulFunctionCall","src":"809:22:178"},"nodeType":"YulExpressionStatement","src":"809:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"769:2:178"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"777:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"785:4:178","type":"","value":"0x60"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"773:3:178"},"nodeType":"YulFunctionCall","src":"773:17:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"765:3:178"},"nodeType":"YulFunctionCall","src":"765:26:178"},{"kind":"number","nodeType":"YulLiteral","src":"793:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"761:3:178"},"nodeType":"YulFunctionCall","src":"761:35:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"798:7:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"758:2:178"},"nodeType":"YulFunctionCall","src":"758:48:178"},"nodeType":"YulIf","src":"755:2:178"},{"nodeType":"YulAssignment","src":"842:21:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"856:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"860:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"852:3:178"},"nodeType":"YulFunctionCall","src":"852:11:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"842:6:178"}]},{"nodeType":"YulAssignment","src":"872:16:178","value":{"name":"length","nodeType":"YulIdentifier","src":"882:6:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"872:6:178"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_UpdateParams_$9285_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"289:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"300:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"312:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"320:6:178","type":""}],"src":"194:700:178"},{"body":{"nodeType":"YulBlock","src":"1003:561:178","statements":[{"body":{"nodeType":"YulBlock","src":"1049:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1058:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1066:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1051:6:178"},"nodeType":"YulFunctionCall","src":"1051:22:178"},"nodeType":"YulExpressionStatement","src":"1051:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1024:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"1033:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1020:3:178"},"nodeType":"YulFunctionCall","src":"1020:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"1045:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1016:3:178"},"nodeType":"YulFunctionCall","src":"1016:32:178"},"nodeType":"YulIf","src":"1013:2:178"},{"nodeType":"YulVariableDeclaration","src":"1084:37:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1111:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1098:12:178"},"nodeType":"YulFunctionCall","src":"1098:23:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1088:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1130:28:178","value":{"kind":"number","nodeType":"YulLiteral","src":"1140:18:178","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1134:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"1185:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1194:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1202:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1187:6:178"},"nodeType":"YulFunctionCall","src":"1187:22:178"},"nodeType":"YulExpressionStatement","src":"1187:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1173:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"1181:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1170:2:178"},"nodeType":"YulFunctionCall","src":"1170:14:178"},"nodeType":"YulIf","src":"1167:2:178"},{"nodeType":"YulVariableDeclaration","src":"1220:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1234:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"1245:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1230:3:178"},"nodeType":"YulFunctionCall","src":"1230:22:178"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"1224:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"1300:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1309:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1317:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1302:6:178"},"nodeType":"YulFunctionCall","src":"1302:22:178"},"nodeType":"YulExpressionStatement","src":"1302:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1279:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"1283:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1275:3:178"},"nodeType":"YulFunctionCall","src":"1275:13:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1290:7:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1271:3:178"},"nodeType":"YulFunctionCall","src":"1271:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1264:6:178"},"nodeType":"YulFunctionCall","src":"1264:35:178"},"nodeType":"YulIf","src":"1261:2:178"},{"nodeType":"YulVariableDeclaration","src":"1335:30:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1362:2:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1349:12:178"},"nodeType":"YulFunctionCall","src":"1349:16:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1339:6:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"1392:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1401:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1409:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1394:6:178"},"nodeType":"YulFunctionCall","src":"1394:22:178"},"nodeType":"YulExpressionStatement","src":"1394:22:178"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1380:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"1388:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1377:2:178"},"nodeType":"YulFunctionCall","src":"1377:14:178"},"nodeType":"YulIf","src":"1374:2:178"},{"body":{"nodeType":"YulBlock","src":"1477:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1486:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1494:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1479:6:178"},"nodeType":"YulFunctionCall","src":"1479:22:178"},"nodeType":"YulExpressionStatement","src":"1479:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1441:2:178"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1449:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"1457:2:178","type":"","value":"32"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"1445:3:178"},"nodeType":"YulFunctionCall","src":"1445:15:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1437:3:178"},"nodeType":"YulFunctionCall","src":"1437:24:178"},{"kind":"number","nodeType":"YulLiteral","src":"1463:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1433:3:178"},"nodeType":"YulFunctionCall","src":"1433:33:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1468:7:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1430:2:178"},"nodeType":"YulFunctionCall","src":"1430:46:178"},"nodeType":"YulIf","src":"1427:2:178"},{"nodeType":"YulAssignment","src":"1512:21:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1526:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"1530:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1522:3:178"},"nodeType":"YulFunctionCall","src":"1522:11:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1512:6:178"}]},{"nodeType":"YulAssignment","src":"1542:16:178","value":{"name":"length","nodeType":"YulIdentifier","src":"1552:6:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1542:6:178"}]}]},"name":"abi_decode_tuple_t_array$_t_uint32_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"961:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"972:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"984:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"992:6:178","type":""}],"src":"899:665:178"},{"body":{"nodeType":"YulBlock","src":"1637:225:178","statements":[{"body":{"nodeType":"YulBlock","src":"1683:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1692:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1700:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1685:6:178"},"nodeType":"YulFunctionCall","src":"1685:22:178"},"nodeType":"YulExpressionStatement","src":"1685:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1658:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"1667:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1654:3:178"},"nodeType":"YulFunctionCall","src":"1654:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"1679:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1650:3:178"},"nodeType":"YulFunctionCall","src":"1650:32:178"},"nodeType":"YulIf","src":"1647:2:178"},{"nodeType":"YulVariableDeclaration","src":"1718:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1744:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1731:12:178"},"nodeType":"YulFunctionCall","src":"1731:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1722:5:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"1806:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1815:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1823:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1808:6:178"},"nodeType":"YulFunctionCall","src":"1808:22:178"},"nodeType":"YulExpressionStatement","src":"1808:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1776:5:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1794:1:178","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"1797:5:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"1783:10:178"},"nodeType":"YulFunctionCall","src":"1783:20:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1773:2:178"},"nodeType":"YulFunctionCall","src":"1773:31:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1766:6:178"},"nodeType":"YulFunctionCall","src":"1766:39:178"},"nodeType":"YulIf","src":"1763:2:178"},{"nodeType":"YulAssignment","src":"1841:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"1851:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1841:6:178"}]}]},"name":"abi_decode_tuple_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1603:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1614:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1626:6:178","type":""}],"src":"1569:293:178"},{"body":{"nodeType":"YulBlock","src":"1973:163:178","statements":[{"body":{"nodeType":"YulBlock","src":"2019:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2028:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2036:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2021:6:178"},"nodeType":"YulFunctionCall","src":"2021:22:178"},"nodeType":"YulExpressionStatement","src":"2021:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1994:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"2003:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1990:3:178"},"nodeType":"YulFunctionCall","src":"1990:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"2015:2:178","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1986:3:178"},"nodeType":"YulFunctionCall","src":"1986:32:178"},"nodeType":"YulIf","src":"1983:2:178"},{"nodeType":"YulAssignment","src":"2054:76:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2111:9:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2122:7:178"}],"functionName":{"name":"abi_decode_t_struct$_InitializeParams_calldata","nodeType":"YulIdentifier","src":"2064:46:178"},"nodeType":"YulFunctionCall","src":"2064:66:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2054:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_InitializeParams_$9230_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1939:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1950:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1962:6:178","type":""}],"src":"1867:269:178"},{"body":{"nodeType":"YulBlock","src":"2243:163:178","statements":[{"body":{"nodeType":"YulBlock","src":"2289:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2298:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2306:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2291:6:178"},"nodeType":"YulFunctionCall","src":"2291:22:178"},"nodeType":"YulExpressionStatement","src":"2291:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2264:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"2273:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2260:3:178"},"nodeType":"YulFunctionCall","src":"2260:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"2285:2:178","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2256:3:178"},"nodeType":"YulFunctionCall","src":"2256:32:178"},"nodeType":"YulIf","src":"2253:2:178"},{"nodeType":"YulAssignment","src":"2324:76:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2381:9:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2392:7:178"}],"functionName":{"name":"abi_decode_t_struct$_InitializeParams_calldata","nodeType":"YulIdentifier","src":"2334:46:178"},"nodeType":"YulFunctionCall","src":"2334:66:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2324:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_UpdateParams_$9285_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2209:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2220:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2232:6:178","type":""}],"src":"2141:265:178"},{"body":{"nodeType":"YulBlock","src":"2481:251:178","statements":[{"body":{"nodeType":"YulBlock","src":"2527:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2536:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2544:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2529:6:178"},"nodeType":"YulFunctionCall","src":"2529:22:178"},"nodeType":"YulExpressionStatement","src":"2529:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2502:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"2511:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2498:3:178"},"nodeType":"YulFunctionCall","src":"2498:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"2523:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2494:3:178"},"nodeType":"YulFunctionCall","src":"2494:32:178"},"nodeType":"YulIf","src":"2491:2:178"},{"nodeType":"YulVariableDeclaration","src":"2562:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2588:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2575:12:178"},"nodeType":"YulFunctionCall","src":"2575:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2566:5:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2676:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2685:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2693:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2678:6:178"},"nodeType":"YulFunctionCall","src":"2678:22:178"},"nodeType":"YulExpressionStatement","src":"2678:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2620:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2631:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"2638:34:178","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2627:3:178"},"nodeType":"YulFunctionCall","src":"2627:46:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2617:2:178"},"nodeType":"YulFunctionCall","src":"2617:57:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2610:6:178"},"nodeType":"YulFunctionCall","src":"2610:65:178"},"nodeType":"YulIf","src":"2607:2:178"},{"nodeType":"YulAssignment","src":"2711:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"2721:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2711:6:178"}]}]},"name":"abi_decode_tuple_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2447:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2458:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2470:6:178","type":""}],"src":"2411:321:178"},{"body":{"nodeType":"YulBlock","src":"2806:223:178","statements":[{"body":{"nodeType":"YulBlock","src":"2852:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2861:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2869:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2854:6:178"},"nodeType":"YulFunctionCall","src":"2854:22:178"},"nodeType":"YulExpressionStatement","src":"2854:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2827:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"2836:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2823:3:178"},"nodeType":"YulFunctionCall","src":"2823:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"2848:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2819:3:178"},"nodeType":"YulFunctionCall","src":"2819:32:178"},"nodeType":"YulIf","src":"2816:2:178"},{"nodeType":"YulVariableDeclaration","src":"2887:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2913:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2900:12:178"},"nodeType":"YulFunctionCall","src":"2900:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2891:5:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2973:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2982:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2990:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2975:6:178"},"nodeType":"YulFunctionCall","src":"2975:22:178"},"nodeType":"YulExpressionStatement","src":"2975:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2945:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2956:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"2963:6:178","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2952:3:178"},"nodeType":"YulFunctionCall","src":"2952:18:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2942:2:178"},"nodeType":"YulFunctionCall","src":"2942:29:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2935:6:178"},"nodeType":"YulFunctionCall","src":"2935:37:178"},"nodeType":"YulIf","src":"2932:2:178"},{"nodeType":"YulAssignment","src":"3008:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"3018:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3008:6:178"}]}]},"name":"abi_decode_tuple_t_uint16","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2772:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2783:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2795:6:178","type":""}],"src":"2737:292:178"},{"body":{"nodeType":"YulBlock","src":"3104:120:178","statements":[{"body":{"nodeType":"YulBlock","src":"3150:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3159:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3167:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3152:6:178"},"nodeType":"YulFunctionCall","src":"3152:22:178"},"nodeType":"YulExpressionStatement","src":"3152:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3125:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"3134:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3121:3:178"},"nodeType":"YulFunctionCall","src":"3121:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"3146:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3117:3:178"},"nodeType":"YulFunctionCall","src":"3117:32:178"},"nodeType":"YulIf","src":"3114:2:178"},{"nodeType":"YulAssignment","src":"3185:33:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3208:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3195:12:178"},"nodeType":"YulFunctionCall","src":"3195:23:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3185:6:178"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3070:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3081:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3093:6:178","type":""}],"src":"3034:190:178"},{"body":{"nodeType":"YulBlock","src":"3298:227:178","statements":[{"body":{"nodeType":"YulBlock","src":"3344:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3353:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3361:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3346:6:178"},"nodeType":"YulFunctionCall","src":"3346:22:178"},"nodeType":"YulExpressionStatement","src":"3346:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3319:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"3328:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3315:3:178"},"nodeType":"YulFunctionCall","src":"3315:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"3340:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3311:3:178"},"nodeType":"YulFunctionCall","src":"3311:32:178"},"nodeType":"YulIf","src":"3308:2:178"},{"nodeType":"YulVariableDeclaration","src":"3379:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3405:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3392:12:178"},"nodeType":"YulFunctionCall","src":"3392:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3383:5:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3469:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3478:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3486:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3471:6:178"},"nodeType":"YulFunctionCall","src":"3471:22:178"},"nodeType":"YulExpressionStatement","src":"3471:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3437:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3448:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"3455:10:178","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3444:3:178"},"nodeType":"YulFunctionCall","src":"3444:22:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3434:2:178"},"nodeType":"YulFunctionCall","src":"3434:33:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3427:6:178"},"nodeType":"YulFunctionCall","src":"3427:41:178"},"nodeType":"YulIf","src":"3424:2:178"},{"nodeType":"YulAssignment","src":"3504:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"3514:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3504:6:178"}]}]},"name":"abi_decode_tuple_t_uint32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3264:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3275:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3287:6:178","type":""}],"src":"3229:296:178"},{"body":{"nodeType":"YulBlock","src":"3597:433:178","statements":[{"nodeType":"YulVariableDeclaration","src":"3607:26:178","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3627:5:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3621:5:178"},"nodeType":"YulFunctionCall","src":"3621:12:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3611:6:178","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3649:3:178"},{"name":"length","nodeType":"YulIdentifier","src":"3654:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3642:6:178"},"nodeType":"YulFunctionCall","src":"3642:19:178"},"nodeType":"YulExpressionStatement","src":"3642:19:178"},{"nodeType":"YulVariableDeclaration","src":"3670:14:178","value":{"kind":"number","nodeType":"YulLiteral","src":"3680:4:178","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3674:2:178","type":""}]},{"nodeType":"YulAssignment","src":"3693:19:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3704:3:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3709:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3700:3:178"},"nodeType":"YulFunctionCall","src":"3700:12:178"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3693:3:178"}]},{"nodeType":"YulVariableDeclaration","src":"3721:28:178","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3739:5:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3746:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3735:3:178"},"nodeType":"YulFunctionCall","src":"3735:14:178"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3725:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3758:12:178","value":{"name":"end","nodeType":"YulIdentifier","src":"3767:3:178"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3762:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3828:177:178","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3849:3:178"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3864:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3858:5:178"},"nodeType":"YulFunctionCall","src":"3858:13:178"},{"kind":"number","nodeType":"YulLiteral","src":"3873:50:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3854:3:178"},"nodeType":"YulFunctionCall","src":"3854:70:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3842:6:178"},"nodeType":"YulFunctionCall","src":"3842:83:178"},"nodeType":"YulExpressionStatement","src":"3842:83:178"},{"nodeType":"YulAssignment","src":"3938:19:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3949:3:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3954:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3945:3:178"},"nodeType":"YulFunctionCall","src":"3945:12:178"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3938:3:178"}]},{"nodeType":"YulAssignment","src":"3970:25:178","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3984:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3992:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3980:3:178"},"nodeType":"YulFunctionCall","src":"3980:15:178"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3970:6:178"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3790:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"3793:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3787:2:178"},"nodeType":"YulFunctionCall","src":"3787:13:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3801:18:178","statements":[{"nodeType":"YulAssignment","src":"3803:14:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3812:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"3815:1:178","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3808:3:178"},"nodeType":"YulFunctionCall","src":"3808:9:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3803:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"3783:3:178","statements":[]},"src":"3779:226:178"},{"nodeType":"YulAssignment","src":"4014:10:178","value":{"name":"pos","nodeType":"YulIdentifier","src":"4021:3:178"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4014:3:178"}]}]},"name":"abi_encode_t_array$_t_uint192_$dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3574:5:178","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3581:3:178","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3589:3:178","type":""}],"src":"3530:500:178"},{"body":{"nodeType":"YulBlock","src":"4338:1096:178","statements":[{"nodeType":"YulVariableDeclaration","src":"4348:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4366:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4377:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4362:3:178"},"nodeType":"YulFunctionCall","src":"4362:18:178"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"4352:6:178","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4396:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4407:2:178","type":"","value":"96"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4389:6:178"},"nodeType":"YulFunctionCall","src":"4389:21:178"},"nodeType":"YulExpressionStatement","src":"4389:21:178"},{"nodeType":"YulVariableDeclaration","src":"4419:17:178","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"4430:6:178"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"4423:3:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4445:27:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4465:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4459:5:178"},"nodeType":"YulFunctionCall","src":"4459:13:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4449:6:178","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"4488:6:178"},{"name":"length","nodeType":"YulIdentifier","src":"4496:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4481:6:178"},"nodeType":"YulFunctionCall","src":"4481:22:178"},"nodeType":"YulExpressionStatement","src":"4481:22:178"},{"nodeType":"YulAssignment","src":"4512:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4523:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4534:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4519:3:178"},"nodeType":"YulFunctionCall","src":"4519:19:178"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"4512:3:178"}]},{"nodeType":"YulVariableDeclaration","src":"4547:14:178","value":{"kind":"number","nodeType":"YulLiteral","src":"4557:4:178","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4551:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4570:29:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4588:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"4596:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4584:3:178"},"nodeType":"YulFunctionCall","src":"4584:15:178"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4574:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4608:13:178","value":{"name":"tail","nodeType":"YulIdentifier","src":"4617:4:178"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4612:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"4679:135:178","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4700:3:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4716:1:178","type":"","value":"6"},{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4725:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4719:5:178"},"nodeType":"YulFunctionCall","src":"4719:13:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"4705:10:178"},"nodeType":"YulFunctionCall","src":"4705:28:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4693:6:178"},"nodeType":"YulFunctionCall","src":"4693:41:178"},"nodeType":"YulExpressionStatement","src":"4693:41:178"},{"nodeType":"YulAssignment","src":"4747:19:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4758:3:178"},{"name":"_1","nodeType":"YulIdentifier","src":"4763:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4754:3:178"},"nodeType":"YulFunctionCall","src":"4754:12:178"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"4747:3:178"}]},{"nodeType":"YulAssignment","src":"4779:25:178","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4793:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"4801:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4789:3:178"},"nodeType":"YulFunctionCall","src":"4789:15:178"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4779:6:178"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4641:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"4644:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4638:2:178"},"nodeType":"YulFunctionCall","src":"4638:13:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4652:18:178","statements":[{"nodeType":"YulAssignment","src":"4654:14:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4663:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"4666:1:178","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4659:3:178"},"nodeType":"YulFunctionCall","src":"4659:9:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4654:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"4634:3:178","statements":[]},"src":"4630:184:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4834:9:178"},{"name":"_1","nodeType":"YulIdentifier","src":"4845:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4830:3:178"},"nodeType":"YulFunctionCall","src":"4830:18:178"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4854:3:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"4859:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4850:3:178"},"nodeType":"YulFunctionCall","src":"4850:19:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4823:6:178"},"nodeType":"YulFunctionCall","src":"4823:47:178"},"nodeType":"YulExpressionStatement","src":"4823:47:178"},{"nodeType":"YulVariableDeclaration","src":"4879:16:178","value":{"name":"pos","nodeType":"YulIdentifier","src":"4892:3:178"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4883:5:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4904:29:178","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"4926:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4920:5:178"},"nodeType":"YulFunctionCall","src":"4920:13:178"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"4908:8:178","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4949:3:178"},{"name":"length_1","nodeType":"YulIdentifier","src":"4954:8:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4942:6:178"},"nodeType":"YulFunctionCall","src":"4942:21:178"},"nodeType":"YulExpressionStatement","src":"4942:21:178"},{"nodeType":"YulAssignment","src":"4972:21:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4985:3:178"},{"name":"_1","nodeType":"YulIdentifier","src":"4990:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4981:3:178"},"nodeType":"YulFunctionCall","src":"4981:12:178"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4972:5:178"}]},{"nodeType":"YulVariableDeclaration","src":"5002:31:178","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"5022:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"5030:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5018:3:178"},"nodeType":"YulFunctionCall","src":"5018:15:178"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5006:8:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5042:15:178","value":{"name":"tail","nodeType":"YulIdentifier","src":"5053:4:178"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5046:3:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"5123:181:178","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5144:5:178"},{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5161:8:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5155:5:178"},"nodeType":"YulFunctionCall","src":"5155:15:178"},{"kind":"number","nodeType":"YulLiteral","src":"5172:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5151:3:178"},"nodeType":"YulFunctionCall","src":"5151:64:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5137:6:178"},"nodeType":"YulFunctionCall","src":"5137:79:178"},"nodeType":"YulExpressionStatement","src":"5137:79:178"},{"nodeType":"YulAssignment","src":"5229:23:178","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5242:5:178"},{"name":"_1","nodeType":"YulIdentifier","src":"5249:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5238:3:178"},"nodeType":"YulFunctionCall","src":"5238:14:178"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5229:5:178"}]},{"nodeType":"YulAssignment","src":"5265:29:178","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5281:8:178"},{"name":"_1","nodeType":"YulIdentifier","src":"5291:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5277:3:178"},"nodeType":"YulFunctionCall","src":"5277:17:178"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5265:8:178"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5077:3:178"},{"name":"length_1","nodeType":"YulIdentifier","src":"5082:8:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5074:2:178"},"nodeType":"YulFunctionCall","src":"5074:17:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5092:22:178","statements":[{"nodeType":"YulAssignment","src":"5094:18:178","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5105:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"5110:1:178","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5101:3:178"},"nodeType":"YulFunctionCall","src":"5101:11:178"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5094:3:178"}]}]},"pre":{"nodeType":"YulBlock","src":"5070:3:178","statements":[]},"src":"5066:238:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5324:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5335:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5320:3:178"},"nodeType":"YulFunctionCall","src":"5320:18:178"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5344:5:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"5351:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5340:3:178"},"nodeType":"YulFunctionCall","src":"5340:21:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5313:6:178"},"nodeType":"YulFunctionCall","src":"5313:49:178"},"nodeType":"YulExpressionStatement","src":"5313:49:178"},{"nodeType":"YulAssignment","src":"5371:57:178","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"5414:6:178"},{"name":"pos_1","nodeType":"YulIdentifier","src":"5422:5:178"}],"functionName":{"name":"abi_encode_t_array$_t_uint192_$dyn","nodeType":"YulIdentifier","src":"5379:34:178"},"nodeType":"YulFunctionCall","src":"5379:49:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5371:4:178"}]}]},"name":"abi_encode_tuple_t_array$_t_int56_$dyn_memory_ptr_t_array$_t_uint160_$dyn_memory_ptr_t_array$_t_uint192_$dyn_memory_ptr__to_t_array$_t_int56_$dyn_memory_ptr_t_array$_t_uint160_$dyn_memory_ptr_t_array$_t_uint192_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4291:9:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4302:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4310:6:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4318:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4329:4:178","type":""}],"src":"4035:1399:178"},{"body":{"nodeType":"YulBlock","src":"5536:91:178","statements":[{"nodeType":"YulAssignment","src":"5546:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5558:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5569:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5554:3:178"},"nodeType":"YulFunctionCall","src":"5554:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5546:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5588:9:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5610:1:178","type":"","value":"2"},{"name":"value0","nodeType":"YulIdentifier","src":"5613:6:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"5599:10:178"},"nodeType":"YulFunctionCall","src":"5599:21:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5581:6:178"},"nodeType":"YulFunctionCall","src":"5581:40:178"},"nodeType":"YulExpressionStatement","src":"5581:40:178"}]},"name":"abi_encode_tuple_t_int24__to_t_int24__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5505:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5516:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5527:4:178","type":""}],"src":"5439:188:178"},{"body":{"nodeType":"YulBlock","src":"5806:169:178","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5823:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5834:2:178","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5816:6:178"},"nodeType":"YulFunctionCall","src":"5816:21:178"},"nodeType":"YulExpressionStatement","src":"5816:21:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5857:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5868:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5853:3:178"},"nodeType":"YulFunctionCall","src":"5853:18:178"},{"kind":"number","nodeType":"YulLiteral","src":"5873:2:178","type":"","value":"19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5846:6:178"},"nodeType":"YulFunctionCall","src":"5846:30:178"},"nodeType":"YulExpressionStatement","src":"5846:30:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5896:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5907:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5892:3:178"},"nodeType":"YulFunctionCall","src":"5892:18:178"},{"kind":"string","nodeType":"YulLiteral","src":"5912:21:178","type":"","value":"already initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5885:6:178"},"nodeType":"YulFunctionCall","src":"5885:49:178"},"nodeType":"YulExpressionStatement","src":"5885:49:178"},{"nodeType":"YulAssignment","src":"5943:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5955:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5966:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5951:3:178"},"nodeType":"YulFunctionCall","src":"5951:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5943:4:178"}]}]},"name":"abi_encode_tuple_t_stringliteral_6fad3ee6d344e662108f49bced409fae87c3af64246556bdd23a34dddc7e1adc__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5783:9:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5797:4:178","type":""}],"src":"5632:343:178"},{"body":{"nodeType":"YulBlock","src":"6081:117:178","statements":[{"nodeType":"YulAssignment","src":"6091:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6103:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"6114:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6099:3:178"},"nodeType":"YulFunctionCall","src":"6099:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6091:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6133:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6148:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6156:34:178","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6144:3:178"},"nodeType":"YulFunctionCall","src":"6144:47:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6126:6:178"},"nodeType":"YulFunctionCall","src":"6126:66:178"},"nodeType":"YulExpressionStatement","src":"6126:66:178"}]},"name":"abi_encode_tuple_t_uint128__to_t_uint128__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6050:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6061:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6072:4:178","type":""}],"src":"5980:218:178"},{"body":{"nodeType":"YulBlock","src":"6304:121:178","statements":[{"nodeType":"YulAssignment","src":"6314:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6326:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"6337:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6322:3:178"},"nodeType":"YulFunctionCall","src":"6322:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6314:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6356:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6371:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6379:38:178","type":"","value":"0xffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6367:3:178"},"nodeType":"YulFunctionCall","src":"6367:51:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6349:6:178"},"nodeType":"YulFunctionCall","src":"6349:70:178"},"nodeType":"YulExpressionStatement","src":"6349:70:178"}]},"name":"abi_encode_tuple_t_uint144__to_t_uint144__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6273:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6284:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6295:4:178","type":""}],"src":"6203:222:178"},{"body":{"nodeType":"YulBlock","src":"6529:89:178","statements":[{"nodeType":"YulAssignment","src":"6539:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6551:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"6562:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6547:3:178"},"nodeType":"YulFunctionCall","src":"6547:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6539:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6581:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6596:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6604:6:178","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6592:3:178"},"nodeType":"YulFunctionCall","src":"6592:19:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6574:6:178"},"nodeType":"YulFunctionCall","src":"6574:38:178"},"nodeType":"YulExpressionStatement","src":"6574:38:178"}]},"name":"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6498:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6509:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6520:4:178","type":""}],"src":"6430:188:178"},{"body":{"nodeType":"YulBlock","src":"6724:76:178","statements":[{"nodeType":"YulAssignment","src":"6734:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6746:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"6757:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6742:3:178"},"nodeType":"YulFunctionCall","src":"6742:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6734:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6776:9:178"},{"name":"value0","nodeType":"YulIdentifier","src":"6787:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6769:6:178"},"nodeType":"YulFunctionCall","src":"6769:25:178"},"nodeType":"YulExpressionStatement","src":"6769:25:178"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6693:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6704:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6715:4:178","type":""}],"src":"6623:177:178"},{"body":{"nodeType":"YulBlock","src":"6904:93:178","statements":[{"nodeType":"YulAssignment","src":"6914:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6926:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"6937:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6922:3:178"},"nodeType":"YulFunctionCall","src":"6922:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6914:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6956:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6971:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6979:10:178","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6967:3:178"},"nodeType":"YulFunctionCall","src":"6967:23:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6949:6:178"},"nodeType":"YulFunctionCall","src":"6949:42:178"},"nodeType":"YulExpressionStatement","src":"6949:42:178"}]},"name":"abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6873:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6884:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6895:4:178","type":""}],"src":"6805:192:178"},{"body":{"nodeType":"YulBlock","src":"7203:404:178","statements":[{"nodeType":"YulAssignment","src":"7213:27:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7225:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"7236:3:178","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7221:3:178"},"nodeType":"YulFunctionCall","src":"7221:19:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7213:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7256:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7271:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"7279:10:178","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7267:3:178"},"nodeType":"YulFunctionCall","src":"7267:23:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7249:6:178"},"nodeType":"YulFunctionCall","src":"7249:42:178"},"nodeType":"YulExpressionStatement","src":"7249:42:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7311:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"7322:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7307:3:178"},"nodeType":"YulFunctionCall","src":"7307:18:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7338:1:178","type":"","value":"6"},{"name":"value1","nodeType":"YulIdentifier","src":"7341:6:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"7327:10:178"},"nodeType":"YulFunctionCall","src":"7327:21:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7300:6:178"},"nodeType":"YulFunctionCall","src":"7300:49:178"},"nodeType":"YulExpressionStatement","src":"7300:49:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7369:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"7380:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7365:3:178"},"nodeType":"YulFunctionCall","src":"7365:18:178"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"7389:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"7397:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7385:3:178"},"nodeType":"YulFunctionCall","src":"7385:55:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7358:6:178"},"nodeType":"YulFunctionCall","src":"7358:83:178"},"nodeType":"YulExpressionStatement","src":"7358:83:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7461:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"7472:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7457:3:178"},"nodeType":"YulFunctionCall","src":"7457:18:178"},{"arguments":[{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"7491:6:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7484:6:178"},"nodeType":"YulFunctionCall","src":"7484:14:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7477:6:178"},"nodeType":"YulFunctionCall","src":"7477:22:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7450:6:178"},"nodeType":"YulFunctionCall","src":"7450:50:178"},"nodeType":"YulExpressionStatement","src":"7450:50:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7520:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"7531:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7516:3:178"},"nodeType":"YulFunctionCall","src":"7516:19:178"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"7541:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"7549:50:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7537:3:178"},"nodeType":"YulFunctionCall","src":"7537:63:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7509:6:178"},"nodeType":"YulFunctionCall","src":"7509:92:178"},"nodeType":"YulExpressionStatement","src":"7509:92:178"}]},"name":"abi_encode_tuple_t_uint32_t_int56_t_uint160_t_bool_t_uint192__to_t_uint32_t_int56_t_uint160_t_bool_t_uint192__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7140:9:178","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7151:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7159:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7167:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7175:6:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7183:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7194:4:178","type":""}],"src":"7002:605:178"}]},"contents":"{\n    { }\n    function abi_decode_t_struct$_InitializeParams_calldata(offset, end) -> value\n    {\n        if slt(sub(end, offset), 96) { revert(value, value) }\n        value := offset\n    }\n    function abi_decode_tuple_t_array$_t_struct$_UpdateParams_$9285_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, 0x60)), 32), dataEnd) { revert(value0, value0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_tuple_t_array$_t_uint32_$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_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_struct$_InitializeParams_$9230_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := abi_decode_t_struct$_InitializeParams_calldata(headStart, dataEnd)\n    }\n    function abi_decode_tuple_t_struct$_UpdateParams_$9285_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := abi_decode_t_struct$_InitializeParams_calldata(headStart, dataEnd)\n    }\n    function abi_decode_tuple_t_uint128(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, 0xffffffffffffffffffffffffffffffff))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint16(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, 0xffff))) { 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_uint32(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, 0xffffffff))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_encode_t_array$_t_uint192_$dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := end\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffffffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_tuple_t_array$_t_int56_$dyn_memory_ptr_t_array$_t_uint160_$dyn_memory_ptr_t_array$_t_uint192_$dyn_memory_ptr__to_t_array$_t_int56_$dyn_memory_ptr_t_array$_t_uint160_$dyn_memory_ptr_t_array$_t_uint192_$dyn_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        let tail_1 := add(headStart, 96)\n        mstore(headStart, 96)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 128)\n        let _1 := 0x20\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, signextend(6, mload(srcPtr)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        mstore(add(headStart, _1), sub(pos, headStart))\n        let pos_1 := pos\n        let length_1 := mload(value1)\n        mstore(pos, length_1)\n        pos_1 := add(pos, _1)\n        let srcPtr_1 := add(value1, _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), 0xffffffffffffffffffffffffffffffffffffffff))\n            pos_1 := add(pos_1, _1)\n            srcPtr_1 := add(srcPtr_1, _1)\n        }\n        mstore(add(headStart, 64), sub(pos_1, headStart))\n        tail := abi_encode_t_array$_t_uint192_$dyn(value2, pos_1)\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_stringliteral_6fad3ee6d344e662108f49bced409fae87c3af64246556bdd23a34dddc7e1adc__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), \"already initialized\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint128__to_t_uint128__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint144__to_t_uint144__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffff))\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__to_t_uint32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff))\n    }\n    function abi_encode_tuple_t_uint32_t_int56_t_uint160_t_bool_t_uint192__to_t_uint32_t_int56_t_uint160_t_bool_t_uint192__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, and(value0, 0xffffffff))\n        mstore(add(headStart, 32), signextend(6, value1))\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 96), iszero(iszero(value3)))\n        mstore(add(headStart, 128), and(value4, 0xffffffffffffffffffffffffffffffffffffffffffffffff))\n    }\n}","id":178,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101005760003560e01c806374e69cef11610097578063daf50f6b11610066578063daf50f6b14610220578063dbffe9ad14610233578063dd158c181461023b578063f7fd2cfa1461024357610100565b806374e69cef146101b8578063761eb23e146101d8578063883bdbfd146101eb578063d81740db1461020d57610100565b80633eaf5d9f116100d35780633eaf5d9f1461017157806358319b4d146101865780636142258a1461019b57806365829dc5146101a357610100565b806316ada547146101055780631a68650214610123578063252c09d7146101385780632986c0e51461015c575b600080fd5b61010d610256565b60405161011a91906119a1565b60405180910390f35b61012b610264565b60405161011a9190611961565b61014b610146366004611804565b61027c565b60405161011a9594939291906119b2565b6101646102d7565b60405161011a9190611989565b6101796102ea565b60405161011a919061191c565b61018e6102fd565b60405161011a9190611975565b61010d61030e565b6101b66101b13660046117a0565b610323565b005b6101cb6101c6366004611722565b610451565b60405161011a9190611998565b6101b66101e63660046117e2565b610515565b6101fe6101f9366004611722565b610553565b60405161011a93929190611883565b6101b661021b3660046116b2565b610612565b6101b661022e3660046117a0565b6107bc565b610164610907565b61016461091a565b6101b661025136600461181c565b61092d565b6201fffe5463ffffffff1681565b6201fffe54600160381b90046001600160801b031681565b60008161ffff811061028d57600080fd5b60020201805460019091015463ffffffff82169250640100000000820460060b91600160581b81046001600160a01b031691600160f81b90910460ff16906001600160c01b031685565b6201fffe54600160b81b900461ffff1681565b6201fffe54640100000000900460020b81565b6201ffff546001600160901b031681565b6201ffff54600160901b900463ffffffff1681565b610333610251602083018361181c565b6201fffe546201ffff546103a99160009161ffff600160b81b830481169263ffffffff80821693640100000000830460020b936001600160801b03600160381b850416936001600160901b03831693600160901b909304831692600160c81b8204831692600160d81b9092049091169061095016565b6201fffe805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b93909216929092021790556103ec604082016020830161177f565b6201fffe805460029290920b62ffffff166401000000000266ffffff000000001990921691909117905561042660608201604083016117bb565b6201fffe60076101000a8154816001600160801b0302191690836001600160801b0316021790555050565b6201fffe5460009063ffffffff811690640100000000810460020b90600160381b81046001600160801b031690600160b81b900461ffff16845a90506105048589898080602002602001604051908101604052809392919081815260200183836020028082843760009201829052506201ffff546201fffe5491969594508b93508992508a916001600160901b03821691600160901b900463ffffffff90811691600160c81b900461ffff1690610b6c16565b5050505a9003979650505050505050565b6201fffe5461053290600090600160d81b900461ffff1683610d29565b6201fffe601b6101000a81548161ffff021916908361ffff16021790555050565b60608060606106056201fffe60009054906101000a900463ffffffff1686868080602002602001604051908101604052809392919081815260200183836020028082843760009201829052506201fffe546201ffff549196959450640100000000810460020b935061ffff600160b81b8204811693506001600160801b03600160381b830416926001600160901b0381169263ffffffff600160901b909204821692600160c81b9091041690610b6c16565b9250925092509250925092565b6201fffe546201ffff54640100000000820460020b916001600160801b03600160381b8204169161ffff600160b81b8304811692600160c81b8104821692600160d81b82049092169163ffffffff918216916001600160901b03821691600160901b90041660005b89811015610713578a8a8281811061068e57fe5b6106a4926020606090920201908101915061181c565b909301926106ba600088868c8c88888d8d610950565b90975095508a8a828181106106cb57fe5b90506060020160200160208101906106e3919061177f565b98508a8a828181106106f157fe5b905060600201604001602081019061070991906117bb565b975060010161067a565b50506201fffe805466ffffff00000000191664010000000062ffffff60029a909a0b99909916989098029790971776ffffffffffffffffffffffffffffffff000000000000001916600160381b6001600160801b0397909716969096029590951761ffff60b81b1916600160b81b61ffff958616021761ffff60c81b1916600160c81b93909416929092029290921763ffffffff191663ffffffff919091161790925550505050565b6201fffe54600160c81b900461ffff16156107f25760405162461bcd60e51b81526004016107e99061192a565b60405180910390fd5b6107ff602082018261181c565b6201fffe805463ffffffff191663ffffffff9290921691909117905561082b604082016020830161177f565b6201fffe805460029290920b62ffffff166401000000000266ffffff000000001990921691909117905561086560608201604083016117bb565b6201fffe80546001600160801b0392909216600160381b0276ffffffffffffffffffffffffffffffff00000000000000199092169190911790556108b76108af602083018361181c565b600090610dd2565b6201fffe80547fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160d81b61ffff938416021761ffff60c81b1916600160c81b939092169290920217905550565b6201fffe54600160c81b900461ffff1681565b6201fffe54600160d81b900461ffff1681565b6201fffe805463ffffffff19811663ffffffff9182169390930116919091179055565b60008060008b8b61ffff1661ffff811061096657fe5b6040805160a08101825260029290920292909201805463ffffffff8082168085526401000000008304600690810b810b900b6020860152600160581b83046001600160a01b031695850195909552600160f81b90910460ff16151560608401526001909101546001600160c01b031660808301529092508b1614156109f1578a859250925050610b5e565b8461ffff168461ffff16118015610a1257506001850361ffff168b61ffff16145b15610a1f57839150610a23565b8491505b8161ffff168b60010161ffff1681610a3757fe5b069250610a48818b8b8b8b8b610e46565b8c8461ffff1661ffff8110610a5957fe5b825160029190910291909101805460208401516040850151606086015163ffffffff1990931663ffffffff909516949094176affffffffffffff00000000191664010000000066ffffffffffffff60069390930b9290921691909102177fff0000000000000000000000000000000000000000ffffffffffffffffffffff16600160581b6001600160a01b0390941693909302929092177effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b921515929092029190911781556080909101516001909101805477ffffffffffffffffffffffffffffffffffffffffffffffff19166001600160c01b03909216919091179055505b995099975050505050505050565b606080606060008461ffff1611610bae576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b895167ffffffffffffffff81118015610bc657600080fd5b50604051908082528060200260200182016040528015610bf0578160200160208202803683370190505b509250895167ffffffffffffffff81118015610c0b57600080fd5b50604051908082528060200260200182016040528015610c35578160200160208202803683370190505b509150895167ffffffffffffffff81118015610c5057600080fd5b50604051908082528060200260200182016040528015610c7a578160200160208202803683370190505b50905060005b8a51811015610d1957610cad8d8d8d8481518110610c9a57fe5b60200260200101518d8d8d8d8d8d610f90565b868481518110610cb957fe5b60200260200101868581518110610ccc57fe5b60200260200101868681518110610cdf57fe5b6001600160c01b03909416602094850291909101909301929092526001600160a01b039092169052600691820b90910b9052600101610c80565b5099509950999650505050505050565b6000808361ffff1611610d67576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611610d7d575081610dcb565b825b8261ffff168161ffff161015610dc6576001858261ffff1661ffff8110610da257fe5b60020201805463ffffffff191663ffffffff92909216919091179055600101610d7f565b508190505b9392505050565b6040805160a08101825263ffffffff928316808252600060208301819052928201839052600160608301819052608090920192909252835463ffffffff1916909117909116600160f81b178255908101805477ffffffffffffffffffffffffffffffffffffffffffffffff19169055908190565b610e4e61166d565b865186036001600160801b038516610e67576001610e69565b845b9450600063ffffffff4211610eb457428463ffffffff1610610e8b5781610eaf565b886000015163ffffffff168463ffffffff161115610eac5788518403610eaf565b60005b610eb7565b60005b90506040518060a001604052808963ffffffff1681526020018363ffffffff168960020b028b602001510160060b8152602001876001600160801b031660808563ffffffff166001600160a01b0316901b6001600160a01b031681610f1857fe5b048b60400151016001600160a01b03168152602001600115158152602001876001600160801b03168363ffffffff166010896001600160901b03166001600160c01b0316901b026001600160c01b031681610f6f57fe5b048b60800151016001600160c01b0316815250925050509695505050505050565b6000808063ffffffff8a1661105c5760008c8961ffff1661ffff8110610fb257fe5b6040805160a08101825260029290920292909201805463ffffffff8082168085526401000000008304600690810b810b900b6020860152600160581b83046001600160a01b031695850195909552600160f81b90910460ff16151560608401526001909101546001600160c01b031660808301529092508d16146110415761103e818d8c8b8b8b610e46565b90505b8060200151816040015182608001519350935093505061117f565b898b036000806110738f8f858f8f8f8f8f8f61118e565b91509150816000015163ffffffff168363ffffffff1614156110ac5781602001518260400151836080015195509550955050505061117f565b805163ffffffff848116911614156110db5780602001518160400151826080015195509550955050505061117f565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161110957fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b0316028161113b57fe5b048560400151018263ffffffff168463ffffffff1687608001518760800151036001600160c01b03168161116b57fe5b040286608001510197509750975050505050505b99509950999650505050505050565b61119661166d565b61119e61166d565b8a8761ffff1661ffff81106111af57fe5b6040805160a08101825260029290920292909201805463ffffffff81168084526401000000008204600690810b810b900b6020850152600160581b82046001600160a01b031694840194909452600160f81b900460ff1615156060830152600101546001600160c01b03166080820152925061122d908b908b6113d5565b15611267578863ffffffff16826000015163ffffffff16141561124f57610b5e565b8161125e838b8b8a8a8a610e46565b91509150610b5e565b8a8361ffff168860010161ffff168161127c57fe5b0661ffff1661ffff811061128c57fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff161515606082018190526001909201546001600160c01b031660808201529250611370576040805160a0810182528c5463ffffffff811682526401000000008104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015260018c01546001600160c01b0316608082015291505b61137f8a83600001518b6113d5565b6113b6576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b6113c38b8b8b8a87611498565b91509150995099975050505050505050565b60008363ffffffff168363ffffffff16111580156113ff57508363ffffffff168263ffffffff1611155b1561141b578163ffffffff168363ffffffff1611159050610dcb565b60008463ffffffff168463ffffffff1611611443578363ffffffff166401000000000161144b565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff161161147c578363ffffffff1664010000000001611484565b8363ffffffff165b64ffffffffff169091111595945050505050565b6114a061166d565b6114a861166d565b60008361ffff168560010161ffff16816114be57fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff871682816114eb57fe5b0661ffff81106114f757fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff161515606082018190526001909201546001600160c01b03166080820152955061157c578060010192506114d6565b898661ffff16826001018161158d57fe5b0661ffff811061159957fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff16151560608201526001909101546001600160c01b03166080820152855190945060009061161f908b908b6113d5565b905080801561163857506116388a8a87600001516113d5565b156116435750611660565b806116535760018203925061165a565b8160010193505b506114d6565b5050509550959350505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b6000606082840312156116ac578081fd5b50919050565b600080602083850312156116c4578182fd5b823567ffffffffffffffff808211156116db578384fd5b818501915085601f8301126116ee578384fd5b8135818111156116fc578485fd5b866020606083028501011115611710578485fd5b60209290920196919550909350505050565b60008060208385031215611734578182fd5b823567ffffffffffffffff8082111561174b578384fd5b818501915085601f83011261175e578384fd5b81358181111561176c578485fd5b8660208083028501011115611710578485fd5b600060208284031215611790578081fd5b81358060020b8114610dcb578182fd5b6000606082840312156117b1578081fd5b610dcb838361169b565b6000602082840312156117cc578081fd5b81356001600160801b0381168114610dcb578182fd5b6000602082840312156117f3578081fd5b813561ffff81168114610dcb578182fd5b600060208284031215611815578081fd5b5035919050565b60006020828403121561182d578081fd5b813563ffffffff81168114610dcb578182fd5b6000815180845260208085019450808401835b838110156118785781516001600160c01b031687529582019590820190600101611853565b509495945050505050565b606080825284519082018190526000906020906080840190828801845b828110156118bf57815160060b845292840192908401906001016118a0565b50505083810382850152855180825286830191830190845b818110156118fc5783516001600160a01b0316835292840192918401916001016118d7565b505084810360408601526119108187611840565b98975050505050505050565b60029190910b815260200190565b60208082526013908201527f616c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6001600160801b0391909116815260200190565b6001600160901b0391909116815260200190565b61ffff91909116815260200190565b90815260200190565b63ffffffff91909116815260200190565b63ffffffff95909516855260069390930b60208501526001600160a01b03919091166040840152151560608301526001600160c01b0316608082015260a0019056fea264697066735822122002acd38f8925afceb7b92c6e72f0d8cdee7003d69e28036bf58a85170063364c64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x74E69CEF GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDAF50F6B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDAF50F6B EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xDBFFE9AD EQ PUSH2 0x233 JUMPI DUP1 PUSH4 0xDD158C18 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0xF7FD2CFA EQ PUSH2 0x243 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x74E69CEF EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x761EB23E EQ PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x883BDBFD EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xD81740DB EQ PUSH2 0x20D JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x3EAF5D9F GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x3EAF5D9F EQ PUSH2 0x171 JUMPI DUP1 PUSH4 0x58319B4D EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x6142258A EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x65829DC5 EQ PUSH2 0x1A3 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x16ADA547 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x1A686502 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x252C09D7 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0x2986C0E5 EQ PUSH2 0x15C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x256 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x19A1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x12B PUSH2 0x264 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x1961 JUMP JUMPDEST PUSH2 0x14B PUSH2 0x146 CALLDATASIZE PUSH1 0x4 PUSH2 0x1804 JUMP JUMPDEST PUSH2 0x27C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x19B2 JUMP JUMPDEST PUSH2 0x164 PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x1989 JUMP JUMPDEST PUSH2 0x179 PUSH2 0x2EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x191C JUMP JUMPDEST PUSH2 0x18E PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x1975 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x30E JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x1B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x17A0 JUMP JUMPDEST PUSH2 0x323 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CB PUSH2 0x1C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1722 JUMP JUMPDEST PUSH2 0x451 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x1998 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x1E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x17E2 JUMP JUMPDEST PUSH2 0x515 JUMP JUMPDEST PUSH2 0x1FE PUSH2 0x1F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1722 JUMP JUMPDEST PUSH2 0x553 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1883 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x21B CALLDATASIZE PUSH1 0x4 PUSH2 0x16B2 JUMP JUMPDEST PUSH2 0x612 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x22E CALLDATASIZE PUSH1 0x4 PUSH2 0x17A0 JUMP JUMPDEST PUSH2 0x7BC JUMP JUMPDEST PUSH2 0x164 PUSH2 0x907 JUMP JUMPDEST PUSH2 0x164 PUSH2 0x91A JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x251 CALLDATASIZE PUSH1 0x4 PUSH2 0x181C JUMP JUMPDEST PUSH2 0x92D JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH1 0x1 PUSH1 0x38 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0xFFFF DUP2 LT PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 MUL ADD DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP3 AND SWAP3 POP PUSH5 0x100000000 DUP3 DIV PUSH1 0x6 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP6 JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV PUSH2 0xFFFF AND DUP2 JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH1 0x2 SIGNEXTEND DUP2 JUMP JUMPDEST PUSH3 0x1FFFF SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB AND DUP2 JUMP JUMPDEST PUSH3 0x1FFFF SLOAD PUSH1 0x1 PUSH1 0x90 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x333 PUSH2 0x251 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x181C JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH3 0x1FFFF SLOAD PUSH2 0x3A9 SWAP2 PUSH1 0x0 SWAP2 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP4 DIV DUP2 AND SWAP3 PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP4 PUSH5 0x100000000 DUP4 DIV PUSH1 0x2 SIGNEXTEND SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x38 SHL DUP6 DIV AND SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP4 AND SWAP4 PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP4 DIV DUP4 AND SWAP3 PUSH1 0x1 PUSH1 0xC8 SHL DUP3 DIV DUP4 AND SWAP3 PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x950 AND JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP4 DUP5 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SSTORE PUSH2 0x3EC PUSH1 0x40 DUP3 ADD PUSH1 0x20 DUP4 ADD PUSH2 0x177F JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND PUSH3 0xFFFFFF AND PUSH5 0x100000000 MUL PUSH7 0xFFFFFF00000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x426 PUSH1 0x60 DUP3 ADD PUSH1 0x40 DUP4 ADD PUSH2 0x17BB JUMP JUMPDEST PUSH3 0x1FFFE PUSH1 0x7 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH1 0x0 SWAP1 PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0x38 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV PUSH2 0xFFFF AND DUP5 GAS SWAP1 POP PUSH2 0x504 DUP6 DUP10 DUP10 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP PUSH3 0x1FFFF SLOAD PUSH3 0x1FFFE SLOAD SWAP2 SWAP7 SWAP6 SWAP5 POP DUP12 SWAP4 POP DUP10 SWAP3 POP DUP11 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x90 SHL SWAP1 DIV PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 DIV PUSH2 0xFFFF AND SWAP1 PUSH2 0xB6C AND JUMP JUMPDEST POP POP POP GAS SWAP1 SUB SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH2 0x532 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 DIV PUSH2 0xFFFF AND DUP4 PUSH2 0xD29 JUMP JUMPDEST PUSH3 0x1FFFE PUSH1 0x1B PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 PUSH2 0x605 PUSH3 0x1FFFE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP7 DUP7 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP PUSH3 0x1FFFE SLOAD PUSH3 0x1FFFF SLOAD SWAP2 SWAP7 SWAP6 SWAP5 POP PUSH5 0x100000000 DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP4 POP PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x38 SHL DUP4 DIV AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP2 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x90 SHL SWAP1 SWAP3 DIV DUP3 AND SWAP3 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 SWAP2 DIV AND SWAP1 PUSH2 0xB6C AND JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH3 0x1FFFF SLOAD PUSH5 0x100000000 DUP3 DIV PUSH1 0x2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x38 SHL DUP3 DIV AND SWAP2 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP4 DIV DUP2 AND SWAP3 PUSH1 0x1 PUSH1 0xC8 SHL DUP2 DIV DUP3 AND SWAP3 PUSH1 0x1 PUSH1 0xD8 SHL DUP3 DIV SWAP1 SWAP3 AND SWAP2 PUSH4 0xFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x90 SHL SWAP1 DIV AND PUSH1 0x0 JUMPDEST DUP10 DUP2 LT ISZERO PUSH2 0x713 JUMPI DUP11 DUP11 DUP3 DUP2 DUP2 LT PUSH2 0x68E JUMPI INVALID JUMPDEST PUSH2 0x6A4 SWAP3 PUSH1 0x20 PUSH1 0x60 SWAP1 SWAP3 MUL ADD SWAP1 DUP2 ADD SWAP2 POP PUSH2 0x181C JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP3 PUSH2 0x6BA PUSH1 0x0 DUP9 DUP7 DUP13 DUP13 DUP9 DUP9 DUP14 DUP14 PUSH2 0x950 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP DUP11 DUP11 DUP3 DUP2 DUP2 LT PUSH2 0x6CB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x60 MUL ADD PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x6E3 SWAP2 SWAP1 PUSH2 0x177F JUMP JUMPDEST SWAP9 POP DUP11 DUP11 DUP3 DUP2 DUP2 LT PUSH2 0x6F1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x60 MUL ADD PUSH1 0x40 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x709 SWAP2 SWAP1 PUSH2 0x17BB JUMP JUMPDEST SWAP8 POP PUSH1 0x1 ADD PUSH2 0x67A JUMP JUMPDEST POP POP PUSH3 0x1FFFE DUP1 SLOAD PUSH7 0xFFFFFF00000000 NOT AND PUSH5 0x100000000 PUSH3 0xFFFFFF PUSH1 0x2 SWAP11 SWAP1 SWAP11 SIGNEXTEND SWAP10 SWAP1 SWAP10 AND SWAP9 SWAP1 SWAP9 MUL SWAP8 SWAP1 SWAP8 OR PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000 NOT AND PUSH1 0x1 PUSH1 0x38 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 MUL SWAP6 SWAP1 SWAP6 OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL PUSH2 0xFFFF SWAP6 DUP7 AND MUL OR PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL SWAP4 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 OR PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND OR SWAP1 SWAP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 DIV PUSH2 0xFFFF AND ISZERO PUSH2 0x7F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7E9 SWAP1 PUSH2 0x192A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7FF PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x181C JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x82B PUSH1 0x40 DUP3 ADD PUSH1 0x20 DUP4 ADD PUSH2 0x177F JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND PUSH3 0xFFFFFF AND PUSH5 0x100000000 MUL PUSH7 0xFFFFFF00000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x865 PUSH1 0x60 DUP3 ADD PUSH1 0x40 DUP4 ADD PUSH2 0x17BB JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x38 SHL MUL PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x8B7 PUSH2 0x8AF PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x181C JUMP JUMPDEST PUSH1 0x0 SWAP1 PUSH2 0xDD2 JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH32 0xFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xD8 SHL PUSH2 0xFFFF SWAP4 DUP5 AND MUL OR PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 DIV PUSH2 0xFFFF AND DUP2 JUMP JUMPDEST PUSH3 0x1FFFE SLOAD PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 DIV PUSH2 0xFFFF AND DUP2 JUMP JUMPDEST PUSH3 0x1FFFE DUP1 SLOAD PUSH4 0xFFFFFFFF NOT DUP2 AND PUSH4 0xFFFFFFFF SWAP2 DUP3 AND SWAP4 SWAP1 SWAP4 ADD AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP12 DUP12 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x966 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP6 MSTORE PUSH5 0x100000000 DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP12 AND EQ ISZERO PUSH2 0x9F1 JUMPI DUP11 DUP6 SWAP3 POP SWAP3 POP POP PUSH2 0xB5E JUMP JUMPDEST DUP5 PUSH2 0xFFFF AND DUP5 PUSH2 0xFFFF AND GT DUP1 ISZERO PUSH2 0xA12 JUMPI POP PUSH1 0x1 DUP6 SUB PUSH2 0xFFFF AND DUP12 PUSH2 0xFFFF AND EQ JUMPDEST ISZERO PUSH2 0xA1F JUMPI DUP4 SWAP2 POP PUSH2 0xA23 JUMP JUMPDEST DUP5 SWAP2 POP JUMPDEST DUP2 PUSH2 0xFFFF AND DUP12 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0xA37 JUMPI INVALID JUMPDEST MOD SWAP3 POP PUSH2 0xA48 DUP2 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0xE46 JUMP JUMPDEST DUP13 DUP5 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0xA59 JUMPI INVALID JUMPDEST DUP3 MLOAD PUSH1 0x2 SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH4 0xFFFFFFFF NOT SWAP1 SWAP4 AND PUSH4 0xFFFFFFFF SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR PUSH11 0xFFFFFFFFFFFFFF00000000 NOT AND PUSH5 0x100000000 PUSH7 0xFFFFFFFFFFFFFF PUSH1 0x6 SWAP4 SWAP1 SWAP4 SIGNEXTEND SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL OR PUSH32 0xFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x58 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP3 OR PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xF8 SHL SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR DUP2 SSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMPDEST SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 PUSH1 0x0 DUP5 PUSH2 0xFFFF AND GT PUSH2 0xBAE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xBC6 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 0xBF0 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xC0B 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 0xC35 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP10 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xC50 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 0xC7A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0xD19 JUMPI PUSH2 0xCAD DUP14 DUP14 DUP14 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC9A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 PUSH2 0xF90 JUMP JUMPDEST DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCB9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xCCC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0xCDF JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x20 SWAP5 DUP6 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP1 MSTORE PUSH1 0x6 SWAP2 DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND SWAP1 MSTORE PUSH1 0x1 ADD PUSH2 0xC80 JUMP JUMPDEST POP SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0xFFFF AND GT PUSH2 0xD67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND GT PUSH2 0xD7D JUMPI POP DUP2 PUSH2 0xDCB JUMP JUMPDEST DUP3 JUMPDEST DUP3 PUSH2 0xFFFF AND DUP2 PUSH2 0xFFFF AND LT ISZERO PUSH2 0xDC6 JUMPI PUSH1 0x1 DUP6 DUP3 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0xDA2 JUMPI INVALID JUMPDEST PUSH1 0x2 MUL ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 ADD PUSH2 0xD7F JUMP JUMPDEST POP DUP2 SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE SWAP3 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP4 SLOAD PUSH4 0xFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xF8 SHL OR DUP3 SSTORE SWAP1 DUP2 ADD DUP1 SLOAD PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE SWAP1 DUP2 SWAP1 JUMP JUMPDEST PUSH2 0xE4E PUSH2 0x166D JUMP JUMPDEST DUP7 MLOAD DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH2 0xE67 JUMPI PUSH1 0x1 PUSH2 0xE69 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP PUSH1 0x0 PUSH4 0xFFFFFFFF TIMESTAMP GT PUSH2 0xEB4 JUMPI TIMESTAMP DUP5 PUSH4 0xFFFFFFFF AND LT PUSH2 0xE8B JUMPI DUP2 PUSH2 0xEAF JUMP JUMPDEST DUP9 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0xEAC JUMPI DUP9 MLOAD DUP5 SUB PUSH2 0xEAF JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH2 0xEB7 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP10 PUSH1 0x2 SIGNEXTEND MUL DUP12 PUSH1 0x20 ADD MLOAD ADD PUSH1 0x6 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x80 DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH2 0xF18 JUMPI INVALID JUMPDEST DIV DUP12 PUSH1 0x40 ADD MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0x10 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND SWAP1 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 PUSH2 0xF6F JUMPI INVALID JUMPDEST DIV DUP12 PUSH1 0x80 ADD MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 MSTORE POP SWAP3 POP POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH4 0xFFFFFFFF DUP11 AND PUSH2 0x105C JUMPI PUSH1 0x0 DUP13 DUP10 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0xFB2 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP6 MSTORE PUSH5 0x100000000 DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP14 AND EQ PUSH2 0x1041 JUMPI PUSH2 0x103E DUP2 DUP14 DUP13 DUP12 DUP12 DUP12 PUSH2 0xE46 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD SWAP4 POP SWAP4 POP SWAP4 POP POP PUSH2 0x117F JUMP JUMPDEST DUP10 DUP12 SUB PUSH1 0x0 DUP1 PUSH2 0x1073 DUP16 DUP16 DUP6 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 PUSH2 0x118E JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x10AC JUMPI DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD DUP4 PUSH1 0x80 ADD MLOAD SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x117F JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x10DB JUMPI DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x117F JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD SWAP1 DUP5 ADD MLOAD SWAP2 DUP4 SWAP1 SUB SWAP3 DUP7 SUB SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP5 AND SWAP3 SWAP1 DUP6 AND SWAP2 SUB PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0x1109 JUMPI INVALID JUMPDEST SDIV MUL DUP5 PUSH1 0x20 ADD MLOAD ADD DUP3 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL DUP2 PUSH2 0x113B JUMPI INVALID JUMPDEST DIV DUP6 PUSH1 0x40 ADD MLOAD ADD DUP3 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND DUP8 PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x80 ADD MLOAD SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP2 PUSH2 0x116B JUMPI INVALID JUMPDEST DIV MUL DUP7 PUSH1 0x80 ADD MLOAD ADD SWAP8 POP SWAP8 POP SWAP8 POP POP POP POP POP POP JUMPDEST SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1196 PUSH2 0x166D JUMP JUMPDEST PUSH2 0x119E PUSH2 0x166D JUMP JUMPDEST DUP11 DUP8 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x11AF JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP1 DUP5 MSTORE PUSH5 0x100000000 DUP3 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP3 POP PUSH2 0x122D SWAP1 DUP12 SWAP1 DUP12 PUSH2 0x13D5 JUMP JUMPDEST ISZERO PUSH2 0x1267 JUMPI DUP9 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x124F JUMPI PUSH2 0xB5E JUMP JUMPDEST DUP2 PUSH2 0x125E DUP4 DUP12 DUP12 DUP11 DUP11 DUP11 PUSH2 0xE46 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xB5E JUMP JUMPDEST DUP11 DUP4 PUSH2 0xFFFF AND DUP9 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x127C JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x128C JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP3 POP PUSH2 0x1370 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE DUP13 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP3 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x1 DUP13 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP2 POP JUMPDEST PUSH2 0x137F DUP11 DUP4 PUSH1 0x0 ADD MLOAD DUP12 PUSH2 0x13D5 JUMP JUMPDEST PUSH2 0x13B6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x13D311 PUSH1 0xEA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13C3 DUP12 DUP12 DUP12 DUP11 DUP8 PUSH2 0x1498 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO DUP1 ISZERO PUSH2 0x13FF JUMPI POP DUP4 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND GT ISZERO JUMPDEST ISZERO PUSH2 0x141B JUMPI DUP2 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO SWAP1 POP PUSH2 0xDCB JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x1443 JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH5 0x100000000 ADD PUSH2 0x144B JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP6 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x147C JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH5 0x100000000 ADD PUSH2 0x1484 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 SWAP2 GT ISZERO SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x14A0 PUSH2 0x166D JUMP JUMPDEST PUSH2 0x14A8 PUSH2 0x166D JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH2 0xFFFF AND DUP6 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x14BE JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP6 PUSH2 0xFFFF AND DUP4 ADD SUB SWAP1 POP PUSH1 0x0 JUMPDEST POP PUSH1 0x2 DUP2 DUP4 ADD DIV DUP10 PUSH2 0xFFFF DUP8 AND DUP3 DUP2 PUSH2 0x14EB JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x14F7 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE SWAP6 POP PUSH2 0x157C JUMPI DUP1 PUSH1 0x1 ADD SWAP3 POP PUSH2 0x14D6 JUMP JUMPDEST DUP10 DUP7 PUSH2 0xFFFF AND DUP3 PUSH1 0x1 ADD DUP2 PUSH2 0x158D JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x1599 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE DUP6 MLOAD SWAP1 SWAP5 POP PUSH1 0x0 SWAP1 PUSH2 0x161F SWAP1 DUP12 SWAP1 DUP12 PUSH2 0x13D5 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x1638 JUMPI POP PUSH2 0x1638 DUP11 DUP11 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x13D5 JUMP JUMPDEST ISZERO PUSH2 0x1643 JUMPI POP PUSH2 0x1660 JUMP JUMPDEST DUP1 PUSH2 0x1653 JUMPI PUSH1 0x1 DUP3 SUB SWAP3 POP PUSH2 0x165A JUMP JUMPDEST DUP2 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP PUSH2 0x14D6 JUMP JUMPDEST POP POP POP SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16AC JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x16C4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x16DB JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x16EE JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x16FC JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 PUSH1 0x60 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x1710 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 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1734 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x174B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x175E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x176C JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x1710 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1790 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0xDCB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17B1 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xDCB DUP4 DUP4 PUSH2 0x169B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17CC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xDCB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17F3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xDCB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1815 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x182D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xDCB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1878 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1853 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MSTORE DUP5 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x80 DUP5 ADD SWAP1 DUP3 DUP9 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x18BF JUMPI DUP2 MLOAD PUSH1 0x6 SIGNEXTEND DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x18A0 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP6 MLOAD DUP1 DUP3 MSTORE DUP7 DUP4 ADD SWAP2 DUP4 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x18FC JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x18D7 JUMP JUMPDEST POP POP DUP5 DUP2 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x1910 DUP2 DUP8 PUSH2 0x1840 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x616C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0xFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP6 SWAP1 SWAP6 AND DUP6 MSTORE PUSH1 0x6 SWAP4 SWAP1 SWAP4 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x40 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MUL 0xAC 0xD3 DUP16 DUP10 0x25 0xAF 0xCE 0xB7 0xB9 0x2C PUSH15 0x72F0D8CDEE7003D69E28036BF58A85 OR STOP PUSH4 0x364C6473 PUSH16 0x6C634300070600330000000000000000 ","sourceMap":"125:4076:41:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;257:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;306:24;;;:::i;:::-;;;;;;;:::i;203:45::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;337:19::-;;;:::i;:::-;;;;;;;:::i;282:17::-;;;:::i;:::-;;;;;;;:::i;431:33::-;;;:::i;:::-;;;;;;;:::i;471:38::-;;;:::i;1197:448::-;;;;;;:::i;:::-;;:::i;:::-;;3582:616;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2812:137::-;;;;;;:::i;:::-;;:::i;2957:617::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;1653:1151::-;;;;;;:::i;:::-;;:::i;629:307::-;;;;;;:::i;:::-;;:::i;363:25::-;;;:::i;395:29::-;;;:::i;944:68::-;;;;;;:::i;:::-;;:::i;257:18::-;;;;;;:::o;306:24::-;;;-1:-1:-1;;;306:24:41;;-1:-1:-1;;;;;306:24:41;;:::o;203:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;203:45:41;;;;;;-1:-1:-1;;;203:45:41;;-1:-1:-1;;;;;203:45:41;;-1:-1:-1;;;203:45:41;;;;;;-1:-1:-1;;;;;203:45:41;;:::o;337:19::-;;;-1:-1:-1;;;337:19:41;;;;;:::o;282:17::-;;;;;;;;;:::o;431:33::-;;;-1:-1:-1;;;;;431:33:41;;:::o;471:38::-;;;-1:-1:-1;;;471:38:41;;;;;:::o;1197:448::-;1263:33;1275:20;;;;:6;:20;:::i;1263:33::-;1363:5;;1445:18;;1330:239;;1383:4;;1363:5;-1:-1:-1;;;1363:5:41;;;;;1383:4;;;;;1402;;;;;;-1:-1:-1;;;;;;;;1421:9:41;;;;-1:-1:-1;;;;;1445:18:41;;;-1:-1:-1;;;1478:24:41;;;;;;-1:-1:-1;;;1517:11:41;;;;;-1:-1:-1;;;1543:15:41;;;;;;;1330:18;:239;:::i;:::-;1308:5;1307:262;;-1:-1:-1;;;;1307:262:41;-1:-1:-1;;;;1307:262:41;;;;;-1:-1:-1;;;;1307:262:41;-1:-1:-1;;;1307:262:41;;;;;;;;;;;1587:11;;;;;;;;:::i;:::-;1580:4;:18;;;;;;;;;;;-1:-1:-1;;1580:18:41;;;;;;;;;1621:16;;;;;;;;:::i;:::-;1609:9;:28;;-1:-1:-1;;;;;1609:28:41;;;;-1:-1:-1;;;1609:28:41;-1:-1:-1;;1609:28:41;;;;;;;;;-1:-1:-1;1197:448:41:o;3582:616::-;3781:4;;3681:7;;3781:4;;;;3800;;;;;;-1:-1:-1;;;3819:9:41;;-1:-1:-1;;;;;3819:9:41;;-1:-1:-1;;;3843:5:41;;;;3681:7;3890:9;3870:29;;3910:241;3945:5;3965:11;;3910:241;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4057:18:41;;4129:11;;3910:241;;;;-1:-1:-1;3991:5:41;;-1:-1:-1;4011:6:41;;-1:-1:-1;4032:10:41;;-1:-1:-1;;;;;4057:18:41;;;-1:-1:-1;;;4090:24:41;;;;;;;-1:-1:-1;;;4129:11:41;;;;;3910:20;:241;:::i;:::-;;;;4181:9;4169:21;;;3582:616;-1:-1:-1;;;;;;;3582:616:41:o;2812:137::-;2907:15;;2889:52;;:12;;-1:-1:-1;;;2907:15:41;;;;2924:16;2889:17;:52::i;:::-;2871:15;;:70;;;;;;;;;;;;;;;;;;2812:137;:::o;2957:617::-;3085:30;3130:51;3196:49;3293:273;3332:4;;;;;;;;;;;3355:11;;3293:273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3385:4:41;;3460:18;;3293:273;;;;-1:-1:-1;3385:4:41;;;;;;-1:-1:-1;3408:5:41;-1:-1:-1;;;3408:5:41;;;;;-1:-1:-1;;;;;;;;;3432:9:41;;;;-1:-1:-1;;;;;3460:18:41;;;3497:24;-1:-1:-1;;;3497:24:41;;;;;;-1:-1:-1;;;3540:11:41;;;;;3293:20;:273;:::i;:::-;3273:293;;;;;;2957:617;;;;;:::o;1653:1151::-;1769:4;;2013:18;;1769:4;;;;;;-1:-1:-1;;;;;;;;1805:9:41;;;;1841:5;-1:-1:-1;;;1841:5:41;;;;;-1:-1:-1;;;1879:11:41;;;;;-1:-1:-1;;;1927:15:41;;;;;;1968:4;;;;;-1:-1:-1;;;;;2013:18:41;;;-1:-1:-1;;;2077:24:41;;;1755:11;2114:510;2134:17;;;2114:510;;;2182:6;;2189:1;2182:9;;;;;;;:23;;;:9;;;;;:23;;;;-1:-1:-1;2182:23:41;:::i;:::-;2173:32;;;;2245:283;:12;2282:6;2173:32;2331:5;2355:10;2384:19;2422:25;2466:12;2497:16;2245:18;:283::i;:::-;2220:308;;-1:-1:-1;2220:308:41;-1:-1:-1;2551:6:41;;2558:1;2551:9;;;;;;;;;;;;:14;;;;;;;;;;:::i;:::-;2543:22;;2593:6;;2600:1;2593:9;;;;;;;;;;;;:19;;;;;;;;;;:::i;:::-;2580:32;-1:-1:-1;2153:3:41;;2114:510;;;-1:-1:-1;;2666:4:41;:12;;-1:-1:-1;;2666:12:41;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2689:22:41;-1:-1:-1;;;;;;;;2689:22:41;;;;;;;;;;;;-1:-1:-1;;;;2722:14:41;-1:-1:-1;;;;2722:14:41;;;;;-1:-1:-1;;;;2747:26:41;-1:-1:-1;;;2747:26:41;;;;;;;;;;;;-1:-1:-1;;2784:12:41;-1:-1:-1;2784:12:41;;;;;;;;-1:-1:-1;;;;1653:1151:41:o;629:307::-;711:11;;-1:-1:-1;;;711:11:41;;;;:16;703:48;;;;-1:-1:-1;;;703:48:41;;;;;;;:::i;:::-;;;;;;;;;769:11;;;;:6;:11;:::i;:::-;762:4;:18;;-1:-1:-1;;762:18:41;;;;;;;;;;;;798:11;;;;;;;;:::i;:::-;791:4;:18;;;;;;;;;;;-1:-1:-1;;791:18:41;;;;;;;;;832:16;;;;;;;;:::i;:::-;820:9;:28;;-1:-1:-1;;;;;820:28:41;;;;-1:-1:-1;;;820:28:41;-1:-1:-1;;820:28:41;;;;;;;;;892:36;916:11;;;;;;:::i;:::-;892:12;;:23;:36::i;:::-;860:11;859:69;;;;-1:-1:-1;;;859:69:41;;;;;;-1:-1:-1;;;;859:69:41;-1:-1:-1;;;859:69:41;;;;;;;;;;;-1:-1:-1;629:307:41:o;363:25::-;;;-1:-1:-1;;;363:25:41;;;;;:::o;395:29::-;;;-1:-1:-1;;;395:29:41;;;;;:::o;944:68::-;994:4;:10;;-1:-1:-1;;994:10:41;;;;;;;;;;;;;;;;;944:68::o;6414:1139:21:-;6741:19;6762:25;6800:23;6826:4;6831:5;6826:11;;;;;;;;;6800:37;;;;;;;;6826:11;;;;;;;;;6800:37;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6800:37:21;;-1:-1:-1;;;;;6800:37:21;;;;;;;;-1:-1:-1;;;6800:37:21;;;;;;;;;;;-1:-1:-1;6800:37:21;;;;-1:-1:-1;;;;;6800:37:21;;;;;;;-1:-1:-1;6930:37:21;;;6926:70;;;6977:5;6984:11;6969:27;;;;;;;6926:70;7100:11;7082:29;;:15;:29;;;:59;;;;;7139:1;7125:11;:15;7115:26;;:5;:26;;;7082:59;7078:193;;;7179:15;7158:36;;7078:193;;;7248:11;7227:32;;7078:193;7312:18;7298:32;;7299:5;7307:1;7299:9;7298:32;;;;;;;;7283:47;;7362:183;7386:4;7405:14;7434:4;7453:9;7477:18;7510:24;7362:9;:183::i;:::-;7341:4;7346:12;7341:18;;;;;;;;;:204;;:18;;;;;;;;;:204;;;;;;;;;;;;;;-1:-1:-1;;7341:204:21;;;-1:-1:-1;7341:204:21;;;;;;;-1:-1:-1;;7341:204:21;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;7341:204:21;;;;;;;;;;;;;-1:-1:-1;;;7341:204:21;;;;;;;;;;;;;;;;;;-1:-1:-1;7341:204:21;;;;;-1:-1:-1;;7341:204:21;-1:-1:-1;;;;;7341:204:21;;;;;;;;;-1:-1:-1;6414:1139:21;;;;;;;;;;;;;:::o;20288:1360::-;20658:30;20703:51;20769:49;20868:1;20854:11;:15;;;20846:29;;;;;-1:-1:-1;;;20846:29:21;;;;;;;;;;;;-1:-1:-1;;;20846:29:21;;;;;;;;;;;;;;;20918:11;:18;20906:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20906:31:21;;20888:49;;20999:11;:18;20985:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20985:33:21;;20948:70;;21078:11;:18;21064:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21064:33:21;;21029:68;;21113:9;21108:533;21132:11;:18;21128:1;:22;21108:533;;;21337:292;21369:4;21392;21415:11;21427:1;21415:14;;;;;;;;;;;;;;21448:4;21471:5;21495:9;21523:18;21560:24;21603:11;21337:13;:292::i;:::-;21191:15;21207:1;21191:18;;;;;;;;;;;;;21228:34;21263:1;21228:37;;;;;;;;;;;;;21284:32;21317:1;21284:35;;;;;;;;-1:-1:-1;;;;;21172:457:21;;;;21284:35;;;;;;;;;;;21172:457;;;;-1:-1:-1;;;;;21172:457:21;;;;;;;;;;;;;;;-1:-1:-1;21152:3:21;21108:533;;;;20288:1360;;;;;;;;;;;;;:::o;7939:561::-;8067:6;8104:1;8094:7;:11;;;8086:25;;;;;-1:-1:-1;;;8086:25:21;;;;;;;;;;;;-1:-1:-1;;;8086:25:21;;;;;;;;;;;;;;;8219:7;8211:15;;:4;:15;;;8207:35;;-1:-1:-1;8235:7:21;8228:14;;8207:35;8420:7;8404:66;8433:4;8429:8;;:1;:8;;;8404:66;;;8469:1;8444:4;8449:1;8444:7;;;;;;;;;;;;:26;;-1:-1:-1;;8444:26:21;;;;;;;;;;;;-1:-1:-1;8439:3:21;8404:66;;;;8488:4;8481:11;;7939:561;;;;;;:::o;4616:429::-;4790:223;;;;;;;;;;;;;;;-1:-1:-1;4790:223:21;;;;;;;;;;;;4948:4;4790:223;;;;;;;;;;;;;;4780:233;;-1:-1:-1;;4780:233:21;;;;;;;-1:-1:-1;;;4780:233:21;;;;;;;;-1:-1:-1;;4780:233:21;;;4948:4;;;4616:429::o;2208:1950::-;2450:18;;:::i;:::-;2513:19;;2496:36;;-1:-1:-1;;;;;2555:13:21;;:29;;2583:1;2555:29;;;2571:9;2555:29;2543:41;-1:-1:-1;3204:31:21;3256:16;3238:15;:34;:280;;3332:15;3305:24;:42;;;:213;;3513:5;3305:213;;;3391:4;:19;;;3363:47;;:24;:47;;;;:134;;3478:19;;3451:46;;3363:134;;;3430:1;3363:134;3238:280;;;3288:1;3238:280;3549:601;;;;;;;;;;;;;;;3645:19;;;;3667;;;:11;;;;:19;3645:41;;;3549:601;;;;;;3204:314;;-1:-1:-1;3549:601:21;;-1:-1:-1;;;;;3825:35:21;;-1:-1:-1;3826:21:21;;;;;3825:35;;;;;3740:60;;;;;3825:35;;;;3740:121;;;-1:-1:-1;;;;;3549:601:21;;;-1:-1:-1;3549:601:21;;;;;-1:-1:-1;;;;;4032:101:21;;-1:-1:-1;;;;;4033:87:21;;;4065:2;4034:33;;;;;4033:87;4032:101;;;;;;;3949:4;:58;;;:185;-1:-1:-1;;;;;3549:601:21;;;;3529:621;;;;2208:1950;;;;;;;;:::o;15841:3314::-;16207:20;;;16369:15;;;16365:573;;16401:23;16427:4;16432:5;16427:11;;;;;;;;;16401:37;;;;;;;;16427:11;;;;;;;;;16401:37;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16401:37:21;;-1:-1:-1;;;;;16401:37:21;;;;;;;;-1:-1:-1;;;16401:37:21;;;;;;;;;;;-1:-1:-1;16401:37:21;;;;-1:-1:-1;;;;;16401:37:21;;;;;;;-1:-1:-1;16457:27:21;;;16453:286;;16510:229;16542:4;16569;16596;16623:9;16655:18;16696:24;16510:9;:229::i;:::-;16503:236;;16453:286;16780:4;:19;;;16818:4;:38;;;16875:4;:36;;;16754:172;;;;;;;;;16365:573;16966:17;;;16950:13;;17097:297;17142:4;16966;:17;17213:4;17236:5;17260:9;17288:18;17325:24;17368:11;17097:26;:297::i;:::-;16996:398;;;;17421:10;:25;;;17411:35;;:6;:35;;;17407:1741;;;17532:10;:25;;;17576:10;:44;;;17639:10;:42;;;17506:190;;;;;;;;;;;17407:1741;17728:24;;17718:34;;;;;;;17714:1434;;;17839:9;:24;;;17882:9;:43;;;17944:9;:41;;;17813:187;;;;;;;;;;;17714:1434;18143:25;;18099:24;;18357:25;;;;;18330:24;;;;18099:69;;;;;18204:34;;;18328:139;;;;;18329:102;;;;18330:52;18329:102;;;;;;;;18328:139;18279:10;:25;;;:188;18795:20;18588:227;;18780:11;18589:202;;18706:10;:44;;;18627:9;:43;;;:123;-1:-1:-1;;;;;18589:188:21;:202;18588:227;;;;;;18486:10;:44;;;:352;19110:11;18923:198;;19065:20;18924:161;;18994:10;:42;;;18925:9;:41;;;:111;-1:-1:-1;;;;;18924:161:21;;;;;;;18923:198;18857:10;:42;;;:264;18253:883;;;;;;;;;;;15841:3314;;;;;;;;;;;;;;:::o;12611:1848::-;12971:29;;:::i;:::-;13002:28;;:::i;:::-;13125:4;13130:5;13125:11;;;;;;;;;13112:24;;;;;;;;13125:11;;;;;;;;;13112:24;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13112:24:21;;-1:-1:-1;;;;;13112:24:21;;;;;;;;-1:-1:-1;;;13112:24:21;;;;;;;;;;-1:-1:-1;13112:24:21;;-1:-1:-1;;;;;13112:24:21;;;;;;-1:-1:-1;13254:44:21;;13258:4;;13291:6;13254:3;:44::i;:::-;13250:731;;;13348:6;13319:35;;:10;:25;;;:35;;;13315:655;;;13484:30;;13315:655;13637:10;13670:265;13706:10;13743:6;13776:4;13807:9;13843:18;13888:24;13670:9;:265::i;:::-;13607:347;;;;;;13315:655;14060:4;14079:11;14065:25;;14066:5;14074:1;14066:9;14065:25;;;;;;;;14060:31;;;;;;;;;14047:44;;;;;;;;14060:31;;;;;;;;;14047:44;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14047:44:21;;-1:-1:-1;;;;;14047:44:21;;;;;;;;-1:-1:-1;;;14047:44:21;;;;;;;;;;;;;-1:-1:-1;14047:44:21;;;;-1:-1:-1;;;;;14047:44:21;;;;;;-1:-1:-1;14102:49:21;;14131:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14131:20:21;;-1:-1:-1;;;;;14131:20:21;;;;;;;;-1:-1:-1;;;14131:20:21;;;;;;;;;;;-1:-1:-1;14131:20:21;;;-1:-1:-1;;;;;14131:20:21;;;;;;-1:-1:-1;14102:49:21;14261:44;14265:4;14271:10;:25;;;14298:6;14261:3;:44::i;:::-;14253:60;;;;;-1:-1:-1;;;14253:60:21;;;;;;;;;;;;-1:-1:-1;;;14253:60:21;;;;;;;;;;;;;;;14399:52;14412:4;14418;14424:6;14432:5;14439:11;14399:12;:52::i;:::-;14392:59;;;;12611:1848;;;;;;;;;;;;:::o;8942:353::-;9010:4;9097;9092:9;;:1;:9;;;;:22;;;;;9110:4;9105:9;;:1;:9;;;;9092:22;9088:41;;;9128:1;9123:6;;:1;:6;;;;9116:13;;;;9088:41;9142:17;9166:4;9162:8;;:1;:8;;;:26;;9177:1;:11;;9181:7;9177:11;9162:26;;;9173:1;9162:26;;;9142:46;;;;9199:17;9223:4;9219:8;;:1;:8;;;:26;;9234:1;:11;;9238:7;9234:11;9219:26;;;9230:1;9219:26;;;9199:46;;9265:22;;;;;8942:353;-1:-1:-1;;;;;8942:353:21:o;10263:1144::-;10481:29;;:::i;:::-;10512:28;;:::i;:::-;10558:9;10584:11;10570:25;;10571:5;10579:1;10571:9;10570:25;;;;;;;;10558:37;;;;10628:9;10658:1;10644:11;10640:15;;:1;:15;:19;10628:31;;10692:9;10712:688;-1:-1:-1;10754:1:21;10745:5;;;10744:11;10785:4;10790:15;;;10744:11;10790:15;;;;;;10785:21;;;;;;;10772:34;;;;;;;;10785:21;;;;;;;;;10772:34;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10772:34:21;;-1:-1:-1;;;;;10772:34:21;;;;;;;;-1:-1:-1;;;10772:34:21;;;;;;;;;;;;;-1:-1:-1;10772:34:21;;;;-1:-1:-1;;;;;10772:34:21;;;;;;-1:-1:-1;10916:100:21;;10968:1;10972;10968:5;10964:9;;10992:8;;10916:100;11044:4;11059:11;11049:21;;11050:1;11054;11050:5;11049:21;;;;;;11044:27;;;;;;;11032:39;;;;;;;;11044:27;;;;;;;;;11032:39;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11032:39:21;;-1:-1:-1;;;;;11032:39:21;;;;;;;;-1:-1:-1;;;11032:39:21;;;;;;;;;;;-1:-1:-1;11032:39:21;;;;-1:-1:-1;;;;;11032:39:21;;;;;11121:25;;11032:39;;-1:-1:-1;;;11111:44:21;;11115:4;;11148:6;11111:3;:44::i;:::-;11088:67;;11225:15;:62;;;;;11244:43;11248:4;11254:6;11262:9;:24;;;11244:3;:43::i;:::-;11221:90;;;11306:5;;;11221:90;11333:15;11328:60;;11358:1;11354;:5;11350:9;;11328:60;;;11383:1;11387;11383:5;11379:9;;11328:60;10712:688;;;;10263:1144;;;;;;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:175:178:-;;131:2;122:6;117:3;113:16;109:25;106:2;;;151:5;144;137:20;106:2;-1:-1:-1;177:6:178;96:93;-1:-1:-1;96:93:178:o;194:700::-;;;373:2;361:9;352:7;348:23;344:32;341:2;;;394:6;386;379:22;341:2;439:9;426:23;468:18;509:2;501:6;498:14;495:2;;;530:6;522;515:22;495:2;573:6;562:9;558:22;548:32;;618:7;611:4;607:2;603:13;599:27;589:2;;645:6;637;630:22;589:2;690;677:16;716:2;708:6;705:14;702:2;;;737:6;729;722:22;702:2;798:7;793:2;785:4;777:6;773:17;769:2;765:26;761:35;758:48;755:2;;;824:6;816;809:22;755:2;860;852:11;;;;;882:6;;-1:-1:-1;331:563:178;;-1:-1:-1;;;;331:563:178:o;899:665::-;;;1045:2;1033:9;1024:7;1020:23;1016:32;1013:2;;;1066:6;1058;1051:22;1013:2;1111:9;1098:23;1140:18;1181:2;1173:6;1170:14;1167:2;;;1202:6;1194;1187:22;1167:2;1245:6;1234:9;1230:22;1220:32;;1290:7;1283:4;1279:2;1275:13;1271:27;1261:2;;1317:6;1309;1302:22;1261:2;1362;1349:16;1388:2;1380:6;1377:14;1374:2;;;1409:6;1401;1394:22;1374:2;1468:7;1463:2;1457;1449:6;1445:15;1441:2;1437:24;1433:33;1430:46;1427:2;;;1494:6;1486;1479:22;1569:293;;1679:2;1667:9;1658:7;1654:23;1650:32;1647:2;;;1700:6;1692;1685:22;1647:2;1744:9;1731:23;1797:5;1794:1;1783:20;1776:5;1773:31;1763:2;;1823:6;1815;1808:22;1867:269;;2015:2;2003:9;1994:7;1990:23;1986:32;1983:2;;;2036:6;2028;2021:22;1983:2;2064:66;2122:7;2111:9;2064:66;:::i;2411:321::-;;2523:2;2511:9;2502:7;2498:23;2494:32;2491:2;;;2544:6;2536;2529:22;2491:2;2575:23;;-1:-1:-1;;;;;2627:46:178;;2617:57;;2607:2;;2693:6;2685;2678:22;2737:292;;2848:2;2836:9;2827:7;2823:23;2819:32;2816:2;;;2869:6;2861;2854:22;2816:2;2913:9;2900:23;2963:6;2956:5;2952:18;2945:5;2942:29;2932:2;;2990:6;2982;2975:22;3034:190;;3146:2;3134:9;3125:7;3121:23;3117:32;3114:2;;;3167:6;3159;3152:22;3114:2;-1:-1:-1;3195:23:178;;3104:120;-1:-1:-1;3104:120:178:o;3229:296::-;;3340:2;3328:9;3319:7;3315:23;3311:32;3308:2;;;3361:6;3353;3346:22;3308:2;3405:9;3392:23;3455:10;3448:5;3444:22;3437:5;3434:33;3424:2;;3486:6;3478;3471:22;3530:500;;3627:5;3621:12;3654:6;3649:3;3642:19;3680:4;3709:2;3704:3;3700:12;3693:19;;3746:2;3739:5;3735:14;3767:3;3779:226;3793:6;3790:1;3787:13;3779:226;;;3858:13;;-1:-1:-1;;;;;3854:70:178;3842:83;;3945:12;;;;3980:15;;;;-1:-1:-1;3808:9:178;3779:226;;;-1:-1:-1;4021:3:178;;3597:433;-1:-1:-1;;;;;3597:433:178:o;4035:1399::-;4377:2;4389:21;;;4459:13;;4362:18;;;4481:22;;;4035:1399;;4557:4;;4534:3;4519:19;;;4584:15;;;4035:1399;4630:184;4644:6;4641:1;4638:13;4630:184;;;4719:13;;4716:1;4705:28;4693:41;;4754:12;;;;4789:15;;;;4666:1;4659:9;4630:184;;;-1:-1:-1;;;4850:19:178;;;4830:18;;;4823:47;4920:13;;4942:21;;;5018:15;;;;4981:12;;;5053:4;5066:238;5082:8;5077:3;5074:17;5066:238;;;5155:15;;-1:-1:-1;;;;;5151:64:178;5137:79;;5277:17;;;;5238:14;;;;-1:-1:-1;5101:11:178;5066:238;;;5070:3;;5351:9;5344:5;5340:21;5335:2;5324:9;5320:18;5313:49;5379;5422:5;5414:6;5379:49;:::i;:::-;5371:57;4338:1096;-1:-1:-1;;;;;;;;4338:1096:178:o;5439:188::-;5610:1;5599:21;;;;5581:40;;5569:2;5554:18;;5536:91::o;5632:343::-;5834:2;5816:21;;;5873:2;5853:18;;;5846:30;5912:21;5907:2;5892:18;;5885:49;5966:2;5951:18;;5806:169::o;5980:218::-;-1:-1:-1;;;;;6144:47:178;;;;6126:66;;6114:2;6099:18;;6081:117::o;6203:222::-;-1:-1:-1;;;;;6367:51:178;;;;6349:70;;6337:2;6322:18;;6304:121::o;6430:188::-;6604:6;6592:19;;;;6574:38;;6562:2;6547:18;;6529:89::o;6623:177::-;6769:25;;;6757:2;6742:18;;6724:76::o;6805:192::-;6979:10;6967:23;;;;6949:42;;6937:2;6922:18;;6904:93::o;7002:605::-;7279:10;7267:23;;;;7249:42;;7338:1;7327:21;;;;7322:2;7307:18;;7300:49;-1:-1:-1;;;;;7385:55:178;;;;7380:2;7365:18;;7358:83;7484:14;7477:22;7472:2;7457:18;;7450:50;-1:-1:-1;;;;;7537:63:178;7531:3;7516:19;;7509:92;-1:-1:-1;7221:19:178;;7203:404::o"},"methodIdentifiers":{"advanceTime(uint32)":"f7fd2cfa","batchUpdate((uint32,int24,uint128)[])":"d81740db","cardinality()":"dbffe9ad","cardinalityNext()":"dd158c18","getGasCostOfObserve(uint32[])":"74e69cef","grow(uint16)":"761eb23e","index()":"2986c0e5","initialize((uint32,int24,uint128))":"daf50f6b","liquidity()":"1a686502","observations(uint256)":"252c09d7","observe(uint32[])":"883bdbfd","rewardPerSecondX48()":"58319b4d","rewardRateEffectiveUntil()":"6142258a","tick()":"3eaf5d9f","time()":"16ada547","update((uint32,int24,uint128))":"65829dc5"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"by\",\"type\":\"uint32\"}],\"name\":\"advanceTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"advanceTimeBy\",\"type\":\"uint32\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"internalType\":\"struct OracleTest.UpdateParams[]\",\"name\":\"params\",\"type\":\"tuple[]\"}],\"name\":\"batchUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cardinality\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cardinalityNext\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"secondsAgos\",\"type\":\"uint32[]\"}],\"name\":\"getGasCostOfObserve\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_cardinalityNext\",\"type\":\"uint16\"}],\"name\":\"grow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"index\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"time\",\"type\":\"uint32\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"internalType\":\"struct OracleTest.InitializeParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"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\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityCumulativeX64\",\"type\":\"uint192\"}],\"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[]\"},{\"internalType\":\"uint192[]\",\"name\":\"rewardPerLiquidityCumulativeX64s\",\"type\":\"uint192[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerSecondX48\",\"outputs\":[{\"internalType\":\"uint144\",\"name\":\"\",\"type\":\"uint144\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardRateEffectiveUntil\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tick\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"time\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"advanceTimeBy\",\"type\":\"uint32\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"internalType\":\"struct OracleTest.UpdateParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"update\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/OracleTest.sol\":\"OracleTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/Oracle.sol\":{\"keccak256\":\"0xb927015d21b9ea6fbcf518218811d938b8bba57250f77459e364421a6a6459c6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://773ae95cce9134e52b8a05574c6691869680cdd1f17129a1138c268c76b77607\",\"dweb:/ipfs/QmZsmHuzYWLWJiTD2PKuzVqfuJUB33ajQ2Rp3N3PkQAern\"]},\"contracts/elixir-core/test/OracleTest.sol\":{\"keccak256\":\"0x8068e7d3ac4c342617b640dce2a88e3ca13d7ea11305f8ed66e252354560c318\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://875661a226aa2c438630c9746c608a841457d1226b52bb9e85bed472313025f7\",\"dweb:/ipfs/QmZJyeY8xt7NAxJeZKuhToRTFrmRH4niCZTsY3swDoice4\"]}},\"version\":1}"}},"contracts/elixir-core/test/SqrtPriceMathEchidnaTest.sol":{"SqrtPriceMathEchidnaTest":{"abi":[{"inputs":[{"internalType":"uint160","name":"sqrtP","type":"uint160"},{"internalType":"uint160","name":"sqrtQ","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"bool","name":"roundUp","type":"bool"}],"name":"getAmount0DeltaEquivalency","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtP","type":"uint160"},{"internalType":"uint160","name":"sqrtQ","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"}],"name":"getAmount0DeltaInvariants","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtP","type":"uint160"},{"internalType":"uint160","name":"sqrtQ","type":"uint160"},{"internalType":"int128","name":"liquidity","type":"int128"}],"name":"getAmount0DeltaSignedInvariants","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtP","type":"uint160"},{"internalType":"uint160","name":"sqrtQ","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"}],"name":"getAmount1DeltaInvariants","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtP","type":"uint160"},{"internalType":"uint160","name":"sqrtQ","type":"uint160"},{"internalType":"int128","name":"liquidity","type":"int128"}],"name":"getAmount1DeltaSignedInvariants","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtLower","type":"uint160"},{"internalType":"uint160","name":"sqrtCurrent","type":"uint160"},{"internalType":"uint160","name":"sqrtUpper","type":"uint160"},{"internalType":"int128","name":"liquidity","type":"int128"}],"name":"getInRangeMintInvariants","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtPX96","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"add","type":"bool"}],"name":"getNextSqrtPriceFromAmount0RoundingUpInvariants","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtPX96","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"add","type":"bool"}],"name":"getNextSqrtPriceFromAmount1RoundingDownInvariants","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtP","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"bool","name":"zeroForOne","type":"bool"}],"name":"getNextSqrtPriceFromInputInvariants","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtP","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"bool","name":"zeroForOne","type":"bool"}],"name":"getNextSqrtPriceFromOutputInvariants","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtA","type":"uint160"},{"internalType":"uint160","name":"sqrtB","type":"uint160"},{"internalType":"int128","name":"liquidity","type":"int128"}],"name":"getOutOfRangeMintInvariants","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"},{"internalType":"uint256","name":"z","type":"uint256"}],"name":"mulDivRoundingUpInvariants","outputs":[],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50611005806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80638e13a4b911610081578063b712c47c1161005b578063b712c47c14610305578063c8569d881461033e578063f157fb501461037e576100d4565b80638e13a4b914610242578063b29f199e14610289578063b46e6714146102c2576100d4565b806339933d51116100b257806339933d51146101a15780633d729147146101e05780636e6238d714610209576100d4565b80631faf4a39146100d957806321e14f8b1461011e5780633001e65e14610161575b600080fd5b61011c600480360360808110156100ef57600080fd5b506001600160a01b03813516906001600160801b03602082013516906040810135906060013515156103c1565b005b61011c6004803603608081101561013457600080fd5b506001600160a01b03813516906001600160801b0360208201351690604081013590606001351515610447565b61011c6004803603606081101561017757600080fd5b5080356001600160a01b0390811691602081013590911690604001356001600160801b03166104e6565b61011c600480360360808110156101b757600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135600f0b610573565b61011c600480360360608110156101f657600080fd5b508035906020810135906040013561062f565b61011c6004803603606081101561021f57600080fd5b506001600160a01b03813581169160208101359091169060400135600f0b6106a1565b61011c6004803603608081101561025857600080fd5b506001600160a01b0381358116916020810135909116906001600160801b0360408201351690606001351515610749565b61011c6004803603606081101561029f57600080fd5b506001600160a01b03813581169160208101359091169060400135600f0b610845565b61011c600480360360808110156102d857600080fd5b506001600160a01b03813516906001600160801b036020820135169060408101359060600135151561087d565b61011c6004803603606081101561031b57600080fd5b506001600160a01b03813581169160208101359091169060400135600f0b6108f7565b61011c6004803603606081101561035457600080fd5b5080356001600160a01b0390811691602081013590911690604001356001600160801b031661098e565b61011c6004803603608081101561039457600080fd5b506001600160a01b03813516906001600160801b03602082013516906040810135906060013515156109fd565b60006103cf85858585610a8a565b9050811561040e57846001600160a01b0316816001600160a01b031611156103f357fe5b6104008186866001610ae6565b83101561040957fe5b610440565b846001600160a01b0316816001600160a01b0316101561042a57fe5b6104378582866001610b9a565b83101561044057fe5b5050505050565b6000846001600160a01b03161161045d57600080fd5b6000836001600160801b03161161047357600080fd5b600061048185858585610c05565b905081156104aa57846001600160a01b0316816001600160a01b031610156104a557fe5b6104c6565b846001600160a01b0316816001600160a01b031611156104c657fe5b8261044057806001600160a01b0316856001600160a01b03161461044057fe5b6000836001600160a01b031611801561050857506000826001600160a01b0316115b61051157600080fd5b60006105208385846000610ae6565b905061052f8484846000610ae6565b811461053757fe5b60006105468486856001610ae6565b90506105558585856001610ae6565b811461055d57fe5b8082111561056757fe5b60028282031061044057fe5b6000846001600160a01b03161161058957600080fd5b816001600160a01b0316846001600160a01b0316106105a757600080fd5b826001600160a01b0316846001600160a01b0316111580156105db5750816001600160a01b0316836001600160a01b031611155b6105e457600080fd5b600081600f0b136105f457600080fd5b6000610601848484610ce6565b90506000610610868685610d2d565b905060008213806106215750600081135b61062757fe5b505050505050565b6000811161063c57600080fd5b6000610649848484610d5c565b90506000610658858585610e0b565b90508181101561066457fe5b60028282031061067057fe5b8181036001141561068f576000838061068557fe5b8587091161040957fe5b828061069757fe5b8486091561044057fe5b6000836001600160a01b03161180156106c357506000826001600160a01b0316115b6106cc57600080fd5b60006106d9848484610d2d565b9050600082600f0b12156106f25760008113156106f257fe5b600082600f0b131561072f57826001600160a01b0316846001600160a01b0316141561072557801561072057fe5b61072f565b6000811361072f57fe5b81600f0b6000141561074357801561074357fe5b50505050565b826001600160a01b0316846001600160a01b0316101561076857600080fd5b6000846001600160a01b031611801561078a57506000836001600160a01b0316115b61079357600080fd5b826001600160a01b0316846001600160a01b03168486026001600160a01b0316816107ba57fe5b046001600160a01b0316146107ce57600080fd5b6fffffffffffffffffffffffffffffffff60601b606083901b166001600160a01b03848603811690808716908616026000846108145761080f848484610d5c565b61081f565b61081f848484610e0b565b9050600061082f888a8989610ae6565b905080821461083a57fe5b505050505050505050565b6000836001600160a01b031611801561086757506000826001600160a01b0316115b61087057600080fd5b60006106d9838584610ce6565b6000846001600160a01b03161161089357600080fd5b6000836001600160801b0316116108a957600080fd5b60006108b785858585610e45565b905081156108db57846001600160a01b0316816001600160a01b031611156104a557fe5b846001600160a01b0316816001600160a01b031610156104c657fe5b6000836001600160a01b031611801561091957506000826001600160a01b0316115b61092257600080fd5b600081600f0b1361093257600080fd5b600061093f848484610ce6565b9050600061094e858585610d2d565b9050836001600160a01b0316856001600160a01b0316141561097a57811561097257fe5b801561040957fe5b6000821361098457fe5b6000811361044057fe5b6000836001600160a01b03161180156109b057506000826001600160a01b0316115b6109b957600080fd5b60006109c88484846000610b9a565b90506109d78385846000610b9a565b81146109df57fe5b60006109ee8585856001610b9a565b90506105558486856001610b9a565b6000610a0b85858585610f31565b90508115610a4557846001600160a01b0316816001600160a01b03161115610a2f57fe5b610a3c8186866000610b9a565b83111561040957fe5b6000816001600160a01b031611610a5857fe5b846001600160a01b0316816001600160a01b03161015610a7457fe5b610a818582866000610ae6565b83111561044057fe5b600080856001600160a01b031611610aa157600080fd5b6000846001600160801b031611610ab757600080fd5b81610ace57610ac98585856001610c05565b610adb565b610adb8585856001610e45565b90505b949350505050565b6000836001600160a01b0316856001600160a01b03161115610b06579293925b6fffffffffffffffffffffffffffffffff60601b606084901b166001600160a01b038686038116908716610b3957600080fd5b83610b6957866001600160a01b0316610b5c8383896001600160a01b0316610d5c565b81610b6357fe5b04610b8f565b610b8f610b808383896001600160a01b0316610e0b565b886001600160a01b0316610f7d565b979650505050505050565b6000836001600160a01b0316856001600160a01b03161115610bba579293925b81610be257610ac9836001600160801b03168686036001600160a01b0316600160601b610d5c565b610adb836001600160801b03168686036001600160a01b0316600160601b610e0b565b60008115610c785760006001600160a01b03841115610c3b57610c3684600160601b876001600160801b0316610d5c565b610c53565b6001600160801b038516606085901b81610c5157fe5b045b9050610c70610c6b6001600160a01b03881683610f88565b610f9e565b915050610ade565b60006001600160a01b03841115610ca657610ca184600160601b876001600160801b0316610e0b565b610cbd565b610cbd606085901b6001600160801b038716610f7d565b905080866001600160a01b031611610cd457600080fd5b6001600160a01b038616039050610ade565b60008082600f0b12610d0c57610d07610d028585856001610ae6565b610fb9565b610d23565b610d1f610d028585856000036000610ae6565b6000035b90505b9392505050565b60008082600f0b12610d4957610d07610d028585856001610b9a565b610d1f610d028585856000036000610b9a565b6000808060001985870986860292508281109083900303905080610d925760008411610d8757600080fd5b508290049050610d26565b808411610d9e57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000610e18848484610d5c565b905060008280610e2457fe5b8486091115610d26576000198110610e3b57600080fd5b6001019392505050565b600082610e53575083610ade565b6fffffffffffffffffffffffffffffffff60601b606085901b168215610eea576001600160a01b03861684810290858281610e8a57fe5b041415610ebb57818101828110610eb957610eaf83896001600160a01b031683610e0b565b9350505050610ade565b505b610ee182610edc878a6001600160a01b03168681610ed557fe5b0490610f88565b610f7d565b92505050610ade565b6001600160a01b03861684810290858281610f0157fe5b04148015610f0e57508082115b610f1757600080fd5b808203610eaf610c6b846001600160a01b038b1684610e0b565b600080856001600160a01b031611610f4857600080fd5b6000846001600160801b031611610f5e57600080fd5b81610f7057610ac98585856000610e45565b610adb8585856000610c05565b808204910615150190565b80820182811015610f9857600080fd5b92915050565b806001600160a01b0381168114610fb457600080fd5b919050565b6000600160ff1b8210610fcb57600080fd5b509056fea2646970667358221220fcd46cfdba2dba06bbc2b861df143a7b4e9bfda27ecbd6fbe545f909b49ae0e864736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1005 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 0x8E13A4B9 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xB712C47C GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xB712C47C EQ PUSH2 0x305 JUMPI DUP1 PUSH4 0xC8569D88 EQ PUSH2 0x33E JUMPI DUP1 PUSH4 0xF157FB50 EQ PUSH2 0x37E JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x8E13A4B9 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xB29F199E EQ PUSH2 0x289 JUMPI DUP1 PUSH4 0xB46E6714 EQ PUSH2 0x2C2 JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x39933D51 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x39933D51 EQ PUSH2 0x1A1 JUMPI DUP1 PUSH4 0x3D729147 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0x6E6238D7 EQ PUSH2 0x209 JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x1FAF4A39 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x21E14F8B EQ PUSH2 0x11E JUMPI DUP1 PUSH4 0x3001E65E EQ PUSH2 0x161 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x3C1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x447 JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x4E6 JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH1 0xF SIGNEXTEND PUSH2 0x573 JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x62F JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0xF SIGNEXTEND PUSH2 0x6A1 JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x749 JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x29F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0xF SIGNEXTEND PUSH2 0x845 JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x87D JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x31B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0xF SIGNEXTEND PUSH2 0x8F7 JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x354 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x98E JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x9FD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CF DUP6 DUP6 DUP6 DUP6 PUSH2 0xA8A JUMP JUMPDEST SWAP1 POP DUP2 ISZERO PUSH2 0x40E JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x3F3 JUMPI INVALID JUMPDEST PUSH2 0x400 DUP2 DUP7 DUP7 PUSH1 0x1 PUSH2 0xAE6 JUMP JUMPDEST DUP4 LT ISZERO PUSH2 0x409 JUMPI INVALID JUMPDEST PUSH2 0x440 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x42A JUMPI INVALID JUMPDEST PUSH2 0x437 DUP6 DUP3 DUP7 PUSH1 0x1 PUSH2 0xB9A JUMP JUMPDEST DUP4 LT ISZERO PUSH2 0x440 JUMPI INVALID JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x473 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x481 DUP6 DUP6 DUP6 DUP6 PUSH2 0xC05 JUMP JUMPDEST SWAP1 POP DUP2 ISZERO PUSH2 0x4AA JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x4A5 JUMPI INVALID JUMPDEST PUSH2 0x4C6 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4C6 JUMPI INVALID JUMPDEST DUP3 PUSH2 0x440 JUMPI DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x440 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT DUP1 ISZERO PUSH2 0x508 JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT JUMPDEST PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x520 DUP4 DUP6 DUP5 PUSH1 0x0 PUSH2 0xAE6 JUMP JUMPDEST SWAP1 POP PUSH2 0x52F DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0xAE6 JUMP JUMPDEST DUP2 EQ PUSH2 0x537 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x546 DUP5 DUP7 DUP6 PUSH1 0x1 PUSH2 0xAE6 JUMP JUMPDEST SWAP1 POP PUSH2 0x555 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0xAE6 JUMP JUMPDEST DUP2 EQ PUSH2 0x55D JUMPI INVALID JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x567 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP3 DUP3 SUB LT PUSH2 0x440 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x589 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x5A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO DUP1 ISZERO PUSH2 0x5DB JUMPI POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO JUMPDEST PUSH2 0x5E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xF SIGNEXTEND SGT PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x601 DUP5 DUP5 DUP5 PUSH2 0xCE6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x610 DUP7 DUP7 DUP6 PUSH2 0xD2D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 SGT DUP1 PUSH2 0x621 JUMPI POP PUSH1 0x0 DUP2 SGT JUMPDEST PUSH2 0x627 JUMPI INVALID JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x63C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x649 DUP5 DUP5 DUP5 PUSH2 0xD5C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x658 DUP6 DUP6 DUP6 PUSH2 0xE0B JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x664 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP3 DUP3 SUB LT PUSH2 0x670 JUMPI INVALID JUMPDEST DUP2 DUP2 SUB PUSH1 0x1 EQ ISZERO PUSH2 0x68F JUMPI PUSH1 0x0 DUP4 DUP1 PUSH2 0x685 JUMPI INVALID JUMPDEST DUP6 DUP8 MULMOD GT PUSH2 0x409 JUMPI INVALID JUMPDEST DUP3 DUP1 PUSH2 0x697 JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD ISZERO PUSH2 0x440 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT DUP1 ISZERO PUSH2 0x6C3 JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT JUMPDEST PUSH2 0x6CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6D9 DUP5 DUP5 DUP5 PUSH2 0xD2D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x6F2 JUMPI PUSH1 0x0 DUP2 SGT ISZERO PUSH2 0x6F2 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 PUSH1 0xF SIGNEXTEND SGT ISZERO PUSH2 0x72F JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x725 JUMPI DUP1 ISZERO PUSH2 0x720 JUMPI INVALID JUMPDEST PUSH2 0x72F JUMP JUMPDEST PUSH1 0x0 DUP2 SGT PUSH2 0x72F JUMPI INVALID JUMPDEST DUP2 PUSH1 0xF SIGNEXTEND PUSH1 0x0 EQ ISZERO PUSH2 0x743 JUMPI DUP1 ISZERO PUSH2 0x743 JUMPI INVALID JUMPDEST POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT DUP1 ISZERO PUSH2 0x78A JUMPI POP PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT JUMPDEST PUSH2 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP7 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH2 0x7BA JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x7CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL PUSH1 0x60 DUP4 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP7 SUB DUP2 AND SWAP1 DUP1 DUP8 AND SWAP1 DUP7 AND MUL PUSH1 0x0 DUP5 PUSH2 0x814 JUMPI PUSH2 0x80F DUP5 DUP5 DUP5 PUSH2 0xD5C JUMP JUMPDEST PUSH2 0x81F JUMP JUMPDEST PUSH2 0x81F DUP5 DUP5 DUP5 PUSH2 0xE0B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x82F DUP9 DUP11 DUP10 DUP10 PUSH2 0xAE6 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x83A JUMPI INVALID JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT DUP1 ISZERO PUSH2 0x867 JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT JUMPDEST PUSH2 0x870 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6D9 DUP4 DUP6 DUP5 PUSH2 0xCE6 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x893 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x8A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x8B7 DUP6 DUP6 DUP6 DUP6 PUSH2 0xE45 JUMP JUMPDEST SWAP1 POP DUP2 ISZERO PUSH2 0x8DB JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4A5 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x4C6 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT DUP1 ISZERO PUSH2 0x919 JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT JUMPDEST PUSH2 0x922 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xF SIGNEXTEND SGT PUSH2 0x932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x93F DUP5 DUP5 DUP5 PUSH2 0xCE6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x94E DUP6 DUP6 DUP6 PUSH2 0xD2D JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x97A JUMPI DUP2 ISZERO PUSH2 0x972 JUMPI INVALID JUMPDEST DUP1 ISZERO PUSH2 0x409 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 SGT PUSH2 0x984 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP2 SGT PUSH2 0x440 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT DUP1 ISZERO PUSH2 0x9B0 JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT JUMPDEST PUSH2 0x9B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9C8 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0xB9A JUMP JUMPDEST SWAP1 POP PUSH2 0x9D7 DUP4 DUP6 DUP5 PUSH1 0x0 PUSH2 0xB9A JUMP JUMPDEST DUP2 EQ PUSH2 0x9DF JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x9EE DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0xB9A JUMP JUMPDEST SWAP1 POP PUSH2 0x555 DUP5 DUP7 DUP6 PUSH1 0x1 PUSH2 0xB9A JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA0B DUP6 DUP6 DUP6 DUP6 PUSH2 0xF31 JUMP JUMPDEST SWAP1 POP DUP2 ISZERO PUSH2 0xA45 JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0xA2F JUMPI INVALID JUMPDEST PUSH2 0xA3C DUP2 DUP7 DUP7 PUSH1 0x0 PUSH2 0xB9A JUMP JUMPDEST DUP4 GT ISZERO PUSH2 0x409 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0xA58 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0xA74 JUMPI INVALID JUMPDEST PUSH2 0xA81 DUP6 DUP3 DUP7 PUSH1 0x0 PUSH2 0xAE6 JUMP JUMPDEST DUP4 GT ISZERO PUSH2 0x440 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0xAA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0xAB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0xACE JUMPI PUSH2 0xAC9 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0xC05 JUMP JUMPDEST PUSH2 0xADB JUMP JUMPDEST PUSH2 0xADB DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0xE45 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0xB06 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP7 SUB DUP2 AND SWAP1 DUP8 AND PUSH2 0xB39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH2 0xB69 JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB5C DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD5C JUMP JUMPDEST DUP2 PUSH2 0xB63 JUMPI INVALID JUMPDEST DIV PUSH2 0xB8F JUMP JUMPDEST PUSH2 0xB8F PUSH2 0xB80 DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE0B JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF7D JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0xBBA JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP2 PUSH2 0xBE2 JUMPI PUSH2 0xAC9 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0xD5C JUMP JUMPDEST PUSH2 0xADB DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0xE0B JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0xC78 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0xC3B JUMPI PUSH2 0xC36 DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0xD5C JUMP JUMPDEST PUSH2 0xC53 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH1 0x60 DUP6 SWAP1 SHL DUP2 PUSH2 0xC51 JUMPI INVALID JUMPDEST DIV JUMPDEST SWAP1 POP PUSH2 0xC70 PUSH2 0xC6B PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP4 PUSH2 0xF88 JUMP JUMPDEST PUSH2 0xF9E JUMP JUMPDEST SWAP2 POP POP PUSH2 0xADE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0xCA6 JUMPI PUSH2 0xCA1 DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0xE0B JUMP JUMPDEST PUSH2 0xCBD JUMP JUMPDEST PUSH2 0xCBD PUSH1 0x60 DUP6 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP8 AND PUSH2 0xF7D JUMP JUMPDEST SWAP1 POP DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0xCD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB SWAP1 POP PUSH2 0xADE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT PUSH2 0xD0C JUMPI PUSH2 0xD07 PUSH2 0xD02 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0xFB9 JUMP JUMPDEST PUSH2 0xD23 JUMP JUMPDEST PUSH2 0xD1F PUSH2 0xD02 DUP6 DUP6 DUP6 PUSH1 0x0 SUB PUSH1 0x0 PUSH2 0xAE6 JUMP JUMPDEST PUSH1 0x0 SUB JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT PUSH2 0xD49 JUMPI PUSH2 0xD07 PUSH2 0xD02 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0xB9A JUMP JUMPDEST PUSH2 0xD1F PUSH2 0xD02 DUP6 DUP6 DUP6 PUSH1 0x0 SUB PUSH1 0x0 PUSH2 0xB9A JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0xD92 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0xD87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0xD26 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0xD9E 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 PUSH1 0x0 PUSH2 0xE18 DUP5 DUP5 DUP5 PUSH2 0xD5C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP1 PUSH2 0xE24 JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD GT ISZERO PUSH2 0xD26 JUMPI PUSH1 0x0 NOT DUP2 LT PUSH2 0xE3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xE53 JUMPI POP DUP4 PUSH2 0xADE JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL PUSH1 0x60 DUP6 SWAP1 SHL AND DUP3 ISZERO PUSH2 0xEEA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0xE8A JUMPI INVALID JUMPDEST DIV EQ ISZERO PUSH2 0xEBB JUMPI DUP2 DUP2 ADD DUP3 DUP2 LT PUSH2 0xEB9 JUMPI PUSH2 0xEAF DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH2 0xE0B JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0xADE JUMP JUMPDEST POP JUMPDEST PUSH2 0xEE1 DUP3 PUSH2 0xEDC DUP8 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP2 PUSH2 0xED5 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0xF88 JUMP JUMPDEST PUSH2 0xF7D JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0xADE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0xF01 JUMPI INVALID JUMPDEST DIV EQ DUP1 ISZERO PUSH2 0xF0E JUMPI POP DUP1 DUP3 GT JUMPDEST PUSH2 0xF17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB PUSH2 0xEAF PUSH2 0xC6B DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 PUSH2 0xE0B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0xF48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0xF5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0xF70 JUMPI PUSH2 0xAC9 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0xE45 JUMP JUMPDEST PUSH2 0xADB DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0xC05 JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xF98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xFB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 LT PUSH2 0xFCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFC 0xD4 PUSH13 0xFDBA2DBA06BBC2B861DF143A7B 0x4E SWAP12 REVERT LOG2 PUSH31 0xCBD6FBE545F909B49AE0E864736F6C63430007060033000000000000000000 ","sourceMap":"189:7645:42:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100d45760003560e01c80638e13a4b911610081578063b712c47c1161005b578063b712c47c14610305578063c8569d881461033e578063f157fb501461037e576100d4565b80638e13a4b914610242578063b29f199e14610289578063b46e6714146102c2576100d4565b806339933d51116100b257806339933d51146101a15780633d729147146101e05780636e6238d714610209576100d4565b80631faf4a39146100d957806321e14f8b1461011e5780633001e65e14610161575b600080fd5b61011c600480360360808110156100ef57600080fd5b506001600160a01b03813516906001600160801b03602082013516906040810135906060013515156103c1565b005b61011c6004803603608081101561013457600080fd5b506001600160a01b03813516906001600160801b0360208201351690604081013590606001351515610447565b61011c6004803603606081101561017757600080fd5b5080356001600160a01b0390811691602081013590911690604001356001600160801b03166104e6565b61011c600480360360808110156101b757600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135600f0b610573565b61011c600480360360608110156101f657600080fd5b508035906020810135906040013561062f565b61011c6004803603606081101561021f57600080fd5b506001600160a01b03813581169160208101359091169060400135600f0b6106a1565b61011c6004803603608081101561025857600080fd5b506001600160a01b0381358116916020810135909116906001600160801b0360408201351690606001351515610749565b61011c6004803603606081101561029f57600080fd5b506001600160a01b03813581169160208101359091169060400135600f0b610845565b61011c600480360360808110156102d857600080fd5b506001600160a01b03813516906001600160801b036020820135169060408101359060600135151561087d565b61011c6004803603606081101561031b57600080fd5b506001600160a01b03813581169160208101359091169060400135600f0b6108f7565b61011c6004803603606081101561035457600080fd5b5080356001600160a01b0390811691602081013590911690604001356001600160801b031661098e565b61011c6004803603608081101561039457600080fd5b506001600160a01b03813516906001600160801b03602082013516906040810135906060013515156109fd565b60006103cf85858585610a8a565b9050811561040e57846001600160a01b0316816001600160a01b031611156103f357fe5b6104008186866001610ae6565b83101561040957fe5b610440565b846001600160a01b0316816001600160a01b0316101561042a57fe5b6104378582866001610b9a565b83101561044057fe5b5050505050565b6000846001600160a01b03161161045d57600080fd5b6000836001600160801b03161161047357600080fd5b600061048185858585610c05565b905081156104aa57846001600160a01b0316816001600160a01b031610156104a557fe5b6104c6565b846001600160a01b0316816001600160a01b031611156104c657fe5b8261044057806001600160a01b0316856001600160a01b03161461044057fe5b6000836001600160a01b031611801561050857506000826001600160a01b0316115b61051157600080fd5b60006105208385846000610ae6565b905061052f8484846000610ae6565b811461053757fe5b60006105468486856001610ae6565b90506105558585856001610ae6565b811461055d57fe5b8082111561056757fe5b60028282031061044057fe5b6000846001600160a01b03161161058957600080fd5b816001600160a01b0316846001600160a01b0316106105a757600080fd5b826001600160a01b0316846001600160a01b0316111580156105db5750816001600160a01b0316836001600160a01b031611155b6105e457600080fd5b600081600f0b136105f457600080fd5b6000610601848484610ce6565b90506000610610868685610d2d565b905060008213806106215750600081135b61062757fe5b505050505050565b6000811161063c57600080fd5b6000610649848484610d5c565b90506000610658858585610e0b565b90508181101561066457fe5b60028282031061067057fe5b8181036001141561068f576000838061068557fe5b8587091161040957fe5b828061069757fe5b8486091561044057fe5b6000836001600160a01b03161180156106c357506000826001600160a01b0316115b6106cc57600080fd5b60006106d9848484610d2d565b9050600082600f0b12156106f25760008113156106f257fe5b600082600f0b131561072f57826001600160a01b0316846001600160a01b0316141561072557801561072057fe5b61072f565b6000811361072f57fe5b81600f0b6000141561074357801561074357fe5b50505050565b826001600160a01b0316846001600160a01b0316101561076857600080fd5b6000846001600160a01b031611801561078a57506000836001600160a01b0316115b61079357600080fd5b826001600160a01b0316846001600160a01b03168486026001600160a01b0316816107ba57fe5b046001600160a01b0316146107ce57600080fd5b6fffffffffffffffffffffffffffffffff60601b606083901b166001600160a01b03848603811690808716908616026000846108145761080f848484610d5c565b61081f565b61081f848484610e0b565b9050600061082f888a8989610ae6565b905080821461083a57fe5b505050505050505050565b6000836001600160a01b031611801561086757506000826001600160a01b0316115b61087057600080fd5b60006106d9838584610ce6565b6000846001600160a01b03161161089357600080fd5b6000836001600160801b0316116108a957600080fd5b60006108b785858585610e45565b905081156108db57846001600160a01b0316816001600160a01b031611156104a557fe5b846001600160a01b0316816001600160a01b031610156104c657fe5b6000836001600160a01b031611801561091957506000826001600160a01b0316115b61092257600080fd5b600081600f0b1361093257600080fd5b600061093f848484610ce6565b9050600061094e858585610d2d565b9050836001600160a01b0316856001600160a01b0316141561097a57811561097257fe5b801561040957fe5b6000821361098457fe5b6000811361044057fe5b6000836001600160a01b03161180156109b057506000826001600160a01b0316115b6109b957600080fd5b60006109c88484846000610b9a565b90506109d78385846000610b9a565b81146109df57fe5b60006109ee8585856001610b9a565b90506105558486856001610b9a565b6000610a0b85858585610f31565b90508115610a4557846001600160a01b0316816001600160a01b03161115610a2f57fe5b610a3c8186866000610b9a565b83111561040957fe5b6000816001600160a01b031611610a5857fe5b846001600160a01b0316816001600160a01b03161015610a7457fe5b610a818582866000610ae6565b83111561044057fe5b600080856001600160a01b031611610aa157600080fd5b6000846001600160801b031611610ab757600080fd5b81610ace57610ac98585856001610c05565b610adb565b610adb8585856001610e45565b90505b949350505050565b6000836001600160a01b0316856001600160a01b03161115610b06579293925b6fffffffffffffffffffffffffffffffff60601b606084901b166001600160a01b038686038116908716610b3957600080fd5b83610b6957866001600160a01b0316610b5c8383896001600160a01b0316610d5c565b81610b6357fe5b04610b8f565b610b8f610b808383896001600160a01b0316610e0b565b886001600160a01b0316610f7d565b979650505050505050565b6000836001600160a01b0316856001600160a01b03161115610bba579293925b81610be257610ac9836001600160801b03168686036001600160a01b0316600160601b610d5c565b610adb836001600160801b03168686036001600160a01b0316600160601b610e0b565b60008115610c785760006001600160a01b03841115610c3b57610c3684600160601b876001600160801b0316610d5c565b610c53565b6001600160801b038516606085901b81610c5157fe5b045b9050610c70610c6b6001600160a01b03881683610f88565b610f9e565b915050610ade565b60006001600160a01b03841115610ca657610ca184600160601b876001600160801b0316610e0b565b610cbd565b610cbd606085901b6001600160801b038716610f7d565b905080866001600160a01b031611610cd457600080fd5b6001600160a01b038616039050610ade565b60008082600f0b12610d0c57610d07610d028585856001610ae6565b610fb9565b610d23565b610d1f610d028585856000036000610ae6565b6000035b90505b9392505050565b60008082600f0b12610d4957610d07610d028585856001610b9a565b610d1f610d028585856000036000610b9a565b6000808060001985870986860292508281109083900303905080610d925760008411610d8757600080fd5b508290049050610d26565b808411610d9e57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000610e18848484610d5c565b905060008280610e2457fe5b8486091115610d26576000198110610e3b57600080fd5b6001019392505050565b600082610e53575083610ade565b6fffffffffffffffffffffffffffffffff60601b606085901b168215610eea576001600160a01b03861684810290858281610e8a57fe5b041415610ebb57818101828110610eb957610eaf83896001600160a01b031683610e0b565b9350505050610ade565b505b610ee182610edc878a6001600160a01b03168681610ed557fe5b0490610f88565b610f7d565b92505050610ade565b6001600160a01b03861684810290858281610f0157fe5b04148015610f0e57508082115b610f1757600080fd5b808203610eaf610c6b846001600160a01b038b1684610e0b565b600080856001600160a01b031611610f4857600080fd5b6000846001600160801b031611610f5e57600080fd5b81610f7057610ac98585856000610e45565b610adb8585856000610c05565b808204910615150190565b80820182811015610f9857600080fd5b92915050565b806001600160a01b0381168114610fb457600080fd5b919050565b6000600160ff1b8210610fcb57600080fd5b509056fea2646970667358221220fcd46cfdba2dba06bbc2b861df143a7b4e9bfda27ecbd6fbe545f909b49ae0e864736f6c63430007060033","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 0x8E13A4B9 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xB712C47C GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xB712C47C EQ PUSH2 0x305 JUMPI DUP1 PUSH4 0xC8569D88 EQ PUSH2 0x33E JUMPI DUP1 PUSH4 0xF157FB50 EQ PUSH2 0x37E JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x8E13A4B9 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xB29F199E EQ PUSH2 0x289 JUMPI DUP1 PUSH4 0xB46E6714 EQ PUSH2 0x2C2 JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x39933D51 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x39933D51 EQ PUSH2 0x1A1 JUMPI DUP1 PUSH4 0x3D729147 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0x6E6238D7 EQ PUSH2 0x209 JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x1FAF4A39 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x21E14F8B EQ PUSH2 0x11E JUMPI DUP1 PUSH4 0x3001E65E EQ PUSH2 0x161 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x3C1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x447 JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x4E6 JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH1 0xF SIGNEXTEND PUSH2 0x573 JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x62F JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0xF SIGNEXTEND PUSH2 0x6A1 JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x749 JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x29F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0xF SIGNEXTEND PUSH2 0x845 JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x87D JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x31B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0xF SIGNEXTEND PUSH2 0x8F7 JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x354 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x98E JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x9FD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CF DUP6 DUP6 DUP6 DUP6 PUSH2 0xA8A JUMP JUMPDEST SWAP1 POP DUP2 ISZERO PUSH2 0x40E JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x3F3 JUMPI INVALID JUMPDEST PUSH2 0x400 DUP2 DUP7 DUP7 PUSH1 0x1 PUSH2 0xAE6 JUMP JUMPDEST DUP4 LT ISZERO PUSH2 0x409 JUMPI INVALID JUMPDEST PUSH2 0x440 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x42A JUMPI INVALID JUMPDEST PUSH2 0x437 DUP6 DUP3 DUP7 PUSH1 0x1 PUSH2 0xB9A JUMP JUMPDEST DUP4 LT ISZERO PUSH2 0x440 JUMPI INVALID JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x473 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x481 DUP6 DUP6 DUP6 DUP6 PUSH2 0xC05 JUMP JUMPDEST SWAP1 POP DUP2 ISZERO PUSH2 0x4AA JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x4A5 JUMPI INVALID JUMPDEST PUSH2 0x4C6 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4C6 JUMPI INVALID JUMPDEST DUP3 PUSH2 0x440 JUMPI DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x440 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT DUP1 ISZERO PUSH2 0x508 JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT JUMPDEST PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x520 DUP4 DUP6 DUP5 PUSH1 0x0 PUSH2 0xAE6 JUMP JUMPDEST SWAP1 POP PUSH2 0x52F DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0xAE6 JUMP JUMPDEST DUP2 EQ PUSH2 0x537 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x546 DUP5 DUP7 DUP6 PUSH1 0x1 PUSH2 0xAE6 JUMP JUMPDEST SWAP1 POP PUSH2 0x555 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0xAE6 JUMP JUMPDEST DUP2 EQ PUSH2 0x55D JUMPI INVALID JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x567 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP3 DUP3 SUB LT PUSH2 0x440 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x589 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x5A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO DUP1 ISZERO PUSH2 0x5DB JUMPI POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO JUMPDEST PUSH2 0x5E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xF SIGNEXTEND SGT PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x601 DUP5 DUP5 DUP5 PUSH2 0xCE6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x610 DUP7 DUP7 DUP6 PUSH2 0xD2D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 SGT DUP1 PUSH2 0x621 JUMPI POP PUSH1 0x0 DUP2 SGT JUMPDEST PUSH2 0x627 JUMPI INVALID JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x63C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x649 DUP5 DUP5 DUP5 PUSH2 0xD5C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x658 DUP6 DUP6 DUP6 PUSH2 0xE0B JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x664 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP3 DUP3 SUB LT PUSH2 0x670 JUMPI INVALID JUMPDEST DUP2 DUP2 SUB PUSH1 0x1 EQ ISZERO PUSH2 0x68F JUMPI PUSH1 0x0 DUP4 DUP1 PUSH2 0x685 JUMPI INVALID JUMPDEST DUP6 DUP8 MULMOD GT PUSH2 0x409 JUMPI INVALID JUMPDEST DUP3 DUP1 PUSH2 0x697 JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD ISZERO PUSH2 0x440 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT DUP1 ISZERO PUSH2 0x6C3 JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT JUMPDEST PUSH2 0x6CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6D9 DUP5 DUP5 DUP5 PUSH2 0xD2D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x6F2 JUMPI PUSH1 0x0 DUP2 SGT ISZERO PUSH2 0x6F2 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 PUSH1 0xF SIGNEXTEND SGT ISZERO PUSH2 0x72F JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x725 JUMPI DUP1 ISZERO PUSH2 0x720 JUMPI INVALID JUMPDEST PUSH2 0x72F JUMP JUMPDEST PUSH1 0x0 DUP2 SGT PUSH2 0x72F JUMPI INVALID JUMPDEST DUP2 PUSH1 0xF SIGNEXTEND PUSH1 0x0 EQ ISZERO PUSH2 0x743 JUMPI DUP1 ISZERO PUSH2 0x743 JUMPI INVALID JUMPDEST POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT DUP1 ISZERO PUSH2 0x78A JUMPI POP PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT JUMPDEST PUSH2 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP7 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH2 0x7BA JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x7CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL PUSH1 0x60 DUP4 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP7 SUB DUP2 AND SWAP1 DUP1 DUP8 AND SWAP1 DUP7 AND MUL PUSH1 0x0 DUP5 PUSH2 0x814 JUMPI PUSH2 0x80F DUP5 DUP5 DUP5 PUSH2 0xD5C JUMP JUMPDEST PUSH2 0x81F JUMP JUMPDEST PUSH2 0x81F DUP5 DUP5 DUP5 PUSH2 0xE0B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x82F DUP9 DUP11 DUP10 DUP10 PUSH2 0xAE6 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x83A JUMPI INVALID JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT DUP1 ISZERO PUSH2 0x867 JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT JUMPDEST PUSH2 0x870 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6D9 DUP4 DUP6 DUP5 PUSH2 0xCE6 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x893 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x8A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x8B7 DUP6 DUP6 DUP6 DUP6 PUSH2 0xE45 JUMP JUMPDEST SWAP1 POP DUP2 ISZERO PUSH2 0x8DB JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4A5 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x4C6 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT DUP1 ISZERO PUSH2 0x919 JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT JUMPDEST PUSH2 0x922 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xF SIGNEXTEND SGT PUSH2 0x932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x93F DUP5 DUP5 DUP5 PUSH2 0xCE6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x94E DUP6 DUP6 DUP6 PUSH2 0xD2D JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x97A JUMPI DUP2 ISZERO PUSH2 0x972 JUMPI INVALID JUMPDEST DUP1 ISZERO PUSH2 0x409 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 SGT PUSH2 0x984 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP2 SGT PUSH2 0x440 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT DUP1 ISZERO PUSH2 0x9B0 JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT JUMPDEST PUSH2 0x9B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9C8 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0xB9A JUMP JUMPDEST SWAP1 POP PUSH2 0x9D7 DUP4 DUP6 DUP5 PUSH1 0x0 PUSH2 0xB9A JUMP JUMPDEST DUP2 EQ PUSH2 0x9DF JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x9EE DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0xB9A JUMP JUMPDEST SWAP1 POP PUSH2 0x555 DUP5 DUP7 DUP6 PUSH1 0x1 PUSH2 0xB9A JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA0B DUP6 DUP6 DUP6 DUP6 PUSH2 0xF31 JUMP JUMPDEST SWAP1 POP DUP2 ISZERO PUSH2 0xA45 JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0xA2F JUMPI INVALID JUMPDEST PUSH2 0xA3C DUP2 DUP7 DUP7 PUSH1 0x0 PUSH2 0xB9A JUMP JUMPDEST DUP4 GT ISZERO PUSH2 0x409 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0xA58 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0xA74 JUMPI INVALID JUMPDEST PUSH2 0xA81 DUP6 DUP3 DUP7 PUSH1 0x0 PUSH2 0xAE6 JUMP JUMPDEST DUP4 GT ISZERO PUSH2 0x440 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0xAA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0xAB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0xACE JUMPI PUSH2 0xAC9 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0xC05 JUMP JUMPDEST PUSH2 0xADB JUMP JUMPDEST PUSH2 0xADB DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0xE45 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0xB06 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP7 SUB DUP2 AND SWAP1 DUP8 AND PUSH2 0xB39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH2 0xB69 JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB5C DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD5C JUMP JUMPDEST DUP2 PUSH2 0xB63 JUMPI INVALID JUMPDEST DIV PUSH2 0xB8F JUMP JUMPDEST PUSH2 0xB8F PUSH2 0xB80 DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE0B JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF7D JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0xBBA JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP2 PUSH2 0xBE2 JUMPI PUSH2 0xAC9 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0xD5C JUMP JUMPDEST PUSH2 0xADB DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0xE0B JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0xC78 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0xC3B JUMPI PUSH2 0xC36 DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0xD5C JUMP JUMPDEST PUSH2 0xC53 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH1 0x60 DUP6 SWAP1 SHL DUP2 PUSH2 0xC51 JUMPI INVALID JUMPDEST DIV JUMPDEST SWAP1 POP PUSH2 0xC70 PUSH2 0xC6B PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP4 PUSH2 0xF88 JUMP JUMPDEST PUSH2 0xF9E JUMP JUMPDEST SWAP2 POP POP PUSH2 0xADE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0xCA6 JUMPI PUSH2 0xCA1 DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0xE0B JUMP JUMPDEST PUSH2 0xCBD JUMP JUMPDEST PUSH2 0xCBD PUSH1 0x60 DUP6 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP8 AND PUSH2 0xF7D JUMP JUMPDEST SWAP1 POP DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0xCD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB SWAP1 POP PUSH2 0xADE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT PUSH2 0xD0C JUMPI PUSH2 0xD07 PUSH2 0xD02 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0xFB9 JUMP JUMPDEST PUSH2 0xD23 JUMP JUMPDEST PUSH2 0xD1F PUSH2 0xD02 DUP6 DUP6 DUP6 PUSH1 0x0 SUB PUSH1 0x0 PUSH2 0xAE6 JUMP JUMPDEST PUSH1 0x0 SUB JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT PUSH2 0xD49 JUMPI PUSH2 0xD07 PUSH2 0xD02 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0xB9A JUMP JUMPDEST PUSH2 0xD1F PUSH2 0xD02 DUP6 DUP6 DUP6 PUSH1 0x0 SUB PUSH1 0x0 PUSH2 0xB9A JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0xD92 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0xD87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0xD26 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0xD9E 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 PUSH1 0x0 PUSH2 0xE18 DUP5 DUP5 DUP5 PUSH2 0xD5C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP1 PUSH2 0xE24 JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD GT ISZERO PUSH2 0xD26 JUMPI PUSH1 0x0 NOT DUP2 LT PUSH2 0xE3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xE53 JUMPI POP DUP4 PUSH2 0xADE JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL PUSH1 0x60 DUP6 SWAP1 SHL AND DUP3 ISZERO PUSH2 0xEEA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0xE8A JUMPI INVALID JUMPDEST DIV EQ ISZERO PUSH2 0xEBB JUMPI DUP2 DUP2 ADD DUP3 DUP2 LT PUSH2 0xEB9 JUMPI PUSH2 0xEAF DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH2 0xE0B JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0xADE JUMP JUMPDEST POP JUMPDEST PUSH2 0xEE1 DUP3 PUSH2 0xEDC DUP8 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP2 PUSH2 0xED5 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0xF88 JUMP JUMPDEST PUSH2 0xF7D JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0xADE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0xF01 JUMPI INVALID JUMPDEST DIV EQ DUP1 ISZERO PUSH2 0xF0E JUMPI POP DUP1 DUP3 GT JUMPDEST PUSH2 0xF17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB PUSH2 0xEAF PUSH2 0xC6B DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 PUSH2 0xE0B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0xF48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0xF5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0xF70 JUMPI PUSH2 0xAC9 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0xE45 JUMP JUMPDEST PUSH2 0xADB DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0xC05 JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xF98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xFB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 LT PUSH2 0xFCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFC 0xD4 PUSH13 0xFDBA2DBA06BBC2B861DF143A7B 0x4E SWAP12 REVERT LOG2 PUSH31 0xCBD6FBE545F909B49AE0E864736F6C63430007060033000000000000000000 ","sourceMap":"189:7645:42:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;762:607;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;762:607:42;;;;-1:-1:-1;;;;;762:607:42;;;;;;;;;;;;;;;;;:::i;:::-;;2684:590;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2684:590:42;;;;-1:-1:-1;;;;;2684:590:42;;;;;;;;;;;;;;;;;:::i;3282:676::-;;;;;;;;;;;;;;;;-1:-1:-1;3282:676:42;;-1:-1:-1;;;;;3282:676:42;;;;;;;;;;;;;;;-1:-1:-1;;;;;3282:676:42;;:::i;7243:588::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7243:588:42;;;;;;;;;;;;;;;;;;;;;;;;:::i;230:524::-;;;;;;;;;;;;;;;;-1:-1:-1;230:524:42;;;;;;;;;;;;:::i;6138:507::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6138:507:42;;;;;;;;;;;;;;;;;;;:::i;4112:819::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4112:819:42;;;;;;;;;;;;;-1:-1:-1;;;;;4112:819:42;;;;;;;;;;;;:::i;5623:507::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5623:507:42;;;;;;;;;;;;;;;;;;;:::i;2090:586::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2090:586:42;;;;-1:-1:-1;;;;;2090:586:42;;;;;;;;;;;;;;;;;:::i;6653:582::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6653:582:42;;;;;;;;;;;;;;;;;;;:::i;4939:676::-;;;;;;;;;;;;;;;;-1:-1:-1;4939:676:42;;-1:-1:-1;;;;;4939:676:42;;;;;;;;;;;;;;;-1:-1:-1;;;;;4939:676:42;;:::i;1377:705::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1377:705:42;;;;-1:-1:-1;;;;;1377:705:42;;;;;;;;;;;;;;;;;:::i;762:607::-;944:13;960:79;1000:5;1007:9;1018:8;1028:10;960:39;:79::i;:::-;944:95;;1056:10;1052:310;;;1099:5;-1:-1:-1;;;;;1090:14:42;:5;-1:-1:-1;;;;;1090:14:42;;;1083:22;;;;1139:60;1169:5;1176;1183:9;1194:4;1139:29;:60::i;:::-;1127:8;:72;;1120:80;;;;1052:310;;;1249:5;-1:-1:-1;;;;;1240:14:42;:5;-1:-1:-1;;;;;1240:14:42;;;1233:22;;;;1289:60;1319:5;1326;1333:9;1344:4;1289:29;:60::i;:::-;1277:8;:72;;1270:80;;;;762:607;;;;;:::o;2684:590::-;2893:1;2882:8;-1:-1:-1;;;;;2882:12:42;;2874:21;;;;;;2926:1;2914:9;-1:-1:-1;;;;;2914:13:42;;2906:22;;;;;;2939:16;2958:87;3012:8;3022:9;3033:6;3041:3;2958:53;:87::i;:::-;2939:106;;3062:3;3058:125;;;3101:8;-1:-1:-1;;;;;3089:20:42;:8;-1:-1:-1;;;;;3089:20:42;;;3082:28;;;;3058:125;;;3162:8;-1:-1:-1;;;;;3150:20:42;:8;-1:-1:-1;;;;;3150:20:42;;;3143:28;;;;3199:11;3195:72;;3246:8;-1:-1:-1;;;;;3234:20:42;:8;-1:-1:-1;;;;;3234:20:42;;3227:28;;;3282:676;3441:1;3433:5;-1:-1:-1;;;;;3433:9:42;;:22;;;;;3454:1;3446:5;-1:-1:-1;;;;;3446:9:42;;3433:22;3425:31;;;;;;3469:19;3491:61;3521:5;3528;3535:9;3546:5;3491:29;:61::i;:::-;3469:83;;3585:61;3615:5;3622;3629:9;3640:5;3585:29;:61::i;:::-;3570:11;:76;3563:84;;;;3660:17;3680:60;3710:5;3717;3724:9;3735:4;3680:29;:60::i;:::-;3660:80;;3771:60;3801:5;3808;3815:9;3826:4;3771:29;:60::i;:::-;3758:9;:73;3751:81;;;;3867:9;3852:11;:24;;3845:32;;;;3948:1;3934:11;3922:9;:23;:27;3915:35;;;7243:588;7442:1;7430:9;-1:-1:-1;;;;;7430:13:42;;7422:22;;;;;;7475:9;-1:-1:-1;;;;;7463:21:42;:9;-1:-1:-1;;;;;7463:21:42;;7455:30;;;;;;7517:11;-1:-1:-1;;;;;7504:24:42;:9;-1:-1:-1;;;;;7504:24:42;;;:52;;;;;7547:9;-1:-1:-1;;;;;7532:24:42;:11;-1:-1:-1;;;;;7532:24:42;;;7504:52;7496:61;;;;;;7588:1;7576:9;:13;;;7568:22;;;;;;7603:14;7620:64;7650:11;7663:9;7674;7620:29;:64::i;:::-;7603:81;;7695:14;7712:64;7742:9;7753:11;7766:9;7712:29;:64::i;:::-;7695:81;;7806:1;7796:7;:11;:26;;;;7821:1;7811:7;:11;7796:26;7789:34;;;;7243:588;;;;;;:::o;230:524::-;370:1;366;:5;358:14;;;;;;383:20;406:24;422:1;425;428;406:15;:24::i;:::-;383:47;;441:17;461:34;487:1;490;493;461:25;:34::i;:::-;441:54;;526:12;513:9;:25;;506:33;;;;584:1;569:12;557:9;:24;:28;550:36;;;;613:12;601:9;:24;629:1;601:29;597:150;;;672:1;667;654:15;;;;;664:1;661;654:15;:19;647:27;;;597:150;727:1;714:15;;;;;724:1;721;714:15;:20;707:28;;;6138:507;6302:1;6294:5;-1:-1:-1;;;;;6294:9:42;;:22;;;;;6315:1;6307:5;-1:-1:-1;;;;;6307:9:42;;6294:22;6286:31;;;;;;6330:14;6347:54;6377:5;6384;6391:9;6347:29;:54::i;:::-;6330:71;;6428:1;6416:9;:13;;;6412:39;;;6449:1;6438:7;:12;;6431:20;;;;6478:1;6466:9;:13;;;6462:125;;;6509:5;-1:-1:-1;;;;;6500:14:42;:5;-1:-1:-1;;;;;6500:14:42;;6496:79;;;6523:12;;6516:20;;;;6496:79;;;6573:1;6563:7;:11;6556:19;;;;6601:9;:14;;6614:1;6601:14;6597:40;;;6624:12;;6617:20;;;;6138:507;;;;:::o;4112:819::-;4296:5;-1:-1:-1;;;;;4287:14:42;:5;-1:-1:-1;;;;;4287:14:42;;;4279:23;;;;;;4329:1;4321:5;-1:-1:-1;;;;;4321:9:42;;:22;;;;;4342:1;4334:5;-1:-1:-1;;;;;4334:9:42;;4321:22;4313:31;;;;;;4390:5;-1:-1:-1;;;;;4363:32:42;4381:5;-1:-1:-1;;;;;4363:23:42;4372:5;4364;:13;-1:-1:-1;;;;;4363:23:42;;;;;;;-1:-1:-1;;;;;4363:32:42;;4355:41;;;;;;-1:-1:-1;;;316:2:17;4430:45:42;;;;-1:-1:-1;;;;;4507:13:42;;;4486:34;;;4553:14;;;:22;;;;4409:18;4622:7;:161;;4731:52;4747:10;4759;4771:11;4731:15;:52::i;:::-;4622:161;;;4649:62;4675:10;4687;4699:11;4649:25;:62::i;:::-;4588:195;;4794:18;4815:63;4845:5;4852;4859:9;4870:7;4815:29;:63::i;:::-;4794:84;;4912:10;4898;:24;4891:32;;;;4112:819;;;;;;;;;:::o;5623:507::-;5787:1;5779:5;-1:-1:-1;;;;;5779:9:42;;:22;;;;;5800:1;5792:5;-1:-1:-1;;;;;5792:9:42;;5779:22;5771:31;;;;;;5815:14;5832:54;5862:5;5869;5876:9;5832:29;:54::i;2090:586::-;2297:1;2286:8;-1:-1:-1;;;;;2286:12:42;;2278:21;;;;;;2330:1;2318:9;-1:-1:-1;;;;;2318:13:42;;2310:22;;;;;;2343:16;2362:85;2414:8;2424:9;2435:6;2443:3;2362:51;:85::i;:::-;2343:104;;2464:3;2460:125;;;2503:8;-1:-1:-1;;;;;2491:20:42;:8;-1:-1:-1;;;;;2491:20:42;;;2484:28;;;2460:125;2564:8;-1:-1:-1;;;;;2552:20:42;:8;-1:-1:-1;;;;;2552:20:42;;;2545:28;;;6653:582;6813:1;6805:5;-1:-1:-1;;;;;6805:9:42;;:22;;;;;6826:1;6818:5;-1:-1:-1;;;;;6818:9:42;;6805:22;6797:31;;;;;;6859:1;6847:9;:13;;;6839:22;;;;;;6874:14;6891:54;6921:5;6928;6935:9;6891:29;:54::i;:::-;6874:71;;6956:14;6973:54;7003:5;7010;7017:9;6973:29;:54::i;:::-;6956:71;;7053:5;-1:-1:-1;;;;;7044:14:42;:5;-1:-1:-1;;;;;7044:14:42;;7040:188;;;7082:12;;7075:20;;;;7117:12;;7110:20;;;7040:188;7180:1;7170:7;:11;7163:19;;;;7214:1;7204:7;:11;7197:19;;;4939:676;5098:1;5090:5;-1:-1:-1;;;;;5090:9:42;;:22;;;;;5111:1;5103:5;-1:-1:-1;;;;;5103:9:42;;5090:22;5082:31;;;;;;5126:19;5148:61;5178:5;5185;5192:9;5203:5;5148:29;:61::i;:::-;5126:83;;5242:61;5272:5;5279;5286:9;5297:5;5242:29;:61::i;:::-;5227:11;:76;5220:84;;;;5317:17;5337:60;5367:5;5374;5381:9;5392:4;5337:29;:60::i;:::-;5317:80;;5428:60;5458:5;5465;5472:9;5483:4;5428:29;:60::i;1377:705::-;1561:13;1577:81;1618:5;1625:9;1636;1647:10;1577:40;:81::i;:::-;1561:97;;1675:10;1671:404;;;1718:5;-1:-1:-1;;;;;1709:14:42;:5;-1:-1:-1;;;;;1709:14:42;;;1702:22;;;;1759:61;1789:5;1796;1803:9;1814:5;1759:29;:61::i;:::-;1746:9;:74;;1739:82;;;1671:404;1869:1;1861:5;-1:-1:-1;;;;;1861:9:42;;1854:17;;;;1960:5;-1:-1:-1;;;;;1951:14:42;:5;-1:-1:-1;;;;;1951:14:42;;;1944:22;;;;2001:61;2031:5;2038;2045:9;2056:5;2001:29;:61::i;:::-;1988:9;:74;;1981:82;;;5338:564:24;5511:16;5559:1;5548:8;-1:-1:-1;;;;;5548:12:24;;5540:21;;;;;;5592:1;5580:9;-1:-1:-1;;;;;5580:13:24;;5572:22;;;;;;5694:10;:200;;5818:76;5858:8;5868:9;5879:8;5889:4;5818:39;:76::i;:::-;5694:200;;;5724:74;5762:8;5772:9;5783:8;5793:4;5724:37;:74::i;:::-;5674:220;;5338:564;;;;;;;:::o;7579:799::-;7749:15;7797:13;-1:-1:-1;;;;;7781:29:24;:13;-1:-1:-1;;;;;7781:29:24;;7777:98;;;7846:13;;7861;7777:98;-1:-1:-1;;;316:2:17;7909:45:24;;;;-1:-1:-1;;;;;7986:29:24;;;7965:50;;;8036:17;;8028:26;;;;;;8087:7;:283;;8357:13;-1:-1:-1;;;;;8300:70:24;:54;8316:10;8328;8340:13;-1:-1:-1;;;;;8300:54:24;:15;:54::i;:::-;:70;;;;;;8087:283;;;8114:166;8161:64;8187:10;8199;8211:13;-1:-1:-1;;;;;8161:64:24;:25;:64::i;:::-;8248:13;-1:-1:-1;;;;;8114:166:24;:24;:166::i;:::-;8067:303;7579:799;-1:-1:-1;;;;;;;7579:799:24:o;8842:544::-;9012:15;9060:13;-1:-1:-1;;;;;9044:29:24;:13;-1:-1:-1;;;;;9044:29:24;;9040:98;;;9109:13;;9124;9040:98;9171:7;:207;;9303:75;9319:9;-1:-1:-1;;;;;9303:75:24;9346:13;9330;:29;-1:-1:-1;;;;;9303:75:24;-1:-1:-1;;;9303:15:24;:75::i;9171:207::-;9198:85;9224:9;-1:-1:-1;;;;;9198:85:24;9251:13;9235;:29;-1:-1:-1;;;;;9198:85:24;-1:-1:-1;;;9198:25:24;:85::i;3664:1116::-;3842:7;4022:3;4018:755;;;4042:16;-1:-1:-1;;;;;4080:27:24;;;:174;;4202:52;4218:6;-1:-1:-1;;;4244:9:24;-1:-1:-1;;;;;4202:52:24;:15;:52::i;:::-;4080:174;;;-1:-1:-1;;;;;4131:47:24;;316:2:17;4132:33:24;;;4131:47;;;;;;4080:174;4042:227;-1:-1:-1;4293:43:24;:31;-1:-1:-1;;;;;4293:17:24;;4042:227;4293:21;:31::i;:::-;:41;:43::i;:::-;4286:50;;;;;4018:755;4369:16;-1:-1:-1;;;;;4407:27:24;;;:207;;4552:62;4578:6;-1:-1:-1;;;4604:9:24;-1:-1:-1;;;;;4552:62:24;:25;:62::i;:::-;4407:207;;;4458:70;316:2:17;4483:33:24;;;-1:-1:-1;;;;;4458:70:24;;:24;:70::i;:::-;4369:260;;4665:8;4654;-1:-1:-1;;;;;4654:19:24;;4646:28;;;;;;-1:-1:-1;;;;;4741:19:24;;;;-1:-1:-1;4726:35:24;;9737:421;9883:14;9942:1;9930:9;:13;;;:220;;10068:82;:71;10084:13;10099;10122:9;10134:4;10068:15;:71::i;:::-;:80;:82::i;:::-;9930:220;;;9964:84;:73;9980:13;9995;10019:9;10018:10;;10031:5;9964:15;:73::i;:84::-;9963:85;;9930:220;9910:240;;9737:421;;;;;;:::o;10509:::-;10655:14;10714:1;10702:9;:13;;;:220;;10840:82;:71;10856:13;10871;10894:9;10906:4;10840:15;:71::i;10702:220::-;10736:84;:73;10752:13;10767;10791:9;10790:10;;10803:5;10736:15;:73::i;762:3868:18:-;878:14;;;-1:-1:-1;;1394:1:18;1391;1384:20;1427:9;;;;-1:-1:-1;1479:13:18;;;1463:14;;;;1459:34;;-1:-1:-1;1579:10:18;1575:185;;1628:1;1614:11;:15;1606:24;;;;;;-1:-1:-1;1683:23:18;;;;-1:-1:-1;1735:13:18;;1575:185;1891:5;1877:11;:19;1869:28;;;;;;2182:17;2260:11;2257:1;2254;2247:25;2623:12;2638;;;:26;;2761:22;;;;;3584:1;3565;:15;;3564:21;;3815:17;;;3811:21;;3804:28;3874:17;;;3870:21;;3863:28;3934:17;;;3930:21;;3923:28;3994:17;;;3990:21;;3983:28;4054:17;;;4050:21;;4043:28;4115:17;;;4111:21;;;4104:28;3144:12;;;;3140:23;;;3165:1;3136:31;2393:20;;;2382:32;;;3197:12;;;;2437:21;;;;2894:16;;;;3188:21;;;;4587:11;;;;;-1:-1:-1;;762:3868:18;;;;;:::o;4919:325::-;5045:14;5081:25;5088:1;5091;5094:11;5081:6;:25::i;:::-;5072:34;;5149:1;5134:11;5121:25;;;;;5131:1;5128;5121:25;:29;5117:120;;;-1:-1:-1;;5175:6:18;:26;5167:35;;;;;;5217:8;;4919:325;;;;;:::o;1432:1394:24:-;1608:7;1745:11;1741:32;;-1:-1:-1;1765:8:24;1758:15;;1741:32;-1:-1:-1;;;316:2:17;1805:45:24;;;;1863:956;;;;-1:-1:-1;;;;;1921:50:24;;1932:17;;;;1953:6;1932:17;1953:6;1921:38;;;;;:50;1917:328;;;2014:20;;;2057:25;;;2053:176;;2168:60;2194:10;2206:8;-1:-1:-1;;;;;2168:60:24;2216:11;2168:25;:60::i;:::-;2153:76;;;;;;;2053:176;1917:328;;2276:73;2301:10;2313:35;2341:6;2327:8;-1:-1:-1;;;;;2314:21:24;:10;:21;;;;;;;2313:27;:35::i;:::-;2276:24;:73::i;:::-;2261:89;;;;;;1863:956;-1:-1:-1;;;;;2581:50:24;;2592:17;;;;2613:6;2592:17;2613:6;2581:38;;;;;:50;:74;;;;;2648:7;2635:10;:20;2581:74;2573:83;;;;;;2693:20;;;2735:72;:60;2693:10;-1:-1:-1;;;;;2735:60:24;;2693:20;2735:25;:60::i;6457:564::-;6632:16;6680:1;6669:8;-1:-1:-1;;;;;6669:12:24;;6661:21;;;;;;6713:1;6701:9;-1:-1:-1;;;;;6701:13:24;;6693:22;;;;;;6809:10;:204;;6937:76;6975:8;6985:9;6996;7007:5;6937:37;:76::i;6809:204::-;6839:78;6879:8;6889:9;6900;6911:5;6839:39;:78::i;503:169:30:-;626:9;;;640;;637:16;;622:32;;602:63::o;445:113:20:-;538:5;;;533:16;;;;525:25;;;;;;445:113;;;;:::o;366::23:-;469:1;-1:-1:-1;;;;;449:21:23;;;;441:30;;;;;;366:113;;;:::o;947:124::-;999:8;-1:-1:-1;;;1028:1:23;:10;1020:19;;;;;;-1:-1:-1;1061:1:23;947:124::o"},"methodIdentifiers":{"getAmount0DeltaEquivalency(uint160,uint160,uint128,bool)":"8e13a4b9","getAmount0DeltaInvariants(uint160,uint160,uint128)":"3001e65e","getAmount0DeltaSignedInvariants(uint160,uint160,int128)":"b29f199e","getAmount1DeltaInvariants(uint160,uint160,uint128)":"c8569d88","getAmount1DeltaSignedInvariants(uint160,uint160,int128)":"6e6238d7","getInRangeMintInvariants(uint160,uint160,uint160,int128)":"39933d51","getNextSqrtPriceFromAmount0RoundingUpInvariants(uint160,uint128,uint256,bool)":"b46e6714","getNextSqrtPriceFromAmount1RoundingDownInvariants(uint160,uint128,uint256,bool)":"21e14f8b","getNextSqrtPriceFromInputInvariants(uint160,uint128,uint256,bool)":"1faf4a39","getNextSqrtPriceFromOutputInvariants(uint160,uint128,uint256,bool)":"f157fb50","getOutOfRangeMintInvariants(uint160,uint160,int128)":"b712c47c","mulDivRoundingUpInvariants(uint256,uint256,uint256)":"3d729147"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtP\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtQ\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"roundUp\",\"type\":\"bool\"}],\"name\":\"getAmount0DeltaEquivalency\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtP\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtQ\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"name\":\"getAmount0DeltaInvariants\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtP\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtQ\",\"type\":\"uint160\"},{\"internalType\":\"int128\",\"name\":\"liquidity\",\"type\":\"int128\"}],\"name\":\"getAmount0DeltaSignedInvariants\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtP\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtQ\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"name\":\"getAmount1DeltaInvariants\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtP\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtQ\",\"type\":\"uint160\"},{\"internalType\":\"int128\",\"name\":\"liquidity\",\"type\":\"int128\"}],\"name\":\"getAmount1DeltaSignedInvariants\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtLower\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtCurrent\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtUpper\",\"type\":\"uint160\"},{\"internalType\":\"int128\",\"name\":\"liquidity\",\"type\":\"int128\"}],\"name\":\"getInRangeMintInvariants\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPX96\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"add\",\"type\":\"bool\"}],\"name\":\"getNextSqrtPriceFromAmount0RoundingUpInvariants\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPX96\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"add\",\"type\":\"bool\"}],\"name\":\"getNextSqrtPriceFromAmount1RoundingDownInvariants\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtP\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"}],\"name\":\"getNextSqrtPriceFromInputInvariants\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtP\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"}],\"name\":\"getNextSqrtPriceFromOutputInvariants\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtA\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtB\",\"type\":\"uint160\"},{\"internalType\":\"int128\",\"name\":\"liquidity\",\"type\":\"int128\"}],\"name\":\"getOutOfRangeMintInvariants\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"z\",\"type\":\"uint256\"}],\"name\":\"mulDivRoundingUpInvariants\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/SqrtPriceMathEchidnaTest.sol\":\"SqrtPriceMathEchidnaTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]},\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]},\"contracts/elixir-core/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0x2c9f7a00da077c5f777cd8a47711257952b2748b0fe7c188fa990b279940d78a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0a6b8809b92e411169924b7b355ebff8fac6e4e8b389318ff331d3220f02ec92\",\"dweb:/ipfs/QmZVMTo4zNPT4Rge5u3KTNr16XR7CqG1AupW3aybHty6N5\"]},\"contracts/elixir-core/libraries/UnsafeMath.sol\":{\"keccak256\":\"0x3c829e89e91323d9c3e0f15272baa9aa1d28291e7633ee4f1414774e6eca0a7d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f99f38de11092e98d43f1d14061fcfa7309a80ae93d2b7af99c9256c97312c23\",\"dweb:/ipfs/QmQXXUR1PhKUFVZXwwekW23YE9Zy7r3GvdtcDyc2nNTpSb\"]},\"contracts/elixir-core/test/SqrtPriceMathEchidnaTest.sol\":{\"keccak256\":\"0x8268d7823029c53c7b305f7e979e618777a57f69a35aa0fd418fbb3ad5689fe9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f76b1351dc8b17dd5e75598b364f712fd300a125f78a426bf7e4e28e9aad2665\",\"dweb:/ipfs/QmNhkwBWZUqKtNYhapRDmTmMDQB69DEQdUNWuT5q2UcQRC\"]}},\"version\":1}"}},"contracts/elixir-core/test/SqrtPriceMathTest.sol":{"SqrtPriceMathTest":{"abi":[{"inputs":[{"internalType":"uint160","name":"sqrtLower","type":"uint160"},{"internalType":"uint160","name":"sqrtUpper","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"bool","name":"roundUp","type":"bool"}],"name":"getAmount0Delta","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtLower","type":"uint160"},{"internalType":"uint160","name":"sqrtUpper","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"bool","name":"roundUp","type":"bool"}],"name":"getAmount1Delta","outputs":[{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtLower","type":"uint160"},{"internalType":"uint160","name":"sqrtUpper","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"bool","name":"roundUp","type":"bool"}],"name":"getGasCostOfGetAmount0Delta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtLower","type":"uint160"},{"internalType":"uint160","name":"sqrtUpper","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"bool","name":"roundUp","type":"bool"}],"name":"getGasCostOfGetAmount1Delta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtP","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"bool","name":"zeroForOne","type":"bool"}],"name":"getGasCostOfGetNextSqrtPriceFromInput","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtP","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"bool","name":"zeroForOne","type":"bool"}],"name":"getGasCostOfGetNextSqrtPriceFromOutput","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtP","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"bool","name":"zeroForOne","type":"bool"}],"name":"getNextSqrtPriceFromInput","outputs":[{"internalType":"uint160","name":"sqrtQ","type":"uint160"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtP","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"bool","name":"zeroForOne","type":"bool"}],"name":"getNextSqrtPriceFromOutput","outputs":[{"internalType":"uint160","name":"sqrtQ","type":"uint160"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061086e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063af955e3b1161005b578063af955e3b146101cf578063d7cdaf7114610216578063e20f7ac01461025d578063fedf2b5f146102a057610088565b8063034d21e41461008d5780632c32d4b6146100e257806348a0c5bd14610129578063aa58276a14610170575b600080fd5b6100d0600480360360808110156100a357600080fd5b506001600160a01b03813516906001600160801b03602082013516906040810135906060013515156102e3565b60408051918252519081900360200190f35b6100d0600480360360808110156100f857600080fd5b506001600160a01b0381358116916020810135909116906001600160801b0360408201351690606001351515610304565b6100d06004803603608081101561013f57600080fd5b506001600160a01b0381358116916020810135909116906001600160801b036040820135169060600135151561031b565b6101b36004803603608081101561018657600080fd5b506001600160a01b03813516906001600160801b0360208201351690604081013590606001351515610329565b604080516001600160a01b039092168252519081900360200190f35b6100d0600480360360808110156101e557600080fd5b506001600160a01b0381358116916020810135909116906001600160801b0360408201351690606001351515610337565b6100d06004803603608081101561022c57600080fd5b506001600160a01b0381358116916020810135909116906001600160801b0360408201351690606001351515610349565b6100d06004803603608081101561027357600080fd5b506001600160a01b03813516906001600160801b036020820135169060408101359060600135151561035b565b6101b3600480360360808110156102b657600080fd5b506001600160a01b03813516906001600160801b036020820135169060408101359060600135151561036d565b6000805a90506102f58686868661037b565b505a900390505b949350505050565b6000610312858585856103cc565b95945050505050565b600061031285858585610489565b60006103128585858561037b565b6000805a90506102f586868686610489565b6000805a90506102f5868686866103cc565b6000805a90506102f5868686866104f4565b6000610312858585856104f4565b600080856001600160a01b03161161039257600080fd5b6000846001600160801b0316116103a857600080fd5b816103bf576103ba858585600161053c565b610312565b610312858585600161061d565b6000836001600160a01b0316856001600160a01b031611156103ec579293925b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b166001600160a01b03868603811690871661042857600080fd5b8361045857866001600160a01b031661044b8383896001600160a01b0316610712565b8161045257fe5b0461047e565b61047e61046f8383896001600160a01b03166107c2565b886001600160a01b03166107fc565b979650505050505050565b6000836001600160a01b0316856001600160a01b031611156104a9579293925b816104d1576103ba836001600160801b03168686036001600160a01b0316600160601b610712565b610312836001600160801b03168686036001600160a01b0316600160601b6107c2565b600080856001600160a01b03161161050b57600080fd5b6000846001600160801b03161161052157600080fd5b81610533576103ba858585600061061d565b61031285858560005b600081156105af5760006001600160a01b038411156105725761056d84600160601b876001600160801b0316610712565b61058a565b6001600160801b038516606085901b8161058857fe5b045b90506105a76105a26001600160a01b03881683610807565b61081d565b9150506102fc565b60006001600160a01b038411156105dd576105d884600160601b876001600160801b03166107c2565b6105f4565b6105f4606085901b6001600160801b0387166107fc565b905080866001600160a01b03161161060b57600080fd5b6001600160a01b0386160390506102fc565b60008261062b5750836102fc565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b1682156106cb576001600160a01b0386168481029085828161066b57fe5b04141561069c5781810182811061069a5761069083896001600160a01b0316836107c2565b93505050506102fc565b505b6106c2826106bd878a6001600160a01b031686816106b657fe5b0490610807565b6107fc565b925050506102fc565b6001600160a01b038616848102908582816106e257fe5b041480156106ef57508082115b6106f857600080fd5b8082036106906105a2846001600160a01b038b16846107c2565b6000808060001985870986860292508281109083900303905080610748576000841161073d57600080fd5b5082900490506107bb565b80841161075457600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60006107cf848484610712565b9050600082806107db57fe5b84860911156107bb5760001981106107f257600080fd5b6001019392505050565b808204910615150190565b8082018281101561081757600080fd5b92915050565b806001600160a01b038116811461083357600080fd5b91905056fea264697066735822122030c1b78cae47040abc9a55f5d108307fc827763bf672d8bf3ed4009eb70fc96e64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x86E 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 0xAF955E3B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAF955E3B EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0xD7CDAF71 EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0xE20F7AC0 EQ PUSH2 0x25D JUMPI DUP1 PUSH4 0xFEDF2B5F EQ PUSH2 0x2A0 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x34D21E4 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x2C32D4B6 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x48A0C5BD EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0xAA58276A EQ PUSH2 0x170 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x2E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x304 JUMP JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x31B JUMP JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x329 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x337 JUMP JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x349 JUMP JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x273 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x35B JUMP JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x36D JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x2F5 DUP7 DUP7 DUP7 DUP7 PUSH2 0x37B JUMP JUMPDEST POP GAS SWAP1 SUB SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x312 DUP6 DUP6 DUP6 DUP6 PUSH2 0x3CC JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x312 DUP6 DUP6 DUP6 DUP6 PUSH2 0x489 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x312 DUP6 DUP6 DUP6 DUP6 PUSH2 0x37B JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x2F5 DUP7 DUP7 DUP7 DUP7 PUSH2 0x489 JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x2F5 DUP7 DUP7 DUP7 DUP7 PUSH2 0x3CC JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x2F5 DUP7 DUP7 DUP7 DUP7 PUSH2 0x4F4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x312 DUP6 DUP6 DUP6 DUP6 PUSH2 0x4F4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x392 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x3BF JUMPI PUSH2 0x3BA DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x53C JUMP JUMPDEST PUSH2 0x312 JUMP JUMPDEST PUSH2 0x312 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x61D JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x3EC JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP7 SUB DUP2 AND SWAP1 DUP8 AND PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH2 0x458 JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44B DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x712 JUMP JUMPDEST DUP2 PUSH2 0x452 JUMPI INVALID JUMPDEST DIV PUSH2 0x47E JUMP JUMPDEST PUSH2 0x47E PUSH2 0x46F DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7C2 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7FC JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4A9 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP2 PUSH2 0x4D1 JUMPI PUSH2 0x3BA DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x712 JUMP JUMPDEST PUSH2 0x312 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x7C2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x533 JUMPI PUSH2 0x3BA DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x61D JUMP JUMPDEST PUSH2 0x312 DUP6 DUP6 DUP6 PUSH1 0x0 JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x5AF JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x572 JUMPI PUSH2 0x56D DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x712 JUMP JUMPDEST PUSH2 0x58A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH1 0x60 DUP6 SWAP1 SHL DUP2 PUSH2 0x588 JUMPI INVALID JUMPDEST DIV JUMPDEST SWAP1 POP PUSH2 0x5A7 PUSH2 0x5A2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP4 PUSH2 0x807 JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x5DD JUMPI PUSH2 0x5D8 DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x7C2 JUMP JUMPDEST PUSH2 0x5F4 JUMP JUMPDEST PUSH2 0x5F4 PUSH1 0x60 DUP6 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP8 AND PUSH2 0x7FC JUMP JUMPDEST SWAP1 POP DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB SWAP1 POP PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x62B JUMPI POP DUP4 PUSH2 0x2FC JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND DUP3 ISZERO PUSH2 0x6CB JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x66B JUMPI INVALID JUMPDEST DIV EQ ISZERO PUSH2 0x69C JUMPI DUP2 DUP2 ADD DUP3 DUP2 LT PUSH2 0x69A JUMPI PUSH2 0x690 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH2 0x7C2 JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x2FC JUMP JUMPDEST POP JUMPDEST PUSH2 0x6C2 DUP3 PUSH2 0x6BD DUP8 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP2 PUSH2 0x6B6 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x807 JUMP JUMPDEST PUSH2 0x7FC JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x6E2 JUMPI INVALID JUMPDEST DIV EQ DUP1 ISZERO PUSH2 0x6EF JUMPI POP DUP1 DUP3 GT JUMPDEST PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB PUSH2 0x690 PUSH2 0x5A2 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 PUSH2 0x7C2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x748 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x73D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x7BB JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x754 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 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7CF DUP5 DUP5 DUP5 PUSH2 0x712 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP1 PUSH2 0x7DB JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD GT ISZERO PUSH2 0x7BB JUMPI PUSH1 0x0 NOT DUP2 LT PUSH2 0x7F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x817 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x833 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDRESS 0xC1 0xB7 DUP13 0xAE SELFBALANCE DIV EXP 0xBC SWAP11 SSTORE CREATE2 0xD1 ADDMOD ADDRESS PUSH32 0xC827763BF672D8BF3ED4009EB70FC96E64736F6C634300070600330000000000 ","sourceMap":"111:2673:43:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c8063af955e3b1161005b578063af955e3b146101cf578063d7cdaf7114610216578063e20f7ac01461025d578063fedf2b5f146102a057610088565b8063034d21e41461008d5780632c32d4b6146100e257806348a0c5bd14610129578063aa58276a14610170575b600080fd5b6100d0600480360360808110156100a357600080fd5b506001600160a01b03813516906001600160801b03602082013516906040810135906060013515156102e3565b60408051918252519081900360200190f35b6100d0600480360360808110156100f857600080fd5b506001600160a01b0381358116916020810135909116906001600160801b0360408201351690606001351515610304565b6100d06004803603608081101561013f57600080fd5b506001600160a01b0381358116916020810135909116906001600160801b036040820135169060600135151561031b565b6101b36004803603608081101561018657600080fd5b506001600160a01b03813516906001600160801b0360208201351690604081013590606001351515610329565b604080516001600160a01b039092168252519081900360200190f35b6100d0600480360360808110156101e557600080fd5b506001600160a01b0381358116916020810135909116906001600160801b0360408201351690606001351515610337565b6100d06004803603608081101561022c57600080fd5b506001600160a01b0381358116916020810135909116906001600160801b0360408201351690606001351515610349565b6100d06004803603608081101561027357600080fd5b506001600160a01b03813516906001600160801b036020820135169060408101359060600135151561035b565b6101b3600480360360808110156102b657600080fd5b506001600160a01b03813516906001600160801b036020820135169060408101359060600135151561036d565b6000805a90506102f58686868661037b565b505a900390505b949350505050565b6000610312858585856103cc565b95945050505050565b600061031285858585610489565b60006103128585858561037b565b6000805a90506102f586868686610489565b6000805a90506102f5868686866103cc565b6000805a90506102f5868686866104f4565b6000610312858585856104f4565b600080856001600160a01b03161161039257600080fd5b6000846001600160801b0316116103a857600080fd5b816103bf576103ba858585600161053c565b610312565b610312858585600161061d565b6000836001600160a01b0316856001600160a01b031611156103ec579293925b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b166001600160a01b03868603811690871661042857600080fd5b8361045857866001600160a01b031661044b8383896001600160a01b0316610712565b8161045257fe5b0461047e565b61047e61046f8383896001600160a01b03166107c2565b886001600160a01b03166107fc565b979650505050505050565b6000836001600160a01b0316856001600160a01b031611156104a9579293925b816104d1576103ba836001600160801b03168686036001600160a01b0316600160601b610712565b610312836001600160801b03168686036001600160a01b0316600160601b6107c2565b600080856001600160a01b03161161050b57600080fd5b6000846001600160801b03161161052157600080fd5b81610533576103ba858585600061061d565b61031285858560005b600081156105af5760006001600160a01b038411156105725761056d84600160601b876001600160801b0316610712565b61058a565b6001600160801b038516606085901b8161058857fe5b045b90506105a76105a26001600160a01b03881683610807565b61081d565b9150506102fc565b60006001600160a01b038411156105dd576105d884600160601b876001600160801b03166107c2565b6105f4565b6105f4606085901b6001600160801b0387166107fc565b905080866001600160a01b03161161060b57600080fd5b6001600160a01b0386160390506102fc565b60008261062b5750836102fc565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b1682156106cb576001600160a01b0386168481029085828161066b57fe5b04141561069c5781810182811061069a5761069083896001600160a01b0316836107c2565b93505050506102fc565b505b6106c2826106bd878a6001600160a01b031686816106b657fe5b0490610807565b6107fc565b925050506102fc565b6001600160a01b038616848102908582816106e257fe5b041480156106ef57508082115b6106f857600080fd5b8082036106906105a2846001600160a01b038b16846107c2565b6000808060001985870986860292508281109083900303905080610748576000841161073d57600080fd5b5082900490506107bb565b80841161075457600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60006107cf848484610712565b9050600082806107db57fe5b84860911156107bb5760001981106107f257600080fd5b6001019392505050565b808204910615150190565b8082018281101561081757600080fd5b92915050565b806001600160a01b038116811461083357600080fd5b91905056fea264697066735822122030c1b78cae47040abc9a55f5d108307fc827763bf672d8bf3ed4009eb70fc96e64736f6c63430007060033","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 0xAF955E3B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAF955E3B EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0xD7CDAF71 EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0xE20F7AC0 EQ PUSH2 0x25D JUMPI DUP1 PUSH4 0xFEDF2B5F EQ PUSH2 0x2A0 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x34D21E4 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x2C32D4B6 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x48A0C5BD EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0xAA58276A EQ PUSH2 0x170 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x2E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x304 JUMP JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x31B JUMP JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x329 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x337 JUMP JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x349 JUMP JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x273 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x35B JUMP JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x36D JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x2F5 DUP7 DUP7 DUP7 DUP7 PUSH2 0x37B JUMP JUMPDEST POP GAS SWAP1 SUB SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x312 DUP6 DUP6 DUP6 DUP6 PUSH2 0x3CC JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x312 DUP6 DUP6 DUP6 DUP6 PUSH2 0x489 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x312 DUP6 DUP6 DUP6 DUP6 PUSH2 0x37B JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x2F5 DUP7 DUP7 DUP7 DUP7 PUSH2 0x489 JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x2F5 DUP7 DUP7 DUP7 DUP7 PUSH2 0x3CC JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x2F5 DUP7 DUP7 DUP7 DUP7 PUSH2 0x4F4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x312 DUP6 DUP6 DUP6 DUP6 PUSH2 0x4F4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x392 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x3BF JUMPI PUSH2 0x3BA DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x53C JUMP JUMPDEST PUSH2 0x312 JUMP JUMPDEST PUSH2 0x312 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x61D JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x3EC JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP7 SUB DUP2 AND SWAP1 DUP8 AND PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH2 0x458 JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44B DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x712 JUMP JUMPDEST DUP2 PUSH2 0x452 JUMPI INVALID JUMPDEST DIV PUSH2 0x47E JUMP JUMPDEST PUSH2 0x47E PUSH2 0x46F DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7C2 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7FC JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4A9 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP2 PUSH2 0x4D1 JUMPI PUSH2 0x3BA DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x712 JUMP JUMPDEST PUSH2 0x312 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x7C2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x533 JUMPI PUSH2 0x3BA DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x61D JUMP JUMPDEST PUSH2 0x312 DUP6 DUP6 DUP6 PUSH1 0x0 JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x5AF JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x572 JUMPI PUSH2 0x56D DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x712 JUMP JUMPDEST PUSH2 0x58A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH1 0x60 DUP6 SWAP1 SHL DUP2 PUSH2 0x588 JUMPI INVALID JUMPDEST DIV JUMPDEST SWAP1 POP PUSH2 0x5A7 PUSH2 0x5A2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP4 PUSH2 0x807 JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x5DD JUMPI PUSH2 0x5D8 DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x7C2 JUMP JUMPDEST PUSH2 0x5F4 JUMP JUMPDEST PUSH2 0x5F4 PUSH1 0x60 DUP6 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP8 AND PUSH2 0x7FC JUMP JUMPDEST SWAP1 POP DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB SWAP1 POP PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x62B JUMPI POP DUP4 PUSH2 0x2FC JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND DUP3 ISZERO PUSH2 0x6CB JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x66B JUMPI INVALID JUMPDEST DIV EQ ISZERO PUSH2 0x69C JUMPI DUP2 DUP2 ADD DUP3 DUP2 LT PUSH2 0x69A JUMPI PUSH2 0x690 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH2 0x7C2 JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x2FC JUMP JUMPDEST POP JUMPDEST PUSH2 0x6C2 DUP3 PUSH2 0x6BD DUP8 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP2 PUSH2 0x6B6 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x807 JUMP JUMPDEST PUSH2 0x7FC JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x6E2 JUMPI INVALID JUMPDEST DIV EQ DUP1 ISZERO PUSH2 0x6EF JUMPI POP DUP1 DUP3 GT JUMPDEST PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB PUSH2 0x690 PUSH2 0x5A2 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 PUSH2 0x7C2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x748 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x73D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x7BB JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x754 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 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7CF DUP5 DUP5 DUP5 PUSH2 0x712 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP1 PUSH2 0x7DB JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD GT ISZERO PUSH2 0x7BB JUMPI PUSH1 0x0 NOT DUP2 LT PUSH2 0x7F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x817 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x833 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDRESS 0xC1 0xB7 DUP13 0xAE SELFBALANCE DIV EXP 0xBC SWAP11 SSTORE CREATE2 0xD1 ADDMOD ADDRESS PUSH32 0xC827763BF672D8BF3ED4009EB70FC96E64736F6C634300070600330000000000 ","sourceMap":"111:2673:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;443:368;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;443:368:43;;;;-1:-1:-1;;;;;443:368:43;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1501:276;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1501:276:43;;;;;;;;;;;;;-1:-1:-1;;;;;1501:276:43;;;;;;;;;;;;:::i;1785:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1785:276:43;;;;;;;;;;;;;-1:-1:-1;;;;;1785:276:43;;;;;;;;;;;;:::i;145:290::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;145:290:43;;;;-1:-1:-1;;;;;145:290:43;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;145:290:43;;;;;;;;;;;;;;2429:352;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2429:352:43;;;;;;;;;;;;;-1:-1:-1;;;;;2429:352:43;;;;;;;;;;;;:::i;2069:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2069:352:43;;;;;;;;;;;;;-1:-1:-1;;;;;2069:352:43;;;;;;;;;;;;:::i;1121:372::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1121:372:43;;;;-1:-1:-1;;;;;1121:372:43;;;;;;;;;;;;;;;;;:::i;819:294::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;819:294:43;;;;-1:-1:-1;;;;;819:294:43;;;;;;;;;;;;;;;;;:::i;443:368::-;625:7;645:17;665:9;645:29;;685:79;725:5;732:9;743:8;753:10;685:39;:79::i;:::-;;794:9;782:21;;;-1:-1:-1;443:368:43;;;;;;;:::o;1501:276::-;1663:15;1698:71;1728:9;1739;1750;1761:7;1698:29;:71::i;:::-;1691:78;1501:276;-1:-1:-1;;;;;1501:276:43:o;1785:::-;1947:15;1982:71;2012:9;2023;2034;2045:7;1982:29;:71::i;145:290::-;315:13;348:79;388:5;395:9;406:8;416:10;348:39;:79::i;2429:352::-;2603:7;2623:17;2643:9;2623:29;;2663:71;2693:9;2704;2715;2726:7;2663:29;:71::i;2069:352::-;2243:7;2263:17;2283:9;2263:29;;2303:71;2333:9;2344;2355;2366:7;2303:29;:71::i;1121:372::-;1305:7;1325:17;1345:9;1325:29;;1365:81;1406:5;1413:9;1424;1435:10;1365:40;:81::i;819:294::-;991:13;1024:81;1065:5;1072:9;1083;1094:10;1024:40;:81::i;5338:564:24:-;5511:16;5559:1;5548:8;-1:-1:-1;;;;;5548:12:24;;5540:21;;;;;;5592:1;5580:9;-1:-1:-1;;;;;5580:13:24;;5572:22;;;;;;5694:10;:200;;5818:76;5858:8;5868:9;5879:8;5889:4;5818:39;:76::i;:::-;5694:200;;;5724:74;5762:8;5772:9;5783:8;5793:4;5724:37;:74::i;7579:799::-;7749:15;7797:13;-1:-1:-1;;;;;7781:29:24;:13;-1:-1:-1;;;;;7781:29:24;;7777:98;;;7846:13;;7861;7777:98;7909:45;316:2:17;7909:45:24;;;;-1:-1:-1;;;;;7986:29:24;;;7965:50;;;8036:17;;8028:26;;;;;;8087:7;:283;;8357:13;-1:-1:-1;;;;;8300:70:24;:54;8316:10;8328;8340:13;-1:-1:-1;;;;;8300:54:24;:15;:54::i;:::-;:70;;;;;;8087:283;;;8114:166;8161:64;8187:10;8199;8211:13;-1:-1:-1;;;;;8161:64:24;:25;:64::i;:::-;8248:13;-1:-1:-1;;;;;8114:166:24;:24;:166::i;:::-;8067:303;7579:799;-1:-1:-1;;;;;;;7579:799:24:o;8842:544::-;9012:15;9060:13;-1:-1:-1;;;;;9044:29:24;:13;-1:-1:-1;;;;;9044:29:24;;9040:98;;;9109:13;;9124;9040:98;9171:7;:207;;9303:75;9319:9;-1:-1:-1;;;;;9303:75:24;9346:13;9330;:29;-1:-1:-1;;;;;9303:75:24;-1:-1:-1;;;9303:15:24;:75::i;9171:207::-;9198:85;9224:9;-1:-1:-1;;;;;9198:85:24;9251:13;9235;:29;-1:-1:-1;;;;;9198:85:24;-1:-1:-1;;;9198:25:24;:85::i;6457:564::-;6632:16;6680:1;6669:8;-1:-1:-1;;;;;6669:12:24;;6661:21;;;;;;6713:1;6701:9;-1:-1:-1;;;;;6701:13:24;;6693:22;;;;;;6809:10;:204;;6937:76;6975:8;6985:9;6996;7007:5;6937:37;:76::i;6809:204::-;6839:78;6879:8;6889:9;6900;6911:5;3664:1116;3842:7;4022:3;4018:755;;;4042:16;-1:-1:-1;;;;;4080:27:24;;;:174;;4202:52;4218:6;-1:-1:-1;;;4244:9:24;-1:-1:-1;;;;;4202:52:24;:15;:52::i;:::-;4080:174;;;-1:-1:-1;;;;;4131:47:24;;316:2:17;4132:33:24;;;4131:47;;;;;;4080:174;4042:227;-1:-1:-1;4293:43:24;:31;-1:-1:-1;;;;;4293:17:24;;4042:227;4293:21;:31::i;:::-;:41;:43::i;:::-;4286:50;;;;;4018:755;4369:16;-1:-1:-1;;;;;4407:27:24;;;:207;;4552:62;4578:6;-1:-1:-1;;;4604:9:24;-1:-1:-1;;;;;4552:62:24;:25;:62::i;:::-;4407:207;;;4458:70;316:2:17;4483:33:24;;;-1:-1:-1;;;;;4458:70:24;;:24;:70::i;:::-;4369:260;;4665:8;4654;-1:-1:-1;;;;;4654:19:24;;4646:28;;;;;;-1:-1:-1;;;;;4741:19:24;;;;-1:-1:-1;4726:35:24;;1432:1394;1608:7;1745:11;1741:32;;-1:-1:-1;1765:8:24;1758:15;;1741:32;1805:45;316:2:17;1805:45:24;;;;1863:956;;;;-1:-1:-1;;;;;1921:50:24;;1932:17;;;;1953:6;1932:17;1953:6;1921:38;;;;;:50;1917:328;;;2014:20;;;2057:25;;;2053:176;;2168:60;2194:10;2206:8;-1:-1:-1;;;;;2168:60:24;2216:11;2168:25;:60::i;:::-;2153:76;;;;;;;2053:176;1917:328;;2276:73;2301:10;2313:35;2341:6;2327:8;-1:-1:-1;;;;;2314:21:24;:10;:21;;;;;;;2313:27;:35::i;:::-;2276:24;:73::i;:::-;2261:89;;;;;;1863:956;-1:-1:-1;;;;;2581:50:24;;2592:17;;;;2613:6;2592:17;2613:6;2581:38;;;;;:50;:74;;;;;2648:7;2635:10;:20;2581:74;2573:83;;;;;;2693:20;;;2735:72;:60;2693:10;-1:-1:-1;;;;;2735:60:24;;2693:20;2735:25;:60::i;762:3868:18:-;878:14;;;-1:-1:-1;;1394:1:18;1391;1384:20;1427:9;;;;-1:-1:-1;1479:13:18;;;1463:14;;;;1459:34;;-1:-1:-1;1579:10:18;1575:185;;1628:1;1614:11;:15;1606:24;;;;;;-1:-1:-1;1683:23:18;;;;-1:-1:-1;1735:13:18;;1575:185;1891:5;1877:11;:19;1869:28;;;;;;2182:17;2260:11;2257:1;2254;2247:25;2623:12;2638;;;:26;;2761:22;;;;;3584:1;3565;:15;;3564:21;;3815:17;;;3811:21;;3804:28;3874:17;;;3870:21;;3863:28;3934:17;;;3930:21;;3923:28;3994:17;;;3990:21;;3983:28;4054:17;;;4050:21;;4043:28;4115:17;;;4111:21;;;4104:28;3144:12;;;;3140:23;;;3165:1;3136:31;2393:20;;;2382:32;;;3197:12;;;;2437:21;;;;2894:16;;;;3188:21;;;;4587:11;;;;;-1:-1:-1;;762:3868:18;;;;;;:::o;4919:325::-;5045:14;5081:25;5088:1;5091;5094:11;5081:6;:25::i;:::-;5072:34;;5149:1;5134:11;5121:25;;;;;5131:1;5128;5121:25;:29;5117:120;;;-1:-1:-1;;5175:6:18;:26;5167:35;;;;;;5217:8;;4919:325;;;;;:::o;503:169:30:-;626:9;;;640;;637:16;;622:32;;602:63::o;445:113:20:-;538:5;;;533:16;;;;525:25;;;;;;445:113;;;;:::o;366::23:-;469:1;-1:-1:-1;;;;;449:21:23;;;;441:30;;;;;;366:113;;;:::o"},"methodIdentifiers":{"getAmount0Delta(uint160,uint160,uint128,bool)":"2c32d4b6","getAmount1Delta(uint160,uint160,uint128,bool)":"48a0c5bd","getGasCostOfGetAmount0Delta(uint160,uint160,uint128,bool)":"d7cdaf71","getGasCostOfGetAmount1Delta(uint160,uint160,uint128,bool)":"af955e3b","getGasCostOfGetNextSqrtPriceFromInput(uint160,uint128,uint256,bool)":"034d21e4","getGasCostOfGetNextSqrtPriceFromOutput(uint160,uint128,uint256,bool)":"e20f7ac0","getNextSqrtPriceFromInput(uint160,uint128,uint256,bool)":"aa58276a","getNextSqrtPriceFromOutput(uint160,uint128,uint256,bool)":"fedf2b5f"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtLower\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtUpper\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"roundUp\",\"type\":\"bool\"}],\"name\":\"getAmount0Delta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtLower\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtUpper\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"roundUp\",\"type\":\"bool\"}],\"name\":\"getAmount1Delta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtLower\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtUpper\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"roundUp\",\"type\":\"bool\"}],\"name\":\"getGasCostOfGetAmount0Delta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtLower\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtUpper\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"roundUp\",\"type\":\"bool\"}],\"name\":\"getGasCostOfGetAmount1Delta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtP\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"}],\"name\":\"getGasCostOfGetNextSqrtPriceFromInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtP\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"}],\"name\":\"getGasCostOfGetNextSqrtPriceFromOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtP\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"}],\"name\":\"getNextSqrtPriceFromInput\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtQ\",\"type\":\"uint160\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtP\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"}],\"name\":\"getNextSqrtPriceFromOutput\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtQ\",\"type\":\"uint160\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/SqrtPriceMathTest.sol\":\"SqrtPriceMathTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]},\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]},\"contracts/elixir-core/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0x2c9f7a00da077c5f777cd8a47711257952b2748b0fe7c188fa990b279940d78a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0a6b8809b92e411169924b7b355ebff8fac6e4e8b389318ff331d3220f02ec92\",\"dweb:/ipfs/QmZVMTo4zNPT4Rge5u3KTNr16XR7CqG1AupW3aybHty6N5\"]},\"contracts/elixir-core/libraries/UnsafeMath.sol\":{\"keccak256\":\"0x3c829e89e91323d9c3e0f15272baa9aa1d28291e7633ee4f1414774e6eca0a7d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f99f38de11092e98d43f1d14061fcfa7309a80ae93d2b7af99c9256c97312c23\",\"dweb:/ipfs/QmQXXUR1PhKUFVZXwwekW23YE9Zy7r3GvdtcDyc2nNTpSb\"]},\"contracts/elixir-core/test/SqrtPriceMathTest.sol\":{\"keccak256\":\"0x832712afbff59e3052d506d38ccad069d926a74408c0c8a6177fdd947f37596d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f3cd3d67f9a2c0cb3bc428493e5dbd6de209e6d04b7e4db6e9e7a384b7aa666d\",\"dweb:/ipfs/Qmbhz7jDN8b34doa8p7t3FtHYYHFrKGwyu73TvwJgbE6mK\"]}},\"version\":1}"}},"contracts/elixir-core/test/SwapMathEchidnaTest.sol":{"SwapMathEchidnaTest":{"abi":[{"inputs":[{"internalType":"uint160","name":"sqrtPriceRaw","type":"uint160"},{"internalType":"uint160","name":"sqrtPriceTargetRaw","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"int256","name":"amountRemaining","type":"int256"},{"internalType":"uint24","name":"feePips","type":"uint24"}],"name":"checkComputeSwapStepInvariants","outputs":[],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061093d806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063d7e3056f14610030575b600080fd5b610081600480360360a081101561004657600080fd5b5080356001600160a01b039081169160208101359091169060408101356001600160801b0316906060810135906080013562ffffff16610083565b005b6000856001600160a01b03161161009957600080fd5b6000846001600160a01b0316116100af57600080fd5b60008162ffffff16116100c157600080fd5b620f42408162ffffff16106100d557600080fd5b6000806000806100e88989898989610249565b935093509350935080600019038311156100fe57fe5b6000861215610119578560000382111561011457fe5b610125565b85818401111561012557fe5b876001600160a01b0316896001600160a01b0316141561017257821561014757fe5b811561014f57fe5b801561015757fe5b876001600160a01b0316846001600160a01b03161461017257fe5b876001600160a01b0316846001600160a01b0316146101b05760008612156101a5578560000382146101a057fe5b6101b0565b85818401146101b057fe5b886001600160a01b0316886001600160a01b03161161020657886001600160a01b0316846001600160a01b031611156101e557fe5b876001600160a01b0316846001600160a01b0316101561020157fe5b61023e565b886001600160a01b0316846001600160a01b0316101561022257fe5b876001600160a01b0316846001600160a01b0316111561023e57fe5b505050505050505050565b60008080806001600160a01b03808916908a1610158187128015906102ce5760006102828989620f42400362ffffff16620f424061043b565b90508261029b576102968c8c8c60016104eb565b6102a8565b6102a88b8d8c6001610566565b95508581106102b9578a96506102c8565b6102c58c8b8386610623565b96505b50610318565b816102e5576102e08b8b8b6000610566565b6102f2565b6102f28a8c8b60006104eb565b935083886000031061030657899550610318565b6103158b8a8a6000038561066f565b95505b6001600160a01b038a811690871614821561037b578080156103375750815b61034d57610348878d8c6001610566565b61034f565b855b955080801561035c575081155b6103725761036d878d8c60006104eb565b610374565b845b94506103c5565b8080156103855750815b61039b576103968c888c60016104eb565b61039d565b855b95508080156103aa575081155b6103c0576103bb8c888c6000610566565b6103c2565b845b94505b811580156103d557508860000385115b156103e1578860000394505b81801561040057508a6001600160a01b0316876001600160a01b031614155b1561040f57858903935061042c565b610429868962ffffff168a620f42400362ffffff166106bb565b93505b50505095509550955095915050565b6000808060001985870986860292508281109083900303905080610471576000841161046657600080fd5b5082900490506104e4565b80841161047d57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b6000836001600160a01b0316856001600160a01b0316111561050b579293925b8161053857610533836001600160801b03168686036001600160a01b0316600160601b61043b565b61055b565b61055b836001600160801b03168686036001600160a01b0316600160601b6106bb565b90505b949350505050565b6000836001600160a01b0316856001600160a01b03161115610586579293925b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b166001600160a01b0386860381169087166105c257600080fd5b836105f257866001600160a01b03166105e58383896001600160a01b031661043b565b816105ec57fe5b04610618565b6106186106098383896001600160a01b03166106bb565b886001600160a01b03166106f5565b979650505050505050565b600080856001600160a01b03161161063a57600080fd5b6000846001600160801b03161161065057600080fd5b81610662576105338585856001610700565b61055b85858560016107e1565b600080856001600160a01b03161161068657600080fd5b6000846001600160801b03161161069c57600080fd5b816106ae5761053385858560006107e1565b61055b8585856000610700565b60006106c884848461043b565b9050600082806106d457fe5b84860911156104e45760001981106106eb57600080fd5b6001019392505050565b808204910615150190565b600081156107735760006001600160a01b038411156107365761073184600160601b876001600160801b031661043b565b61074e565b6001600160801b038516606085901b8161074c57fe5b045b905061076b6107666001600160a01b038816836108d6565b6108ec565b91505061055e565b60006001600160a01b038411156107a15761079c84600160601b876001600160801b03166106bb565b6107b8565b6107b8606085901b6001600160801b0387166106f5565b905080866001600160a01b0316116107cf57600080fd5b6001600160a01b03861603905061055e565b6000826107ef57508361055e565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b16821561088f576001600160a01b0386168481029085828161082f57fe5b0414156108605781810182811061085e5761085483896001600160a01b0316836106bb565b935050505061055e565b505b61088682610881878a6001600160a01b0316868161087a57fe5b04906108d6565b6106f5565b9250505061055e565b6001600160a01b038616848102908582816108a657fe5b041480156108b357508082115b6108bc57600080fd5b808203610854610766846001600160a01b038b16846106bb565b808201828110156108e657600080fd5b92915050565b806001600160a01b038116811461090257600080fd5b91905056fea2646970667358221220c60cb7c9cb595f0d736dbb709aaa16dc8cfa9557104592f0aee86fcd89602c4364736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93D 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 0xD7E3056F EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x81 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x83 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0xAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH3 0xFFFFFF AND GT PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xF4240 DUP2 PUSH3 0xFFFFFF AND LT PUSH2 0xD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0xE8 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x249 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP1 PUSH1 0x0 NOT SUB DUP4 GT ISZERO PUSH2 0xFE JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 SLT ISZERO PUSH2 0x119 JUMPI DUP6 PUSH1 0x0 SUB DUP3 GT ISZERO PUSH2 0x114 JUMPI INVALID JUMPDEST PUSH2 0x125 JUMP JUMPDEST DUP6 DUP2 DUP5 ADD GT ISZERO PUSH2 0x125 JUMPI INVALID JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x172 JUMPI DUP3 ISZERO PUSH2 0x147 JUMPI INVALID JUMPDEST DUP2 ISZERO PUSH2 0x14F JUMPI INVALID JUMPDEST DUP1 ISZERO PUSH2 0x157 JUMPI INVALID JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x172 JUMPI INVALID JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP7 SLT ISZERO PUSH2 0x1A5 JUMPI DUP6 PUSH1 0x0 SUB DUP3 EQ PUSH2 0x1A0 JUMPI INVALID JUMPDEST PUSH2 0x1B0 JUMP JUMPDEST DUP6 DUP2 DUP5 ADD EQ PUSH2 0x1B0 JUMPI INVALID JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x206 JUMPI DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x1E5 JUMPI INVALID JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x201 JUMPI INVALID JUMPDEST PUSH2 0x23E JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x222 JUMPI INVALID JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x23E JUMPI INVALID JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP1 DUP11 AND LT ISZERO DUP2 DUP8 SLT DUP1 ISZERO SWAP1 PUSH2 0x2CE JUMPI PUSH1 0x0 PUSH2 0x282 DUP10 DUP10 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x43B JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x29B JUMPI PUSH2 0x296 DUP13 DUP13 DUP13 PUSH1 0x1 PUSH2 0x4EB JUMP JUMPDEST PUSH2 0x2A8 JUMP JUMPDEST PUSH2 0x2A8 DUP12 DUP14 DUP13 PUSH1 0x1 PUSH2 0x566 JUMP JUMPDEST SWAP6 POP DUP6 DUP2 LT PUSH2 0x2B9 JUMPI DUP11 SWAP7 POP PUSH2 0x2C8 JUMP JUMPDEST PUSH2 0x2C5 DUP13 DUP12 DUP4 DUP7 PUSH2 0x623 JUMP JUMPDEST SWAP7 POP JUMPDEST POP PUSH2 0x318 JUMP JUMPDEST DUP2 PUSH2 0x2E5 JUMPI PUSH2 0x2E0 DUP12 DUP12 DUP12 PUSH1 0x0 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x2F2 JUMP JUMPDEST PUSH2 0x2F2 DUP11 DUP13 DUP12 PUSH1 0x0 PUSH2 0x4EB JUMP JUMPDEST SWAP4 POP DUP4 DUP9 PUSH1 0x0 SUB LT PUSH2 0x306 JUMPI DUP10 SWAP6 POP PUSH2 0x318 JUMP JUMPDEST PUSH2 0x315 DUP12 DUP11 DUP11 PUSH1 0x0 SUB DUP6 PUSH2 0x66F JUMP JUMPDEST SWAP6 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP1 DUP8 AND EQ DUP3 ISZERO PUSH2 0x37B JUMPI DUP1 DUP1 ISZERO PUSH2 0x337 JUMPI POP DUP2 JUMPDEST PUSH2 0x34D JUMPI PUSH2 0x348 DUP8 DUP14 DUP13 PUSH1 0x1 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x34F JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x35C JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x372 JUMPI PUSH2 0x36D DUP8 DUP14 DUP13 PUSH1 0x0 PUSH2 0x4EB JUMP JUMPDEST PUSH2 0x374 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP PUSH2 0x3C5 JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x385 JUMPI POP DUP2 JUMPDEST PUSH2 0x39B JUMPI PUSH2 0x396 DUP13 DUP9 DUP13 PUSH1 0x1 PUSH2 0x4EB JUMP JUMPDEST PUSH2 0x39D JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x3AA JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x3C0 JUMPI PUSH2 0x3BB DUP13 DUP9 DUP13 PUSH1 0x0 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x3C2 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x3D5 JUMPI POP DUP9 PUSH1 0x0 SUB DUP6 GT JUMPDEST ISZERO PUSH2 0x3E1 JUMPI DUP9 PUSH1 0x0 SUB SWAP5 POP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x400 JUMPI POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x40F JUMPI DUP6 DUP10 SUB SWAP4 POP PUSH2 0x42C JUMP JUMPDEST PUSH2 0x429 DUP7 DUP10 PUSH3 0xFFFFFF AND DUP11 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH2 0x6BB JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x471 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x466 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x4E4 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x47D 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 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x50B JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP2 PUSH2 0x538 JUMPI PUSH2 0x533 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x43B JUMP JUMPDEST PUSH2 0x55B JUMP JUMPDEST PUSH2 0x55B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x6BB JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x586 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP7 SUB DUP2 AND SWAP1 DUP8 AND PUSH2 0x5C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH2 0x5F2 JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5E5 DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x43B JUMP JUMPDEST DUP2 PUSH2 0x5EC JUMPI INVALID JUMPDEST DIV PUSH2 0x618 JUMP JUMPDEST PUSH2 0x618 PUSH2 0x609 DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6BB JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6F5 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x63A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x650 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x662 JUMPI PUSH2 0x533 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x700 JUMP JUMPDEST PUSH2 0x55B DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x7E1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x686 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x69C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x6AE JUMPI PUSH2 0x533 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x7E1 JUMP JUMPDEST PUSH2 0x55B DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x700 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C8 DUP5 DUP5 DUP5 PUSH2 0x43B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP1 PUSH2 0x6D4 JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD GT ISZERO PUSH2 0x4E4 JUMPI PUSH1 0x0 NOT DUP2 LT PUSH2 0x6EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x773 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x736 JUMPI PUSH2 0x731 DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x43B JUMP JUMPDEST PUSH2 0x74E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH1 0x60 DUP6 SWAP1 SHL DUP2 PUSH2 0x74C JUMPI INVALID JUMPDEST DIV JUMPDEST SWAP1 POP PUSH2 0x76B PUSH2 0x766 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP4 PUSH2 0x8D6 JUMP JUMPDEST PUSH2 0x8EC JUMP JUMPDEST SWAP2 POP POP PUSH2 0x55E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x7A1 JUMPI PUSH2 0x79C DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x6BB JUMP JUMPDEST PUSH2 0x7B8 JUMP JUMPDEST PUSH2 0x7B8 PUSH1 0x60 DUP6 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP8 AND PUSH2 0x6F5 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x7CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB SWAP1 POP PUSH2 0x55E JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x7EF JUMPI POP DUP4 PUSH2 0x55E JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND DUP3 ISZERO PUSH2 0x88F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x82F JUMPI INVALID JUMPDEST DIV EQ ISZERO PUSH2 0x860 JUMPI DUP2 DUP2 ADD DUP3 DUP2 LT PUSH2 0x85E JUMPI PUSH2 0x854 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH2 0x6BB JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x55E JUMP JUMPDEST POP JUMPDEST PUSH2 0x886 DUP3 PUSH2 0x881 DUP8 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP2 PUSH2 0x87A JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x8D6 JUMP JUMPDEST PUSH2 0x6F5 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x55E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x8A6 JUMPI INVALID JUMPDEST DIV EQ DUP1 ISZERO PUSH2 0x8B3 JUMPI POP DUP1 DUP3 GT JUMPDEST PUSH2 0x8BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB PUSH2 0x854 PUSH2 0x766 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 PUSH2 0x6BB JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x8E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x902 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 0xC 0xB7 0xC9 0xCB MSIZE 0x5F 0xD PUSH20 0x6DBB709AAA16DC8CFA9557104592F0AEE86FCD89 PUSH1 0x2C NUMBER PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"106:1700:44:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061002b5760003560e01c8063d7e3056f14610030575b600080fd5b610081600480360360a081101561004657600080fd5b5080356001600160a01b039081169160208101359091169060408101356001600160801b0316906060810135906080013562ffffff16610083565b005b6000856001600160a01b03161161009957600080fd5b6000846001600160a01b0316116100af57600080fd5b60008162ffffff16116100c157600080fd5b620f42408162ffffff16106100d557600080fd5b6000806000806100e88989898989610249565b935093509350935080600019038311156100fe57fe5b6000861215610119578560000382111561011457fe5b610125565b85818401111561012557fe5b876001600160a01b0316896001600160a01b0316141561017257821561014757fe5b811561014f57fe5b801561015757fe5b876001600160a01b0316846001600160a01b03161461017257fe5b876001600160a01b0316846001600160a01b0316146101b05760008612156101a5578560000382146101a057fe5b6101b0565b85818401146101b057fe5b886001600160a01b0316886001600160a01b03161161020657886001600160a01b0316846001600160a01b031611156101e557fe5b876001600160a01b0316846001600160a01b0316101561020157fe5b61023e565b886001600160a01b0316846001600160a01b0316101561022257fe5b876001600160a01b0316846001600160a01b0316111561023e57fe5b505050505050505050565b60008080806001600160a01b03808916908a1610158187128015906102ce5760006102828989620f42400362ffffff16620f424061043b565b90508261029b576102968c8c8c60016104eb565b6102a8565b6102a88b8d8c6001610566565b95508581106102b9578a96506102c8565b6102c58c8b8386610623565b96505b50610318565b816102e5576102e08b8b8b6000610566565b6102f2565b6102f28a8c8b60006104eb565b935083886000031061030657899550610318565b6103158b8a8a6000038561066f565b95505b6001600160a01b038a811690871614821561037b578080156103375750815b61034d57610348878d8c6001610566565b61034f565b855b955080801561035c575081155b6103725761036d878d8c60006104eb565b610374565b845b94506103c5565b8080156103855750815b61039b576103968c888c60016104eb565b61039d565b855b95508080156103aa575081155b6103c0576103bb8c888c6000610566565b6103c2565b845b94505b811580156103d557508860000385115b156103e1578860000394505b81801561040057508a6001600160a01b0316876001600160a01b031614155b1561040f57858903935061042c565b610429868962ffffff168a620f42400362ffffff166106bb565b93505b50505095509550955095915050565b6000808060001985870986860292508281109083900303905080610471576000841161046657600080fd5b5082900490506104e4565b80841161047d57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b6000836001600160a01b0316856001600160a01b0316111561050b579293925b8161053857610533836001600160801b03168686036001600160a01b0316600160601b61043b565b61055b565b61055b836001600160801b03168686036001600160a01b0316600160601b6106bb565b90505b949350505050565b6000836001600160a01b0316856001600160a01b03161115610586579293925b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b166001600160a01b0386860381169087166105c257600080fd5b836105f257866001600160a01b03166105e58383896001600160a01b031661043b565b816105ec57fe5b04610618565b6106186106098383896001600160a01b03166106bb565b886001600160a01b03166106f5565b979650505050505050565b600080856001600160a01b03161161063a57600080fd5b6000846001600160801b03161161065057600080fd5b81610662576105338585856001610700565b61055b85858560016107e1565b600080856001600160a01b03161161068657600080fd5b6000846001600160801b03161161069c57600080fd5b816106ae5761053385858560006107e1565b61055b8585856000610700565b60006106c884848461043b565b9050600082806106d457fe5b84860911156104e45760001981106106eb57600080fd5b6001019392505050565b808204910615150190565b600081156107735760006001600160a01b038411156107365761073184600160601b876001600160801b031661043b565b61074e565b6001600160801b038516606085901b8161074c57fe5b045b905061076b6107666001600160a01b038816836108d6565b6108ec565b91505061055e565b60006001600160a01b038411156107a15761079c84600160601b876001600160801b03166106bb565b6107b8565b6107b8606085901b6001600160801b0387166106f5565b905080866001600160a01b0316116107cf57600080fd5b6001600160a01b03861603905061055e565b6000826107ef57508361055e565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b16821561088f576001600160a01b0386168481029085828161082f57fe5b0414156108605781810182811061085e5761085483896001600160a01b0316836106bb565b935050505061055e565b505b61088682610881878a6001600160a01b0316868161087a57fe5b04906108d6565b6106f5565b9250505061055e565b6001600160a01b038616848102908582816108a657fe5b041480156108b357508082115b6108bc57600080fd5b808203610854610766846001600160a01b038b16846106bb565b808201828110156108e657600080fd5b92915050565b806001600160a01b038116811461090257600080fd5b91905056fea2646970667358221220c60cb7c9cb595f0d736dbb709aaa16dc8cfa9557104592f0aee86fcd89602c4364736f6c63430007060033","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 0xD7E3056F EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x81 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x83 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0xAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH3 0xFFFFFF AND GT PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xF4240 DUP2 PUSH3 0xFFFFFF AND LT PUSH2 0xD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0xE8 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x249 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP1 PUSH1 0x0 NOT SUB DUP4 GT ISZERO PUSH2 0xFE JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 SLT ISZERO PUSH2 0x119 JUMPI DUP6 PUSH1 0x0 SUB DUP3 GT ISZERO PUSH2 0x114 JUMPI INVALID JUMPDEST PUSH2 0x125 JUMP JUMPDEST DUP6 DUP2 DUP5 ADD GT ISZERO PUSH2 0x125 JUMPI INVALID JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x172 JUMPI DUP3 ISZERO PUSH2 0x147 JUMPI INVALID JUMPDEST DUP2 ISZERO PUSH2 0x14F JUMPI INVALID JUMPDEST DUP1 ISZERO PUSH2 0x157 JUMPI INVALID JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x172 JUMPI INVALID JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP7 SLT ISZERO PUSH2 0x1A5 JUMPI DUP6 PUSH1 0x0 SUB DUP3 EQ PUSH2 0x1A0 JUMPI INVALID JUMPDEST PUSH2 0x1B0 JUMP JUMPDEST DUP6 DUP2 DUP5 ADD EQ PUSH2 0x1B0 JUMPI INVALID JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x206 JUMPI DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x1E5 JUMPI INVALID JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x201 JUMPI INVALID JUMPDEST PUSH2 0x23E JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x222 JUMPI INVALID JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x23E JUMPI INVALID JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP1 DUP11 AND LT ISZERO DUP2 DUP8 SLT DUP1 ISZERO SWAP1 PUSH2 0x2CE JUMPI PUSH1 0x0 PUSH2 0x282 DUP10 DUP10 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x43B JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x29B JUMPI PUSH2 0x296 DUP13 DUP13 DUP13 PUSH1 0x1 PUSH2 0x4EB JUMP JUMPDEST PUSH2 0x2A8 JUMP JUMPDEST PUSH2 0x2A8 DUP12 DUP14 DUP13 PUSH1 0x1 PUSH2 0x566 JUMP JUMPDEST SWAP6 POP DUP6 DUP2 LT PUSH2 0x2B9 JUMPI DUP11 SWAP7 POP PUSH2 0x2C8 JUMP JUMPDEST PUSH2 0x2C5 DUP13 DUP12 DUP4 DUP7 PUSH2 0x623 JUMP JUMPDEST SWAP7 POP JUMPDEST POP PUSH2 0x318 JUMP JUMPDEST DUP2 PUSH2 0x2E5 JUMPI PUSH2 0x2E0 DUP12 DUP12 DUP12 PUSH1 0x0 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x2F2 JUMP JUMPDEST PUSH2 0x2F2 DUP11 DUP13 DUP12 PUSH1 0x0 PUSH2 0x4EB JUMP JUMPDEST SWAP4 POP DUP4 DUP9 PUSH1 0x0 SUB LT PUSH2 0x306 JUMPI DUP10 SWAP6 POP PUSH2 0x318 JUMP JUMPDEST PUSH2 0x315 DUP12 DUP11 DUP11 PUSH1 0x0 SUB DUP6 PUSH2 0x66F JUMP JUMPDEST SWAP6 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP1 DUP8 AND EQ DUP3 ISZERO PUSH2 0x37B JUMPI DUP1 DUP1 ISZERO PUSH2 0x337 JUMPI POP DUP2 JUMPDEST PUSH2 0x34D JUMPI PUSH2 0x348 DUP8 DUP14 DUP13 PUSH1 0x1 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x34F JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x35C JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x372 JUMPI PUSH2 0x36D DUP8 DUP14 DUP13 PUSH1 0x0 PUSH2 0x4EB JUMP JUMPDEST PUSH2 0x374 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP PUSH2 0x3C5 JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x385 JUMPI POP DUP2 JUMPDEST PUSH2 0x39B JUMPI PUSH2 0x396 DUP13 DUP9 DUP13 PUSH1 0x1 PUSH2 0x4EB JUMP JUMPDEST PUSH2 0x39D JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x3AA JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x3C0 JUMPI PUSH2 0x3BB DUP13 DUP9 DUP13 PUSH1 0x0 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x3C2 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x3D5 JUMPI POP DUP9 PUSH1 0x0 SUB DUP6 GT JUMPDEST ISZERO PUSH2 0x3E1 JUMPI DUP9 PUSH1 0x0 SUB SWAP5 POP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x400 JUMPI POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x40F JUMPI DUP6 DUP10 SUB SWAP4 POP PUSH2 0x42C JUMP JUMPDEST PUSH2 0x429 DUP7 DUP10 PUSH3 0xFFFFFF AND DUP11 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH2 0x6BB JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x471 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x466 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x4E4 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x47D 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 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x50B JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP2 PUSH2 0x538 JUMPI PUSH2 0x533 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x43B JUMP JUMPDEST PUSH2 0x55B JUMP JUMPDEST PUSH2 0x55B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x6BB JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x586 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP7 SUB DUP2 AND SWAP1 DUP8 AND PUSH2 0x5C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH2 0x5F2 JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5E5 DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x43B JUMP JUMPDEST DUP2 PUSH2 0x5EC JUMPI INVALID JUMPDEST DIV PUSH2 0x618 JUMP JUMPDEST PUSH2 0x618 PUSH2 0x609 DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6BB JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6F5 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x63A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x650 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x662 JUMPI PUSH2 0x533 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x700 JUMP JUMPDEST PUSH2 0x55B DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x7E1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x686 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x69C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x6AE JUMPI PUSH2 0x533 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x7E1 JUMP JUMPDEST PUSH2 0x55B DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x700 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C8 DUP5 DUP5 DUP5 PUSH2 0x43B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP1 PUSH2 0x6D4 JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD GT ISZERO PUSH2 0x4E4 JUMPI PUSH1 0x0 NOT DUP2 LT PUSH2 0x6EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x773 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x736 JUMPI PUSH2 0x731 DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x43B JUMP JUMPDEST PUSH2 0x74E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH1 0x60 DUP6 SWAP1 SHL DUP2 PUSH2 0x74C JUMPI INVALID JUMPDEST DIV JUMPDEST SWAP1 POP PUSH2 0x76B PUSH2 0x766 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP4 PUSH2 0x8D6 JUMP JUMPDEST PUSH2 0x8EC JUMP JUMPDEST SWAP2 POP POP PUSH2 0x55E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x7A1 JUMPI PUSH2 0x79C DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x6BB JUMP JUMPDEST PUSH2 0x7B8 JUMP JUMPDEST PUSH2 0x7B8 PUSH1 0x60 DUP6 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP8 AND PUSH2 0x6F5 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x7CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB SWAP1 POP PUSH2 0x55E JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x7EF JUMPI POP DUP4 PUSH2 0x55E JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND DUP3 ISZERO PUSH2 0x88F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x82F JUMPI INVALID JUMPDEST DIV EQ ISZERO PUSH2 0x860 JUMPI DUP2 DUP2 ADD DUP3 DUP2 LT PUSH2 0x85E JUMPI PUSH2 0x854 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH2 0x6BB JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x55E JUMP JUMPDEST POP JUMPDEST PUSH2 0x886 DUP3 PUSH2 0x881 DUP8 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP2 PUSH2 0x87A JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x8D6 JUMP JUMPDEST PUSH2 0x6F5 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x55E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x8A6 JUMPI INVALID JUMPDEST DIV EQ DUP1 ISZERO PUSH2 0x8B3 JUMPI POP DUP1 DUP3 GT JUMPDEST PUSH2 0x8BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB PUSH2 0x854 PUSH2 0x766 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 PUSH2 0x6BB JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x8E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x902 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 0xC 0xB7 0xC9 0xCB MSIZE 0x5F 0xD PUSH20 0x6DBB709AAA16DC8CFA9557104592F0AEE86FCD89 PUSH1 0x2C NUMBER PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"106:1700:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;142:1661;;;;;;;;;;;;;;;;-1:-1:-1;142:1661:44;;-1:-1:-1;;;;;142:1661:44;;;;;;;;;;;;;;;;-1:-1:-1;;;;;142:1661:44;;;;;;;;;;;;;:::i;:::-;;;391:1;376:12;-1:-1:-1;;;;;376:16:44;;368:25;;;;;;433:1;412:18;-1:-1:-1;;;;;412:22:44;;404:31;;;;;;464:1;454:7;:11;;;446:20;;;;;;495:3;485:7;:13;;;477:22;;;;;;513:13;528:16;546:17;565;599:95;624:12;638:18;658:9;669:15;686:7;599:24;:95::i;:::-;512:182;;;;;;;;746:9;-1:-1:-1;;726:29:44;714:8;:41;;707:49;;;;791:1;773:15;:19;769:187;;;838:15;837:16;;816:9;:38;;809:46;;;;769:187;;;927:15;906:9;895:8;:20;:48;;888:56;;;;988:18;-1:-1:-1;;;;;972:34:44;:12;-1:-1:-1;;;;;972:34:44;;968:212;;;1030:13;;1023:21;;;;1066:14;;1059:22;;;;1103:14;;1096:22;;;;1149:18;-1:-1:-1;;;;;1140:27:44;:5;-1:-1:-1;;;;;1140:27:44;;1133:35;;;;1275:18;-1:-1:-1;;;;;1266:27:44;:5;-1:-1:-1;;;;;1266:27:44;;1262:207;;1332:1;1314:15;:19;1310:147;;;1364:15;1363:16;;1342:9;:38;1335:46;;;;1310:147;;;1440:15;1419:9;1408:8;:20;:48;1401:56;;;;1564:12;-1:-1:-1;;;;;1542:34:44;:18;-1:-1:-1;;;;;1542:34:44;;1538:258;;1609:12;-1:-1:-1;;;;;1600:21:44;:5;-1:-1:-1;;;;;1600:21:44;;;1593:29;;;;1653:18;-1:-1:-1;;;;;1644:27:44;:5;-1:-1:-1;;;;;1644:27:44;;;1637:35;;;;1538:258;;;1721:12;-1:-1:-1;;;;;1712:21:44;:5;-1:-1:-1;;;;;1712:21:44;;;1705:29;;;;1765:18;-1:-1:-1;;;;;1756:27:44;:5;-1:-1:-1;;;;;1756:27:44;;;1749:35;;;;142:1661;;;;;;;;;:::o;1411:3315:25:-;1668:24;;;;-1:-1:-1;;;;;1833:41:25;;;;;;;;1900:20;;;;;;1933:1379;;1961:30;1994:61;2018:15;2042:7;2036:3;:13;1994:61;;2051:3;1994:15;:61::i;:::-;1961:94;;2081:10;:224;;2218:87;2248:19;2269:18;2289:9;2300:4;2218:29;:87::i;:::-;2081:224;;;2111:87;2141:18;2161:19;2182:9;2193:4;2111:29;:87::i;:::-;2070:235;;2350:8;2324:22;:34;2320:343;;2379:18;2360:37;;2320:343;;;2453:210;2515:19;2557:9;2589:22;2634:10;2453:39;:210::i;:::-;2434:229;;2320:343;1933:1379;;;;2708:10;:226;;2846:88;2876:19;2897:18;2917:9;2928:5;2846:29;:88::i;:::-;2708:226;;;2738:88;2768:18;2788:19;2809:9;2820:5;2738:29;:88::i;:::-;2696:238;;2982:9;2962:15;2961:16;;2953:38;2949:351;;3012:18;2993:37;;2949:351;;;3086:214;3149:19;3191:9;3232:15;3231:16;;3271:10;3086:40;:214::i;:::-;3067:233;;2949:351;-1:-1:-1;;;;;3335:38:25;;;;;;;3427:746;;;;3469:3;:14;;;;;3476:7;3469:14;:147;;3531:85;3561:16;3579:19;3600:9;3611:4;3531:29;:85::i;:::-;3469:147;;;3503:8;3469:147;3458:158;;3643:3;:15;;;;;3651:7;3650:8;3643:15;:150;;3707:86;3737:16;3755:19;3776:9;3787:5;3707:29;:86::i;:::-;3643:150;;;3678:9;3643:150;3631:162;;3427:746;;;3837:3;:14;;;;;3844:7;3837:14;:147;;3899:85;3929:19;3950:16;3968:9;3979:4;3899:29;:85::i;:::-;3837:147;;;3871:8;3837:147;3826:158;;4011:3;:15;;;;;4019:7;4018:8;4011:15;:150;;4075:86;4105:19;4126:16;4144:9;4155:5;4075:29;:86::i;:::-;4011:150;;;4046:9;4011:150;3999:162;;3427:746;4266:7;4265:8;:49;;;;;4298:15;4297:16;;4277:9;:37;4265:49;4261:119;;;4352:15;4351:16;;4331:37;;4261:119;4396:7;:49;;;;;4427:18;-1:-1:-1;;;;;4407:38:25;:16;-1:-1:-1;;;;;4407:38:25;;;4396:49;4392:327;;;4595:8;4576:15;4568:35;4556:47;;4392:327;;;4648:59;4674:8;4684:7;4648:59;;4699:7;4693:3;:13;4648:59;;:25;:59::i;:::-;4636:71;;4392:327;1411:3315;;;;;;;;;;;;;:::o;762:3868:18:-;878:14;;;-1:-1:-1;;1394:1:18;1391;1384:20;1427:9;;;;-1:-1:-1;1479:13:18;;;1463:14;;;;1459:34;;-1:-1:-1;1579:10:18;1575:185;;1628:1;1614:11;:15;1606:24;;;;;;-1:-1:-1;1683:23:18;;;;-1:-1:-1;1735:13:18;;1575:185;1891:5;1877:11;:19;1869:28;;;;;;2182:17;2260:11;2257:1;2254;2247:25;2623:12;2638;;;:26;;2761:22;;;;;3584:1;3565;:15;;3564:21;;3815:17;;;3811:21;;3804:28;3874:17;;;3870:21;;3863:28;3934:17;;;3930:21;;3923:28;3994:17;;;3990:21;;3983:28;4054:17;;;4050:21;;4043:28;4115:17;;;4111:21;;;4104:28;3144:12;;;;3140:23;;;3165:1;3136:31;2393:20;;;2382:32;;;3197:12;;;;2437:21;;;;2894:16;;;;3188:21;;;;4587:11;;;;;-1:-1:-1;;762:3868:18;;;;;;:::o;8842:544:24:-;9012:15;9060:13;-1:-1:-1;;;;;9044:29:24;:13;-1:-1:-1;;;;;9044:29:24;;9040:98;;;9109:13;;9124;9040:98;9171:7;:207;;9303:75;9319:9;-1:-1:-1;;;;;9303:75:24;9346:13;9330;:29;-1:-1:-1;;;;;9303:75:24;-1:-1:-1;;;9303:15:24;:75::i;:::-;9171:207;;;9198:85;9224:9;-1:-1:-1;;;;;9198:85:24;9251:13;9235;:29;-1:-1:-1;;;;;9198:85:24;-1:-1:-1;;;9198:25:24;:85::i;:::-;9151:227;;8842:544;;;;;;;:::o;7579:799::-;7749:15;7797:13;-1:-1:-1;;;;;7781:29:24;:13;-1:-1:-1;;;;;7781:29:24;;7777:98;;;7846:13;;7861;7777:98;7909:45;316:2:17;7909:45:24;;;;-1:-1:-1;;;;;7986:29:24;;;7965:50;;;8036:17;;8028:26;;;;;;8087:7;:283;;8357:13;-1:-1:-1;;;;;8300:70:24;:54;8316:10;8328;8340:13;-1:-1:-1;;;;;8300:54:24;:15;:54::i;:::-;:70;;;;;;8087:283;;;8114:166;8161:64;8187:10;8199;8211:13;-1:-1:-1;;;;;8161:64:24;:25;:64::i;:::-;8248:13;-1:-1:-1;;;;;8114:166:24;:24;:166::i;:::-;8067:303;7579:799;-1:-1:-1;;;;;;;7579:799:24:o;5338:564::-;5511:16;5559:1;5548:8;-1:-1:-1;;;;;5548:12:24;;5540:21;;;;;;5592:1;5580:9;-1:-1:-1;;;;;5580:13:24;;5572:22;;;;;;5694:10;:200;;5818:76;5858:8;5868:9;5879:8;5889:4;5818:39;:76::i;5694:200::-;5724:74;5762:8;5772:9;5783:8;5793:4;5724:37;:74::i;6457:564::-;6632:16;6680:1;6669:8;-1:-1:-1;;;;;6669:12:24;;6661:21;;;;;;6713:1;6701:9;-1:-1:-1;;;;;6701:13:24;;6693:22;;;;;;6809:10;:204;;6937:76;6975:8;6985:9;6996;7007:5;6937:37;:76::i;6809:204::-;6839:78;6879:8;6889:9;6900;6911:5;6839:39;:78::i;4919:325:18:-;5045:14;5081:25;5088:1;5091;5094:11;5081:6;:25::i;:::-;5072:34;;5149:1;5134:11;5121:25;;;;;5131:1;5128;5121:25;:29;5117:120;;;-1:-1:-1;;5175:6:18;:26;5167:35;;;;;;5217:8;;4919:325;;;;;:::o;503:169:30:-;626:9;;;640;;637:16;;622:32;;602:63::o;3664:1116:24:-;3842:7;4022:3;4018:755;;;4042:16;-1:-1:-1;;;;;4080:27:24;;;:174;;4202:52;4218:6;-1:-1:-1;;;4244:9:24;-1:-1:-1;;;;;4202:52:24;:15;:52::i;:::-;4080:174;;;-1:-1:-1;;;;;4131:47:24;;316:2:17;4132:33:24;;;4131:47;;;;;;4080:174;4042:227;-1:-1:-1;4293:43:24;:31;-1:-1:-1;;;;;4293:17:24;;4042:227;4293:21;:31::i;:::-;:41;:43::i;:::-;4286:50;;;;;4018:755;4369:16;-1:-1:-1;;;;;4407:27:24;;;:207;;4552:62;4578:6;-1:-1:-1;;;4604:9:24;-1:-1:-1;;;;;4552:62:24;:25;:62::i;:::-;4407:207;;;4458:70;316:2:17;4483:33:24;;;-1:-1:-1;;;;;4458:70:24;;:24;:70::i;:::-;4369:260;;4665:8;4654;-1:-1:-1;;;;;4654:19:24;;4646:28;;;;;;-1:-1:-1;;;;;4741:19:24;;;;-1:-1:-1;4726:35:24;;1432:1394;1608:7;1745:11;1741:32;;-1:-1:-1;1765:8:24;1758:15;;1741:32;1805:45;316:2:17;1805:45:24;;;;1863:956;;;;-1:-1:-1;;;;;1921:50:24;;1932:17;;;;1953:6;1932:17;1953:6;1921:38;;;;;:50;1917:328;;;2014:20;;;2057:25;;;2053:176;;2168:60;2194:10;2206:8;-1:-1:-1;;;;;2168:60:24;2216:11;2168:25;:60::i;:::-;2153:76;;;;;;;2053:176;1917:328;;2276:73;2301:10;2313:35;2341:6;2327:8;-1:-1:-1;;;;;2314:21:24;:10;:21;;;;;;;2313:27;:35::i;:::-;2276:24;:73::i;:::-;2261:89;;;;;;1863:956;-1:-1:-1;;;;;2581:50:24;;2592:17;;;;2613:6;2592:17;2613:6;2581:38;;;;;:50;:74;;;;;2648:7;2635:10;:20;2581:74;2573:83;;;;;;2693:20;;;2735:72;:60;2693:10;-1:-1:-1;;;;;2735:60:24;;2693:20;2735:25;:60::i;445:113:20:-;538:5;;;533:16;;;;525:25;;;;;;445:113;;;;:::o;366::23:-;469:1;-1:-1:-1;;;;;449:21:23;;;;441:30;;;;;;366:113;;;:::o"},"methodIdentifiers":{"checkComputeSwapStepInvariants(uint160,uint160,uint128,int256,uint24)":"d7e3056f"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceRaw\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceTargetRaw\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"int256\",\"name\":\"amountRemaining\",\"type\":\"int256\"},{\"internalType\":\"uint24\",\"name\":\"feePips\",\"type\":\"uint24\"}],\"name\":\"checkComputeSwapStepInvariants\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/SwapMathEchidnaTest.sol\":\"SwapMathEchidnaTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]},\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]},\"contracts/elixir-core/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0x2c9f7a00da077c5f777cd8a47711257952b2748b0fe7c188fa990b279940d78a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0a6b8809b92e411169924b7b355ebff8fac6e4e8b389318ff331d3220f02ec92\",\"dweb:/ipfs/QmZVMTo4zNPT4Rge5u3KTNr16XR7CqG1AupW3aybHty6N5\"]},\"contracts/elixir-core/libraries/SwapMath.sol\":{\"keccak256\":\"0xaf0c258b9f5d1629f1797ad13996f422f303addc1bdb5dc3333ab3f352f306b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d7a3b8d7d38ed7b7a8d7541ff4e0c78c7230c49f31a9a21eb1b5974adf80fa81\",\"dweb:/ipfs/QmXvjE4AjfYGVqRpgrGj1sgJWdjfo8mhrTnNK9fwrDYP77\"]},\"contracts/elixir-core/libraries/UnsafeMath.sol\":{\"keccak256\":\"0x3c829e89e91323d9c3e0f15272baa9aa1d28291e7633ee4f1414774e6eca0a7d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f99f38de11092e98d43f1d14061fcfa7309a80ae93d2b7af99c9256c97312c23\",\"dweb:/ipfs/QmQXXUR1PhKUFVZXwwekW23YE9Zy7r3GvdtcDyc2nNTpSb\"]},\"contracts/elixir-core/test/SwapMathEchidnaTest.sol\":{\"keccak256\":\"0xdf3ef4b26ff78f6db97c620dad58ea0a1d4bb63d86f41c71a2fdddccde14f077\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ec7a08229f6c3a3583fde334139251ec9515463c7fe05e9521581ab4999d83ec\",\"dweb:/ipfs/QmbqCXy4sFLpyM9F8Sbt6Y3oYvRxNkj7tp8rEiVwrXYG1z\"]}},\"version\":1}"}},"contracts/elixir-core/test/SwapMathTest.sol":{"SwapMathTest":{"abi":[{"inputs":[{"internalType":"uint160","name":"sqrtP","type":"uint160"},{"internalType":"uint160","name":"sqrtPTarget","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"int256","name":"amountRemaining","type":"int256"},{"internalType":"uint24","name":"feePips","type":"uint24"}],"name":"computeSwapStep","outputs":[{"internalType":"uint160","name":"sqrtQ","type":"uint160"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"feeAmount","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtP","type":"uint160"},{"internalType":"uint160","name":"sqrtPTarget","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"int256","name":"amountRemaining","type":"int256"},{"internalType":"uint24","name":"feePips","type":"uint24"}],"name":"getGasCostOfComputeSwapStep","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061085d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063100d3f741461003b578063d28c51b7146100bc575b600080fd5b61008c600480360360a081101561005157600080fd5b5080356001600160a01b039081169160208101359091169060408101356001600160801b0316906060810135906080013562ffffff1661011f565b604080516001600160a01b0390951685526020850193909352838301919091526060830152519081900360800190f35b61010d600480360360a08110156100d257600080fd5b5080356001600160a01b039081169160208101359091169060408101356001600160801b0316906060810135906080013562ffffff16610145565b60408051918252519081900360200190f35b6000806000806101328989898989610169565b929c919b50995090975095505050505050565b6000805a90506101588787878787610169565b505050505a90039695505050505050565b60008080806001600160a01b03808916908a1610158187128015906101ee5760006101a28989620f42400362ffffff16620f424061035b565b9050826101bb576101b68c8c8c600161040b565b6101c8565b6101c88b8d8c6001610486565b95508581106101d9578a96506101e8565b6101e58c8b8386610543565b96505b50610238565b81610205576102008b8b8b6000610486565b610212565b6102128a8c8b600061040b565b935083886000031061022657899550610238565b6102358b8a8a6000038561058f565b95505b6001600160a01b038a811690871614821561029b578080156102575750815b61026d57610268878d8c6001610486565b61026f565b855b955080801561027c575081155b6102925761028d878d8c600061040b565b610294565b845b94506102e5565b8080156102a55750815b6102bb576102b68c888c600161040b565b6102bd565b855b95508080156102ca575081155b6102e0576102db8c888c6000610486565b6102e2565b845b94505b811580156102f557508860000385115b15610301578860000394505b81801561032057508a6001600160a01b0316876001600160a01b031614155b1561032f57858903935061034c565b610349868962ffffff168a620f42400362ffffff166105db565b93505b50505095509550955095915050565b6000808060001985870986860292508281109083900303905080610391576000841161038657600080fd5b508290049050610404565b80841161039d57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b6000836001600160a01b0316856001600160a01b0316111561042b579293925b8161045857610453836001600160801b03168686036001600160a01b0316600160601b61035b565b61047b565b61047b836001600160801b03168686036001600160a01b0316600160601b6105db565b90505b949350505050565b6000836001600160a01b0316856001600160a01b031611156104a6579293925b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b166001600160a01b0386860381169087166104e257600080fd5b8361051257866001600160a01b03166105058383896001600160a01b031661035b565b8161050c57fe5b04610538565b6105386105298383896001600160a01b03166105db565b886001600160a01b0316610615565b979650505050505050565b600080856001600160a01b03161161055a57600080fd5b6000846001600160801b03161161057057600080fd5b81610582576104538585856001610620565b61047b8585856001610701565b600080856001600160a01b0316116105a657600080fd5b6000846001600160801b0316116105bc57600080fd5b816105ce576104538585856000610701565b61047b8585856000610620565b60006105e884848461035b565b9050600082806105f457fe5b848609111561040457600019811061060b57600080fd5b6001019392505050565b808204910615150190565b600081156106935760006001600160a01b038411156106565761065184600160601b876001600160801b031661035b565b61066e565b6001600160801b038516606085901b8161066c57fe5b045b905061068b6106866001600160a01b038816836107f6565b61080c565b91505061047e565b60006001600160a01b038411156106c1576106bc84600160601b876001600160801b03166105db565b6106d8565b6106d8606085901b6001600160801b038716610615565b905080866001600160a01b0316116106ef57600080fd5b6001600160a01b03861603905061047e565b60008261070f57508361047e565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b1682156107af576001600160a01b0386168481029085828161074f57fe5b0414156107805781810182811061077e5761077483896001600160a01b0316836105db565b935050505061047e565b505b6107a6826107a1878a6001600160a01b0316868161079a57fe5b04906107f6565b610615565b9250505061047e565b6001600160a01b038616848102908582816107c657fe5b041480156107d357508082115b6107dc57600080fd5b808203610774610686846001600160a01b038b16846105db565b8082018281101561080657600080fd5b92915050565b806001600160a01b038116811461082257600080fd5b91905056fea2646970667358221220515d8b4ee1f93653d30b9b8a2260e8fe2dc2896df120f06c1c2e362c1c6cb26964736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x85D 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 0x100D3F74 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xD28C51B7 EQ PUSH2 0xBC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x11F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP6 AND DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x145 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x132 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x169 JUMP JUMPDEST SWAP3 SWAP13 SWAP2 SWAP12 POP SWAP10 POP SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x158 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x169 JUMP JUMPDEST POP POP POP POP GAS SWAP1 SUB SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP1 DUP11 AND LT ISZERO DUP2 DUP8 SLT DUP1 ISZERO SWAP1 PUSH2 0x1EE JUMPI PUSH1 0x0 PUSH2 0x1A2 DUP10 DUP10 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x35B JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x1BB JUMPI PUSH2 0x1B6 DUP13 DUP13 DUP13 PUSH1 0x1 PUSH2 0x40B JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH2 0x1C8 DUP12 DUP14 DUP13 PUSH1 0x1 PUSH2 0x486 JUMP JUMPDEST SWAP6 POP DUP6 DUP2 LT PUSH2 0x1D9 JUMPI DUP11 SWAP7 POP PUSH2 0x1E8 JUMP JUMPDEST PUSH2 0x1E5 DUP13 DUP12 DUP4 DUP7 PUSH2 0x543 JUMP JUMPDEST SWAP7 POP JUMPDEST POP PUSH2 0x238 JUMP JUMPDEST DUP2 PUSH2 0x205 JUMPI PUSH2 0x200 DUP12 DUP12 DUP12 PUSH1 0x0 PUSH2 0x486 JUMP JUMPDEST PUSH2 0x212 JUMP JUMPDEST PUSH2 0x212 DUP11 DUP13 DUP12 PUSH1 0x0 PUSH2 0x40B JUMP JUMPDEST SWAP4 POP DUP4 DUP9 PUSH1 0x0 SUB LT PUSH2 0x226 JUMPI DUP10 SWAP6 POP PUSH2 0x238 JUMP JUMPDEST PUSH2 0x235 DUP12 DUP11 DUP11 PUSH1 0x0 SUB DUP6 PUSH2 0x58F JUMP JUMPDEST SWAP6 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP1 DUP8 AND EQ DUP3 ISZERO PUSH2 0x29B JUMPI DUP1 DUP1 ISZERO PUSH2 0x257 JUMPI POP DUP2 JUMPDEST PUSH2 0x26D JUMPI PUSH2 0x268 DUP8 DUP14 DUP13 PUSH1 0x1 PUSH2 0x486 JUMP JUMPDEST PUSH2 0x26F JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x27C JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x292 JUMPI PUSH2 0x28D DUP8 DUP14 DUP13 PUSH1 0x0 PUSH2 0x40B JUMP JUMPDEST PUSH2 0x294 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP PUSH2 0x2E5 JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x2A5 JUMPI POP DUP2 JUMPDEST PUSH2 0x2BB JUMPI PUSH2 0x2B6 DUP13 DUP9 DUP13 PUSH1 0x1 PUSH2 0x40B JUMP JUMPDEST PUSH2 0x2BD JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x2CA JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x2E0 JUMPI PUSH2 0x2DB DUP13 DUP9 DUP13 PUSH1 0x0 PUSH2 0x486 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x2F5 JUMPI POP DUP9 PUSH1 0x0 SUB DUP6 GT JUMPDEST ISZERO PUSH2 0x301 JUMPI DUP9 PUSH1 0x0 SUB SWAP5 POP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x320 JUMPI POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x32F JUMPI DUP6 DUP10 SUB SWAP4 POP PUSH2 0x34C JUMP JUMPDEST PUSH2 0x349 DUP7 DUP10 PUSH3 0xFFFFFF AND DUP11 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH2 0x5DB JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x391 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x386 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x404 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x39D 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 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x42B JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP2 PUSH2 0x458 JUMPI PUSH2 0x453 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x35B JUMP JUMPDEST PUSH2 0x47B JUMP JUMPDEST PUSH2 0x47B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x5DB JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4A6 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP7 SUB DUP2 AND SWAP1 DUP8 AND PUSH2 0x4E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH2 0x512 JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x505 DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x35B JUMP JUMPDEST DUP2 PUSH2 0x50C JUMPI INVALID JUMPDEST DIV PUSH2 0x538 JUMP JUMPDEST PUSH2 0x538 PUSH2 0x529 DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5DB JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x615 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x55A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x582 JUMPI PUSH2 0x453 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x620 JUMP JUMPDEST PUSH2 0x47B DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x701 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x5A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x5BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x5CE JUMPI PUSH2 0x453 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x701 JUMP JUMPDEST PUSH2 0x47B DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x620 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E8 DUP5 DUP5 DUP5 PUSH2 0x35B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP1 PUSH2 0x5F4 JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD GT ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 NOT DUP2 LT PUSH2 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x693 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x656 JUMPI PUSH2 0x651 DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x35B JUMP JUMPDEST PUSH2 0x66E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH1 0x60 DUP6 SWAP1 SHL DUP2 PUSH2 0x66C JUMPI INVALID JUMPDEST DIV JUMPDEST SWAP1 POP PUSH2 0x68B PUSH2 0x686 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP4 PUSH2 0x7F6 JUMP JUMPDEST PUSH2 0x80C JUMP JUMPDEST SWAP2 POP POP PUSH2 0x47E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x6C1 JUMPI PUSH2 0x6BC DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x5DB JUMP JUMPDEST PUSH2 0x6D8 JUMP JUMPDEST PUSH2 0x6D8 PUSH1 0x60 DUP6 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP8 AND PUSH2 0x615 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x6EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB SWAP1 POP PUSH2 0x47E JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x70F JUMPI POP DUP4 PUSH2 0x47E JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND DUP3 ISZERO PUSH2 0x7AF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x74F JUMPI INVALID JUMPDEST DIV EQ ISZERO PUSH2 0x780 JUMPI DUP2 DUP2 ADD DUP3 DUP2 LT PUSH2 0x77E JUMPI PUSH2 0x774 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH2 0x5DB JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x47E JUMP JUMPDEST POP JUMPDEST PUSH2 0x7A6 DUP3 PUSH2 0x7A1 DUP8 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP2 PUSH2 0x79A JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x7F6 JUMP JUMPDEST PUSH2 0x615 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x47E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x7C6 JUMPI INVALID JUMPDEST DIV EQ DUP1 ISZERO PUSH2 0x7D3 JUMPI POP DUP1 DUP3 GT JUMPDEST PUSH2 0x7DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB PUSH2 0x774 PUSH2 0x686 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 PUSH2 0x5DB JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x806 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x822 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MLOAD 0x5D DUP12 0x4E 0xE1 0xF9 CALLDATASIZE MSTORE8 0xD3 SIGNEXTEND SWAP12 DUP11 0x22 PUSH1 0xE8 INVALID 0x2D 0xC2 DUP10 PUSH14 0xF120F06C1C2E362C1C6CB2696473 PUSH16 0x6C634300070600330000000000000000 ","sourceMap":"106:903:45:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c8063100d3f741461003b578063d28c51b7146100bc575b600080fd5b61008c600480360360a081101561005157600080fd5b5080356001600160a01b039081169160208101359091169060408101356001600160801b0316906060810135906080013562ffffff1661011f565b604080516001600160a01b0390951685526020850193909352838301919091526060830152519081900360800190f35b61010d600480360360a08110156100d257600080fd5b5080356001600160a01b039081169160208101359091169060408101356001600160801b0316906060810135906080013562ffffff16610145565b60408051918252519081900360200190f35b6000806000806101328989898989610169565b929c919b50995090975095505050505050565b6000805a90506101588787878787610169565b505050505a90039695505050505050565b60008080806001600160a01b03808916908a1610158187128015906101ee5760006101a28989620f42400362ffffff16620f424061035b565b9050826101bb576101b68c8c8c600161040b565b6101c8565b6101c88b8d8c6001610486565b95508581106101d9578a96506101e8565b6101e58c8b8386610543565b96505b50610238565b81610205576102008b8b8b6000610486565b610212565b6102128a8c8b600061040b565b935083886000031061022657899550610238565b6102358b8a8a6000038561058f565b95505b6001600160a01b038a811690871614821561029b578080156102575750815b61026d57610268878d8c6001610486565b61026f565b855b955080801561027c575081155b6102925761028d878d8c600061040b565b610294565b845b94506102e5565b8080156102a55750815b6102bb576102b68c888c600161040b565b6102bd565b855b95508080156102ca575081155b6102e0576102db8c888c6000610486565b6102e2565b845b94505b811580156102f557508860000385115b15610301578860000394505b81801561032057508a6001600160a01b0316876001600160a01b031614155b1561032f57858903935061034c565b610349868962ffffff168a620f42400362ffffff166105db565b93505b50505095509550955095915050565b6000808060001985870986860292508281109083900303905080610391576000841161038657600080fd5b508290049050610404565b80841161039d57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b6000836001600160a01b0316856001600160a01b0316111561042b579293925b8161045857610453836001600160801b03168686036001600160a01b0316600160601b61035b565b61047b565b61047b836001600160801b03168686036001600160a01b0316600160601b6105db565b90505b949350505050565b6000836001600160a01b0316856001600160a01b031611156104a6579293925b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b166001600160a01b0386860381169087166104e257600080fd5b8361051257866001600160a01b03166105058383896001600160a01b031661035b565b8161050c57fe5b04610538565b6105386105298383896001600160a01b03166105db565b886001600160a01b0316610615565b979650505050505050565b600080856001600160a01b03161161055a57600080fd5b6000846001600160801b03161161057057600080fd5b81610582576104538585856001610620565b61047b8585856001610701565b600080856001600160a01b0316116105a657600080fd5b6000846001600160801b0316116105bc57600080fd5b816105ce576104538585856000610701565b61047b8585856000610620565b60006105e884848461035b565b9050600082806105f457fe5b848609111561040457600019811061060b57600080fd5b6001019392505050565b808204910615150190565b600081156106935760006001600160a01b038411156106565761065184600160601b876001600160801b031661035b565b61066e565b6001600160801b038516606085901b8161066c57fe5b045b905061068b6106866001600160a01b038816836107f6565b61080c565b91505061047e565b60006001600160a01b038411156106c1576106bc84600160601b876001600160801b03166105db565b6106d8565b6106d8606085901b6001600160801b038716610615565b905080866001600160a01b0316116106ef57600080fd5b6001600160a01b03861603905061047e565b60008261070f57508361047e565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b1682156107af576001600160a01b0386168481029085828161074f57fe5b0414156107805781810182811061077e5761077483896001600160a01b0316836105db565b935050505061047e565b505b6107a6826107a1878a6001600160a01b0316868161079a57fe5b04906107f6565b610615565b9250505061047e565b6001600160a01b038616848102908582816107c657fe5b041480156107d357508082115b6107dc57600080fd5b808203610774610686846001600160a01b038b16846105db565b8082018281101561080657600080fd5b92915050565b806001600160a01b038116811461082257600080fd5b91905056fea2646970667358221220515d8b4ee1f93653d30b9b8a2260e8fe2dc2896df120f06c1c2e362c1c6cb26964736f6c63430007060033","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 0x100D3F74 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xD28C51B7 EQ PUSH2 0xBC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x11F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP6 AND DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x145 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x132 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x169 JUMP JUMPDEST SWAP3 SWAP13 SWAP2 SWAP12 POP SWAP10 POP SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x158 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x169 JUMP JUMPDEST POP POP POP POP GAS SWAP1 SUB SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP1 DUP11 AND LT ISZERO DUP2 DUP8 SLT DUP1 ISZERO SWAP1 PUSH2 0x1EE JUMPI PUSH1 0x0 PUSH2 0x1A2 DUP10 DUP10 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x35B JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x1BB JUMPI PUSH2 0x1B6 DUP13 DUP13 DUP13 PUSH1 0x1 PUSH2 0x40B JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH2 0x1C8 DUP12 DUP14 DUP13 PUSH1 0x1 PUSH2 0x486 JUMP JUMPDEST SWAP6 POP DUP6 DUP2 LT PUSH2 0x1D9 JUMPI DUP11 SWAP7 POP PUSH2 0x1E8 JUMP JUMPDEST PUSH2 0x1E5 DUP13 DUP12 DUP4 DUP7 PUSH2 0x543 JUMP JUMPDEST SWAP7 POP JUMPDEST POP PUSH2 0x238 JUMP JUMPDEST DUP2 PUSH2 0x205 JUMPI PUSH2 0x200 DUP12 DUP12 DUP12 PUSH1 0x0 PUSH2 0x486 JUMP JUMPDEST PUSH2 0x212 JUMP JUMPDEST PUSH2 0x212 DUP11 DUP13 DUP12 PUSH1 0x0 PUSH2 0x40B JUMP JUMPDEST SWAP4 POP DUP4 DUP9 PUSH1 0x0 SUB LT PUSH2 0x226 JUMPI DUP10 SWAP6 POP PUSH2 0x238 JUMP JUMPDEST PUSH2 0x235 DUP12 DUP11 DUP11 PUSH1 0x0 SUB DUP6 PUSH2 0x58F JUMP JUMPDEST SWAP6 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP1 DUP8 AND EQ DUP3 ISZERO PUSH2 0x29B JUMPI DUP1 DUP1 ISZERO PUSH2 0x257 JUMPI POP DUP2 JUMPDEST PUSH2 0x26D JUMPI PUSH2 0x268 DUP8 DUP14 DUP13 PUSH1 0x1 PUSH2 0x486 JUMP JUMPDEST PUSH2 0x26F JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x27C JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x292 JUMPI PUSH2 0x28D DUP8 DUP14 DUP13 PUSH1 0x0 PUSH2 0x40B JUMP JUMPDEST PUSH2 0x294 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP PUSH2 0x2E5 JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x2A5 JUMPI POP DUP2 JUMPDEST PUSH2 0x2BB JUMPI PUSH2 0x2B6 DUP13 DUP9 DUP13 PUSH1 0x1 PUSH2 0x40B JUMP JUMPDEST PUSH2 0x2BD JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x2CA JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x2E0 JUMPI PUSH2 0x2DB DUP13 DUP9 DUP13 PUSH1 0x0 PUSH2 0x486 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x2F5 JUMPI POP DUP9 PUSH1 0x0 SUB DUP6 GT JUMPDEST ISZERO PUSH2 0x301 JUMPI DUP9 PUSH1 0x0 SUB SWAP5 POP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x320 JUMPI POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x32F JUMPI DUP6 DUP10 SUB SWAP4 POP PUSH2 0x34C JUMP JUMPDEST PUSH2 0x349 DUP7 DUP10 PUSH3 0xFFFFFF AND DUP11 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH2 0x5DB JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x391 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x386 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x404 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x39D 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 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x42B JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP2 PUSH2 0x458 JUMPI PUSH2 0x453 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x35B JUMP JUMPDEST PUSH2 0x47B JUMP JUMPDEST PUSH2 0x47B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x5DB JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4A6 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP7 SUB DUP2 AND SWAP1 DUP8 AND PUSH2 0x4E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH2 0x512 JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x505 DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x35B JUMP JUMPDEST DUP2 PUSH2 0x50C JUMPI INVALID JUMPDEST DIV PUSH2 0x538 JUMP JUMPDEST PUSH2 0x538 PUSH2 0x529 DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5DB JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x615 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x55A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x582 JUMPI PUSH2 0x453 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x620 JUMP JUMPDEST PUSH2 0x47B DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x701 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x5A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x5BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x5CE JUMPI PUSH2 0x453 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x701 JUMP JUMPDEST PUSH2 0x47B DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x620 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E8 DUP5 DUP5 DUP5 PUSH2 0x35B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP1 PUSH2 0x5F4 JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD GT ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 NOT DUP2 LT PUSH2 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x693 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x656 JUMPI PUSH2 0x651 DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x35B JUMP JUMPDEST PUSH2 0x66E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH1 0x60 DUP6 SWAP1 SHL DUP2 PUSH2 0x66C JUMPI INVALID JUMPDEST DIV JUMPDEST SWAP1 POP PUSH2 0x68B PUSH2 0x686 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP4 PUSH2 0x7F6 JUMP JUMPDEST PUSH2 0x80C JUMP JUMPDEST SWAP2 POP POP PUSH2 0x47E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x6C1 JUMPI PUSH2 0x6BC DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x5DB JUMP JUMPDEST PUSH2 0x6D8 JUMP JUMPDEST PUSH2 0x6D8 PUSH1 0x60 DUP6 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP8 AND PUSH2 0x615 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x6EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB SWAP1 POP PUSH2 0x47E JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x70F JUMPI POP DUP4 PUSH2 0x47E JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND DUP3 ISZERO PUSH2 0x7AF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x74F JUMPI INVALID JUMPDEST DIV EQ ISZERO PUSH2 0x780 JUMPI DUP2 DUP2 ADD DUP3 DUP2 LT PUSH2 0x77E JUMPI PUSH2 0x774 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH2 0x5DB JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x47E JUMP JUMPDEST POP JUMPDEST PUSH2 0x7A6 DUP3 PUSH2 0x7A1 DUP8 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP2 PUSH2 0x79A JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x7F6 JUMP JUMPDEST PUSH2 0x615 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x47E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x7C6 JUMPI INVALID JUMPDEST DIV EQ DUP1 ISZERO PUSH2 0x7D3 JUMPI POP DUP1 DUP3 GT JUMPDEST PUSH2 0x7DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB PUSH2 0x774 PUSH2 0x686 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 PUSH2 0x5DB JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x806 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x822 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MLOAD 0x5D DUP12 0x4E 0xE1 0xF9 CALLDATASIZE MSTORE8 0xD3 SIGNEXTEND SWAP12 DUP11 0x22 PUSH1 0xE8 INVALID 0x2D 0xC2 DUP10 PUSH14 0xF120F06C1C2E362C1C6CB2696473 PUSH16 0x6C634300070600330000000000000000 ","sourceMap":"106:903:45:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;135:468;;;;;;;;;;;;;;;;-1:-1:-1;135:468:45;;-1:-1:-1;;;;;135:468:45;;;;;;;;;;;;;;;;-1:-1:-1;;;;;135:468:45;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;135:468:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;611:395;;;;;;;;;;;;;;;;-1:-1:-1;611:395:45;;-1:-1:-1;;;;;611:395:45;;;;;;;;;;;;;;;;-1:-1:-1;;;;;611:395:45;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;135:468;371:13;399:16;430:17;462;514:81;539:5;546:11;559:9;570:15;587:7;514:24;:81::i;:::-;507:88;;;;-1:-1:-1;507:88:45;-1:-1:-1;507:88:45;;-1:-1:-1;135:468:45;-1:-1:-1;;;;;;135:468:45:o;611:395::-;818:7;838:17;858:9;838:29;;878:81;903:5;910:11;923:9;934:15;951:7;878:24;:81::i;:::-;;;;;989:9;977:21;;;611:395;-1:-1:-1;;;;;;611:395:45:o;1411:3315:25:-;1668:24;;;;-1:-1:-1;;;;;1833:41:25;;;;;;;;1900:20;;;;;;1933:1379;;1961:30;1994:61;2018:15;2042:7;2036:3;:13;1994:61;;2051:3;1994:15;:61::i;:::-;1961:94;;2081:10;:224;;2218:87;2248:19;2269:18;2289:9;2300:4;2218:29;:87::i;:::-;2081:224;;;2111:87;2141:18;2161:19;2182:9;2193:4;2111:29;:87::i;:::-;2070:235;;2350:8;2324:22;:34;2320:343;;2379:18;2360:37;;2320:343;;;2453:210;2515:19;2557:9;2589:22;2634:10;2453:39;:210::i;:::-;2434:229;;2320:343;1933:1379;;;;2708:10;:226;;2846:88;2876:19;2897:18;2917:9;2928:5;2846:29;:88::i;:::-;2708:226;;;2738:88;2768:18;2788:19;2809:9;2820:5;2738:29;:88::i;:::-;2696:238;;2982:9;2962:15;2961:16;;2953:38;2949:351;;3012:18;2993:37;;2949:351;;;3086:214;3149:19;3191:9;3232:15;3231:16;;3271:10;3086:40;:214::i;:::-;3067:233;;2949:351;-1:-1:-1;;;;;3335:38:25;;;;;;;3427:746;;;;3469:3;:14;;;;;3476:7;3469:14;:147;;3531:85;3561:16;3579:19;3600:9;3611:4;3531:29;:85::i;:::-;3469:147;;;3503:8;3469:147;3458:158;;3643:3;:15;;;;;3651:7;3650:8;3643:15;:150;;3707:86;3737:16;3755:19;3776:9;3787:5;3707:29;:86::i;:::-;3643:150;;;3678:9;3643:150;3631:162;;3427:746;;;3837:3;:14;;;;;3844:7;3837:14;:147;;3899:85;3929:19;3950:16;3968:9;3979:4;3899:29;:85::i;:::-;3837:147;;;3871:8;3837:147;3826:158;;4011:3;:15;;;;;4019:7;4018:8;4011:15;:150;;4075:86;4105:19;4126:16;4144:9;4155:5;4075:29;:86::i;:::-;4011:150;;;4046:9;4011:150;3999:162;;3427:746;4266:7;4265:8;:49;;;;;4298:15;4297:16;;4277:9;:37;4265:49;4261:119;;;4352:15;4351:16;;4331:37;;4261:119;4396:7;:49;;;;;4427:18;-1:-1:-1;;;;;4407:38:25;:16;-1:-1:-1;;;;;4407:38:25;;;4396:49;4392:327;;;4595:8;4576:15;4568:35;4556:47;;4392:327;;;4648:59;4674:8;4684:7;4648:59;;4699:7;4693:3;:13;4648:59;;:25;:59::i;:::-;4636:71;;4392:327;1411:3315;;;;;;;;;;;;;:::o;762:3868:18:-;878:14;;;-1:-1:-1;;1394:1:18;1391;1384:20;1427:9;;;;-1:-1:-1;1479:13:18;;;1463:14;;;;1459:34;;-1:-1:-1;1579:10:18;1575:185;;1628:1;1614:11;:15;1606:24;;;;;;-1:-1:-1;1683:23:18;;;;-1:-1:-1;1735:13:18;;1575:185;1891:5;1877:11;:19;1869:28;;;;;;2182:17;2260:11;2257:1;2254;2247:25;2623:12;2638;;;:26;;2761:22;;;;;3584:1;3565;:15;;3564:21;;3815:17;;;3811:21;;3804:28;3874:17;;;3870:21;;3863:28;3934:17;;;3930:21;;3923:28;3994:17;;;3990:21;;3983:28;4054:17;;;4050:21;;4043:28;4115:17;;;4111:21;;;4104:28;3144:12;;;;3140:23;;;3165:1;3136:31;2393:20;;;2382:32;;;3197:12;;;;2437:21;;;;2894:16;;;;3188:21;;;;4587:11;;;;;-1:-1:-1;;762:3868:18;;;;;;:::o;8842:544:24:-;9012:15;9060:13;-1:-1:-1;;;;;9044:29:24;:13;-1:-1:-1;;;;;9044:29:24;;9040:98;;;9109:13;;9124;9040:98;9171:7;:207;;9303:75;9319:9;-1:-1:-1;;;;;9303:75:24;9346:13;9330;:29;-1:-1:-1;;;;;9303:75:24;-1:-1:-1;;;9303:15:24;:75::i;:::-;9171:207;;;9198:85;9224:9;-1:-1:-1;;;;;9198:85:24;9251:13;9235;:29;-1:-1:-1;;;;;9198:85:24;-1:-1:-1;;;9198:25:24;:85::i;:::-;9151:227;;8842:544;;;;;;;:::o;7579:799::-;7749:15;7797:13;-1:-1:-1;;;;;7781:29:24;:13;-1:-1:-1;;;;;7781:29:24;;7777:98;;;7846:13;;7861;7777:98;7909:45;316:2:17;7909:45:24;;;;-1:-1:-1;;;;;7986:29:24;;;7965:50;;;8036:17;;8028:26;;;;;;8087:7;:283;;8357:13;-1:-1:-1;;;;;8300:70:24;:54;8316:10;8328;8340:13;-1:-1:-1;;;;;8300:54:24;:15;:54::i;:::-;:70;;;;;;8087:283;;;8114:166;8161:64;8187:10;8199;8211:13;-1:-1:-1;;;;;8161:64:24;:25;:64::i;:::-;8248:13;-1:-1:-1;;;;;8114:166:24;:24;:166::i;:::-;8067:303;7579:799;-1:-1:-1;;;;;;;7579:799:24:o;5338:564::-;5511:16;5559:1;5548:8;-1:-1:-1;;;;;5548:12:24;;5540:21;;;;;;5592:1;5580:9;-1:-1:-1;;;;;5580:13:24;;5572:22;;;;;;5694:10;:200;;5818:76;5858:8;5868:9;5879:8;5889:4;5818:39;:76::i;5694:200::-;5724:74;5762:8;5772:9;5783:8;5793:4;5724:37;:74::i;6457:564::-;6632:16;6680:1;6669:8;-1:-1:-1;;;;;6669:12:24;;6661:21;;;;;;6713:1;6701:9;-1:-1:-1;;;;;6701:13:24;;6693:22;;;;;;6809:10;:204;;6937:76;6975:8;6985:9;6996;7007:5;6937:37;:76::i;6809:204::-;6839:78;6879:8;6889:9;6900;6911:5;6839:39;:78::i;4919:325:18:-;5045:14;5081:25;5088:1;5091;5094:11;5081:6;:25::i;:::-;5072:34;;5149:1;5134:11;5121:25;;;;;5131:1;5128;5121:25;:29;5117:120;;;-1:-1:-1;;5175:6:18;:26;5167:35;;;;;;5217:8;;4919:325;;;;;:::o;503:169:30:-;626:9;;;640;;637:16;;622:32;;602:63::o;3664:1116:24:-;3842:7;4022:3;4018:755;;;4042:16;-1:-1:-1;;;;;4080:27:24;;;:174;;4202:52;4218:6;-1:-1:-1;;;4244:9:24;-1:-1:-1;;;;;4202:52:24;:15;:52::i;:::-;4080:174;;;-1:-1:-1;;;;;4131:47:24;;316:2:17;4132:33:24;;;4131:47;;;;;;4080:174;4042:227;-1:-1:-1;4293:43:24;:31;-1:-1:-1;;;;;4293:17:24;;4042:227;4293:21;:31::i;:::-;:41;:43::i;:::-;4286:50;;;;;4018:755;4369:16;-1:-1:-1;;;;;4407:27:24;;;:207;;4552:62;4578:6;-1:-1:-1;;;4604:9:24;-1:-1:-1;;;;;4552:62:24;:25;:62::i;:::-;4407:207;;;4458:70;316:2:17;4483:33:24;;;-1:-1:-1;;;;;4458:70:24;;:24;:70::i;:::-;4369:260;;4665:8;4654;-1:-1:-1;;;;;4654:19:24;;4646:28;;;;;;-1:-1:-1;;;;;4741:19:24;;;;-1:-1:-1;4726:35:24;;1432:1394;1608:7;1745:11;1741:32;;-1:-1:-1;1765:8:24;1758:15;;1741:32;1805:45;316:2:17;1805:45:24;;;;1863:956;;;;-1:-1:-1;;;;;1921:50:24;;1932:17;;;;1953:6;1932:17;1953:6;1921:38;;;;;:50;1917:328;;;2014:20;;;2057:25;;;2053:176;;2168:60;2194:10;2206:8;-1:-1:-1;;;;;2168:60:24;2216:11;2168:25;:60::i;:::-;2153:76;;;;;;;2053:176;1917:328;;2276:73;2301:10;2313:35;2341:6;2327:8;-1:-1:-1;;;;;2314:21:24;:10;:21;;;;;;;2313:27;:35::i;:::-;2276:24;:73::i;:::-;2261:89;;;;;;1863:956;-1:-1:-1;;;;;2581:50:24;;2592:17;;;;2613:6;2592:17;2613:6;2581:38;;;;;:50;:74;;;;;2648:7;2635:10;:20;2581:74;2573:83;;;;;;2693:20;;;2735:72;:60;2693:10;-1:-1:-1;;;;;2735:60:24;;2693:20;2735:25;:60::i;445:113:20:-;538:5;;;533:16;;;;525:25;;;;;;445:113;;;;:::o;366::23:-;469:1;-1:-1:-1;;;;;449:21:23;;;;441:30;;;;;;366:113;;;:::o"},"methodIdentifiers":{"computeSwapStep(uint160,uint160,uint128,int256,uint24)":"100d3f74","getGasCostOfComputeSwapStep(uint160,uint160,uint128,int256,uint24)":"d28c51b7"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtP\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPTarget\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"int256\",\"name\":\"amountRemaining\",\"type\":\"int256\"},{\"internalType\":\"uint24\",\"name\":\"feePips\",\"type\":\"uint24\"}],\"name\":\"computeSwapStep\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtQ\",\"type\":\"uint160\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtP\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPTarget\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"int256\",\"name\":\"amountRemaining\",\"type\":\"int256\"},{\"internalType\":\"uint24\",\"name\":\"feePips\",\"type\":\"uint24\"}],\"name\":\"getGasCostOfComputeSwapStep\",\"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/elixir-core/test/SwapMathTest.sol\":\"SwapMathTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]},\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]},\"contracts/elixir-core/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0x2c9f7a00da077c5f777cd8a47711257952b2748b0fe7c188fa990b279940d78a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0a6b8809b92e411169924b7b355ebff8fac6e4e8b389318ff331d3220f02ec92\",\"dweb:/ipfs/QmZVMTo4zNPT4Rge5u3KTNr16XR7CqG1AupW3aybHty6N5\"]},\"contracts/elixir-core/libraries/SwapMath.sol\":{\"keccak256\":\"0xaf0c258b9f5d1629f1797ad13996f422f303addc1bdb5dc3333ab3f352f306b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d7a3b8d7d38ed7b7a8d7541ff4e0c78c7230c49f31a9a21eb1b5974adf80fa81\",\"dweb:/ipfs/QmXvjE4AjfYGVqRpgrGj1sgJWdjfo8mhrTnNK9fwrDYP77\"]},\"contracts/elixir-core/libraries/UnsafeMath.sol\":{\"keccak256\":\"0x3c829e89e91323d9c3e0f15272baa9aa1d28291e7633ee4f1414774e6eca0a7d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f99f38de11092e98d43f1d14061fcfa7309a80ae93d2b7af99c9256c97312c23\",\"dweb:/ipfs/QmQXXUR1PhKUFVZXwwekW23YE9Zy7r3GvdtcDyc2nNTpSb\"]},\"contracts/elixir-core/test/SwapMathTest.sol\":{\"keccak256\":\"0xc7953fb57cbc7dedb7e0419254e7f9a63a0127e58bc77c4291a0a735ea9ba050\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7447209345af878986f41c01f157f3cbf8846d10aff544357ebf8c56707ec297\",\"dweb:/ipfs/QmUHLCcqfnQmtmqHufzAGaqSikZtP5hvX8fHvTihXcyjxY\"]}},\"version\":1}"}},"contracts/elixir-core/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":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","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":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","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":"608060405234801561001057600080fd5b506040516106fb3803806106fb8339818101604052602081101561003357600080fd5b505161003f3382610045565b506100c8565b6001600160a01b0382166000908152602081905260409020548101818110156100a8576040805162461bcd60e51b815260206004820152601060248201526f6f766572666c6f772062616c616e636560801b604482015290519081900360640190fd5b6001600160a01b0390921660009081526020819052604090209190915550565b610624806100d76000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806370a082311161005057806370a082311461011b578063a9059cbb14610153578063dd62ed3e1461017f57610072565b8063095ea7b31461007757806323b872dd146100b757806340c10f19146100ed575b600080fd5b6100a36004803603604081101561008d57600080fd5b506001600160a01b0381351690602001356101ad565b604080519115158252519081900360200190f35b6100a3600480360360608110156100cd57600080fd5b506001600160a01b03813581169160208101359091169060400135610213565b6101196004803603604081101561010357600080fd5b506001600160a01b0381351690602001356103f3565b005b6101416004803603602081101561013157600080fd5b50356001600160a01b0316610483565b60408051918252519081900360200190f35b6100a36004803603604081101561016957600080fd5b506001600160a01b038135169060200135610495565b6101416004803603604081101561019557600080fd5b506001600160a01b03813581169160200135166105d1565b3360008181526001602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b6001600160a01b03831660009081526001602090815260408083203384529091528120548281101561028c576040805162461bcd60e51b815260206004820152601660248201527f616c6c6f77616e636520696e73756666696369656e7400000000000000000000604482015290519081900360640190fd5b6001600160a01b0380861660009081526001602090815260408083203384528252808320878603905592871682528190522054808401811115610316576040805162461bcd60e51b815260206004820152601a60248201527f6f766572666c6f772062616c616e636520726563697069656e74000000000000604482015290519081900360640190fd5b6001600160a01b0380861660009081526020819052604080822084880190559188168152205484811015610391576040805162461bcd60e51b815260206004820152601860248201527f756e646572666c6f772062616c616e63652073656e6465720000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526020818152604091829020898603905581518981529151938a16937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35060019695505050505050565b6001600160a01b038216600090815260208190526040902054810181811015610463576040805162461bcd60e51b815260206004820152601060248201527f6f766572666c6f772062616c616e636500000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0390921660009081526020819052604090209190915550565b60006020819052908152604090205481565b33600090815260208190526040812054828110156104fa576040805162461bcd60e51b815260206004820152601460248201527f696e73756666696369656e742062616c616e6365000000000000000000000000604482015290519081900360640190fd5b3360009081526020819052604080822085840390556001600160a01b0386168252902054808401811115610575576040805162461bcd60e51b815260206004820152601a60248201527f726563697069656e742062616c616e6365206f766572666c6f77000000000000604482015290519081900360640190fd5b6001600160a01b0385166000818152602081815260409182902084880190558151878152915133927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92908290030190a3506001949350505050565b60016020908152600092835260408084209091529082529020548156fea264697066735822122084bedd09179f51329c19c7a9b37941838c9b097a68d25ca7c3c4ca50bf624dce64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x6FB CODESIZE SUB DUP1 PUSH2 0x6FB DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3F CALLER DUP3 PUSH2 0x45 JUMP JUMPDEST POP PUSH2 0xC8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0xA8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x6F766572666C6F772062616C616E6365 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH2 0x624 DUP1 PUSH2 0xD7 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 0x70A08231 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x17F JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xB7 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0xED JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x213 JUMP JUMPDEST PUSH2 0x119 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3F3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x141 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x483 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x495 JUMP JUMPDEST PUSH2 0x141 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5D1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x28C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x616C6C6F77616E636520696E73756666696369656E7400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP7 SUB SWAP1 SSTORE SWAP3 DUP8 AND DUP3 MSTORE DUP2 SWAP1 MSTORE KECCAK256 SLOAD DUP1 DUP5 ADD DUP2 GT ISZERO PUSH2 0x316 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F766572666C6F772062616C616E636520726563697069656E74000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 DUP9 ADD SWAP1 SSTORE SWAP2 DUP9 AND DUP2 MSTORE KECCAK256 SLOAD DUP5 DUP2 LT ISZERO PUSH2 0x391 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x756E646572666C6F772062616C616E63652073656E6465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP10 DUP7 SUB SWAP1 SSTORE DUP2 MLOAD DUP10 DUP2 MSTORE SWAP2 MLOAD SWAP4 DUP11 AND SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0x463 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F766572666C6F772062616C616E636500000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x4FA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E73756666696369656E742062616C616E6365000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP5 SUB SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP1 DUP5 ADD DUP2 GT ISZERO PUSH2 0x575 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x726563697069656E742062616C616E6365206F766572666C6F77000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP5 DUP9 ADD SWAP1 SSTORE DUP2 MLOAD DUP8 DUP2 MSTORE SWAP2 MLOAD CALLER SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 0xBE 0xDD MULMOD OR SWAP16 MLOAD ORIGIN SWAP13 NOT 0xC7 0xA9 0xB3 PUSH26 0x41838C9B097A68D25CA7C3C4CA50BF624DCE64736F6C63430007 MOD STOP CALLER ","sourceMap":"112:2116:46:-:0;;;297:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;297:83:46;342:30;347:10;297:83;342:4;:30::i;:::-;297:83;112:2116;;388:211;-1:-1:-1;;;;;470:13:46;;448:19;470:13;;;;;;;;;;;:22;;511:21;;;;503:50;;;;;-1:-1:-1;;;503:50:46;;;;;;;;;;;;-1:-1:-1;;;503:50:46;;;;;;;;;;;;;;;-1:-1:-1;;;;;564:13:46;;;:9;:13;;;;;;;;;;:27;;;;-1:-1:-1;388:211:46:o;112:2116::-;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c806370a082311161005057806370a082311461011b578063a9059cbb14610153578063dd62ed3e1461017f57610072565b8063095ea7b31461007757806323b872dd146100b757806340c10f19146100ed575b600080fd5b6100a36004803603604081101561008d57600080fd5b506001600160a01b0381351690602001356101ad565b604080519115158252519081900360200190f35b6100a3600480360360608110156100cd57600080fd5b506001600160a01b03813581169160208101359091169060400135610213565b6101196004803603604081101561010357600080fd5b506001600160a01b0381351690602001356103f3565b005b6101416004803603602081101561013157600080fd5b50356001600160a01b0316610483565b60408051918252519081900360200190f35b6100a36004803603604081101561016957600080fd5b506001600160a01b038135169060200135610495565b6101416004803603604081101561019557600080fd5b506001600160a01b03813581169160200135166105d1565b3360008181526001602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b6001600160a01b03831660009081526001602090815260408083203384529091528120548281101561028c576040805162461bcd60e51b815260206004820152601660248201527f616c6c6f77616e636520696e73756666696369656e7400000000000000000000604482015290519081900360640190fd5b6001600160a01b0380861660009081526001602090815260408083203384528252808320878603905592871682528190522054808401811115610316576040805162461bcd60e51b815260206004820152601a60248201527f6f766572666c6f772062616c616e636520726563697069656e74000000000000604482015290519081900360640190fd5b6001600160a01b0380861660009081526020819052604080822084880190559188168152205484811015610391576040805162461bcd60e51b815260206004820152601860248201527f756e646572666c6f772062616c616e63652073656e6465720000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526020818152604091829020898603905581518981529151938a16937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35060019695505050505050565b6001600160a01b038216600090815260208190526040902054810181811015610463576040805162461bcd60e51b815260206004820152601060248201527f6f766572666c6f772062616c616e636500000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0390921660009081526020819052604090209190915550565b60006020819052908152604090205481565b33600090815260208190526040812054828110156104fa576040805162461bcd60e51b815260206004820152601460248201527f696e73756666696369656e742062616c616e6365000000000000000000000000604482015290519081900360640190fd5b3360009081526020819052604080822085840390556001600160a01b0386168252902054808401811115610575576040805162461bcd60e51b815260206004820152601a60248201527f726563697069656e742062616c616e6365206f766572666c6f77000000000000604482015290519081900360640190fd5b6001600160a01b0385166000818152602081815260409182902084880190558151878152915133927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92908290030190a3506001949350505050565b60016020908152600092835260408084209091529082529020548156fea264697066735822122084bedd09179f51329c19c7a9b37941838c9b097a68d25ca7c3c4ca50bf624dce64736f6c63430007060033","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 0x70A08231 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x17F JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xB7 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0xED JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x213 JUMP JUMPDEST PUSH2 0x119 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3F3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x141 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x483 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x495 JUMP JUMPDEST PUSH2 0x141 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5D1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x28C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x616C6C6F77616E636520696E73756666696369656E7400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP7 SUB SWAP1 SSTORE SWAP3 DUP8 AND DUP3 MSTORE DUP2 SWAP1 MSTORE KECCAK256 SLOAD DUP1 DUP5 ADD DUP2 GT ISZERO PUSH2 0x316 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F766572666C6F772062616C616E636520726563697069656E74000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 DUP9 ADD SWAP1 SSTORE SWAP2 DUP9 AND DUP2 MSTORE KECCAK256 SLOAD DUP5 DUP2 LT ISZERO PUSH2 0x391 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x756E646572666C6F772062616C616E63652073656E6465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP10 DUP7 SUB SWAP1 SSTORE DUP2 MLOAD DUP10 DUP2 MSTORE SWAP2 MLOAD SWAP4 DUP11 AND SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0x463 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F766572666C6F772062616C616E636500000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x4FA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E73756666696369656E742062616C616E6365000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP5 SUB SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP1 DUP5 ADD DUP2 GT ISZERO PUSH2 0x575 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x726563697069656E742062616C616E6365206F766572666C6F77000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP5 DUP9 ADD SWAP1 SSTORE DUP2 MLOAD DUP8 DUP2 MSTORE SWAP2 MLOAD CALLER SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 0xBE 0xDD MULMOD OR SWAP16 MLOAD ORIGIN SWAP13 NOT 0xC7 0xA9 0xB3 PUSH26 0x41838C9B097A68D25CA7C3C4CA50BF624DCE64736F6C63430007 MOD STOP CALLER ","sourceMap":"112:2116:46:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1182:216;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1182:216:46;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1406:819;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1406:819:46;;;;;;;;;;;;;;;;;:::i;388:211::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;388:211:46;;;;;;;;:::i;:::-;;155:53;;;;;;;;;;;;;;;;-1:-1:-1;155:53:46;-1:-1:-1;;;;;155:53:46;;:::i;:::-;;;;;;;;;;;;;;;;607:567;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;607:567:46;;;;;;;;:::i;215:73::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;215:73:46;;;;;;;;;;:::i;1182:216::-;1286:10;1259:4;1276:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;1276:30:46;;;;;;;;;;;:39;;;1331:37;;;;;;;1259:4;;1276:30;;1286:10;;1331:37;;;;;;;;-1:-1:-1;1386:4:46;1182:216;;;;:::o;1406:819::-;-1:-1:-1;;;;;1583:17:46;;1540:4;1583:17;;;:9;:17;;;;;;;;1601:10;1583:29;;;;;;;;1631:25;;;;1623:60;;;;;-1:-1:-1;;;1623:60:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1696:17:46;;;;;;;:9;:17;;;;;;;;1714:10;1696:29;;;;;;;1728:24;;;1696:56;;1792:20;;;;;;;;;;1831:25;;;:45;-1:-1:-1;1831:45:46;1823:84;;;;;-1:-1:-1;;;1823:84:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1918:20:46;;;:9;:20;;;;;;;;;;;1941:25;;;1918:48;;2001:17;;;;;;;2037:23;;;;2029:60;;;;;-1:-1:-1;;;2029:60:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2100:17:46;;;:9;:17;;;;;;;;;;;;2120:22;;;2100:42;;2160:35;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2213:4:46;;1406:819;-1:-1:-1;;;;;;1406:819:46:o;388:211::-;-1:-1:-1;;;;;470:13:46;;448:19;470:13;;;;;;;;;;;:22;;511:21;;;;503:50;;;;;-1:-1:-1;;;503:50:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;564:13:46;;;:9;:13;;;;;;;;;;:27;;;;-1:-1:-1;388:211:46:o;155:53::-;;;;;;;;;;;;;;:::o;607:567::-;738:10;687:4;728:21;;;;;;;;;;;768:23;;;;760:56;;;;;-1:-1:-1;;;760:56:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:10;827:9;:21;;;;;;;;;;;851:22;;;827:46;;-1:-1:-1;;;;;913:20:46;;;;;;;952:25;;;:45;-1:-1:-1;952:45:46;944:84;;;;;-1:-1:-1;;;944:84:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1039:20:46;;:9;:20;;;;;;;;;;;;1062:25;;;1039:48;;1105:39;;;;;;;1114:10;;1105:39;;;;;;;;;-1:-1:-1;1162:4:46;;607:567;-1:-1:-1;;;;607:567:46:o;215:73::-;;;;;;;;;;;;;;;;;;;;;;;;:::o"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","mint(address,uint256)":"40c10f19","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\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"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\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":{\"approve(address,uint256)\":{\"params\":{\"amount\":\"The amount of tokens allowed to be used by `spender`\",\"spender\":\"The account which will be allowed to spend a given amount of the owners tokens\"},\"returns\":{\"_0\":\"Returns true for a successful approval, false for unsuccessful\"}},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to send from the sender to the recipient\",\"recipient\":\"The account that will receive the amount transferred\"},\"returns\":{\"_0\":\"Returns true for a successful transfer, false for an unsuccessful transfer\"}},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The amount of the transfer\",\"recipient\":\"The recipient of the transfer\",\"sender\":\"The account from which the transfer will be initiated\"},\"returns\":{\"_0\":\"Returns true for a successful transfer, false for unsuccessful\"}}},\"stateVariables\":{\"allowance\":{\"params\":{\"owner\":\"The account of the token owner\",\"spender\":\"The account of the token spender\"},\"return\":\"The current allowance granted by `owner` to `spender`\"},\"balanceOf\":{\"params\":{\"account\":\"The account for which to look up the number of tokens it has, i.e. its balance\"},\"return\":\"The number of tokens held by the account\"}},\"version\":1},\"userdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"notice\":\"Event emitted when the approval amount for the spender of a given owner's tokens changes.\"},\"Transfer(address,address,uint256)\":{\"notice\":\"Event emitted when tokens are transferred from one address to another, either via `#transfer` or `#transferFrom`.\"}},\"kind\":\"user\",\"methods\":{\"allowance(address,address)\":{\"notice\":\"Returns the current allowance given to a spender by an owner\"},\"approve(address,uint256)\":{\"notice\":\"Sets the allowance of a spender from the `msg.sender` to the value `amount`\"},\"balanceOf(address)\":{\"notice\":\"Returns the balance of a token\"},\"transfer(address,uint256)\":{\"notice\":\"Transfers the amount of token from the `msg.sender` to the recipient\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `sender` to `recipient` up to the allowance given to the `msg.sender`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/TestERC20.sol\":\"TestERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IERC20Minimal.sol\":{\"keccak256\":\"0xd38b95824b4675c864898a9c6de1f8470da22df3045b70469baf63a84ba9c07a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2410bc2a7705f0e189a561329567a7908bf7e999b858b4f6b1a3702b394397e6\",\"dweb:/ipfs/QmPoLXFfp8BJzpVtHaXMPHQsB82YUSrwpGzzzE3stt9p21\"]},\"contracts/elixir-core/test/TestERC20.sol\":{\"keccak256\":\"0xa848f4ee4bdf61cc1539ba312edd2bc0540eec19651cabae4493584961ddd590\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9dc325cd6d547fcd7d2116a06f5687a4b79b25e8c2130eeeef2f97db3cba7b1e\",\"dweb:/ipfs/QmQVnkksB5TGAtYMnXjhB7dsG8Xx1taLsjhV9zRt6KaFyT\"]}},\"version\":1}"}},"contracts/elixir-core/test/TestElixirCallee.sol":{"TestElixirCallee":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fee0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee1","type":"uint256"}],"name":"FlashCallback","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount0Owed","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Owed","type":"uint256"}],"name":"MintCallback","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"amount0Delta","type":"int256"},{"indexed":false,"internalType":"int256","name":"amount1Delta","type":"int256"}],"name":"SwapCallback","type":"event"},{"inputs":[{"internalType":"uint256","name":"fee0","type":"uint256"},{"internalType":"uint256","name":"fee1","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"elixirFlashCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0Owed","type":"uint256"},{"internalType":"uint256","name":"amount1Owed","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"elixirMintCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"elixirSwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"uint256","name":"pay0","type":"uint256"},{"internalType":"uint256","name":"pay1","type":"uint256"}],"name":"flash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"}],"name":"mint","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"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"address","name":"recipient","type":"address"}],"name":"swapToHigherSqrtPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"address","name":"recipient","type":"address"}],"name":"swapToLowerSqrtPrice","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506111d3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80637b4f532711610081578063d804d7a71161005b578063d804d7a714610355578063e2be9109146103d1578063f603482c1461040d576100c9565b80637b4f5327146102845780639e77b805146102e1578063bac7bf7814610319576100c9565b80631507a8f4116100b25780631507a8f4146101945780632ec20bf9146102105780636dfc0ddb14610248576100c9565b8063034b0f8f146100ce5780630659efa614610118575b600080fd5b610116600480360360c08110156100e457600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a00135610449565b005b6101166004803603606081101561012e57600080fd5b81359160208101359181019060608101604082013564010000000081111561015557600080fd5b82018360208201111561016757600080fd5b8035906020019184600183028401116401000000008311171561018957600080fd5b50909250905061056a565b610116600480360360608110156101aa57600080fd5b8135916020810135918101906060810160408201356401000000008111156101d157600080fd5b8201836020820111156101e357600080fd5b8035906020019184600183028401116401000000008311171561020557600080fd5b5090925090506107c0565b6101166004803603606081101561022657600080fd5b506001600160a01b038135811691602081013582169160409091013516610a01565b6101166004803603608081101561025e57600080fd5b506001600160a01b03813581169160208101359160408201358116916060013516610b36565b610116600480360360a081101561029a57600080fd5b5080356001600160a01b03908116916020810135909116906040810135600290810b91606081013590910b90608001356fffffffffffffffffffffffffffffffff16610c74565b610116600480360360608110156102f757600080fd5b506001600160a01b038135811691602081013582169160409091013516610dae565b6101166004803603608081101561032f57600080fd5b506001600160a01b03813581169160208101359160408201358116916060013516610e69565b6101166004803603606081101561036b57600080fd5b81359160208101359181019060608101604082013564010000000081111561039257600080fd5b8201836020820111156103a457600080fd5b803590602001918460018302840111640100000000831117156103c657600080fd5b509092509050610f28565b610116600480360360808110156103e757600080fd5b506001600160a01b03813581169160208101359160408201358116916060013516611155565b6101166004803603608081101561042357600080fd5b506001600160a01b03813581169160208101359160408201358116916060013516611170565b856001600160a01b031663490e6cbc86868633878760405160200180846001600160a01b0316815260200183815260200182815260200193505050506040516020818303038152906040526040518563ffffffff1660e01b815260040180856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156104fb5781810151838201526020016104e3565b50505050905090810190601f1680156105285780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561054a57600080fd5b505af115801561055e573d6000803e3d6000fd5b50505050505050505050565b604080518581526020810185905281517f2b0391b4fa408cfe47abd1977d72985695b2e5ebd3175f55be25f2c68c5df21b929181900390910190a16000806000848460608110156105ba57600080fd5b506001600160a01b0381351693506020810135925060400135905081156106c657336001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561061457600080fd5b505afa158015610628573d6000803e3d6000fd5b505050506040513d602081101561063e57600080fd5b5051604080516323b872dd60e01b81526001600160a01b03868116600483015233602483015260448201869052915191909216916323b872dd9160648083019260209291908290030181600087803b15801561069957600080fd5b505af11580156106ad573d6000803e3d6000fd5b505050506040513d60208110156106c357600080fd5b50505b80156107b757336001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561070557600080fd5b505afa158015610719573d6000803e3d6000fd5b505050506040513d602081101561072f57600080fd5b5051604080516323b872dd60e01b81526001600160a01b03868116600483015233602483015260448201859052915191909216916323b872dd9160648083019260209291908290030181600087803b15801561078a57600080fd5b505af115801561079e573d6000803e3d6000fd5b505050506040513d60208110156107b457600080fd5b50505b50505050505050565b6000828260208110156107d257600080fd5b506040805187815260208101879052815192356001600160a01b031693507fa0968be00566083701c9ef671c169d7fb05ac8907de4ca17185de74ccbb694d4929081900390910190a1841561090c57336001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561085a57600080fd5b505afa15801561086e573d6000803e3d6000fd5b505050506040513d602081101561088457600080fd5b5051604080516323b872dd60e01b81526001600160a01b03848116600483015233602483015260448201899052915191909216916323b872dd9160648083019260209291908290030181600087803b1580156108df57600080fd5b505af11580156108f3573d6000803e3d6000fd5b505050506040513d602081101561090957600080fd5b50505b83156109fa57336001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561094b57600080fd5b505afa15801561095f573d6000803e3d6000fd5b505050506040513d602081101561097557600080fd5b5051604080516323b872dd60e01b81526001600160a01b03848116600483015233602483015260448201889052915191909216916323b872dd9160648083019260209291908290030181600087803b1580156109d057600080fd5b505af11580156109e4573d6000803e3d6000fd5b505050506040513d60208110156107b757600080fd5b5050505050565b826001600160a01b031663128acb088260016001600160ff1b03863360405160200180826001600160a01b031681526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018515158152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610abd578181015183820152602001610aa5565b50505050905090810190601f168015610aea5780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b158015610b0c57600080fd5b505af1158015610b20573d6000803e3d6000fd5b505050506040513d60408110156109fa57600080fd5b836001600160a01b031663128acb08836001610b5187611187565b853360405160200180826001600160a01b031681526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018515158152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610bf3578181015183820152602001610bdb565b50505050905090810190601f168015610c205780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b158015610c4257600080fd5b505af1158015610c56573d6000803e3d6000fd5b505050506040513d6040811015610c6c57600080fd5b505050505050565b846001600160a01b0316633c8a7d8d858585853360405160200180826001600160a01b031681526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018560020b81526020018460020b8152602001836fffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610d35578181015183820152602001610d1d565b50505050905090810190601f168015610d625780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b158015610d8457600080fd5b505af1158015610d98573d6000803e3d6000fd5b505050506040513d60408110156107b757600080fd5b826001600160a01b031663128acb088260006001600160ff1b03863360405160200180826001600160a01b031681526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018515158152602001848152602001836001600160a01b03168152602001806020018281038252838181518152602001915080519060200190808383600083811015610abd578181015183820152602001610aa5565b836001600160a01b031663128acb08836001610e8487611187565b600003853360405160200180826001600160a01b031681526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018515158152602001848152602001836001600160a01b03168152602001806020018281038252838181518152602001915080519060200190808383600083811015610bf3578181015183820152602001610bdb565b600082826020811015610f3a57600080fd5b506040805187815260208101879052815192356001600160a01b031693507fd48241df4a75e663b29e55f9506b31f77ed0f48cfe7e7612d1163144995dc1ca929081900390910190a1600085131561107c57336001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610fc557600080fd5b505afa158015610fd9573d6000803e3d6000fd5b505050506040513d6020811015610fef57600080fd5b5051604080516323b872dd60e01b81526001600160a01b03848116600483015233602483015260448201899052915191909216916323b872dd9160648083019260209291908290030181600087803b15801561104a57600080fd5b505af115801561105e573d6000803e3d6000fd5b505050506040513d602081101561107457600080fd5b506109fa9050565b600084131561114357336001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156110be57600080fd5b505afa1580156110d2573d6000803e3d6000fd5b505050506040513d60208110156110e857600080fd5b5051604080516323b872dd60e01b81526001600160a01b03848116600483015233602483015260448201889052915191909216916323b872dd9160648083019260209291908290030181600087803b15801561104a57600080fd5b8415801561114f575083155b6109fa57fe5b836001600160a01b031663128acb08836000610b5187611187565b836001600160a01b031663128acb08836000610e84875b6000600160ff1b821061119957600080fd5b509056fea2646970667358221220c863f843eaa9e3e6be5f29b3f142dd0d1c04af840ef0ae510dac0f9f0754866664736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11D3 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 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7B4F5327 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD804D7A7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xD804D7A7 EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0xE2BE9109 EQ PUSH2 0x3D1 JUMPI DUP1 PUSH4 0xF603482C EQ PUSH2 0x40D JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x7B4F5327 EQ PUSH2 0x284 JUMPI DUP1 PUSH4 0x9E77B805 EQ PUSH2 0x2E1 JUMPI DUP1 PUSH4 0xBAC7BF78 EQ PUSH2 0x319 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x1507A8F4 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x1507A8F4 EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0x2EC20BF9 EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0x6DFC0DDB EQ PUSH2 0x248 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x34B0F8F EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x659EFA6 EQ PUSH2 0x118 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x449 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x12E 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 0x155 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x167 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 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x56A JUMP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1AA 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 0x1D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1E3 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 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x7C0 JUMP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0xA01 JUMP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x25E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xB36 JUMP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC74 JUMP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0xDAE JUMP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xE69 JUMP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x36B 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 0x392 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3A4 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 0x3C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xF28 JUMP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x3E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1155 JUMP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x423 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1170 JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x490E6CBC DUP7 DUP7 DUP7 CALLER DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP 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 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 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 0x4FB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4E3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x528 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 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x54A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x55E 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 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x2B0391B4FA408CFE47ABD1977D72985695B2E5EBD3175F55BE25F2C68C5DF21B SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP5 PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x5BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP4 POP PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 ADD CALLDATALOAD SWAP1 POP DUP2 ISZERO PUSH2 0x6C6 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x614 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x628 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 0x63E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP7 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 0x699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6AD 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 0x6C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST DUP1 ISZERO PUSH2 0x7B7 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x705 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x719 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 0x72F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 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 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x79E 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 0x7B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE DUP2 MLOAD SWAP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 POP PUSH32 0xA0968BE00566083701C9EF671C169D7FB05AC8907DE4CA17185DE74CCBB694D4 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 DUP5 ISZERO PUSH2 0x90C JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x85A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x86E 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 0x884 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x8DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8F3 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 0x909 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST DUP4 ISZERO PUSH2 0x9FA JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x94B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x95F 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 0x975 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x9D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9E4 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 0x7B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP7 CALLER PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xABD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAA5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAEA 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 0xB0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB20 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 0x9FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP4 PUSH1 0x1 PUSH2 0xB51 DUP8 PUSH2 0x1187 JUMP JUMPDEST DUP6 CALLER PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xBF3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBDB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC20 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 0xC42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC56 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 0xC6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3C8A7D8D DUP6 DUP6 DUP6 DUP6 CALLER PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0xD35 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD1D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xD62 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 0xD84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD98 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 0x7B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP3 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP7 CALLER PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xABD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAA5 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP4 PUSH1 0x1 PUSH2 0xE84 DUP8 PUSH2 0x1187 JUMP JUMPDEST PUSH1 0x0 SUB DUP6 CALLER PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xBF3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBDB JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE DUP2 MLOAD SWAP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 POP PUSH32 0xD48241DF4A75E663B29E55F9506B31F77ED0F48CFE7E7612D1163144995DC1CA SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 DUP6 SGT ISZERO PUSH2 0x107C JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xFC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFD9 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 0xFEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x104A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x105E 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 0x1074 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9FA SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP5 SGT ISZERO PUSH2 0x1143 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x10BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10D2 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 0x10E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x104A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 ISZERO DUP1 ISZERO PUSH2 0x114F JUMPI POP DUP4 ISZERO JUMPDEST PUSH2 0x9FA JUMPI INVALID JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP4 PUSH1 0x0 PUSH2 0xB51 DUP8 PUSH2 0x1187 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP4 PUSH1 0x0 PUSH2 0xE84 DUP8 JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 LT PUSH2 0x1199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC8 PUSH4 0xF843EAA9 0xE3 0xE6 0xBE 0x5F 0x29 0xB3 CALL TIMESTAMP 0xDD 0xD SHR DIV 0xAF DUP5 0xE CREATE 0xAE MLOAD 0xD 0xAC 0xF SWAP16 SMOD SLOAD DUP7 PUSH7 0x64736F6C634300 SMOD MOD STOP CALLER ","sourceMap":"408:5403:47:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100c95760003560e01c80637b4f532711610081578063d804d7a71161005b578063d804d7a714610355578063e2be9109146103d1578063f603482c1461040d576100c9565b80637b4f5327146102845780639e77b805146102e1578063bac7bf7814610319576100c9565b80631507a8f4116100b25780631507a8f4146101945780632ec20bf9146102105780636dfc0ddb14610248576100c9565b8063034b0f8f146100ce5780630659efa614610118575b600080fd5b610116600480360360c08110156100e457600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a00135610449565b005b6101166004803603606081101561012e57600080fd5b81359160208101359181019060608101604082013564010000000081111561015557600080fd5b82018360208201111561016757600080fd5b8035906020019184600183028401116401000000008311171561018957600080fd5b50909250905061056a565b610116600480360360608110156101aa57600080fd5b8135916020810135918101906060810160408201356401000000008111156101d157600080fd5b8201836020820111156101e357600080fd5b8035906020019184600183028401116401000000008311171561020557600080fd5b5090925090506107c0565b6101166004803603606081101561022657600080fd5b506001600160a01b038135811691602081013582169160409091013516610a01565b6101166004803603608081101561025e57600080fd5b506001600160a01b03813581169160208101359160408201358116916060013516610b36565b610116600480360360a081101561029a57600080fd5b5080356001600160a01b03908116916020810135909116906040810135600290810b91606081013590910b90608001356fffffffffffffffffffffffffffffffff16610c74565b610116600480360360608110156102f757600080fd5b506001600160a01b038135811691602081013582169160409091013516610dae565b6101166004803603608081101561032f57600080fd5b506001600160a01b03813581169160208101359160408201358116916060013516610e69565b6101166004803603606081101561036b57600080fd5b81359160208101359181019060608101604082013564010000000081111561039257600080fd5b8201836020820111156103a457600080fd5b803590602001918460018302840111640100000000831117156103c657600080fd5b509092509050610f28565b610116600480360360808110156103e757600080fd5b506001600160a01b03813581169160208101359160408201358116916060013516611155565b6101166004803603608081101561042357600080fd5b506001600160a01b03813581169160208101359160408201358116916060013516611170565b856001600160a01b031663490e6cbc86868633878760405160200180846001600160a01b0316815260200183815260200182815260200193505050506040516020818303038152906040526040518563ffffffff1660e01b815260040180856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156104fb5781810151838201526020016104e3565b50505050905090810190601f1680156105285780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561054a57600080fd5b505af115801561055e573d6000803e3d6000fd5b50505050505050505050565b604080518581526020810185905281517f2b0391b4fa408cfe47abd1977d72985695b2e5ebd3175f55be25f2c68c5df21b929181900390910190a16000806000848460608110156105ba57600080fd5b506001600160a01b0381351693506020810135925060400135905081156106c657336001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561061457600080fd5b505afa158015610628573d6000803e3d6000fd5b505050506040513d602081101561063e57600080fd5b5051604080516323b872dd60e01b81526001600160a01b03868116600483015233602483015260448201869052915191909216916323b872dd9160648083019260209291908290030181600087803b15801561069957600080fd5b505af11580156106ad573d6000803e3d6000fd5b505050506040513d60208110156106c357600080fd5b50505b80156107b757336001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561070557600080fd5b505afa158015610719573d6000803e3d6000fd5b505050506040513d602081101561072f57600080fd5b5051604080516323b872dd60e01b81526001600160a01b03868116600483015233602483015260448201859052915191909216916323b872dd9160648083019260209291908290030181600087803b15801561078a57600080fd5b505af115801561079e573d6000803e3d6000fd5b505050506040513d60208110156107b457600080fd5b50505b50505050505050565b6000828260208110156107d257600080fd5b506040805187815260208101879052815192356001600160a01b031693507fa0968be00566083701c9ef671c169d7fb05ac8907de4ca17185de74ccbb694d4929081900390910190a1841561090c57336001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561085a57600080fd5b505afa15801561086e573d6000803e3d6000fd5b505050506040513d602081101561088457600080fd5b5051604080516323b872dd60e01b81526001600160a01b03848116600483015233602483015260448201899052915191909216916323b872dd9160648083019260209291908290030181600087803b1580156108df57600080fd5b505af11580156108f3573d6000803e3d6000fd5b505050506040513d602081101561090957600080fd5b50505b83156109fa57336001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561094b57600080fd5b505afa15801561095f573d6000803e3d6000fd5b505050506040513d602081101561097557600080fd5b5051604080516323b872dd60e01b81526001600160a01b03848116600483015233602483015260448201889052915191909216916323b872dd9160648083019260209291908290030181600087803b1580156109d057600080fd5b505af11580156109e4573d6000803e3d6000fd5b505050506040513d60208110156107b757600080fd5b5050505050565b826001600160a01b031663128acb088260016001600160ff1b03863360405160200180826001600160a01b031681526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018515158152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610abd578181015183820152602001610aa5565b50505050905090810190601f168015610aea5780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b158015610b0c57600080fd5b505af1158015610b20573d6000803e3d6000fd5b505050506040513d60408110156109fa57600080fd5b836001600160a01b031663128acb08836001610b5187611187565b853360405160200180826001600160a01b031681526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018515158152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610bf3578181015183820152602001610bdb565b50505050905090810190601f168015610c205780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b158015610c4257600080fd5b505af1158015610c56573d6000803e3d6000fd5b505050506040513d6040811015610c6c57600080fd5b505050505050565b846001600160a01b0316633c8a7d8d858585853360405160200180826001600160a01b031681526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018560020b81526020018460020b8152602001836fffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610d35578181015183820152602001610d1d565b50505050905090810190601f168015610d625780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b158015610d8457600080fd5b505af1158015610d98573d6000803e3d6000fd5b505050506040513d60408110156107b757600080fd5b826001600160a01b031663128acb088260006001600160ff1b03863360405160200180826001600160a01b031681526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018515158152602001848152602001836001600160a01b03168152602001806020018281038252838181518152602001915080519060200190808383600083811015610abd578181015183820152602001610aa5565b836001600160a01b031663128acb08836001610e8487611187565b600003853360405160200180826001600160a01b031681526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018515158152602001848152602001836001600160a01b03168152602001806020018281038252838181518152602001915080519060200190808383600083811015610bf3578181015183820152602001610bdb565b600082826020811015610f3a57600080fd5b506040805187815260208101879052815192356001600160a01b031693507fd48241df4a75e663b29e55f9506b31f77ed0f48cfe7e7612d1163144995dc1ca929081900390910190a1600085131561107c57336001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610fc557600080fd5b505afa158015610fd9573d6000803e3d6000fd5b505050506040513d6020811015610fef57600080fd5b5051604080516323b872dd60e01b81526001600160a01b03848116600483015233602483015260448201899052915191909216916323b872dd9160648083019260209291908290030181600087803b15801561104a57600080fd5b505af115801561105e573d6000803e3d6000fd5b505050506040513d602081101561107457600080fd5b506109fa9050565b600084131561114357336001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156110be57600080fd5b505afa1580156110d2573d6000803e3d6000fd5b505050506040513d60208110156110e857600080fd5b5051604080516323b872dd60e01b81526001600160a01b03848116600483015233602483015260448201889052915191909216916323b872dd9160648083019260209291908290030181600087803b15801561104a57600080fd5b8415801561114f575083155b6109fa57fe5b836001600160a01b031663128acb08836000610b5187611187565b836001600160a01b031663128acb08836000610e84875b6000600160ff1b821061119957600080fd5b509056fea2646970667358221220c863f843eaa9e3e6be5f29b3f142dd0d1c04af840ef0ae510dac0f9f0754866664736f6c63430007060033","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 0x7B4F5327 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD804D7A7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xD804D7A7 EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0xE2BE9109 EQ PUSH2 0x3D1 JUMPI DUP1 PUSH4 0xF603482C EQ PUSH2 0x40D JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x7B4F5327 EQ PUSH2 0x284 JUMPI DUP1 PUSH4 0x9E77B805 EQ PUSH2 0x2E1 JUMPI DUP1 PUSH4 0xBAC7BF78 EQ PUSH2 0x319 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x1507A8F4 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x1507A8F4 EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0x2EC20BF9 EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0x6DFC0DDB EQ PUSH2 0x248 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x34B0F8F EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x659EFA6 EQ PUSH2 0x118 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x449 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x12E 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 0x155 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x167 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 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x56A JUMP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1AA 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 0x1D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1E3 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 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x7C0 JUMP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0xA01 JUMP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x25E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xB36 JUMP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC74 JUMP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0xDAE JUMP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xE69 JUMP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x36B 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 0x392 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3A4 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 0x3C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xF28 JUMP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x3E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1155 JUMP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x423 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1170 JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x490E6CBC DUP7 DUP7 DUP7 CALLER DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP 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 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 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 0x4FB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4E3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x528 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 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x54A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x55E 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 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x2B0391B4FA408CFE47ABD1977D72985695B2E5EBD3175F55BE25F2C68C5DF21B SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP5 PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x5BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP4 POP PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 ADD CALLDATALOAD SWAP1 POP DUP2 ISZERO PUSH2 0x6C6 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x614 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x628 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 0x63E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP7 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 0x699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6AD 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 0x6C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST DUP1 ISZERO PUSH2 0x7B7 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x705 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x719 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 0x72F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 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 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x79E 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 0x7B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE DUP2 MLOAD SWAP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 POP PUSH32 0xA0968BE00566083701C9EF671C169D7FB05AC8907DE4CA17185DE74CCBB694D4 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 DUP5 ISZERO PUSH2 0x90C JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x85A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x86E 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 0x884 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x8DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8F3 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 0x909 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST DUP4 ISZERO PUSH2 0x9FA JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x94B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x95F 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 0x975 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x9D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9E4 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 0x7B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP7 CALLER PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xABD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAA5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAEA 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 0xB0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB20 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 0x9FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP4 PUSH1 0x1 PUSH2 0xB51 DUP8 PUSH2 0x1187 JUMP JUMPDEST DUP6 CALLER PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xBF3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBDB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC20 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 0xC42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC56 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 0xC6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3C8A7D8D DUP6 DUP6 DUP6 DUP6 CALLER PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0xD35 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD1D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xD62 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 0xD84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD98 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 0x7B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP3 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP7 CALLER PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xABD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAA5 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP4 PUSH1 0x1 PUSH2 0xE84 DUP8 PUSH2 0x1187 JUMP JUMPDEST PUSH1 0x0 SUB DUP6 CALLER PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xBF3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBDB JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE DUP2 MLOAD SWAP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 POP PUSH32 0xD48241DF4A75E663B29E55F9506B31F77ED0F48CFE7E7612D1163144995DC1CA SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 DUP6 SGT ISZERO PUSH2 0x107C JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xFC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFD9 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 0xFEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x104A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x105E 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 0x1074 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9FA SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP5 SGT ISZERO PUSH2 0x1143 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x10BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10D2 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 0x10E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x104A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 ISZERO DUP1 ISZERO PUSH2 0x114F JUMPI POP DUP4 ISZERO JUMPDEST PUSH2 0x9FA JUMPI INVALID JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP4 PUSH1 0x0 PUSH2 0xB51 DUP8 PUSH2 0x1187 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP4 PUSH1 0x0 PUSH2 0xE84 DUP8 JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 LT PUSH2 0x1199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC8 PUSH4 0xF843EAA9 0xE3 0xE6 0xBE 0x5F 0x29 0xB3 CALL TIMESTAMP 0xDD 0xD SHR DIV 0xAF DUP5 0xE CREATE 0xAE MLOAD 0xD 0xAC 0xF SWAP16 SMOD SLOAD DUP7 PUSH7 0x64736F6C634300 SMOD MOD STOP CALLER ","sourceMap":"408:5403:47:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4747:350;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4747:350:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5105:703;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5105:703:47;;-1:-1:-1;5105:703:47;-1:-1:-1;5105:703:47;:::i;4013:670::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4013:670:47;;-1:-1:-1;4013:670:47;-1:-1:-1;4013:670:47;:::i;2014:318::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2014:318:47;;;;;;;;;;;;;;;;;;;:::i;558:354::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;558:354:47;;;;;;;;;;;;;;;;;;;;;;:::i;3596:340::-;;;;;;;;;;;;;;;;-1:-1:-1;3596:340:47;;-1:-1:-1;;;;;3596:340:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2340:320::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2340:320:47;;;;;;;;;;;;;;;;;;;:::i;920:357::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;920:357:47;;;;;;;;;;;;;;;;;;;;;;:::i;2737:851::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2737:851:47;;-1:-1:-1;2737:851:47;-1:-1:-1;2737:851:47;:::i;1285:355::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1285:355:47;;;;;;;;;;;;;;;;;;;;;;:::i;1648:358::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1648:358:47;;;;;;;;;;;;;;;;;;;;;;:::i;4747:350::-;4950:4;-1:-1:-1;;;;;4938:23:47;;4976:9;5000:7;5022;5055:10;5067:4;5073;5044:34;;;;;;-1:-1:-1;;;;;5044:34:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4938:151;;;;;;;;;;;;;-1:-1:-1;;;;;4938:151:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4747:350;;;;;;:::o;5105:703::-;5251:25;;;;;;;;;;;;;;;;;;;;;;;;;5290:14;5306:12;5320;5361:4;;5336:82;;;;;;;;;;-1:-1:-1;;;;;;5336:82:47;;;;-1:-1:-1;5336:82:47;;;;;-1:-1:-1;5336:82:47;;;;-1:-1:-1;5435:8:47;;5431:179;;5484:10;-1:-1:-1;;;;;5472:30:47;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5472:32:47;5458:152;;;-1:-1:-1;;;5458:152:47;;-1:-1:-1;;;;;5458:152:47;;;;;;;5562:10;5458:152;;;;;;;;;;;;:60;;;;;;;:152;;;;;5472:32;;5458:152;;;;;;;-1:-1:-1;5458:60:47;:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5431:179:47;5625:8;;5621:179;;5674:10;-1:-1:-1;;;;;5662:30:47;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5662:32:47;5648:152;;;-1:-1:-1;;;5648:152:47;;-1:-1:-1;;;;;5648:152:47;;;;;;;5752:10;5648:152;;;;;;;;;;;;:60;;;;;;;:152;;;;;5662:32;;5648:152;;;;;;;-1:-1:-1;5648:60:47;:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5621:179:47;5105:703;;;;;;;:::o;4013:670::-;4167:14;4195:4;;4184:27;;;;;;;;;;-1:-1:-1;4229:38:47;;;;;;4184:27;4229:38;;;;;;;4184:27;;-1:-1:-1;;;;;4184:27:47;;-1:-1:-1;4229:38:47;;;;;;;;;;;4282:15;;4278:193;;4338:10;-1:-1:-1;;;;;4326:30:47;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4326:32:47;4312:159;;;-1:-1:-1;;;4312:159:47;;-1:-1:-1;;;;;4312:159:47;;;;;;;4416:10;4312:159;;;;;;;;;;;;:60;;;;;;;:159;;;;;4326:32;;4312:159;;;;;;;-1:-1:-1;4312:60:47;:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4278:193:47;4486:15;;4482:193;;4542:10;-1:-1:-1;;;;;4530:30:47;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4530:32:47;4516:159;;;-1:-1:-1;;;4516:159:47;;-1:-1:-1;;;;;4516:159:47;;;;;;;4620:10;4516:159;;;;;;;;;;;;:60;;;;;;;:159;;;;;4530:32;;4516:159;;;;;;;-1:-1:-1;4516:60:47;:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4482:193;4013:670;;;;;:::o;2014:318::-;2165:4;-1:-1:-1;;;;;2153:22:47;;2190:9;2214:4;-1:-1:-1;;;;;2264:12:47;2302:10;2291:22;;;;;;-1:-1:-1;;;;;2291:22:47;;;;;;;;;;;;;;;;;;;;2153:171;;;;;;;;;;;;;-1:-1:-1;;;;;2153:171:47;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2153:171:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;558:354;736:4;-1:-1:-1;;;;;724:22:47;;761:9;785:4;804:20;:9;:18;:20::i;:::-;839:17;882:10;871:22;;;;;;-1:-1:-1;;;;;871:22:47;;;;;;;;;;;;;;;;;;;;724:180;;;;;;;;;;;;;-1:-1:-1;;;;;724:180:47;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;724:180:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;558:354:47:o;3596:340::-;3777:4;-1:-1:-1;;;;;3765:22:47;;3802:9;3826;3850;3874:6;3906:10;3895:22;;;;;;-1:-1:-1;;;;;3895:22:47;;;;;;;;;;;;;;;;;;;;3765:163;;;;;;;;;;;;;-1:-1:-1;;;;;3765:163:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2340:320;2492:4;-1:-1:-1;;;;;2480:22:47;;2517:9;2541:5;-1:-1:-1;;;;;2592:12:47;2630:10;2619:22;;;;;;-1:-1:-1;;;;;2619:22:47;;;;;;;;;;;;;;;;;;;;2480:172;;;;;;;;;;;;;-1:-1:-1;;;;;2480:172:47;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2480:172:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;920:357;1099:4;-1:-1:-1;;;;;1087:22:47;;1124:9;1148:4;1168:21;:10;:19;:21::i;:::-;1167:22;;1204:17;1247:10;1236:22;;;;;;-1:-1:-1;;;;;1236:22:47;;;;;;;;;;;;;;;;;;;;1087:182;;;;;;;;;;;;;-1:-1:-1;;;;;1087:182:47;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1087:182:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2737:851;2891:14;2919:4;;2908:27;;;;;;;;;;-1:-1:-1;2953:40:47;;;;;;2908:27;2953:40;;;;;;;2908:27;;-1:-1:-1;;;;;2908:27:47;;-1:-1:-1;2953:40:47;;;;;;;;;;;3025:1;3010:12;:16;3006:575;;;3069:10;-1:-1:-1;;;;;3057:30:47;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3057:32:47;3043:169;;;-1:-1:-1;;;3043:169:47;;-1:-1:-1;;;;;3043:169:47;;;;;;;3147:10;3043:169;;;;;;;;;;;;:60;;;;;;;:169;;;;;3057:32;;3043:169;;;;;;;-1:-1:-1;3043:60:47;:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3006:575:47;;-1:-1:-1;3006:575:47;;3249:1;3234:12;:16;3230:351;;;3293:10;-1:-1:-1;;;;;3281:30:47;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3281:32:47;3267:169;;;-1:-1:-1;;;3267:169:47;;-1:-1:-1;;;;;3267:169:47;;;;;;;3371:10;3267:169;;;;;;;;;;;;:60;;;;;;;:169;;;;;3281:32;;3267:169;;;;;;;-1:-1:-1;3267:60:47;:169;;;;;;;;;;3230:351;3530:17;;:38;;;;-1:-1:-1;3551:17:47;;3530:38;3523:46;;;1285:355;1463:4;-1:-1:-1;;;;;1451:22:47;;1488:9;1512:5;1532:20;:9;:18;:20::i;1648:358::-;1827:4;-1:-1:-1;;;;;1815:22:47;;1852:9;1876:5;1897:21;:10;947:124:23;999:8;-1:-1:-1;;;1028:1:23;:10;1020:19;;;;;;-1:-1:-1;1061:1:23;947:124::o"},"methodIdentifiers":{"elixirFlashCallback(uint256,uint256,bytes)":"0659efa6","elixirMintCallback(uint256,uint256,bytes)":"1507a8f4","elixirSwapCallback(int256,int256,bytes)":"d804d7a7","flash(address,address,uint256,uint256,uint256,uint256)":"034b0f8f","mint(address,address,int24,int24,uint128)":"7b4f5327","swap0ForExact1(address,uint256,address,uint160)":"bac7bf78","swap1ForExact0(address,uint256,address,uint160)":"f603482c","swapExact0For1(address,uint256,address,uint160)":"6dfc0ddb","swapExact1For0(address,uint256,address,uint160)":"e2be9109","swapToHigherSqrtPrice(address,uint160,address)":"9e77b805","swapToLowerSqrtPrice(address,uint160,address)":"2ec20bf9"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee1\",\"type\":\"uint256\"}],\"name\":\"FlashCallback\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Owed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Owed\",\"type\":\"uint256\"}],\"name\":\"MintCallback\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"}],\"name\":\"SwapCallback\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"elixirFlashCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Owed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Owed\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"elixirMintCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"elixirSwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pay0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pay1\",\"type\":\"uint256\"}],\"name\":\"flash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"mint\",\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"swapToHigherSqrtPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"swapToLowerSqrtPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"elixirFlashCallback(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 ElixirPool deployed by the canonical ElixirFactory.\",\"params\":{\"data\":\"Any data passed through by the caller via the IElixirPoolActions#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\"}},\"elixirMintCallback(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 ElixirPool deployed by the canonical ElixirFactory.\",\"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 IElixirPoolActions#mint call\"}},\"elixirSwapCallback(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 ElixirPool deployed by the canonical ElixirFactory. 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 IElixirPoolActions#swap call\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"elixirFlashCallback(uint256,uint256,bytes)\":{\"notice\":\"Called to `msg.sender` after transferring to the recipient from IElixirPool#flash.\"},\"elixirMintCallback(uint256,uint256,bytes)\":{\"notice\":\"Called to `msg.sender` after minting liquidity to a position from IElixirPool#mint.\"},\"elixirSwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IElixirPool#swap.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/TestElixirCallee.sol\":\"TestElixirCallee\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IERC20Minimal.sol\":{\"keccak256\":\"0xd38b95824b4675c864898a9c6de1f8470da22df3045b70469baf63a84ba9c07a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2410bc2a7705f0e189a561329567a7908bf7e999b858b4f6b1a3702b394397e6\",\"dweb:/ipfs/QmPoLXFfp8BJzpVtHaXMPHQsB82YUSrwpGzzzE3stt9p21\"]},\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/callback/IElixirFlashCallback.sol\":{\"keccak256\":\"0xdeaad77f26bd65623a61d416dd0eb06a016c3120ed01776a4065bda8e877974e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3df48e416cf6aacb410d048f9781951aef0ade903f6149d7522d469a605432f6\",\"dweb:/ipfs/QmSRm8Xi25ABRh7C8w2WDNUP4i7Pnro7jHML51BcgQYFds\"]},\"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol\":{\"keccak256\":\"0xc15f6629fbba11617680a3df47f3a590dcc8360b731788b2783c827c0ba3667a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5ca98b55c62541f6685c762569b82b7c7a774398f406554520f874221153250f\",\"dweb:/ipfs/QmVCL8LwVC1LuarhTUVDYijd7W4cmaU5HjVJr5KgqLEdTe\"]},\"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol\":{\"keccak256\":\"0xc9fbc830c4c6b20c2e87b16569730bce747f3c9cde95efee554f1c6f07cc60b0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b94f129f0ad86cbc99ff550c65bc0ab2b9e754b7f3c2734f09f51ffb908864d\",\"dweb:/ipfs/QmUuJ7zyX1vWC7SfpsDhBqXGCKMS24pvSzirPVMU3sSkK8\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-core/test/TestElixirCallee.sol\":{\"keccak256\":\"0x5774ac237848691e60dab27767e93aab8595518ce4374dcc56d0a7d8845e10f8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://055ac7924c1e0e556e2523e2ba03c7bd52186391c70e1b96b4008db1fb583d2f\",\"dweb:/ipfs/QmNwtvXf5uCRDGJfBM8MvL14KPcgrEvY78qHuhibrGn6EK\"]}},\"version\":1}"}},"contracts/elixir-core/test/TestElixirReentrantCallee.sol":{"TestElixirReentrantCallee":{"abi":[{"inputs":[{"internalType":"int256","name":"","type":"int256"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"elixirSwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"swapToReenter","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610fad806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063c22a2bfe1461003b578063d804d7a714610070575b600080fd5b61006e6004803603602081101561005157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166100ec565b005b61006e6004803603606081101561008657600080fd5b8135916020810135918101906060810160408201356401000000008111156100ad57600080fd5b8201836020820111156100bf57600080fd5b803590602001918460018302840111640100000000831117156100e157600080fd5b509092509050610212565b6040805160008082526020820192839052630251596160e31b8352602482018181526044830182905260016064840181905273fffd8963efd1fc6a506488495d951d5263988d256084850181905260a060a48601908152855160c4870181905273ffffffffffffffffffffffffffffffffffffffff89169763128acb0897879690939092909160e48501918083838b5b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b1580156101e357600080fd5b505af11580156101f7573d6000803e3d6000fd5b505050506040513d604081101561020d57600080fd5b505050565b6040805160008082526020820192839052630251596160e31b835260248201818152604483018290526001606484018190526084840183905260a060a48501908152845160c48601819052339663128acb0896869586949193909260e4850191808383895b8381101561028f578181015183820152602001610277565b50505050905090810190601f1680156102bc5780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b1580156102de57600080fd5b505af192505050801561030a57506040513d60408110156102fe57600080fd5b50805160209091015160015b61046d57610316610ed1565b80610321575061045e565b604051806040016040528060038152602001624c4f4b60e81b8152506040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561037d578181015183820152602001610365565b50505050905090810190601f1680156103aa5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120816040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156104065781810151838201526020016103ee565b50505050905090810190601f1680156104335780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001201461045857600080fd5b50610468565b3d6000803e3d6000fd5b610470565b50505b6040805160008082526020820192839052633c8a7d8d60e01b83526024820181815260448301829052606483018290526084830182905260a060a48401908152835160c485018190523395633c8a7d8d9585948594859492939192909160e4850191808383895b838110156104ef5781810151838201526020016104d7565b50505050905090810190601f16801561051c5780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b15801561053e57600080fd5b505af192505050801561056a57506040513d604081101561055e57600080fd5b50805160209091015160015b6106be57610576610ed1565b80610581575061045e565b604051806040016040528060038152602001624c4f4b60e81b8152506040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156105dd5781810151838201526020016105c5565b50505050905090810190601f16801561060a5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120816040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561066657818101518382015260200161064e565b50505050905090810190601f1680156106935780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120146106b857600080fd5b506106c1565b50505b604080516309e3d67b60e31b81526000600482018190526024820181905260448201819052606482018190526084820181905282513393634f1eb3d89360a480820194929392918390030190829087803b15801561071e57600080fd5b505af192505050801561074a57506040513d604081101561073e57600080fd5b50805160209091015160015b61089e57610756610ed1565b80610761575061045e565b604051806040016040528060038152602001624c4f4b60e81b8152506040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156107bd5781810151838201526020016107a5565b50505050905090810190601f1680156107ea5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120816040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561084657818101518382015260200161082e565b50505050905090810190601f1680156108735780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001201461089857600080fd5b506108a1565b50505b3373ffffffffffffffffffffffffffffffffffffffff1663a34123a760008060006040518463ffffffff1660e01b81526004018084815260200183815260200182815260200193505050506040805180830381600087803b15801561090557600080fd5b505af192505050801561093157506040513d604081101561092557600080fd5b50805160209091015160015b610a855761093d610ed1565b80610948575061045e565b604051806040016040528060038152602001624c4f4b60e81b8152506040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156109a457818101518382015260200161098c565b50505050905090810190601f1680156109d15780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120816040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610a2d578181015183820152602001610a15565b50505050905090810190601f168015610a5a5780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012014610a7f57600080fd5b50610a88565b50505b60408051600080825260208201928390526312439b2f60e21b8352602482018181526044830182905260648301829052608060848401908152835160a48501819052339563490e6cbc95859485949193909260c4850191808383895b83811015610afc578181015183820152602001610ae4565b50505050905090810190601f168015610b295780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610b4b57600080fd5b505af1925050508015610b5c575060015b610cac57610b68610ed1565b80610b73575061045e565b604051806040016040528060038152602001624c4f4b60e81b8152506040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610bcf578181015183820152602001610bb7565b50505050905090810190601f168015610bfc5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120816040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610c58578181015183820152602001610c40565b50505050905090810190601f168015610c855780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012014610caa57600080fd5b505b604080516385b6672960e01b81526000600482018190526024820181905260448201819052825133936385b6672993606480820194929392918390030190829087803b158015610cfb57600080fd5b505af1925050508015610d2757506040513d6040811015610d1b57600080fd5b50805160209091015160015b610e7b57610d33610ed1565b80610d3e575061045e565b604051806040016040528060038152602001624c4f4b60e81b8152506040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610d9a578181015183820152602001610d82565b50505050905090810190601f168015610dc75780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120816040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610e23578181015183820152602001610e0b565b50505050905090810190601f168015610e505780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012014610e7557600080fd5b50610e7e565b50505b6040805162461bcd60e51b815260206004820152601160248201527f556e61626c6520746f207265656e746572000000000000000000000000000000604482015290519081900360640190fd5b60e01c90565b600060443d1015610ee157610f74565b600481823e6308c379a0610ef58251610ecb565b14610eff57610f74565b6040513d600319016004823e80513d67ffffffffffffffff8160248401118184111715610f2f5750505050610f74565b82840192508251915080821115610f495750505050610f74565b503d83016020828401011115610f6157505050610f74565b601f01601f191681016020016040529150505b9056fea2646970667358221220f0165933f8770babd70d38bc3ab201eb12531d287e5960001db36d1ec8ada90c64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFAD 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 0xC22A2BFE EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xD804D7A7 EQ PUSH2 0x70 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xEC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x86 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 0xAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBF 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 0xE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x212 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE PUSH4 0x2515961 PUSH1 0xE3 SHL DUP4 MSTORE PUSH1 0x24 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x44 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x64 DUP5 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH1 0x84 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 PUSH1 0xA4 DUP7 ADD SWAP1 DUP2 MSTORE DUP6 MLOAD PUSH1 0xC4 DUP8 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP8 PUSH4 0x128ACB08 SWAP8 DUP8 SWAP7 SWAP1 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0xE4 DUP6 ADD SWAP2 DUP1 DUP4 DUP4 DUP12 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x194 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1C1 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 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F7 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 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE PUSH4 0x2515961 PUSH1 0xE3 SHL DUP4 MSTORE PUSH1 0x24 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x44 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x64 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x84 DUP5 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 PUSH1 0xA4 DUP6 ADD SWAP1 DUP2 MSTORE DUP5 MLOAD PUSH1 0xC4 DUP7 ADD DUP2 SWAP1 MSTORE CALLER SWAP7 PUSH4 0x128ACB08 SWAP7 DUP7 SWAP6 DUP7 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0xE4 DUP6 ADD SWAP2 DUP1 DUP4 DUP4 DUP10 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x277 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2BC 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 0x2DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x30A JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 JUMPDEST PUSH2 0x46D JUMPI PUSH2 0x316 PUSH2 0xED1 JUMP JUMPDEST DUP1 PUSH2 0x321 JUMPI POP PUSH2 0x45E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x4C4F4B PUSH1 0xE8 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH1 0x20 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 0x37D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x365 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3AA 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 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 0x406 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3EE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x433 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x458 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x468 JUMP JUMPDEST RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x470 JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE PUSH4 0x3C8A7D8D PUSH1 0xE0 SHL DUP4 MSTORE PUSH1 0x24 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x44 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x64 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x84 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 PUSH1 0xA4 DUP5 ADD SWAP1 DUP2 MSTORE DUP4 MLOAD PUSH1 0xC4 DUP6 ADD DUP2 SWAP1 MSTORE CALLER SWAP6 PUSH4 0x3C8A7D8D SWAP6 DUP6 SWAP5 DUP6 SWAP5 DUP6 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0xE4 DUP6 ADD SWAP2 DUP1 DUP4 DUP4 DUP10 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4EF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4D7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x51C 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 0x53E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x56A JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x55E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 JUMPDEST PUSH2 0x6BE JUMPI PUSH2 0x576 PUSH2 0xED1 JUMP JUMPDEST DUP1 PUSH2 0x581 JUMPI POP PUSH2 0x45E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x4C4F4B PUSH1 0xE8 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH1 0x20 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 0x5DD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5C5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x60A 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 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 0x666 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x64E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x693 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x6B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C1 JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x9E3D67B PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x64 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x84 DUP3 ADD DUP2 SWAP1 MSTORE DUP3 MLOAD CALLER SWAP4 PUSH4 0x4F1EB3D8 SWAP4 PUSH1 0xA4 DUP1 DUP3 ADD SWAP5 SWAP3 SWAP4 SWAP3 SWAP2 DUP4 SWAP1 SUB ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x71E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x74A JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x73E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 JUMPDEST PUSH2 0x89E JUMPI PUSH2 0x756 PUSH2 0xED1 JUMP JUMPDEST DUP1 PUSH2 0x761 JUMPI POP PUSH2 0x45E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x4C4F4B PUSH1 0xE8 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH1 0x20 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 0x7BD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7A5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x7EA 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 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 0x846 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x82E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x873 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A1 JUMP JUMPDEST POP POP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA34123A7 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x905 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x931 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x925 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 JUMPDEST PUSH2 0xA85 JUMPI PUSH2 0x93D PUSH2 0xED1 JUMP JUMPDEST DUP1 PUSH2 0x948 JUMPI POP PUSH2 0x45E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x4C4F4B PUSH1 0xE8 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH1 0x20 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 0x9A4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x98C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x9D1 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 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 0xA2D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA15 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xA5A 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0xA7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA88 JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE PUSH4 0x12439B2F PUSH1 0xE2 SHL DUP4 MSTORE PUSH1 0x24 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x44 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x64 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x84 DUP5 ADD SWAP1 DUP2 MSTORE DUP4 MLOAD PUSH1 0xA4 DUP6 ADD DUP2 SWAP1 MSTORE CALLER SWAP6 PUSH4 0x490E6CBC SWAP6 DUP6 SWAP5 DUP6 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0xC4 DUP6 ADD SWAP2 DUP1 DUP4 DUP4 DUP10 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAFC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAE4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xB29 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 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xB5C JUMPI POP PUSH1 0x1 JUMPDEST PUSH2 0xCAC JUMPI PUSH2 0xB68 PUSH2 0xED1 JUMP JUMPDEST DUP1 PUSH2 0xB73 JUMPI POP PUSH2 0x45E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x4C4F4B PUSH1 0xE8 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH1 0x20 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 0xBCF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBB7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xBFC 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 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 0xC58 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC40 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC85 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0xCAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x85B66729 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP2 SWAP1 MSTORE DUP3 MLOAD CALLER SWAP4 PUSH4 0x85B66729 SWAP4 PUSH1 0x64 DUP1 DUP3 ADD SWAP5 SWAP3 SWAP4 SWAP3 SWAP2 DUP4 SWAP1 SUB ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xD27 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 JUMPDEST PUSH2 0xE7B JUMPI PUSH2 0xD33 PUSH2 0xED1 JUMP JUMPDEST DUP1 PUSH2 0xD3E JUMPI POP PUSH2 0x45E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x4C4F4B PUSH1 0xE8 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH1 0x20 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 0xD9A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD82 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDC7 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 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 0xE23 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE0B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE50 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0xE75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE7E JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F207265656E746572000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0xEE1 JUMPI PUSH2 0xF74 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP3 RETURNDATACOPY PUSH4 0x8C379A0 PUSH2 0xEF5 DUP3 MLOAD PUSH2 0xECB JUMP JUMPDEST EQ PUSH2 0xEFF JUMPI PUSH2 0xF74 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x3 NOT ADD PUSH1 0x4 DUP3 RETURNDATACOPY DUP1 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0xF2F JUMPI POP POP POP POP PUSH2 0xF74 JUMP JUMPDEST DUP3 DUP5 ADD SWAP3 POP DUP3 MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF49 JUMPI POP POP POP POP PUSH2 0xF74 JUMP JUMPDEST POP RETURNDATASIZE DUP4 ADD PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0xF61 JUMPI POP POP POP PUSH2 0xF74 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD PUSH1 0x40 MSTORE SWAP2 POP POP JUMPDEST SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE AND MSIZE CALLER 0xF8 PUSH24 0xBABD70D38BC3AB201EB12531D287E5960001DB36D1EC8AD 0xA9 0xC PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"209:2484:48:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:873:178","statements":[{"nodeType":"YulBlock","src":"6:3:178","statements":[]},{"body":{"nodeType":"YulBlock","src":"71:31:178","statements":[{"nodeType":"YulAssignment","src":"73:27:178","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"89:3:178","type":"","value":"224"},{"name":"value","nodeType":"YulIdentifier","src":"94:5:178"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"85:3:178"},"nodeType":"YulFunctionCall","src":"85:15:178"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"73:8:178"}]}]},"name":"shift_right_224_unsigned","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"48:5:178","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"58:8:178","type":""}],"src":"14:88:178"},{"body":{"nodeType":"YulBlock","src":"154:717:178","statements":[{"body":{"nodeType":"YulBlock","src":"194:9:178","statements":[{"nodeType":"YulLeave","src":"196:5:178"}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"170:14:178"},"nodeType":"YulFunctionCall","src":"170:16:178"},{"kind":"number","nodeType":"YulLiteral","src":"188:4:178","type":"","value":"0x44"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"167:2:178"},"nodeType":"YulFunctionCall","src":"167:26:178"},"nodeType":"YulIf","src":"164:2:178"},{"expression":{"arguments":[{"name":"ret","nodeType":"YulIdentifier","src":"227:3:178"},{"name":"ret","nodeType":"YulIdentifier","src":"232:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"237:1:178","type":"","value":"4"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"212:14:178"},"nodeType":"YulFunctionCall","src":"212:27:178"},"nodeType":"YulExpressionStatement","src":"212:27:178"},{"body":{"nodeType":"YulBlock","src":"312:9:178","statements":[{"nodeType":"YulLeave","src":"314:5:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"ret","nodeType":"YulIdentifier","src":"292:3:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"286:5:178"},"nodeType":"YulFunctionCall","src":"286:10:178"}],"functionName":{"name":"shift_right_224_unsigned","nodeType":"YulIdentifier","src":"261:24:178"},"nodeType":"YulFunctionCall","src":"261:36:178"},{"kind":"number","nodeType":"YulLiteral","src":"299:10:178","type":"","value":"0x08c379a0"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"258:2:178"},"nodeType":"YulFunctionCall","src":"258:52:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"251:6:178"},"nodeType":"YulFunctionCall","src":"251:60:178"},"nodeType":"YulIf","src":"248:2:178"},{"nodeType":"YulVariableDeclaration","src":"330:21:178","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"348:2:178","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"342:5:178"},"nodeType":"YulFunctionCall","src":"342:9:178"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"334:4:178","type":""}]},{"expression":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"375:4:178"},{"kind":"number","nodeType":"YulLiteral","src":"381:1:178","type":"","value":"4"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"388:14:178"},"nodeType":"YulFunctionCall","src":"388:16:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"410:1:178","type":"","value":"3"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"406:3:178"},"nodeType":"YulFunctionCall","src":"406:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"384:3:178"},"nodeType":"YulFunctionCall","src":"384:29:178"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"360:14:178"},"nodeType":"YulFunctionCall","src":"360:54:178"},"nodeType":"YulExpressionStatement","src":"360:54:178"},{"nodeType":"YulVariableDeclaration","src":"423:25:178","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"443:4:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"437:5:178"},"nodeType":"YulFunctionCall","src":"437:11:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"427:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"457:26:178","value":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"467:14:178"},"nodeType":"YulFunctionCall","src":"467:16:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"461:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"492:28:178","value":{"kind":"number","nodeType":"YulLiteral","src":"502:18:178","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"496:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"578:9:178","statements":[{"nodeType":"YulLeave","src":"580:5:178"}]},"condition":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"538:6:178"},{"name":"_2","nodeType":"YulIdentifier","src":"546:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"535:2:178"},"nodeType":"YulFunctionCall","src":"535:14:178"},{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"558:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"566:4:178","type":"","value":"0x24"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"554:3:178"},"nodeType":"YulFunctionCall","src":"554:17:178"},{"name":"_1","nodeType":"YulIdentifier","src":"573:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"551:2:178"},"nodeType":"YulFunctionCall","src":"551:25:178"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"532:2:178"},"nodeType":"YulFunctionCall","src":"532:45:178"},"nodeType":"YulIf","src":"529:2:178"},{"nodeType":"YulVariableDeclaration","src":"596:28:178","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"611:4:178"},{"name":"offset","nodeType":"YulIdentifier","src":"617:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"607:3:178"},"nodeType":"YulFunctionCall","src":"607:17:178"},"variables":[{"name":"msg","nodeType":"YulTypedName","src":"600:3:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"633:24:178","value":{"arguments":[{"name":"msg","nodeType":"YulIdentifier","src":"653:3:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"647:5:178"},"nodeType":"YulFunctionCall","src":"647:10:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"637:6:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"684:9:178","statements":[{"nodeType":"YulLeave","src":"686:5:178"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"672:6:178"},{"name":"_2","nodeType":"YulIdentifier","src":"680:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"669:2:178"},"nodeType":"YulFunctionCall","src":"669:14:178"},"nodeType":"YulIf","src":"666:2:178"},{"body":{"nodeType":"YulBlock","src":"766:9:178","statements":[{"nodeType":"YulLeave","src":"768:5:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"msg","nodeType":"YulIdentifier","src":"716:3:178"},{"name":"length","nodeType":"YulIdentifier","src":"721:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"712:3:178"},"nodeType":"YulFunctionCall","src":"712:16:178"},{"kind":"number","nodeType":"YulLiteral","src":"730:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"708:3:178"},"nodeType":"YulFunctionCall","src":"708:27:178"},{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"741:4:178"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"747:14:178"},"nodeType":"YulFunctionCall","src":"747:16:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"737:3:178"},"nodeType":"YulFunctionCall","src":"737:27:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"705:2:178"},"nodeType":"YulFunctionCall","src":"705:60:178"},"nodeType":"YulIf","src":"702:2:178"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"791:2:178","type":"","value":"64"},{"arguments":[{"arguments":[{"name":"msg","nodeType":"YulIdentifier","src":"803:3:178"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"816:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"824:2:178","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"812:3:178"},"nodeType":"YulFunctionCall","src":"812:15:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"833:2:178","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"829:3:178"},"nodeType":"YulFunctionCall","src":"829:7:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"808:3:178"},"nodeType":"YulFunctionCall","src":"808:29:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"799:3:178"},"nodeType":"YulFunctionCall","src":"799:39:178"},{"kind":"number","nodeType":"YulLiteral","src":"840:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"795:3:178"},"nodeType":"YulFunctionCall","src":"795:50:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"784:6:178"},"nodeType":"YulFunctionCall","src":"784:62:178"},"nodeType":"YulExpressionStatement","src":"784:62:178"},{"nodeType":"YulAssignment","src":"855:10:178","value":{"name":"msg","nodeType":"YulIdentifier","src":"862:3:178"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"855:3:178"}]}]},"name":"try_decode_error_message","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"146:3:178","type":""}],"src":"107:764:178"}]},"contents":"{\n    { }\n    function shift_right_224_unsigned(value) -> newValue\n    { newValue := shr(224, value) }\n    function try_decode_error_message() -> ret\n    {\n        if lt(returndatasize(), 0x44) { leave }\n        returndatacopy(ret, ret, 4)\n        if iszero(eq(shift_right_224_unsigned(mload(ret)), 0x08c379a0)) { leave }\n        let data := mload(64)\n        returndatacopy(data, 4, add(returndatasize(), not(3)))\n        let offset := mload(data)\n        let _1 := returndatasize()\n        let _2 := 0xffffffffffffffff\n        if or(gt(offset, _2), gt(add(offset, 0x24), _1)) { leave }\n        let msg := add(data, offset)\n        let length := mload(msg)\n        if gt(length, _2) { leave }\n        if gt(add(add(msg, length), 0x20), add(data, returndatasize())) { leave }\n        mstore(64, add(add(msg, and(add(length, 31), not(31))), 0x20))\n        ret := msg\n    }\n}","id":178,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c8063c22a2bfe1461003b578063d804d7a714610070575b600080fd5b61006e6004803603602081101561005157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166100ec565b005b61006e6004803603606081101561008657600080fd5b8135916020810135918101906060810160408201356401000000008111156100ad57600080fd5b8201836020820111156100bf57600080fd5b803590602001918460018302840111640100000000831117156100e157600080fd5b509092509050610212565b6040805160008082526020820192839052630251596160e31b8352602482018181526044830182905260016064840181905273fffd8963efd1fc6a506488495d951d5263988d256084850181905260a060a48601908152855160c4870181905273ffffffffffffffffffffffffffffffffffffffff89169763128acb0897879690939092909160e48501918083838b5b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b1580156101e357600080fd5b505af11580156101f7573d6000803e3d6000fd5b505050506040513d604081101561020d57600080fd5b505050565b6040805160008082526020820192839052630251596160e31b835260248201818152604483018290526001606484018190526084840183905260a060a48501908152845160c48601819052339663128acb0896869586949193909260e4850191808383895b8381101561028f578181015183820152602001610277565b50505050905090810190601f1680156102bc5780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b1580156102de57600080fd5b505af192505050801561030a57506040513d60408110156102fe57600080fd5b50805160209091015160015b61046d57610316610ed1565b80610321575061045e565b604051806040016040528060038152602001624c4f4b60e81b8152506040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561037d578181015183820152602001610365565b50505050905090810190601f1680156103aa5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120816040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156104065781810151838201526020016103ee565b50505050905090810190601f1680156104335780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001201461045857600080fd5b50610468565b3d6000803e3d6000fd5b610470565b50505b6040805160008082526020820192839052633c8a7d8d60e01b83526024820181815260448301829052606483018290526084830182905260a060a48401908152835160c485018190523395633c8a7d8d9585948594859492939192909160e4850191808383895b838110156104ef5781810151838201526020016104d7565b50505050905090810190601f16801561051c5780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b15801561053e57600080fd5b505af192505050801561056a57506040513d604081101561055e57600080fd5b50805160209091015160015b6106be57610576610ed1565b80610581575061045e565b604051806040016040528060038152602001624c4f4b60e81b8152506040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156105dd5781810151838201526020016105c5565b50505050905090810190601f16801561060a5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120816040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561066657818101518382015260200161064e565b50505050905090810190601f1680156106935780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120146106b857600080fd5b506106c1565b50505b604080516309e3d67b60e31b81526000600482018190526024820181905260448201819052606482018190526084820181905282513393634f1eb3d89360a480820194929392918390030190829087803b15801561071e57600080fd5b505af192505050801561074a57506040513d604081101561073e57600080fd5b50805160209091015160015b61089e57610756610ed1565b80610761575061045e565b604051806040016040528060038152602001624c4f4b60e81b8152506040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156107bd5781810151838201526020016107a5565b50505050905090810190601f1680156107ea5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120816040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561084657818101518382015260200161082e565b50505050905090810190601f1680156108735780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001201461089857600080fd5b506108a1565b50505b3373ffffffffffffffffffffffffffffffffffffffff1663a34123a760008060006040518463ffffffff1660e01b81526004018084815260200183815260200182815260200193505050506040805180830381600087803b15801561090557600080fd5b505af192505050801561093157506040513d604081101561092557600080fd5b50805160209091015160015b610a855761093d610ed1565b80610948575061045e565b604051806040016040528060038152602001624c4f4b60e81b8152506040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156109a457818101518382015260200161098c565b50505050905090810190601f1680156109d15780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120816040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610a2d578181015183820152602001610a15565b50505050905090810190601f168015610a5a5780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012014610a7f57600080fd5b50610a88565b50505b60408051600080825260208201928390526312439b2f60e21b8352602482018181526044830182905260648301829052608060848401908152835160a48501819052339563490e6cbc95859485949193909260c4850191808383895b83811015610afc578181015183820152602001610ae4565b50505050905090810190601f168015610b295780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610b4b57600080fd5b505af1925050508015610b5c575060015b610cac57610b68610ed1565b80610b73575061045e565b604051806040016040528060038152602001624c4f4b60e81b8152506040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610bcf578181015183820152602001610bb7565b50505050905090810190601f168015610bfc5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120816040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610c58578181015183820152602001610c40565b50505050905090810190601f168015610c855780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012014610caa57600080fd5b505b604080516385b6672960e01b81526000600482018190526024820181905260448201819052825133936385b6672993606480820194929392918390030190829087803b158015610cfb57600080fd5b505af1925050508015610d2757506040513d6040811015610d1b57600080fd5b50805160209091015160015b610e7b57610d33610ed1565b80610d3e575061045e565b604051806040016040528060038152602001624c4f4b60e81b8152506040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610d9a578181015183820152602001610d82565b50505050905090810190601f168015610dc75780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120816040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610e23578181015183820152602001610e0b565b50505050905090810190601f168015610e505780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012014610e7557600080fd5b50610e7e565b50505b6040805162461bcd60e51b815260206004820152601160248201527f556e61626c6520746f207265656e746572000000000000000000000000000000604482015290519081900360640190fd5b60e01c90565b600060443d1015610ee157610f74565b600481823e6308c379a0610ef58251610ecb565b14610eff57610f74565b6040513d600319016004823e80513d67ffffffffffffffff8160248401118184111715610f2f5750505050610f74565b82840192508251915080821115610f495750505050610f74565b503d83016020828401011115610f6157505050610f74565b601f01601f191681016020016040529150505b9056fea2646970667358221220f0165933f8770babd70d38bc3ab201eb12531d287e5960001db36d1ec8ada90c64736f6c63430007060033","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 0xC22A2BFE EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xD804D7A7 EQ PUSH2 0x70 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xEC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x86 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 0xAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBF 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 0xE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x212 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE PUSH4 0x2515961 PUSH1 0xE3 SHL DUP4 MSTORE PUSH1 0x24 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x44 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x64 DUP5 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH1 0x84 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 PUSH1 0xA4 DUP7 ADD SWAP1 DUP2 MSTORE DUP6 MLOAD PUSH1 0xC4 DUP8 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP8 PUSH4 0x128ACB08 SWAP8 DUP8 SWAP7 SWAP1 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0xE4 DUP6 ADD SWAP2 DUP1 DUP4 DUP4 DUP12 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x194 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1C1 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 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F7 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 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE PUSH4 0x2515961 PUSH1 0xE3 SHL DUP4 MSTORE PUSH1 0x24 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x44 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x64 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x84 DUP5 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 PUSH1 0xA4 DUP6 ADD SWAP1 DUP2 MSTORE DUP5 MLOAD PUSH1 0xC4 DUP7 ADD DUP2 SWAP1 MSTORE CALLER SWAP7 PUSH4 0x128ACB08 SWAP7 DUP7 SWAP6 DUP7 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0xE4 DUP6 ADD SWAP2 DUP1 DUP4 DUP4 DUP10 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x277 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2BC 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 0x2DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x30A JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 JUMPDEST PUSH2 0x46D JUMPI PUSH2 0x316 PUSH2 0xED1 JUMP JUMPDEST DUP1 PUSH2 0x321 JUMPI POP PUSH2 0x45E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x4C4F4B PUSH1 0xE8 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH1 0x20 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 0x37D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x365 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3AA 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 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 0x406 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3EE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x433 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x458 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x468 JUMP JUMPDEST RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x470 JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE PUSH4 0x3C8A7D8D PUSH1 0xE0 SHL DUP4 MSTORE PUSH1 0x24 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x44 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x64 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x84 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 PUSH1 0xA4 DUP5 ADD SWAP1 DUP2 MSTORE DUP4 MLOAD PUSH1 0xC4 DUP6 ADD DUP2 SWAP1 MSTORE CALLER SWAP6 PUSH4 0x3C8A7D8D SWAP6 DUP6 SWAP5 DUP6 SWAP5 DUP6 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0xE4 DUP6 ADD SWAP2 DUP1 DUP4 DUP4 DUP10 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4EF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4D7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x51C 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 0x53E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x56A JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x55E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 JUMPDEST PUSH2 0x6BE JUMPI PUSH2 0x576 PUSH2 0xED1 JUMP JUMPDEST DUP1 PUSH2 0x581 JUMPI POP PUSH2 0x45E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x4C4F4B PUSH1 0xE8 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH1 0x20 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 0x5DD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5C5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x60A 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 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 0x666 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x64E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x693 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x6B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C1 JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x9E3D67B PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x64 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x84 DUP3 ADD DUP2 SWAP1 MSTORE DUP3 MLOAD CALLER SWAP4 PUSH4 0x4F1EB3D8 SWAP4 PUSH1 0xA4 DUP1 DUP3 ADD SWAP5 SWAP3 SWAP4 SWAP3 SWAP2 DUP4 SWAP1 SUB ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x71E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x74A JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x73E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 JUMPDEST PUSH2 0x89E JUMPI PUSH2 0x756 PUSH2 0xED1 JUMP JUMPDEST DUP1 PUSH2 0x761 JUMPI POP PUSH2 0x45E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x4C4F4B PUSH1 0xE8 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH1 0x20 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 0x7BD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7A5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x7EA 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 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 0x846 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x82E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x873 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A1 JUMP JUMPDEST POP POP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA34123A7 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x905 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x931 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x925 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 JUMPDEST PUSH2 0xA85 JUMPI PUSH2 0x93D PUSH2 0xED1 JUMP JUMPDEST DUP1 PUSH2 0x948 JUMPI POP PUSH2 0x45E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x4C4F4B PUSH1 0xE8 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH1 0x20 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 0x9A4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x98C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x9D1 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 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 0xA2D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA15 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xA5A 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0xA7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA88 JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE PUSH4 0x12439B2F PUSH1 0xE2 SHL DUP4 MSTORE PUSH1 0x24 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x44 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x64 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x84 DUP5 ADD SWAP1 DUP2 MSTORE DUP4 MLOAD PUSH1 0xA4 DUP6 ADD DUP2 SWAP1 MSTORE CALLER SWAP6 PUSH4 0x490E6CBC SWAP6 DUP6 SWAP5 DUP6 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0xC4 DUP6 ADD SWAP2 DUP1 DUP4 DUP4 DUP10 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAFC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAE4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xB29 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 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xB5C JUMPI POP PUSH1 0x1 JUMPDEST PUSH2 0xCAC JUMPI PUSH2 0xB68 PUSH2 0xED1 JUMP JUMPDEST DUP1 PUSH2 0xB73 JUMPI POP PUSH2 0x45E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x4C4F4B PUSH1 0xE8 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH1 0x20 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 0xBCF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBB7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xBFC 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 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 0xC58 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC40 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC85 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0xCAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x85B66729 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP2 SWAP1 MSTORE DUP3 MLOAD CALLER SWAP4 PUSH4 0x85B66729 SWAP4 PUSH1 0x64 DUP1 DUP3 ADD SWAP5 SWAP3 SWAP4 SWAP3 SWAP2 DUP4 SWAP1 SUB ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xD27 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 JUMPDEST PUSH2 0xE7B JUMPI PUSH2 0xD33 PUSH2 0xED1 JUMP JUMPDEST DUP1 PUSH2 0xD3E JUMPI POP PUSH2 0x45E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x4C4F4B PUSH1 0xE8 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH1 0x20 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 0xD9A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD82 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDC7 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 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 0xE23 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE0B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE50 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 PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0xE75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE7E JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F207265656E746572000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0xEE1 JUMPI PUSH2 0xF74 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP3 RETURNDATACOPY PUSH4 0x8C379A0 PUSH2 0xEF5 DUP3 MLOAD PUSH2 0xECB JUMP JUMPDEST EQ PUSH2 0xEFF JUMPI PUSH2 0xF74 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x3 NOT ADD PUSH1 0x4 DUP3 RETURNDATACOPY DUP1 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0xF2F JUMPI POP POP POP POP PUSH2 0xF74 JUMP JUMPDEST DUP3 DUP5 ADD SWAP3 POP DUP3 MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF49 JUMPI POP POP POP POP PUSH2 0xF74 JUMP JUMPDEST POP RETURNDATASIZE DUP4 ADD PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0xF61 JUMPI POP POP POP PUSH2 0xF74 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD PUSH1 0x40 MSTORE SWAP2 POP POP JUMPDEST SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE AND MSIZE CALLER 0xF8 PUSH24 0xBABD70D38BC3AB201EB12531D287E5960001DB36D1EC8AD 0xA9 0xC PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"209:2484:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;329:228;;;;;;;;;;;;;;;;-1:-1:-1;329:228:48;;;;:::i;:::-;;565:2125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;565:2125:48;;-1:-1:-1;565:2125:48;-1:-1:-1;565:2125:48;:::i;329:228::-;526:12;;;431:1;526:12;;;;;;;;;;-1:-1:-1;;;386:163:48;;;;;;;;;;;;;;468:1;386:163;;;;;;484:27;386:163;;;;;;;;;;;;;;;;;;;;;:22;;;;;;431:1;;526:12;;386:163;;;;;;;;;;526:12;431:1;386:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;329:228:48:o;565:2125::-;791:12;;;774:1;791:12;;;;;;;;;;-1:-1:-1;;;737:67:48;;;;;;;;;;;;;;785:1;737:67;;;;;;;;;;;;;;;;;;;;;;;;;;;749:10;;737:28;;774:1;;;;791:12;;737:67;;;;;;;;791:12;774:1;737:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;737:67:48;;;;;;;;;720:290;;;;:::i;:::-;;;;;;;;967:14;;;;;;;;;;;;;-1:-1:-1;;;967:14:48;;;956:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;946:37;;;;;;913:6;902:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;892:29;;;;;;:91;866:132;;;;;;817:193;720:290;;;;;;;;;;;;;;;;;1121:12;;;1108:1;1121:12;;;;;;;;;;-1:-1:-1;;;1071:63:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1083:10;;1071:28;;1108:1;;;;;;1121:12;;1071:63;;;;;;;;;;1121:12;1108:1;1071:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1071:63:48;;;;;;;;;1054:286;;;;:::i;:::-;;;;;;;;1297:14;;;;;;;;;;;;;-1:-1:-1;;;1297:14:48;;;1286:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1276:37;;;;;;1243:6;1232:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1222:29;;;;;;:91;1196:132;;;;;;1147:193;1054:286;;;;;;1404:55;;;-1:-1:-1;;;1404:55:48;;1444:1;1404:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:10;;1404:31;;:55;;;;;;;;;;;;;;;;1416:10;1404:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1404:55:48;;;;;;;;;1387:278;;;;:::i;:::-;;;;;;;;1622:14;;;;;;;;;;;;;-1:-1:-1;;;1622:14:48;;;1611:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1601:37;;;;;;1568:6;1557:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1547:29;;;;;;:91;1521:132;;;;;;1472:193;1387:278;;;;;;1725:10;1713:28;;;1742:1;1745;1748;1713:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1713:37:48;;;;;;;;;1709:262;;;;:::i;:::-;;;;;;;;1928:14;;;;;;;;;;;;;-1:-1:-1;;;1928:14:48;;;1917:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1907:37;;;;;;1874:6;1863:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1853:29;;;;;;:91;1827:132;;;;;;1754:217;1709:262;;;;;;2081:12;;;2071:1;2081:12;;;;;;;;;;-1:-1:-1;;;2033:61:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2045:10;;2033:29;;2071:1;;;;2081:12;;2033:61;;;;;;;;2081:12;2071:1;2033:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2016:284;;;;:::i;:::-;;;;;;;;2257:14;;;;;;;;;;;;;-1:-1:-1;;;2257:14:48;;;2246:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2236:37;;;;;;2203:6;2192:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:29;;;;;;:91;2156:132;;;;;;2107:193;2016:284;2372:57;;;-1:-1:-1;;;2372:57:48;;2420:1;2372:57;;;;;;;;;;;;;;;;;;;;2384:10;;2372:39;;:57;;;;;;;;;;;;;;;;2384:10;2372:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2372:57:48;;;;;;;;;2355:280;;;;:::i;:::-;;;;;;;;2592:14;;;;;;;;;;;;;-1:-1:-1;;;2592:14:48;;;2581:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2571:37;;;;;;2538:6;2527:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2517:29;;;;;;:91;2491:132;;;;;;2442:193;2355:280;;;;;;2647:35;;;-1:-1:-1;;;2647:35:48;;;;;;;;;;;;;;;;;;;;;;;;;;;14:88:178;89:3;85:15;;71:31::o;107:764::-;;188:4;170:16;167:26;164:2;;;196:5;;164:2;237:1;232:3;227;212:27;299:10;261:36;292:3;286:10;261:36;:::i;:::-;258:52;248:2;;314:5;;248:2;348;342:9;388:16;-1:-1:-1;;384:29:178;381:1;342:9;360:54;443:4;437:11;467:16;502:18;573:2;566:4;558:6;554:17;551:25;546:2;538:6;535:14;532:45;529:2;;;580:5;;;;;;529:2;617:6;611:4;607:17;596:28;;653:3;647:10;633:24;;680:2;672:6;669:14;666:2;;;686:5;;;;;;666:2;;747:16;741:4;737:27;730:4;721:6;716:3;712:16;708:27;705:60;702:2;;;768:5;;;;;702:2;833;812:15;-1:-1:-1;;808:29:178;799:39;;840:4;795:50;791:2;784:62;803:3;-1:-1:-1;;154:717:178;;:::o"},"methodIdentifiers":{"elixirSwapCallback(int256,int256,bytes)":"d804d7a7","swapToReenter(address)":"c22a2bfe"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"elixirSwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"swapToReenter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/TestElixirReentrantCallee.sol\":\"TestElixirReentrantCallee\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol\":{\"keccak256\":\"0xc9fbc830c4c6b20c2e87b16569730bce747f3c9cde95efee554f1c6f07cc60b0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b94f129f0ad86cbc99ff550c65bc0ab2b9e754b7f3c2734f09f51ffb908864d\",\"dweb:/ipfs/QmUuJ7zyX1vWC7SfpsDhBqXGCKMS24pvSzirPVMU3sSkK8\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-core/test/TestElixirReentrantCallee.sol\":{\"keccak256\":\"0xedfcabc4c4c60e149893fd3ff070285bf7bec19ec28abb33f136268cd52af69e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4bba73018e9ef426238d8545cbed2abebe86ec04b5feecd2e83f46dcf0dafbe1\",\"dweb:/ipfs/QmYiuBpbdxaEYjFHuBV43HozM5ptegHLR6o9QAadcqM27R\"]}},\"version\":1}"}},"contracts/elixir-core/test/TestElixirRouter.sol":{"TestElixirRouter":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"amount0Delta","type":"int256"},{"indexed":false,"internalType":"int256","name":"amount1Delta","type":"int256"}],"name":"SwapCallback","type":"event"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"elixirSwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"address","name":"poolInput","type":"address"},{"internalType":"address","name":"poolOutput","type":"address"},{"internalType":"uint256","name":"amount0Out","type":"uint256"}],"name":"swapForExact0Multi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"address","name":"poolInput","type":"address"},{"internalType":"address","name":"poolOutput","type":"address"},{"internalType":"uint256","name":"amount1Out","type":"uint256"}],"name":"swapForExact1Multi","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610a37806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063c35a2b6814610046578063c96aa6c714610084578063d804d7a7146100c0575b600080fd5b6100826004803603608081101561005c57600080fd5b506001600160a01b0381358116916020810135821691604082013516906060013561013c565b005b6100826004803603608081101561009a57600080fd5b506001600160a01b0381358116916020810135821691604082013516906060013561030a565b610082600480360360608110156100d657600080fd5b8135916020810135918101906060810160408201356401000000008111156100fd57600080fd5b82018360208201111561010f57600080fd5b8035906020019184600183028401116401000000008311171561013157600080fd5b5090925090506103d1565b60408051600180825281830190925260009160208083019080368337019050509050838160008151811061016c57fe5b6001600160a01b039283166020918202929092010152831663128acb08866001610195866109eb565b6000036401000276a360010186336040516020018080602001836001600160a01b03168152602001828103825284818151815260200191508051906020019060200280838360005b838110156101f55781810151838201526020016101dd565b5050505090500193505050506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018515158152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610288578181015183820152602001610270565b50505050905090810190601f1680156102b55780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b1580156102d757600080fd5b505af11580156102eb573d6000803e3d6000fd5b505050506040513d604081101561030157600080fd5b50505050505050565b60408051600180825281830190925260009160208083019080368337019050509050838160008151811061033a57fe5b6001600160a01b039283166020918202929092010152831663128acb08866000610363866109eb565b600003600173fffd8963efd1fc6a506488495d951d5263988d260386336040516020018080602001836001600160a01b0316815260200182810382528481815181526020019150805190602001906020028083836000838110156101f55781810151838201526020016101dd565b604080518581526020810185905281517fd48241df4a75e663b29e55f9506b31f77ed0f48cfe7e7612d1163144995dc1ca929181900390910190a16000808383604081101561041f57600080fd5b81019060208101813564010000000081111561043a57600080fd5b82018360208201111561044c57600080fd5b8035906020019184602083028401116401000000008311171561046e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250508251929750505090356001600160a01b031693506001141591506107ff905057600080871361053257336001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561050157600080fd5b505afa158015610515573d6000803e3d6000fd5b505050506040513d602081101561052b57600080fd5b5051610598565b336001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561056b57600080fd5b505afa15801561057f573d6000803e3d6000fd5b505050506040513d602081101561059557600080fd5b50515b905060008088136105a957866105ab565b875b90506000846000815181106105bc57fe5b60200260200101516001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156105fc57600080fd5b505afa158015610610573d6000803e3d6000fd5b505050506040513d602081101561062657600080fd5b505185516001600160a01b038581169216919091149150859060009061064857fe5b60200260200101516001600160a01b031663128acb08338385600003856106835773fffd8963efd1fc6a506488495d951d5263988d2561068a565b6401000276a45b60408051600080825260208083018085526001600160a01b038f16606085015283850194855283516080850181905293948f949093849360a08801939202908190849084905b838110156106e85781810151838201526020016106d0565b5050505090500193505050506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018515158152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561077b578181015183820152602001610763565b50505050905090810190601f1680156107a85780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b1580156107ca57600080fd5b505af11580156107de573d6000803e3d6000fd5b505050506040513d60408110156107f457600080fd5b506109e39350505050565b60008613156108f857336001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561084157600080fd5b505afa158015610855573d6000803e3d6000fd5b505050506040513d602081101561086b57600080fd5b5051604080516323b872dd60e01b81526001600160a01b038481166004830152336024830152604482018a9052915191909216916323b872dd9160648083019260209291908290030181600087803b1580156108c657600080fd5b505af11580156108da573d6000803e3d6000fd5b505050506040513d60208110156108f057600080fd5b506109e39050565b336001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561093157600080fd5b505afa158015610945573d6000803e3d6000fd5b505050506040513d602081101561095b57600080fd5b5051604080516323b872dd60e01b81526001600160a01b03848116600483015233602483015260448201899052915191909216916323b872dd9160648083019260209291908290030181600087803b1580156109b657600080fd5b505af11580156109ca573d6000803e3d6000fd5b505050506040513d60208110156109e057600080fd5b50505b505050505050565b6000600160ff1b82106109fd57600080fd5b509056fea2646970667358221220535d49a9e1c7746bb2f5e82ac2b390aa8cb65d7ace495b62e9914156eb3cd75a64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA37 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 0xC35A2B68 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xC96AA6C7 EQ PUSH2 0x84 JUMPI DUP1 PUSH4 0xD804D7A7 EQ PUSH2 0xC0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x82 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x13C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x82 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x30A JUMP JUMPDEST PUSH2 0x82 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD6 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 0xFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x10F 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 0x131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3D1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x16C JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE DUP4 AND PUSH4 0x128ACB08 DUP7 PUSH1 0x1 PUSH2 0x195 DUP7 PUSH2 0x9EB JUMP JUMPDEST PUSH1 0x0 SUB PUSH5 0x1000276A3 PUSH1 0x1 ADD DUP7 CALLER PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1DD JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP4 POP POP 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x288 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x270 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2B5 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 0x2D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2EB 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 0x301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x33A JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE DUP4 AND PUSH4 0x128ACB08 DUP7 PUSH1 0x0 PUSH2 0x363 DUP7 PUSH2 0x9EB JUMP JUMPDEST PUSH1 0x0 SUB PUSH1 0x1 PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 SUB DUP7 CALLER PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 DUP2 LT ISZERO PUSH2 0x1F5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1DD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xD48241DF4A75E663B29E55F9506B31F77ED0F48CFE7E7612D1163144995DC1CA SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 DUP1 DUP4 DUP4 PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x41F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x43A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x46E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP DUP3 MLOAD SWAP3 SWAP8 POP POP POP SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 POP PUSH1 0x1 EQ ISZERO SWAP2 POP PUSH2 0x7FF SWAP1 POP JUMPI PUSH1 0x0 DUP1 DUP8 SGT PUSH2 0x532 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x515 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 0x52B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x598 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x56B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x57F 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 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP9 SGT PUSH2 0x5A9 JUMPI DUP7 PUSH2 0x5AB JUMP JUMPDEST DUP8 JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x5BC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x610 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 0x626 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP3 AND SWAP2 SWAP1 SWAP2 EQ SWAP2 POP DUP6 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x648 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 CALLER DUP4 DUP6 PUSH1 0x0 SUB DUP6 PUSH2 0x683 JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x68A JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND PUSH1 0x60 DUP6 ADD MSTORE DUP4 DUP6 ADD SWAP5 DUP6 MSTORE DUP4 MLOAD PUSH1 0x80 DUP6 ADD DUP2 SWAP1 MSTORE SWAP4 SWAP5 DUP16 SWAP5 SWAP1 SWAP4 DUP5 SWAP4 PUSH1 0xA0 DUP9 ADD SWAP4 SWAP3 MUL SWAP1 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6E8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6D0 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP4 POP POP 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x77B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x763 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x7A8 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 0x7CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7DE 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 0x7F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9E3 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP7 SGT ISZERO PUSH2 0x8F8 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x841 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x855 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 0x86B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP11 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 0x8C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8DA 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 0x8F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9E3 SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x931 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x945 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 0x95B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x9B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9CA 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 0x9E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 LT PUSH2 0x9FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 0x5D 0x49 0xA9 0xE1 0xC7 PUSH21 0x6BB2F5E82AC2B390AA8CB65D7ACE495B62E9914156 0xEB EXTCODECOPY 0xD7 GAS PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"287:2897:49:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c8063c35a2b6814610046578063c96aa6c714610084578063d804d7a7146100c0575b600080fd5b6100826004803603608081101561005c57600080fd5b506001600160a01b0381358116916020810135821691604082013516906060013561013c565b005b6100826004803603608081101561009a57600080fd5b506001600160a01b0381358116916020810135821691604082013516906060013561030a565b610082600480360360608110156100d657600080fd5b8135916020810135918101906060810160408201356401000000008111156100fd57600080fd5b82018360208201111561010f57600080fd5b8035906020019184600183028401116401000000008311171561013157600080fd5b5090925090506103d1565b60408051600180825281830190925260009160208083019080368337019050509050838160008151811061016c57fe5b6001600160a01b039283166020918202929092010152831663128acb08866001610195866109eb565b6000036401000276a360010186336040516020018080602001836001600160a01b03168152602001828103825284818151815260200191508051906020019060200280838360005b838110156101f55781810151838201526020016101dd565b5050505090500193505050506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018515158152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610288578181015183820152602001610270565b50505050905090810190601f1680156102b55780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b1580156102d757600080fd5b505af11580156102eb573d6000803e3d6000fd5b505050506040513d604081101561030157600080fd5b50505050505050565b60408051600180825281830190925260009160208083019080368337019050509050838160008151811061033a57fe5b6001600160a01b039283166020918202929092010152831663128acb08866000610363866109eb565b600003600173fffd8963efd1fc6a506488495d951d5263988d260386336040516020018080602001836001600160a01b0316815260200182810382528481815181526020019150805190602001906020028083836000838110156101f55781810151838201526020016101dd565b604080518581526020810185905281517fd48241df4a75e663b29e55f9506b31f77ed0f48cfe7e7612d1163144995dc1ca929181900390910190a16000808383604081101561041f57600080fd5b81019060208101813564010000000081111561043a57600080fd5b82018360208201111561044c57600080fd5b8035906020019184602083028401116401000000008311171561046e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250508251929750505090356001600160a01b031693506001141591506107ff905057600080871361053257336001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561050157600080fd5b505afa158015610515573d6000803e3d6000fd5b505050506040513d602081101561052b57600080fd5b5051610598565b336001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561056b57600080fd5b505afa15801561057f573d6000803e3d6000fd5b505050506040513d602081101561059557600080fd5b50515b905060008088136105a957866105ab565b875b90506000846000815181106105bc57fe5b60200260200101516001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156105fc57600080fd5b505afa158015610610573d6000803e3d6000fd5b505050506040513d602081101561062657600080fd5b505185516001600160a01b038581169216919091149150859060009061064857fe5b60200260200101516001600160a01b031663128acb08338385600003856106835773fffd8963efd1fc6a506488495d951d5263988d2561068a565b6401000276a45b60408051600080825260208083018085526001600160a01b038f16606085015283850194855283516080850181905293948f949093849360a08801939202908190849084905b838110156106e85781810151838201526020016106d0565b5050505090500193505050506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018515158152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561077b578181015183820152602001610763565b50505050905090810190601f1680156107a85780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b1580156107ca57600080fd5b505af11580156107de573d6000803e3d6000fd5b505050506040513d60408110156107f457600080fd5b506109e39350505050565b60008613156108f857336001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561084157600080fd5b505afa158015610855573d6000803e3d6000fd5b505050506040513d602081101561086b57600080fd5b5051604080516323b872dd60e01b81526001600160a01b038481166004830152336024830152604482018a9052915191909216916323b872dd9160648083019260209291908290030181600087803b1580156108c657600080fd5b505af11580156108da573d6000803e3d6000fd5b505050506040513d60208110156108f057600080fd5b506109e39050565b336001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561093157600080fd5b505afa158015610945573d6000803e3d6000fd5b505050506040513d602081101561095b57600080fd5b5051604080516323b872dd60e01b81526001600160a01b03848116600483015233602483015260448201899052915191909216916323b872dd9160648083019260209291908290030181600087803b1580156109b657600080fd5b505af11580156109ca573d6000803e3d6000fd5b505050506040513d60208110156109e057600080fd5b50505b505050505050565b6000600160ff1b82106109fd57600080fd5b509056fea2646970667358221220535d49a9e1c7746bb2f5e82ac2b390aa8cb65d7ace495b62e9914156eb3cd75a64736f6c63430007060033","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 0xC35A2B68 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xC96AA6C7 EQ PUSH2 0x84 JUMPI DUP1 PUSH4 0xD804D7A7 EQ PUSH2 0xC0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x82 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x13C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x82 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x30A JUMP JUMPDEST PUSH2 0x82 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD6 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 0xFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x10F 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 0x131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3D1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x16C JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE DUP4 AND PUSH4 0x128ACB08 DUP7 PUSH1 0x1 PUSH2 0x195 DUP7 PUSH2 0x9EB JUMP JUMPDEST PUSH1 0x0 SUB PUSH5 0x1000276A3 PUSH1 0x1 ADD DUP7 CALLER PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1DD JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP4 POP POP 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x288 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x270 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2B5 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 0x2D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2EB 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 0x301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x33A JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE DUP4 AND PUSH4 0x128ACB08 DUP7 PUSH1 0x0 PUSH2 0x363 DUP7 PUSH2 0x9EB JUMP JUMPDEST PUSH1 0x0 SUB PUSH1 0x1 PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 SUB DUP7 CALLER PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 DUP2 LT ISZERO PUSH2 0x1F5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1DD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xD48241DF4A75E663B29E55F9506B31F77ED0F48CFE7E7612D1163144995DC1CA SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 DUP1 DUP4 DUP4 PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x41F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x43A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x46E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP DUP3 MLOAD SWAP3 SWAP8 POP POP POP SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 POP PUSH1 0x1 EQ ISZERO SWAP2 POP PUSH2 0x7FF SWAP1 POP JUMPI PUSH1 0x0 DUP1 DUP8 SGT PUSH2 0x532 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x515 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 0x52B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x598 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x56B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x57F 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 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP9 SGT PUSH2 0x5A9 JUMPI DUP7 PUSH2 0x5AB JUMP JUMPDEST DUP8 JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x5BC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x610 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 0x626 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP3 AND SWAP2 SWAP1 SWAP2 EQ SWAP2 POP DUP6 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x648 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 CALLER DUP4 DUP6 PUSH1 0x0 SUB DUP6 PUSH2 0x683 JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x68A JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND PUSH1 0x60 DUP6 ADD MSTORE DUP4 DUP6 ADD SWAP5 DUP6 MSTORE DUP4 MLOAD PUSH1 0x80 DUP6 ADD DUP2 SWAP1 MSTORE SWAP4 SWAP5 DUP16 SWAP5 SWAP1 SWAP4 DUP5 SWAP4 PUSH1 0xA0 DUP9 ADD SWAP4 SWAP3 MUL SWAP1 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6E8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6D0 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP4 POP POP 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x77B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x763 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x7A8 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 0x7CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7DE 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 0x7F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9E3 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP7 SGT ISZERO PUSH2 0x8F8 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x841 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x855 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 0x86B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP11 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 0x8C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8DA 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 0x8F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9E3 SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x931 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x945 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 0x95B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x9B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9CA 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 0x9E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 LT PUSH2 0x9FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 0x5D 0x49 0xA9 0xE1 0xC7 PUSH21 0x6BB2F5E82AC2B390AA8CB65D7ACE495B62E9914156 0xEB EXTCODECOPY 0xD7 GAS PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"287:2897:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;990:465;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;990:465:49;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;447:466;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;447:466:49;;;;;;;;;;;;;;;;;;;;;;:::i;1532:1649::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1532:1649:49;;-1:-1:-1;1532:1649:49;-1:-1:-1;1532:1649:49;:::i;990:465::-;1184:16;;;1198:1;1184:16;;;;;;;;;1159:22;;1184:16;;;;;;;;;;;-1:-1:-1;1184:16:49;1159:41;;1222:9;1211:5;1217:1;1211:8;;;;;;;;-1:-1:-1;;;;;1211:20:49;;;:8;;;;;;;;;:20;1242:28;;;1285:9;1309:4;1329:21;:10;:19;:21::i;:::-;1328:22;;837:10:28;1391:1:49;1365:27;1418:5;1425:10;1407:29;;;;;;;;;-1:-1:-1;;;;;1407:29:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1242:205;;;;;;;;;;;;;-1:-1:-1;;;;;1242:205:49;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1242:205:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;990:465:49:o;447:466::-;641:16;;;655:1;641:16;;;;;;;;;616:22;;641:16;;;;;;;;;;;-1:-1:-1;641:16:49;616:41;;679:9;668:5;674:1;668:8;;;;;;;;-1:-1:-1;;;;;668:20:49;;;:8;;;;;;;;;:20;699:28;;;742:9;766:5;787:21;:10;:19;:21::i;:::-;786:22;;849:1;1019:49:28;823:27:49;876:5;883:10;865:29;;;;;;;;;-1:-1:-1;;;;;865:29:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1532:1649;1689:40;;;;;;;;;;;;;;;;;;;;;;;;;1743:22;1767:13;1809:4;;1784:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1876:12:49;;;;-1:-1:-1;;;1784:75:49;;-1:-1:-1;;;;;1784:75:49;;-1:-1:-1;1892:1:49;1876:17;1872:1302;;-1:-1:-1;1872:1302:49;;-1:-1:-1;1872:1302:49;1986:21;2025:1;2010:12;:16;:120;;2110:10;-1:-1:-1;;;;;2098:30:49;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2098:32:49;2010:120;;;2058:10;-1:-1:-1;;;;;2046:30:49;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2046:32:49;2010:120;1986:144;;2145:21;2184:1;2169:12;:16;:80;;2237:12;2169:80;;;2205:12;2169:80;2145:104;;2266:15;2313:5;2319:1;2313:8;;;;;;;;;;;;;;-1:-1:-1;;;;;2301:28:49;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2301:30:49;2358:8;;-1:-1:-1;;;;;2284:47:49;;;;;;;;;;-1:-1:-1;2358:5:49;;2364:1;;2358:8;;;;;;;;;;-1:-1:-1;;;;;2346:26:49;;2391:10;2420;2450:14;2449:15;;2483:10;:112;;2568:27;2483:112;;;2517:27;2483:112;2625:16;;;2639:1;2625:16;;;;;;;;;;-1:-1:-1;;;;;2614:35:49;;;;;;;;;;;;;;;;;;;;2625:16;;2643:5;;2614:35;;;;;;;;2625:16;2614:35;;;;;;2625:16;;2614:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2346:318;;;;;;;;;;;;;-1:-1:-1;;;;;2346:318:49;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2346:318:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1872:1302:49;;-1:-1:-1;;;;1872:1302:49;;2716:1;2701:12;:16;2697:466;;;2764:10;-1:-1:-1;;;;;2752:30:49;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2752:32:49;2738:184;;;-1:-1:-1;;;2738:184:49;;-1:-1:-1;;;;;2738:184:49;;;;;;;2849:10;2738:184;;;;;;;;;;;;:60;;;;;;;:184;;;;;2752:32;;2738:184;;;;;;;-1:-1:-1;2738:60:49;:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2697:466:49;;-1:-1:-1;2697:466:49;;2989:10;-1:-1:-1;;;;;2977:30:49;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2977:32:49;2963:184;;;-1:-1:-1;;;2963:184:49;;-1:-1:-1;;;;;2963:184:49;;;;;;;3074:10;2963:184;;;;;;;;;;;;:60;;;;;;;:184;;;;;2977:32;;2963:184;;;;;;;-1:-1:-1;2963:60:49;:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2697:466:49;1532:1649;;;;;;:::o;947:124:23:-;999:8;-1:-1:-1;;;1028:1:23;:10;1020:19;;;;;;-1:-1:-1;1061:1:23;947:124::o"},"methodIdentifiers":{"elixirSwapCallback(int256,int256,bytes)":"d804d7a7","swapForExact0Multi(address,address,address,uint256)":"c96aa6c7","swapForExact1Multi(address,address,address,uint256)":"c35a2b68"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"}],\"name\":\"SwapCallback\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"elixirSwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolInput\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolOutput\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"}],\"name\":\"swapForExact0Multi\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolInput\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolOutput\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"}],\"name\":\"swapForExact1Multi\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"elixirSwapCallback(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 ElixirPool deployed by the canonical ElixirFactory. 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 IElixirPoolActions#swap call\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"elixirSwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IElixirPool#swap.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/TestElixirRouter.sol\":\"TestElixirRouter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IERC20Minimal.sol\":{\"keccak256\":\"0xd38b95824b4675c864898a9c6de1f8470da22df3045b70469baf63a84ba9c07a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2410bc2a7705f0e189a561329567a7908bf7e999b858b4f6b1a3702b394397e6\",\"dweb:/ipfs/QmPoLXFfp8BJzpVtHaXMPHQsB82YUSrwpGzzzE3stt9p21\"]},\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol\":{\"keccak256\":\"0xc9fbc830c4c6b20c2e87b16569730bce747f3c9cde95efee554f1c6f07cc60b0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b94f129f0ad86cbc99ff550c65bc0ab2b9e754b7f3c2734f09f51ffb908864d\",\"dweb:/ipfs/QmUuJ7zyX1vWC7SfpsDhBqXGCKMS24pvSzirPVMU3sSkK8\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-core/test/TestElixirRouter.sol\":{\"keccak256\":\"0xddec627b5e631ab1f3627cbeba0f41085f0699bc1317313dafc5de1669ca1706\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d0e90e64d7bbbf6e45bbe34f0b26f8ca39719f5a9dd0382261ed7d9778eebc8\",\"dweb:/ipfs/QmRY66wbj59hFdbUtKueMPBxdJDDeh6FpHADqefgBcFPH7\"]}},\"version\":1}"}},"contracts/elixir-core/test/TestElixirSwapPay.sol":{"TestElixirSwapPay":{"abi":[{"inputs":[{"internalType":"int256","name":"","type":"int256"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"elixirSwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint256","name":"pay0","type":"uint256"},{"internalType":"uint256","name":"pay1","type":"uint256"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061049e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063d804d7a71461003b578063f13cdf90146100b9575b600080fd5b6100b76004803603606081101561005157600080fd5b81359160208101359181019060608101604082013564010000000081111561007857600080fd5b82018360208201111561008a57600080fd5b803590602001918460018302840111640100000000831117156100ac57600080fd5b50909250905061010b565b005b6100b7600480360360e08110156100cf57600080fd5b506001600160a01b0381358116916020810135821691604082013515159160608101359091169060808101359060a08101359060c0013561032b565b60008060008484606081101561012057600080fd5b506001600160a01b03813516935060208101359250604001359050811561023157336001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561017a57600080fd5b505afa15801561018e573d6000803e3d6000fd5b505050506040513d60208110156101a457600080fd5b5051604080516323b872dd60e01b81526001600160a01b03868116600483015233602483015260448201869052915191909216916323b872dd9160648083019260209291908290030181600087803b1580156101ff57600080fd5b505af1158015610213573d6000803e3d6000fd5b505050506040513d602081101561022957600080fd5b506103229050565b801561032257336001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561027057600080fd5b505afa158015610284573d6000803e3d6000fd5b505050506040513d602081101561029a57600080fd5b5051604080516323b872dd60e01b81526001600160a01b03868116600483015233602483015260448201859052915191909216916323b872dd9160648083019260209291908290030181600087803b1580156102f557600080fd5b505af1158015610309573d6000803e3d6000fd5b505050506040513d602081101561031f57600080fd5b50505b50505050505050565b866001600160a01b031663128acb088787868833888860405160200180846001600160a01b0316815260200183815260200182815260200193505050506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018515158152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156103ef5781810151838201526020016103d7565b50505050905090810190601f16801561041c5780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b15801561043e57600080fd5b505af1158015610452573d6000803e3d6000fd5b505050506040513d604081101561031f57600080fdfea26469706673582212204beb6508ca5866fa7fdd5d779b05246268a6392d0222fa6e6501a4769fbfc46864736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49E 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 0xD804D7A7 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xF13CDF90 EQ PUSH2 0xB9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x51 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 0x78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8A 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 0xAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x10B JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD ISZERO ISZERO SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x32B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP5 PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP4 POP PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 ADD CALLDATALOAD SWAP1 POP DUP2 ISZERO PUSH2 0x231 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x17A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18E 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 0x1A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP7 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 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x213 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 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x322 SWAP1 POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x322 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x284 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 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 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 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x309 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 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP8 DUP8 DUP7 DUP9 CALLER DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x3EF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3D7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x41C 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 0x43E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x452 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 0x31F JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B 0xEB PUSH6 0x8CA5866FA7F 0xDD 0x5D PUSH24 0x9B05246268A6392D0222FA6E6501A4769FBFC46864736F6C PUSH4 0x43000706 STOP CALLER ","sourceMap":"213:1179:50:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c8063d804d7a71461003b578063f13cdf90146100b9575b600080fd5b6100b76004803603606081101561005157600080fd5b81359160208101359181019060608101604082013564010000000081111561007857600080fd5b82018360208201111561008a57600080fd5b803590602001918460018302840111640100000000831117156100ac57600080fd5b50909250905061010b565b005b6100b7600480360360e08110156100cf57600080fd5b506001600160a01b0381358116916020810135821691604082013515159160608101359091169060808101359060a08101359060c0013561032b565b60008060008484606081101561012057600080fd5b506001600160a01b03813516935060208101359250604001359050811561023157336001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561017a57600080fd5b505afa15801561018e573d6000803e3d6000fd5b505050506040513d60208110156101a457600080fd5b5051604080516323b872dd60e01b81526001600160a01b03868116600483015233602483015260448201869052915191909216916323b872dd9160648083019260209291908290030181600087803b1580156101ff57600080fd5b505af1158015610213573d6000803e3d6000fd5b505050506040513d602081101561022957600080fd5b506103229050565b801561032257336001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561027057600080fd5b505afa158015610284573d6000803e3d6000fd5b505050506040513d602081101561029a57600080fd5b5051604080516323b872dd60e01b81526001600160a01b03868116600483015233602483015260448201859052915191909216916323b872dd9160648083019260209291908290030181600087803b1580156102f557600080fd5b505af1158015610309573d6000803e3d6000fd5b505050506040513d602081101561031f57600080fd5b50505b50505050505050565b866001600160a01b031663128acb088787868833888860405160200180846001600160a01b0316815260200183815260200182815260200193505050506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018515158152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156103ef5781810151838201526020016103d7565b50505050905090810190601f16801561041c5780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b15801561043e57600080fd5b505af1158015610452573d6000803e3d6000fd5b505050506040513d604081101561031f57600080fdfea26469706673582212204beb6508ca5866fa7fdd5d779b05246268a6392d0222fa6e6501a4769fbfc46864736f6c63430007060033","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 0xD804D7A7 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xF13CDF90 EQ PUSH2 0xB9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x51 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 0x78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8A 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 0xAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x10B JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD ISZERO ISZERO SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x32B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP5 PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP4 POP PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 ADD CALLDATALOAD SWAP1 POP DUP2 ISZERO PUSH2 0x231 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x17A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18E 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 0x1A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP7 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 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x213 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 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x322 SWAP1 POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x322 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x284 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 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 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 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x309 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 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP8 DUP8 DUP7 DUP9 CALLER DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x3EF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3D7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x41C 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 0x43E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x452 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 0x31F JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B 0xEB PUSH6 0x8CA5866FA7F 0xDD 0x5D PUSH24 0x9B05246268A6392D0222FA6E6501A4769FBFC46864736F6C PUSH4 0x43000706 STOP CALLER ","sourceMap":"213:1179:50:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;702:687;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;702:687:50;;-1:-1:-1;702:687:50;-1:-1:-1;702:687:50;:::i;:::-;;270:424;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;270:424:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;702:687::-;831:14;847:12;861;902:4;;877:82;;;;;;;;;;-1:-1:-1;;;;;;877:82:50;;;;-1:-1:-1;877:82:50;;;;;-1:-1:-1;877:82:50;;;;-1:-1:-1;976:8:50;;972:410;;1027:10;-1:-1:-1;;;;;1015:30:50;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1015:32:50;1001:161;;;-1:-1:-1;;;1001:161:50;;-1:-1:-1;;;;;1001:161:50;;;;;;;1105:10;1001:161;;;;;;;;;;;;:60;;;;;;;:161;;;;;1015:32;;1001:161;;;;;;;-1:-1:-1;1001:60:50;:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;972:410:50;;-1:-1:-1;972:410:50;;1184:8;;1180:202;;1235:10;-1:-1:-1;;;;;1223:30:50;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1223:32:50;1209:161;;;-1:-1:-1;;;1209:161:50;;-1:-1:-1;;;;;1209:161:50;;;;;;;1313:10;1209:161;;;;;;;;;;;;:60;;;;;;;:161;;;;;1223:32;;1209:161;;;;;;;-1:-1:-1;1209:60:50;:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1180:202:50;702:687;;;;;;;:::o;270:424::-;510:4;-1:-1:-1;;;;;498:22:50;;535:9;559:10;584:15;614:12;652:10;664:4;670;641:34;;;;;;-1:-1:-1;;;;;641:34:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;498:188;;;;;;;;;;;;;-1:-1:-1;;;;;498:188:50;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;498:188:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"elixirSwapCallback(int256,int256,bytes)":"d804d7a7","swap(address,address,bool,uint160,int256,uint256,uint256)":"f13cdf90"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"elixirSwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"pay0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pay1\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/TestElixirSwapPay.sol\":\"TestElixirSwapPay\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IERC20Minimal.sol\":{\"keccak256\":\"0xd38b95824b4675c864898a9c6de1f8470da22df3045b70469baf63a84ba9c07a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2410bc2a7705f0e189a561329567a7908bf7e999b858b4f6b1a3702b394397e6\",\"dweb:/ipfs/QmPoLXFfp8BJzpVtHaXMPHQsB82YUSrwpGzzzE3stt9p21\"]},\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol\":{\"keccak256\":\"0xc9fbc830c4c6b20c2e87b16569730bce747f3c9cde95efee554f1c6f07cc60b0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b94f129f0ad86cbc99ff550c65bc0ab2b9e754b7f3c2734f09f51ffb908864d\",\"dweb:/ipfs/QmUuJ7zyX1vWC7SfpsDhBqXGCKMS24pvSzirPVMU3sSkK8\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-core/test/TestElixirSwapPay.sol\":{\"keccak256\":\"0x7f0d805ffc1d8c29f69b9c53a19e4466f53c96c8add1f4c5588fcd240c699e35\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b85aa33c106f9f285549b353653f4aa04a074796abdd36b93a8507be8ee8fe3\",\"dweb:/ipfs/QmTW5Xpn4xnYsJr1feQNh8RwGDLkPzouaiFN4kXtmPX8C8\"]}},\"version\":1}"}},"contracts/elixir-core/test/TickBitmapEchidnaTest.sol":{"TickBitmapEchidnaTest":{"abi":[{"inputs":[{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"bool","name":"lte","type":"bool"}],"name":"checkNextInitializedTickWithinOneWordInvariants","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"name":"flipTick","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610587806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632854ac0a1461003b5780638815912f14610065575b600080fd5b6100636004803603604081101561005157600080fd5b50803560020b90602001351515610085565b005b6100636004803603602081101561007b57600080fd5b503560020b610190565b60008061009581856001866101c2565b91509150821561011757627ffeff198460020b12156100b357600080fd5b8360020b8260020b13156100c357fe5b61010082850360020b126100d357fe5b835b8260020b8160020b13156100fc576100ec81610304565b156100f357fe5b600019016100d5565b5080151561010983610304565b15151461011257fe5b61018a565b627ffeff8460020b1261012957600080fd5b8360020b8260020b1361013857fe5b61010084830360020b131561014957fe5b600184015b8260020b8160020b12156101745761016581610304565b1561016c57fe5b60010161014e565b5080151561018183610304565b15151461018a57fe5b50505050565b600061019b82610304565b90506101aa6000836001610339565b80156101b583610304565b1515146101be57fe5b5050565b60008060008460020b8660020b816101d657fe5b05905060008660020b1280156101fd57508460020b8660020b816101f657fe5b0760020b15155b1561020757600019015b831561027c576000806102198361039f565b600182810b810b600090815260208d9052604090205460ff83169190911b8001600019019081168015159750929450909250908561025e57888360ff16860302610271565b88610268826103b1565b840360ff168603025b9650505050506102fa565b60008061028b8360010161039f565b91509150600060018260ff166001901b031990506000818b60008660010b60010b81526020019081526020016000205416905080600014159550856102dd57888360ff0360ff168660010101026102f3565b88836102e88361045e565b0360ff168660010101025b9650505050505b5094509492505050565b6000808061031581856001806101c2565b915091508360020b8260020b1461032d57600061032f565b805b925050505b919050565b8060020b8260020b8161034857fe5b0760020b1561035657600080fd5b6000806103718360020b8560020b8161036b57fe5b0561039f565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b60020b600881901d9161010090910790565b60008082116103bf57600080fd5b70010000000000000000000000000000000082106103df57608091821c91015b6801000000000000000082106103f757604091821c91015b640100000000821061040b57602091821c91015b62010000821061041d57601091821c91015b610100821061042e57600891821c91015b6010821061043e57600491821c91015b6004821061044e57600291821c91015b6002821061033457600101919050565b600080821161046c57600080fd5b5060ff6fffffffffffffffffffffffffffffffff82161561049057607f1901610498565b608082901c91505b67ffffffffffffffff8216156104b157603f19016104b9565b604082901c91505b63ffffffff8216156104ce57601f19016104d6565b602082901c91505b61ffff8216156104e957600f19016104f1565b601082901c91505b60ff821615610503576007190161050b565b600882901c91505b600f82161561051d5760031901610525565b600482901c91505b6003821615610537576001190161053f565b600282901c91505b6001821615610334576000190191905056fea26469706673582212203c886e67d7f6d68b5ea94165a5e1ff6c47382ed0d4de84bd79f42e9b9b32363064736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x587 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 0x2854AC0A EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x8815912F EQ PUSH2 0x65 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x63 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SIGNEXTEND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x85 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x63 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x190 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x95 DUP2 DUP6 PUSH1 0x1 DUP7 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 ISZERO PUSH2 0x117 JUMPI PUSH3 0x7FFEFF NOT DUP5 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0xB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0xC3 JUMPI INVALID JUMPDEST PUSH2 0x100 DUP3 DUP6 SUB PUSH1 0x2 SIGNEXTEND SLT PUSH2 0xD3 JUMPI INVALID JUMPDEST DUP4 JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0xFC JUMPI PUSH2 0xEC DUP2 PUSH2 0x304 JUMP JUMPDEST ISZERO PUSH2 0xF3 JUMPI INVALID JUMPDEST PUSH1 0x0 NOT ADD PUSH2 0xD5 JUMP JUMPDEST POP DUP1 ISZERO ISZERO PUSH2 0x109 DUP4 PUSH2 0x304 JUMP JUMPDEST ISZERO ISZERO EQ PUSH2 0x112 JUMPI INVALID JUMPDEST PUSH2 0x18A JUMP JUMPDEST PUSH3 0x7FFEFF DUP5 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x129 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x138 JUMPI INVALID JUMPDEST PUSH2 0x100 DUP5 DUP4 SUB PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x149 JUMPI INVALID JUMPDEST PUSH1 0x1 DUP5 ADD JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x174 JUMPI PUSH2 0x165 DUP2 PUSH2 0x304 JUMP JUMPDEST ISZERO PUSH2 0x16C JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x14E JUMP JUMPDEST POP DUP1 ISZERO ISZERO PUSH2 0x181 DUP4 PUSH2 0x304 JUMP JUMPDEST ISZERO ISZERO EQ PUSH2 0x18A JUMPI INVALID JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19B DUP3 PUSH2 0x304 JUMP JUMPDEST SWAP1 POP PUSH2 0x1AA PUSH1 0x0 DUP4 PUSH1 0x1 PUSH2 0x339 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1B5 DUP4 PUSH2 0x304 JUMP JUMPDEST ISZERO ISZERO EQ PUSH2 0x1BE JUMPI INVALID JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x1D6 JUMPI INVALID JUMPDEST SDIV SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x2 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0x1FD JUMPI POP DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x1F6 JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x207 JUMPI PUSH1 0x0 NOT ADD JUMPDEST DUP4 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 PUSH2 0x219 DUP4 PUSH2 0x39F JUMP JUMPDEST PUSH1 0x1 DUP3 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF DUP4 AND SWAP2 SWAP1 SWAP2 SHL DUP1 ADD PUSH1 0x0 NOT ADD SWAP1 DUP2 AND DUP1 ISZERO ISZERO SWAP8 POP SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 DUP6 PUSH2 0x25E JUMPI DUP9 DUP4 PUSH1 0xFF AND DUP7 SUB MUL PUSH2 0x271 JUMP JUMPDEST DUP9 PUSH2 0x268 DUP3 PUSH2 0x3B1 JUMP JUMPDEST DUP5 SUB PUSH1 0xFF AND DUP7 SUB MUL JUMPDEST SWAP7 POP POP POP POP POP PUSH2 0x2FA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x28B DUP4 PUSH1 0x1 ADD PUSH2 0x39F JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SUB NOT SWAP1 POP PUSH1 0x0 DUP2 DUP12 PUSH1 0x0 DUP7 PUSH1 0x1 SIGNEXTEND PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 POP DUP1 PUSH1 0x0 EQ ISZERO SWAP6 POP DUP6 PUSH2 0x2DD JUMPI DUP9 DUP4 PUSH1 0xFF SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL PUSH2 0x2F3 JUMP JUMPDEST DUP9 DUP4 PUSH2 0x2E8 DUP4 PUSH2 0x45E JUMP JUMPDEST SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL JUMPDEST SWAP7 POP POP POP POP POP JUMPDEST POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x315 DUP2 DUP6 PUSH1 0x1 DUP1 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP4 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND EQ PUSH2 0x32D JUMPI PUSH1 0x0 PUSH2 0x32F JUMP JUMPDEST DUP1 JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x348 JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x371 DUP4 PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x36B JUMPI INVALID JUMPDEST SDIV PUSH2 0x39F JUMP JUMPDEST PUSH1 0x1 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x40 SWAP1 SWAP7 KECCAK256 DUP1 SLOAD PUSH1 0xFF SWAP1 SWAP8 AND SWAP2 SWAP1 SWAP2 SHL SWAP1 SWAP6 XOR SWAP1 SWAP5 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH1 0x8 DUP2 SWAP1 SAR SWAP2 PUSH2 0x100 SWAP1 SWAP2 SMOD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x3BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x3DF JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x3F7 JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x40B JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x41D JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x42E JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x43E JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x44E JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x334 JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x490 JUMPI PUSH1 0x7F NOT ADD PUSH2 0x498 JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x3F NOT ADD PUSH2 0x4B9 JUMP JUMPDEST PUSH1 0x40 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x4CE JUMPI PUSH1 0x1F NOT ADD PUSH2 0x4D6 JUMP JUMPDEST PUSH1 0x20 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH2 0xFFFF DUP3 AND ISZERO PUSH2 0x4E9 JUMPI PUSH1 0xF NOT ADD PUSH2 0x4F1 JUMP JUMPDEST PUSH1 0x10 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x503 JUMPI PUSH1 0x7 NOT ADD PUSH2 0x50B JUMP JUMPDEST PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xF DUP3 AND ISZERO PUSH2 0x51D JUMPI PUSH1 0x3 NOT ADD PUSH2 0x525 JUMP JUMPDEST PUSH1 0x4 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x3 DUP3 AND ISZERO PUSH2 0x537 JUMPI PUSH1 0x1 NOT ADD PUSH2 0x53F JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x334 JUMPI PUSH1 0x0 NOT ADD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODECOPY DUP9 PUSH15 0x67D7F6D68B5EA94165A5E1FF6C4738 0x2E 0xD0 0xD4 0xDE DUP5 0xBD PUSH26 0xF42E9B9B32363064736F6C634300070600330000000000000000 ","sourceMap":"108:1690:51:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c80632854ac0a1461003b5780638815912f14610065575b600080fd5b6100636004803603604081101561005157600080fd5b50803560020b90602001351515610085565b005b6100636004803603602081101561007b57600080fd5b503560020b610190565b60008061009581856001866101c2565b91509150821561011757627ffeff198460020b12156100b357600080fd5b8360020b8260020b13156100c357fe5b61010082850360020b126100d357fe5b835b8260020b8160020b13156100fc576100ec81610304565b156100f357fe5b600019016100d5565b5080151561010983610304565b15151461011257fe5b61018a565b627ffeff8460020b1261012957600080fd5b8360020b8260020b1361013857fe5b61010084830360020b131561014957fe5b600184015b8260020b8160020b12156101745761016581610304565b1561016c57fe5b60010161014e565b5080151561018183610304565b15151461018a57fe5b50505050565b600061019b82610304565b90506101aa6000836001610339565b80156101b583610304565b1515146101be57fe5b5050565b60008060008460020b8660020b816101d657fe5b05905060008660020b1280156101fd57508460020b8660020b816101f657fe5b0760020b15155b1561020757600019015b831561027c576000806102198361039f565b600182810b810b600090815260208d9052604090205460ff83169190911b8001600019019081168015159750929450909250908561025e57888360ff16860302610271565b88610268826103b1565b840360ff168603025b9650505050506102fa565b60008061028b8360010161039f565b91509150600060018260ff166001901b031990506000818b60008660010b60010b81526020019081526020016000205416905080600014159550856102dd57888360ff0360ff168660010101026102f3565b88836102e88361045e565b0360ff168660010101025b9650505050505b5094509492505050565b6000808061031581856001806101c2565b915091508360020b8260020b1461032d57600061032f565b805b925050505b919050565b8060020b8260020b8161034857fe5b0760020b1561035657600080fd5b6000806103718360020b8560020b8161036b57fe5b0561039f565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b60020b600881901d9161010090910790565b60008082116103bf57600080fd5b70010000000000000000000000000000000082106103df57608091821c91015b6801000000000000000082106103f757604091821c91015b640100000000821061040b57602091821c91015b62010000821061041d57601091821c91015b610100821061042e57600891821c91015b6010821061043e57600491821c91015b6004821061044e57600291821c91015b6002821061033457600101919050565b600080821161046c57600080fd5b5060ff6fffffffffffffffffffffffffffffffff82161561049057607f1901610498565b608082901c91505b67ffffffffffffffff8216156104b157603f19016104b9565b604082901c91505b63ffffffff8216156104ce57601f19016104d6565b602082901c91505b61ffff8216156104e957600f19016104f1565b601082901c91505b60ff821615610503576007190161050b565b600882901c91505b600f82161561051d5760031901610525565b600482901c91505b6003821615610537576001190161053f565b600282901c91505b6001821615610334576000190191905056fea26469706673582212203c886e67d7f6d68b5ea94165a5e1ff6c47382ed0d4de84bd79f42e9b9b32363064736f6c63430007060033","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 0x2854AC0A EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x8815912F EQ PUSH2 0x65 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x63 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SIGNEXTEND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x85 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x63 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x190 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x95 DUP2 DUP6 PUSH1 0x1 DUP7 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 ISZERO PUSH2 0x117 JUMPI PUSH3 0x7FFEFF NOT DUP5 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0xB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0xC3 JUMPI INVALID JUMPDEST PUSH2 0x100 DUP3 DUP6 SUB PUSH1 0x2 SIGNEXTEND SLT PUSH2 0xD3 JUMPI INVALID JUMPDEST DUP4 JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0xFC JUMPI PUSH2 0xEC DUP2 PUSH2 0x304 JUMP JUMPDEST ISZERO PUSH2 0xF3 JUMPI INVALID JUMPDEST PUSH1 0x0 NOT ADD PUSH2 0xD5 JUMP JUMPDEST POP DUP1 ISZERO ISZERO PUSH2 0x109 DUP4 PUSH2 0x304 JUMP JUMPDEST ISZERO ISZERO EQ PUSH2 0x112 JUMPI INVALID JUMPDEST PUSH2 0x18A JUMP JUMPDEST PUSH3 0x7FFEFF DUP5 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x129 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x138 JUMPI INVALID JUMPDEST PUSH2 0x100 DUP5 DUP4 SUB PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x149 JUMPI INVALID JUMPDEST PUSH1 0x1 DUP5 ADD JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x174 JUMPI PUSH2 0x165 DUP2 PUSH2 0x304 JUMP JUMPDEST ISZERO PUSH2 0x16C JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x14E JUMP JUMPDEST POP DUP1 ISZERO ISZERO PUSH2 0x181 DUP4 PUSH2 0x304 JUMP JUMPDEST ISZERO ISZERO EQ PUSH2 0x18A JUMPI INVALID JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19B DUP3 PUSH2 0x304 JUMP JUMPDEST SWAP1 POP PUSH2 0x1AA PUSH1 0x0 DUP4 PUSH1 0x1 PUSH2 0x339 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1B5 DUP4 PUSH2 0x304 JUMP JUMPDEST ISZERO ISZERO EQ PUSH2 0x1BE JUMPI INVALID JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x1D6 JUMPI INVALID JUMPDEST SDIV SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x2 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0x1FD JUMPI POP DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x1F6 JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x207 JUMPI PUSH1 0x0 NOT ADD JUMPDEST DUP4 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 PUSH2 0x219 DUP4 PUSH2 0x39F JUMP JUMPDEST PUSH1 0x1 DUP3 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF DUP4 AND SWAP2 SWAP1 SWAP2 SHL DUP1 ADD PUSH1 0x0 NOT ADD SWAP1 DUP2 AND DUP1 ISZERO ISZERO SWAP8 POP SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 DUP6 PUSH2 0x25E JUMPI DUP9 DUP4 PUSH1 0xFF AND DUP7 SUB MUL PUSH2 0x271 JUMP JUMPDEST DUP9 PUSH2 0x268 DUP3 PUSH2 0x3B1 JUMP JUMPDEST DUP5 SUB PUSH1 0xFF AND DUP7 SUB MUL JUMPDEST SWAP7 POP POP POP POP POP PUSH2 0x2FA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x28B DUP4 PUSH1 0x1 ADD PUSH2 0x39F JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SUB NOT SWAP1 POP PUSH1 0x0 DUP2 DUP12 PUSH1 0x0 DUP7 PUSH1 0x1 SIGNEXTEND PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 POP DUP1 PUSH1 0x0 EQ ISZERO SWAP6 POP DUP6 PUSH2 0x2DD JUMPI DUP9 DUP4 PUSH1 0xFF SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL PUSH2 0x2F3 JUMP JUMPDEST DUP9 DUP4 PUSH2 0x2E8 DUP4 PUSH2 0x45E JUMP JUMPDEST SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL JUMPDEST SWAP7 POP POP POP POP POP JUMPDEST POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x315 DUP2 DUP6 PUSH1 0x1 DUP1 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP4 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND EQ PUSH2 0x32D JUMPI PUSH1 0x0 PUSH2 0x32F JUMP JUMPDEST DUP1 JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x348 JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x371 DUP4 PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x36B JUMPI INVALID JUMPDEST SDIV PUSH2 0x39F JUMP JUMPDEST PUSH1 0x1 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x40 SWAP1 SWAP7 KECCAK256 DUP1 SLOAD PUSH1 0xFF SWAP1 SWAP8 AND SWAP2 SWAP1 SWAP2 SHL SWAP1 SWAP6 XOR SWAP1 SWAP5 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH1 0x8 DUP2 SWAP1 SAR SWAP2 PUSH2 0x100 SWAP1 SWAP2 SMOD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x3BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x3DF JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x3F7 JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x40B JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x41D JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x42E JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x43E JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x44E JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x334 JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x490 JUMPI PUSH1 0x7F NOT ADD PUSH2 0x498 JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x3F NOT ADD PUSH2 0x4B9 JUMP JUMPDEST PUSH1 0x40 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x4CE JUMPI PUSH1 0x1F NOT ADD PUSH2 0x4D6 JUMP JUMPDEST PUSH1 0x20 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH2 0xFFFF DUP3 AND ISZERO PUSH2 0x4E9 JUMPI PUSH1 0xF NOT ADD PUSH2 0x4F1 JUMP JUMPDEST PUSH1 0x10 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x503 JUMPI PUSH1 0x7 NOT ADD PUSH2 0x50B JUMP JUMPDEST PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xF DUP3 AND ISZERO PUSH2 0x51D JUMPI PUSH1 0x3 NOT ADD PUSH2 0x525 JUMP JUMPDEST PUSH1 0x4 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x3 DUP3 AND ISZERO PUSH2 0x537 JUMPI PUSH1 0x1 NOT ADD PUSH2 0x53F JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x334 JUMPI PUSH1 0x0 NOT ADD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODECOPY DUP9 PUSH15 0x67D7F6D68B5EA94165A5E1FF6C4738 0x2E 0xD0 0xD4 0xDE DUP5 0xBD PUSH26 0xF42E9B9B32363064736F6C634300070600330000000000000000 ","sourceMap":"108:1690:51:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;716:1079;;;;;;;;;;;;;;;;-1:-1:-1;716:1079:51;;;;;;;;;;;:::i;:::-;;533:175;;;;;;;;;;;;;;;;-1:-1:-1;533:175:51;;;;:::i;716:1079::-;821:10;;853:53;821:10;893:4;899:1;902:3;853:39;:53::i;:::-;820:86;;;;921:3;917:871;;;-1:-1:-1;;987:4:51;:16;;;;979:25;;;;;;1034:4;1026:12;;:4;:12;;;;1019:20;;;;1075:3;1068:4;1061;:11;:17;;;1054:25;;;;1204:4;1189:96;1214:4;1210:8;;:1;:8;;;1189:96;;;1252:16;1266:1;1252:13;:16::i;:::-;1251:17;1244:25;;;;-1:-1:-1;;1220:3:51;1189:96;;;;1329:11;1306:34;;:19;1320:4;1306:13;:19::i;:::-;:34;;;1299:42;;;;917:871;;;1427:7;1420:4;:14;;;1412:23;;;;;;1464:4;1457:11;;:4;:11;;;1450:19;;;;1506:3;1498:4;1491;:11;:18;;;;1484:26;;;;1642:1;1635:8;;1620:100;1649:4;1645:8;;:1;:8;;;1620:100;;;1687:16;1701:1;1687:13;:16::i;:::-;1686:17;1679:25;;;;1655:3;;1620:100;;;;1764:11;1741:34;;:19;1755:4;1741:13;:19::i;:::-;:34;;;1734:42;;;;716:1079;;;;:::o;533:175::-;583:11;597:19;611:4;597:13;:19::i;:::-;583:33;-1:-1:-1;627:24:51;:6;643:4;649:1;627:15;:24::i;:::-;692:7;;669:19;683:4;669:13;:19::i;:::-;:30;;;662:38;;;;533:175;;:::o;2236:1956:27:-;2425:10;2437:16;2466;2492:11;2485:18;;:4;:18;;;;;;;;2466:37;;2525:1;2518:4;:8;;;:35;;;;;2537:11;2530:18;;:4;:18;;;;;;;;:23;;;;2518:35;2514:53;;;-1:-1:-1;;2555:12:27;2514:53;2619:3;2615:1570;;;2640:13;2655:12;2671:20;2680:10;2671:8;:20::i;:::-;2810:1;2854:13;;;;;2774:12;2854:13;;;;;;;;;;;2810:11;;;;;;;2789:33;;-1:-1:-1;;2789:33:27;2854:20;;;3024:11;;;;-1:-1:-1;2639:52:27;;-1:-1:-1;2639:52:27;;-1:-1:-1;2789:33:27;3024:11;3168:172;;3329:11;3318:6;3312:13;;3299:10;:26;3298:42;3168:172;;;3267:11;3228:34;3255:6;3228:26;:34::i;:::-;3219:6;:43;3213:50;;3200:10;:63;3199:79;3168:172;3161:179;;2615:1570;;;;;;;3472:13;3487:12;3503:24;3512:10;3525:1;3512:14;3503:8;:24::i;:::-;3471:56;;;;3601:12;3634:1;3624:6;3619:11;;:1;:11;;3618:17;3616:20;3601:35;;3651:14;3684:4;3668;:13;3673:7;3668:13;;;;;;;;;;;;;;;;:20;3651:37;;3830:6;3840:1;3830:11;;3816:25;;3974:11;:199;;4162:11;4151:6;4133:15;:24;4127:31;;4110:10;4123:1;4110:14;:48;4109:64;3974:199;;;4078:11;4067:6;4029:35;4057:6;4029:27;:35::i;:::-;:44;4023:51;;4006:10;4019:1;4006:14;:68;4005:84;3974:199;3967:206;;2615:1570;;;;;2236:1956;;;;;;;;:::o;304:221:51:-;361:4;;;411:54;361:4;451;457:1;;411:39;:54::i;:::-;378:87;;;;491:4;483:12;;:4;:12;;;:34;;512:5;483:34;;;498:11;483:34;476:41;;;;304:221;;;;:::o;1131:357:27:-;1289:11;1282:18;;:4;:18;;;;;;;;:23;;;1274:32;;;;;;1352:13;1367:12;1383:28;1399:11;1392:18;;:4;:18;;;;;;;;1383:8;:28::i;:::-;1437:1;1459:13;;;;;1422:12;1459:13;;;;;;;;;;;;:21;;1437:11;;;;;;;;1459:21;;;;;;-1:-1:-1;;;;1131:357:27:o;706:163::-;814:9;;822:1;814:9;;;;857:3;850:10;;;;706:163::o;683:763:15:-;745:7;777:1;773;:5;765:14;;;;;;801:35;796:1;:40;792:105;;859:3;853:9;;;;877:8;792:105;916:19;911:1;:24;907:87;;958:2;952:8;;;;975:7;907:87;1013:11;1008:1;:16;1004:79;;1047:2;1041:8;;;;1064:7;1004:79;1102:7;1097:1;:12;1093:75;;1132:2;1126:8;;;;1149:7;1093:75;1187:5;1182:1;:10;1178:71;;1215:1;1209:7;;;;1231:6;1178:71;1268:4;1263:1;:9;1259:70;;1295:1;1289:7;;;;1311:6;1259:70;1348:3;1343:1;:8;1339:69;;1374:1;1368:7;;;;1390:6;1339:69;1427:3;1422:1;:8;1418:20;;1437:1;1432:6;683:763;;;:::o;1945:934::-;2008:7;2040:1;2036;:5;2028:14;;;;;;-1:-1:-1;2059:3:15;2081:17;2077:21;;:25;2073:108;;-1:-1:-1;;2119:8:15;2073:108;;;2166:3;2160:9;;;;;2073:108;2199:16;2195:20;;:24;2191:105;;-1:-1:-1;;2236:7:15;2191:105;;;2282:2;2276:8;;;;;2191:105;2314:16;2310:20;;:24;2306:105;;-1:-1:-1;;2351:7:15;2306:105;;;2397:2;2391:8;;;;;2306:105;2429:16;2425:20;;:24;2421:105;;-1:-1:-1;;2466:7:15;2421:105;;;2512:2;2506:8;;;;;2421:105;2544:15;2540:19;;:23;2536:102;;-1:-1:-1;;2580:6:15;2536:102;;;2625:1;2619:7;;;;;2536:102;2656:3;2652:7;;:11;2648:90;;-1:-1:-1;;2680:6:15;2648:90;;;2725:1;2719:7;;;;;2648:90;2756:3;2752:7;;:11;2748:90;;-1:-1:-1;;2780:6:15;2748:90;;;2825:1;2819:7;;;;;2748:90;2856:3;2852:7;;:11;2848:23;;-1:-1:-1;;2865:6:15;1945:934;;;:::o"},"methodIdentifiers":{"checkNextInitializedTickWithinOneWordInvariants(int24,bool)":"2854ac0a","flipTick(int24)":"8815912f"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"bool\",\"name\":\"lte\",\"type\":\"bool\"}],\"name\":\"checkNextInitializedTickWithinOneWordInvariants\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"flipTick\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/TickBitmapEchidnaTest.sol\":\"TickBitmapEchidnaTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/BitMath.sol\":{\"keccak256\":\"0x14c52bf69e189d123dc9fa84ebdca0d879cb020b7df4953678345a8e567aaf7f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aba03531acefeef92920d5208618ae8dfa9f9a918e2c5bfbf5798110ba8f60de\",\"dweb:/ipfs/QmUSm4Js5hMFvhBW4DvMhBPhhXTbwZ8ix9beZUNEppvAhv\"]},\"contracts/elixir-core/libraries/TickBitmap.sol\":{\"keccak256\":\"0x90bb71c25bffebc89c0f234a1c806f081ebb19f8ba7bc4cab693f03d4363a863\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3527c33112d6cb3f8349f0783ffcdfabb52dbfe7c2d214cba03ed25b834b0352\",\"dweb:/ipfs/QmXyJ9MrtwGEQunhyyrBnCFAEVpFqRUf8oWMfJBv3fdC3q\"]},\"contracts/elixir-core/test/TickBitmapEchidnaTest.sol\":{\"keccak256\":\"0x276b227e886b8c4754d1ae8da488f5d184671b39cbd1abd5bf78b13f62d9deae\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://60a74f47769aee2d77212efcce2a5192421a3d1fd3c5ab8e40e122d77275b097\",\"dweb:/ipfs/QmNM5xryquPTWihCn6Uh5fnDsPycDKMyBiipmdF5dkgTCE\"]}},\"version\":1}"}},"contracts/elixir-core/test/TickBitmapTest.sol":{"TickBitmapTest":{"abi":[{"inputs":[{"internalType":"int16","name":"","type":"int16"}],"name":"bitmap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"name":"flipTick","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"name":"getGasCostOfFlipTick","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"bool","name":"lte","type":"bool"}],"name":"getGasCostOfNextInitializedTickWithinOneWord","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"name":"isInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"bool","name":"lte","type":"bool"}],"name":"nextInitializedTickWithinOneWord","outputs":[{"internalType":"int24","name":"next","type":"int24"},{"internalType":"bool","name":"initialized","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506105cb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638815912f116100505780638815912f14610123578063f04bc94314610145578063f0fc92241461016557610072565b80632bdc2fd3146100775780633e7ba228146100ab5780633ffc81ee146100f1575b600080fd5b6100976004803603602081101561008d57600080fd5b503560020b61018d565b604080519115158252519081900360200190f35b6100d3600480360360408110156100c157600080fd5b50803560020b906020013515156101c2565b6040805160029390930b835290151560208301528051918290030190f35b6101116004803603602081101561010757600080fd5b503560010b6101dd565b60408051918252519081900360200190f35b6101436004803603602081101561013957600080fd5b503560020b6101ef565b005b6101116004803603602081101561015b57600080fd5b503560020b6101ff565b6101116004803603604081101561017b57600080fd5b50803560020b9060200135151561021b565b6000808061019e818560018061023b565b915091508360020b8260020b146101b65760006101b8565b805b925050505b919050565b6000806101d2818560018661023b565b915091509250929050565b60006020819052908152604090205481565b6101fc600082600161037d565b50565b6000805a9050610212600084600161037d565b5a900392915050565b6000805a905061022f60008560018661023b565b50505a90039392505050565b60008060008460020b8660020b8161024f57fe5b05905060008660020b12801561027657508460020b8660020b8161026f57fe5b0760020b15155b1561028057600019015b83156102f557600080610292836103e3565b600182810b810b600090815260208d9052604090205460ff83169190911b800160001901908116801515975092945090925090856102d757888360ff168603026102ea565b886102e1826103f5565b840360ff168603025b965050505050610373565b600080610304836001016103e3565b91509150600060018260ff166001901b031990506000818b60008660010b60010b815260200190815260200160002054169050806000141595508561035657888360ff0360ff1686600101010261036c565b8883610361836104a2565b0360ff168660010101025b9650505050505b5094509492505050565b8060020b8260020b8161038c57fe5b0760020b1561039a57600080fd5b6000806103b58360020b8560020b816103af57fe5b056103e3565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b60020b600881901d9161010090910790565b600080821161040357600080fd5b700100000000000000000000000000000000821061042357608091821c91015b68010000000000000000821061043b57604091821c91015b640100000000821061044f57602091821c91015b62010000821061046157601091821c91015b610100821061047257600891821c91015b6010821061048257600491821c91015b6004821061049257600291821c91015b600282106101bd57600101919050565b60008082116104b057600080fd5b5060ff6fffffffffffffffffffffffffffffffff8216156104d457607f19016104dc565b608082901c91505b67ffffffffffffffff8216156104f557603f19016104fd565b604082901c91505b63ffffffff82161561051257601f190161051a565b602082901c91505b61ffff82161561052d57600f1901610535565b601082901c91505b60ff821615610547576007190161054f565b600882901c91505b600f8216156105615760031901610569565b600482901c91505b600382161561057b5760011901610583565b600282901c91505b60018216156101bd576000190191905056fea264697066735822122052d27892a68eb294f29ee9384ddde308227dd3a6c7ae7ed51e5a74d633595cc264736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5CB 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 0x8815912F GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x8815912F EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0xF04BC943 EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0xF0FC9224 EQ PUSH2 0x165 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x2BDC2FD3 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x3E7BA228 EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x3FFC81EE EQ PUSH2 0xF1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x97 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x18D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SIGNEXTEND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x1C2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 SWAP4 SWAP1 SWAP4 SIGNEXTEND DUP4 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x111 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 SIGNEXTEND PUSH2 0x1DD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x143 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x1EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x111 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x111 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SIGNEXTEND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x21B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x19E DUP2 DUP6 PUSH1 0x1 DUP1 PUSH2 0x23B JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP4 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND EQ PUSH2 0x1B6 JUMPI PUSH1 0x0 PUSH2 0x1B8 JUMP JUMPDEST DUP1 JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D2 DUP2 DUP6 PUSH1 0x1 DUP7 PUSH2 0x23B JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1FC PUSH1 0x0 DUP3 PUSH1 0x1 PUSH2 0x37D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x212 PUSH1 0x0 DUP5 PUSH1 0x1 PUSH2 0x37D JUMP JUMPDEST GAS SWAP1 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x22F PUSH1 0x0 DUP6 PUSH1 0x1 DUP7 PUSH2 0x23B JUMP JUMPDEST POP POP GAS SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x24F JUMPI INVALID JUMPDEST SDIV SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x2 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0x276 JUMPI POP DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x26F JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 NOT ADD JUMPDEST DUP4 ISZERO PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 PUSH2 0x292 DUP4 PUSH2 0x3E3 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF DUP4 AND SWAP2 SWAP1 SWAP2 SHL DUP1 ADD PUSH1 0x0 NOT ADD SWAP1 DUP2 AND DUP1 ISZERO ISZERO SWAP8 POP SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 DUP6 PUSH2 0x2D7 JUMPI DUP9 DUP4 PUSH1 0xFF AND DUP7 SUB MUL PUSH2 0x2EA JUMP JUMPDEST DUP9 PUSH2 0x2E1 DUP3 PUSH2 0x3F5 JUMP JUMPDEST DUP5 SUB PUSH1 0xFF AND DUP7 SUB MUL JUMPDEST SWAP7 POP POP POP POP POP PUSH2 0x373 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x304 DUP4 PUSH1 0x1 ADD PUSH2 0x3E3 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SUB NOT SWAP1 POP PUSH1 0x0 DUP2 DUP12 PUSH1 0x0 DUP7 PUSH1 0x1 SIGNEXTEND PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 POP DUP1 PUSH1 0x0 EQ ISZERO SWAP6 POP DUP6 PUSH2 0x356 JUMPI DUP9 DUP4 PUSH1 0xFF SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL PUSH2 0x36C JUMP JUMPDEST DUP9 DUP4 PUSH2 0x361 DUP4 PUSH2 0x4A2 JUMP JUMPDEST SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL JUMPDEST SWAP7 POP POP POP POP POP JUMPDEST POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x38C JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x39A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3B5 DUP4 PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x3AF JUMPI INVALID JUMPDEST SDIV PUSH2 0x3E3 JUMP JUMPDEST PUSH1 0x1 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x40 SWAP1 SWAP7 KECCAK256 DUP1 SLOAD PUSH1 0xFF SWAP1 SWAP8 AND SWAP2 SWAP1 SWAP2 SHL SWAP1 SWAP6 XOR SWAP1 SWAP5 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH1 0x8 DUP2 SWAP1 SAR SWAP2 PUSH2 0x100 SWAP1 SWAP2 SMOD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x423 JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x43B JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x44F JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x461 JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x472 JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x482 JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x492 JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x1BD JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x4B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x7F NOT ADD PUSH2 0x4DC JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x3F NOT ADD PUSH2 0x4FD JUMP JUMPDEST PUSH1 0x40 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x512 JUMPI PUSH1 0x1F NOT ADD PUSH2 0x51A JUMP JUMPDEST PUSH1 0x20 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH2 0xFFFF DUP3 AND ISZERO PUSH2 0x52D JUMPI PUSH1 0xF NOT ADD PUSH2 0x535 JUMP JUMPDEST PUSH1 0x10 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x547 JUMPI PUSH1 0x7 NOT ADD PUSH2 0x54F JUMP JUMPDEST PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xF DUP3 AND ISZERO PUSH2 0x561 JUMPI PUSH1 0x3 NOT ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x4 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x3 DUP3 AND ISZERO PUSH2 0x57B JUMPI PUSH1 0x1 NOT ADD PUSH2 0x583 JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x1BD JUMPI PUSH1 0x0 NOT ADD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE 0xD2 PUSH25 0x92A68EB294F29EE9384DDDE308227DD3A6C7AE7ED51E5A74D6 CALLER MSIZE 0x5C 0xC2 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"108:1205:52:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80638815912f116100505780638815912f14610123578063f04bc94314610145578063f0fc92241461016557610072565b80632bdc2fd3146100775780633e7ba228146100ab5780633ffc81ee146100f1575b600080fd5b6100976004803603602081101561008d57600080fd5b503560020b61018d565b604080519115158252519081900360200190f35b6100d3600480360360408110156100c157600080fd5b50803560020b906020013515156101c2565b6040805160029390930b835290151560208301528051918290030190f35b6101116004803603602081101561010757600080fd5b503560010b6101dd565b60408051918252519081900360200190f35b6101436004803603602081101561013957600080fd5b503560020b6101ef565b005b6101116004803603602081101561015b57600080fd5b503560020b6101ff565b6101116004803603604081101561017b57600080fd5b50803560020b9060200135151561021b565b6000808061019e818560018061023b565b915091508360020b8260020b146101b65760006101b8565b805b925050505b919050565b6000806101d2818560018661023b565b915091509250929050565b60006020819052908152604090205481565b6101fc600082600161037d565b50565b6000805a9050610212600084600161037d565b5a900392915050565b6000805a905061022f60008560018661023b565b50505a90039392505050565b60008060008460020b8660020b8161024f57fe5b05905060008660020b12801561027657508460020b8660020b8161026f57fe5b0760020b15155b1561028057600019015b83156102f557600080610292836103e3565b600182810b810b600090815260208d9052604090205460ff83169190911b800160001901908116801515975092945090925090856102d757888360ff168603026102ea565b886102e1826103f5565b840360ff168603025b965050505050610373565b600080610304836001016103e3565b91509150600060018260ff166001901b031990506000818b60008660010b60010b815260200190815260200160002054169050806000141595508561035657888360ff0360ff1686600101010261036c565b8883610361836104a2565b0360ff168660010101025b9650505050505b5094509492505050565b8060020b8260020b8161038c57fe5b0760020b1561039a57600080fd5b6000806103b58360020b8560020b816103af57fe5b056103e3565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b60020b600881901d9161010090910790565b600080821161040357600080fd5b700100000000000000000000000000000000821061042357608091821c91015b68010000000000000000821061043b57604091821c91015b640100000000821061044f57602091821c91015b62010000821061046157601091821c91015b610100821061047257600891821c91015b6010821061048257600491821c91015b6004821061049257600291821c91015b600282106101bd57600101919050565b60008082116104b057600080fd5b5060ff6fffffffffffffffffffffffffffffffff8216156104d457607f19016104dc565b608082901c91505b67ffffffffffffffff8216156104f557603f19016104fd565b604082901c91505b63ffffffff82161561051257601f190161051a565b602082901c91505b61ffff82161561052d57600f1901610535565b601082901c91505b60ff821615610547576007190161054f565b600882901c91505b600f8216156105615760031901610569565b600482901c91505b600382161561057b5760011901610583565b600282901c91505b60018216156101bd576000190191905056fea264697066735822122052d27892a68eb294f29ee9384ddde308227dd3a6c7ae7ed51e5a74d633595cc264736f6c63430007060033","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 0x8815912F GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x8815912F EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0xF04BC943 EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0xF0FC9224 EQ PUSH2 0x165 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x2BDC2FD3 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x3E7BA228 EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x3FFC81EE EQ PUSH2 0xF1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x97 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x18D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SIGNEXTEND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x1C2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 SWAP4 SWAP1 SWAP4 SIGNEXTEND DUP4 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x111 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 SIGNEXTEND PUSH2 0x1DD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x143 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x1EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x111 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x111 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SIGNEXTEND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x21B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x19E DUP2 DUP6 PUSH1 0x1 DUP1 PUSH2 0x23B JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP4 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND EQ PUSH2 0x1B6 JUMPI PUSH1 0x0 PUSH2 0x1B8 JUMP JUMPDEST DUP1 JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D2 DUP2 DUP6 PUSH1 0x1 DUP7 PUSH2 0x23B JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1FC PUSH1 0x0 DUP3 PUSH1 0x1 PUSH2 0x37D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x212 PUSH1 0x0 DUP5 PUSH1 0x1 PUSH2 0x37D JUMP JUMPDEST GAS SWAP1 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x22F PUSH1 0x0 DUP6 PUSH1 0x1 DUP7 PUSH2 0x23B JUMP JUMPDEST POP POP GAS SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x24F JUMPI INVALID JUMPDEST SDIV SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x2 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0x276 JUMPI POP DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x26F JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 NOT ADD JUMPDEST DUP4 ISZERO PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 PUSH2 0x292 DUP4 PUSH2 0x3E3 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF DUP4 AND SWAP2 SWAP1 SWAP2 SHL DUP1 ADD PUSH1 0x0 NOT ADD SWAP1 DUP2 AND DUP1 ISZERO ISZERO SWAP8 POP SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 DUP6 PUSH2 0x2D7 JUMPI DUP9 DUP4 PUSH1 0xFF AND DUP7 SUB MUL PUSH2 0x2EA JUMP JUMPDEST DUP9 PUSH2 0x2E1 DUP3 PUSH2 0x3F5 JUMP JUMPDEST DUP5 SUB PUSH1 0xFF AND DUP7 SUB MUL JUMPDEST SWAP7 POP POP POP POP POP PUSH2 0x373 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x304 DUP4 PUSH1 0x1 ADD PUSH2 0x3E3 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SUB NOT SWAP1 POP PUSH1 0x0 DUP2 DUP12 PUSH1 0x0 DUP7 PUSH1 0x1 SIGNEXTEND PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 POP DUP1 PUSH1 0x0 EQ ISZERO SWAP6 POP DUP6 PUSH2 0x356 JUMPI DUP9 DUP4 PUSH1 0xFF SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL PUSH2 0x36C JUMP JUMPDEST DUP9 DUP4 PUSH2 0x361 DUP4 PUSH2 0x4A2 JUMP JUMPDEST SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL JUMPDEST SWAP7 POP POP POP POP POP JUMPDEST POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x38C JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x39A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3B5 DUP4 PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x3AF JUMPI INVALID JUMPDEST SDIV PUSH2 0x3E3 JUMP JUMPDEST PUSH1 0x1 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x40 SWAP1 SWAP7 KECCAK256 DUP1 SLOAD PUSH1 0xFF SWAP1 SWAP8 AND SWAP2 SWAP1 SWAP2 SHL SWAP1 SWAP6 XOR SWAP1 SWAP5 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH1 0x8 DUP2 SWAP1 SAR SWAP2 PUSH2 0x100 SWAP1 SWAP2 SMOD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x423 JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x43B JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x44F JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x461 JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x472 JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x482 JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x492 JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x1BD JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x4B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x7F NOT ADD PUSH2 0x4DC JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x3F NOT ADD PUSH2 0x4FD JUMP JUMPDEST PUSH1 0x40 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x512 JUMPI PUSH1 0x1F NOT ADD PUSH2 0x51A JUMP JUMPDEST PUSH1 0x20 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH2 0xFFFF DUP3 AND ISZERO PUSH2 0x52D JUMPI PUSH1 0xF NOT ADD PUSH2 0x535 JUMP JUMPDEST PUSH1 0x10 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x547 JUMPI PUSH1 0x7 NOT ADD PUSH2 0x54F JUMP JUMPDEST PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xF DUP3 AND ISZERO PUSH2 0x561 JUMPI PUSH1 0x3 NOT ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x4 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x3 DUP3 AND ISZERO PUSH2 0x57B JUMPI PUSH1 0x1 NOT ADD PUSH2 0x583 JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x1BD JUMPI PUSH1 0x0 NOT ADD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE 0xD2 PUSH25 0x92A68EB294F29EE9384DDDE308227DD3A6C7AE7ED51E5A74D6 CALLER MSIZE 0x5C 0xC2 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"108:1205:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1088:222;;;;;;;;;;;;;;;;-1:-1:-1;1088:222:52;;;;:::i;:::-;;;;;;;;;;;;;;;;;;531:228;;;;;;;;;;;;;;;;-1:-1:-1;531:228:52;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;194:39;;;;;;;;;;;;;;;;-1:-1:-1;194:39:52;;;;:::i;:::-;;;;;;;;;;;;;;;;242:82;;;;;;;;;;;;;;;;-1:-1:-1;242:82:52;;;;:::i;:::-;;332:191;;;;;;;;;;;;;;;;-1:-1:-1;332:191:52;;;;:::i;767:259::-;;;;;;;;;;;;;;;;-1:-1:-1;767:259:52;;;;;;;;;;;:::i;1088:222::-;1146:4;;;1196:54;1146:4;1236;1242:1;;1196:39;:54::i;:::-;1163:87;;;;1276:4;1268:12;;:4;:12;;;:34;;1297:5;1268:34;;;1283:11;1268:34;1261:41;;;;1088:222;;;;:::o;531:228::-;645:10;;698:53;645:10;738:4;744:1;747:3;698:39;:53::i;:::-;691:60;;;;531:228;;;;;:::o;194:39::-;;;;;;;;;;;;;;:::o;242:82::-;292:24;:6;308:4;314:1;292:15;:24::i;:::-;242:82;:::o;332:191::-;392:7;412:17;432:9;412:29;-1:-1:-1;452:24:52;:6;468:4;474:1;452:15;:24::i;:::-;506:9;494:21;;;332:191;-1:-1:-1;;332:191:52:o;767:259::-;866:7;886:17;906:9;886:29;-1:-1:-1;926:53:52;:6;966:4;972:1;975:3;926:39;:53::i;:::-;;;1009:9;997:21;;;767:259;-1:-1:-1;;;767:259:52:o;2236:1956:27:-;2425:10;2437:16;2466;2492:11;2485:18;;:4;:18;;;;;;;;2466:37;;2525:1;2518:4;:8;;;:35;;;;;2537:11;2530:18;;:4;:18;;;;;;;;:23;;;;2518:35;2514:53;;;-1:-1:-1;;2555:12:27;2514:53;2619:3;2615:1570;;;2640:13;2655:12;2671:20;2680:10;2671:8;:20::i;:::-;2810:1;2854:13;;;;;2774:12;2854:13;;;;;;;;;;;2810:11;;;;;;;2789:33;;-1:-1:-1;;2789:33:27;2854:20;;;3024:11;;;;-1:-1:-1;2639:52:27;;-1:-1:-1;2639:52:27;;-1:-1:-1;2789:33:27;3024:11;3168:172;;3329:11;3318:6;3312:13;;3299:10;:26;3298:42;3168:172;;;3267:11;3228:34;3255:6;3228:26;:34::i;:::-;3219:6;:43;3213:50;;3200:10;:63;3199:79;3168:172;3161:179;;2615:1570;;;;;;;3472:13;3487:12;3503:24;3512:10;3525:1;3512:14;3503:8;:24::i;:::-;3471:56;;;;3601:12;3634:1;3624:6;3619:11;;:1;:11;;3618:17;3616:20;3601:35;;3651:14;3684:4;3668;:13;3673:7;3668:13;;;;;;;;;;;;;;;;:20;3651:37;;3830:6;3840:1;3830:11;;3816:25;;3974:11;:199;;4162:11;4151:6;4133:15;:24;4127:31;;4110:10;4123:1;4110:14;:48;4109:64;3974:199;;;4078:11;4067:6;4029:35;4057:6;4029:27;:35::i;:::-;:44;4023:51;;4006:10;4019:1;4006:14;:68;4005:84;3974:199;3967:206;;2615:1570;;;;;2236:1956;;;;;;;;:::o;1131:357::-;1289:11;1282:18;;:4;:18;;;;;;;;:23;;;1274:32;;;;;;1352:13;1367:12;1383:28;1399:11;1392:18;;:4;:18;;;;;;;;1383:8;:28::i;:::-;1437:1;1459:13;;;;;1422:12;1459:13;;;;;;;;;;;;:21;;1437:11;;;;;;;;1459:21;;;;;;-1:-1:-1;;;;1131:357:27:o;706:163::-;814:9;;822:1;814:9;;;;857:3;850:10;;;;706:163::o;683:763:15:-;745:7;777:1;773;:5;765:14;;;;;;801:35;796:1;:40;792:105;;859:3;853:9;;;;877:8;792:105;916:19;911:1;:24;907:87;;958:2;952:8;;;;975:7;907:87;1013:11;1008:1;:16;1004:79;;1047:2;1041:8;;;;1064:7;1004:79;1102:7;1097:1;:12;1093:75;;1132:2;1126:8;;;;1149:7;1093:75;1187:5;1182:1;:10;1178:71;;1215:1;1209:7;;;;1231:6;1178:71;1268:4;1263:1;:9;1259:70;;1295:1;1289:7;;;;1311:6;1259:70;1348:3;1343:1;:8;1339:69;;1374:1;1368:7;;;;1390:6;1339:69;1427:3;1422:1;:8;1418:20;;1437:1;1432:6;683:763;;;:::o;1945:934::-;2008:7;2040:1;2036;:5;2028:14;;;;;;-1:-1:-1;2059:3:15;2081:17;2077:21;;:25;2073:108;;-1:-1:-1;;2119:8:15;2073:108;;;2166:3;2160:9;;;;;2073:108;2199:16;2195:20;;:24;2191:105;;-1:-1:-1;;2236:7:15;2191:105;;;2282:2;2276:8;;;;;2191:105;2314:16;2310:20;;:24;2306:105;;-1:-1:-1;;2351:7:15;2306:105;;;2397:2;2391:8;;;;;2306:105;2429:16;2425:20;;:24;2421:105;;-1:-1:-1;;2466:7:15;2421:105;;;2512:2;2506:8;;;;;2421:105;2544:15;2540:19;;:23;2536:102;;-1:-1:-1;;2580:6:15;2536:102;;;2625:1;2619:7;;;;;2536:102;2656:3;2652:7;;:11;2648:90;;-1:-1:-1;;2680:6:15;2648:90;;;2725:1;2719:7;;;;;2648:90;2756:3;2752:7;;:11;2748:90;;-1:-1:-1;;2780:6:15;2748:90;;;2825:1;2819:7;;;;;2748:90;2856:3;2852:7;;:11;2848:23;;-1:-1:-1;;2865:6:15;1945:934;;;:::o"},"methodIdentifiers":{"bitmap(int16)":"3ffc81ee","flipTick(int24)":"8815912f","getGasCostOfFlipTick(int24)":"f04bc943","getGasCostOfNextInitializedTickWithinOneWord(int24,bool)":"f0fc9224","isInitialized(int24)":"2bdc2fd3","nextInitializedTickWithinOneWord(int24,bool)":"3e7ba228"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int16\",\"name\":\"\",\"type\":\"int16\"}],\"name\":\"bitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"flipTick\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"getGasCostOfFlipTick\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"bool\",\"name\":\"lte\",\"type\":\"bool\"}],\"name\":\"getGasCostOfNextInitializedTickWithinOneWord\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"isInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"bool\",\"name\":\"lte\",\"type\":\"bool\"}],\"name\":\"nextInitializedTickWithinOneWord\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"next\",\"type\":\"int24\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/TickBitmapTest.sol\":\"TickBitmapTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/BitMath.sol\":{\"keccak256\":\"0x14c52bf69e189d123dc9fa84ebdca0d879cb020b7df4953678345a8e567aaf7f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aba03531acefeef92920d5208618ae8dfa9f9a918e2c5bfbf5798110ba8f60de\",\"dweb:/ipfs/QmUSm4Js5hMFvhBW4DvMhBPhhXTbwZ8ix9beZUNEppvAhv\"]},\"contracts/elixir-core/libraries/TickBitmap.sol\":{\"keccak256\":\"0x90bb71c25bffebc89c0f234a1c806f081ebb19f8ba7bc4cab693f03d4363a863\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3527c33112d6cb3f8349f0783ffcdfabb52dbfe7c2d214cba03ed25b834b0352\",\"dweb:/ipfs/QmXyJ9MrtwGEQunhyyrBnCFAEVpFqRUf8oWMfJBv3fdC3q\"]},\"contracts/elixir-core/test/TickBitmapTest.sol\":{\"keccak256\":\"0xcc6976c14c97ea9932b184c6d7c3c562ab42cd495f2457dd047ba02cd4d7691d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://81a44c685a0e6ab033e54419f447b1a6382c7244004719918f009cb1a2dc392c\",\"dweb:/ipfs/QmfMePZUgMySAHrdsP9C9DdfaR7k6opi9iXHbi1x6fDRKL\"]}},\"version\":1}"}},"contracts/elixir-core/test/TickEchidnaTest.sol":{"TickEchidnaTest":{"abi":[{"inputs":[{"internalType":"int24","name":"tickSpacing","type":"int24"}],"name":"checkTickSpacingToParametersInvariants","outputs":[],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506101e9806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063858027e514610030575b600080fd5b6100506004803603602081101561004657600080fd5b503560020b610052565b005b620d89e8600282900b131561006657600080fd5b60008160020b1361007657600080fd5b600081600281900b620d89e7198161008a57fe5b05029050600082600281900b620d89e8816100a157fe5b0502905060006100b084610140565b90508260000360020b8260020b146100c457fe5b60008260020b136100d157fe5b8360020b83830360020b816100e257fe5b0760020b156100ed57fe5b60008460020b84840360020b8161010057fe5b0560020b60010190506fffffffffffffffffffffffffffffffff801681836fffffffffffffffffffffffffffffffff1602111561013957fe5b5050505050565b60008082600281900b620d89e7198161015557fe5b05029050600083600281900b620d89e88161016c57fe5b0502905060008460020b83830360020b8161018357fe5b0560010190508062ffffff166fffffffffffffffffffffffffffffffff8016816101a957fe5b049594505050505056fea2646970667358221220f9017220343d91d87e6f305f3d9f9e85748f18cfc367f12a0e20794aa564843e64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E9 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 0x858027E5 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x50 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x52 JUMP JUMPDEST STOP JUMPDEST PUSH3 0xD89E8 PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND SGT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E7 NOT DUP2 PUSH2 0x8A JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E8 DUP2 PUSH2 0xA1 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 PUSH2 0xB0 DUP5 PUSH2 0x140 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x0 SUB PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND EQ PUSH2 0xC4 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0xD1 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x2 SIGNEXTEND DUP4 DUP4 SUB PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0xE2 JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0xED JUMPI INVALID JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP5 DUP5 SUB PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x100 JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND PUSH1 0x1 ADD SWAP1 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 AND DUP2 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL GT ISZERO PUSH2 0x139 JUMPI INVALID JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E7 NOT DUP2 PUSH2 0x155 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E8 DUP2 PUSH2 0x16C JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP4 DUP4 SUB PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x183 JUMPI INVALID JUMPDEST SDIV PUSH1 0x1 ADD SWAP1 POP DUP1 PUSH3 0xFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 AND DUP2 PUSH2 0x1A9 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 ADD PUSH19 0x20343D91D87E6F305F3D9F9E85748F18CFC367 CALL 0x2A 0xE KECCAK256 PUSH26 0x4AA564843E64736F6C6343000706003300000000000000000000 ","sourceMap":"102:889:53:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061002b5760003560e01c8063858027e514610030575b600080fd5b6100506004803603602081101561004657600080fd5b503560020b610052565b005b620d89e8600282900b131561006657600080fd5b60008160020b1361007657600080fd5b600081600281900b620d89e7198161008a57fe5b05029050600082600281900b620d89e8816100a157fe5b0502905060006100b084610140565b90508260000360020b8260020b146100c457fe5b60008260020b136100d157fe5b8360020b83830360020b816100e257fe5b0760020b156100ed57fe5b60008460020b84840360020b8161010057fe5b0560020b60010190506fffffffffffffffffffffffffffffffff801681836fffffffffffffffffffffffffffffffff1602111561013957fe5b5050505050565b60008082600281900b620d89e7198161015557fe5b05029050600083600281900b620d89e88161016c57fe5b0502905060008460020b83830360020b8161018357fe5b0560010190508062ffffff166fffffffffffffffffffffffffffffffff8016816101a957fe5b049594505050505056fea2646970667358221220f9017220343d91d87e6f305f3d9f9e85748f18cfc367f12a0e20794aa564843e64736f6c63430007060033","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 0x858027E5 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x50 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x52 JUMP JUMPDEST STOP JUMPDEST PUSH3 0xD89E8 PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND SGT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E7 NOT DUP2 PUSH2 0x8A JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E8 DUP2 PUSH2 0xA1 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 PUSH2 0xB0 DUP5 PUSH2 0x140 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x0 SUB PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND EQ PUSH2 0xC4 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0xD1 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x2 SIGNEXTEND DUP4 DUP4 SUB PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0xE2 JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0xED JUMPI INVALID JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP5 DUP5 SUB PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x100 JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND PUSH1 0x1 ADD SWAP1 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 AND DUP2 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL GT ISZERO PUSH2 0x139 JUMPI INVALID JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E7 NOT DUP2 PUSH2 0x155 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E8 DUP2 PUSH2 0x16C JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP4 DUP4 SUB PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x183 JUMPI INVALID JUMPDEST SDIV PUSH1 0x1 ADD SWAP1 POP DUP1 PUSH3 0xFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 AND DUP2 PUSH2 0x1A9 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 ADD PUSH19 0x20343D91D87E6F305F3D9F9E85748F18CFC367 CALL 0x2A 0xE KECCAK256 PUSH26 0x4AA564843E64736F6C6343000706003300000000000000000000 ","sourceMap":"102:889:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;134:854;;;;;;;;;;;;;;;;-1:-1:-1;134:854:53;;;;:::i;:::-;;;654:9:28;234:32:53;;;;;;226:41;;;;;;300:1;286:11;:15;;;278:24;;;;;;315:13;367:11;332:31;;;;-1:-1:-1;;332:31:53;;;;;;331:47;;-1:-1:-1;389:13:53;441:11;406:31;;;;654:9:28;406:31:53;;;;;;405:47;389:63;;465:27;495:50;533:11;495:37;:50::i;:::-;465:80;;612:7;611:8;;600:19;;:7;:19;;;593:27;;;;678:1;668:7;:11;;;661:19;;;;745:11;723:33;;734:7;724;:17;723:33;;;;;;;;:38;;;716:46;;;;775:16;824:11;802:33;;813:7;803;:17;802:33;;;;;;;;794:42;;839:1;794:46;775:65;;962:17;919:60;;950:8;927:19;919:28;;:39;:60;;912:68;;;;134:854;;;;;:::o;2461:369:26:-;2545:7;;2617:11;2582:31;;;;-1:-1:-1;;2582:31:26;;;;;;2581:47;;-1:-1:-1;2639:13:26;2691:11;2656:31;;;;654:9:28;2656:31:26;;;;;;2655:47;2639:63;;2713:15;2760:11;2738:33;;2749:7;2739;:17;2738:33;;;;;;;;2775:1;2731:45;2713:63;;2814:8;2794:28;;:17;:28;;;;;;;;;2461:369;-1:-1:-1;;;;;2461:369:26:o"},"methodIdentifiers":{"checkTickSpacingToParametersInvariants(int24)":"858027e5"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"checkTickSpacingToParametersInvariants\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/TickEchidnaTest.sol\":\"TickEchidnaTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x3ec938fd1b7cc8751df9e2ed90fd0abf32ffacc42cf4b6edbf7138629d747944\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a741475c8a3b5ae8eac7d328170c5a6811920dac22d3800197e39abe0ba42e01\",\"dweb:/ipfs/Qmc2fs5kxp437hWxtLZ6CB8g7vt3bkwKLxE7MMo9D5TAF9\"]},\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]},\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]},\"contracts/elixir-core/libraries/Tick.sol\":{\"keccak256\":\"0x20ddf3dd595491c899fde27706d0cd1d10ba2785589bd5e3d5f0830062254c3b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8d706f8b5bf653ac9cd4b5bbdfd6867eb072821b920141a283466c67f0fdf26\",\"dweb:/ipfs/QmfBZFTVNZhN4tNssH9en4Qz93tWovTijou5i6N8k9kZJM\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-core/test/TickEchidnaTest.sol\":{\"keccak256\":\"0x6653c1f3d09929b14ee1c468a8fd9b16ee6193bac5dbc535370af98c1077e110\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://88a33ff1e8bc95a3cb25329c6dc312918c0c5712d9a65386e30e4bfad4a67865\",\"dweb:/ipfs/QmUr5t3VTydTjKqxAbCg4AmcS69mBUsbgEACpswRWtKzkr\"]}},\"version\":1}"}},"contracts/elixir-core/test/TickMathEchidnaTest.sol":{"TickMathEchidnaTest":{"abi":[{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"name":"checkGetSqrtRatioAtTickInvariants","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"ratio","type":"uint160"}],"name":"checkGetTickAtSqrtRatioInvariants","outputs":[],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610846806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806347d38f4d1461003b578063df01e52d1461005d575b600080fd5b61005b6004803603602081101561005157600080fd5b503560020b610083565b005b61005b6004803603602081101561007357600080fd5b50356001600160a01b0316610121565b600061008e8261019c565b9050806001600160a01b03166100a66001840361019c565b6001600160a01b03161080156100d857506100c38260010161019c565b6001600160a01b0316816001600160a01b0316105b6100de57fe5b6401000276a36001600160a01b03821610156100f657fe5b73fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038216111561011d57fe5b5050565b600061012c826104db565b90506101378161019c565b6001600160a01b0316826001600160a01b031610158015610174575061015f8160010161019c565b6001600160a01b0316826001600160a01b0316105b61017a57fe5b620d89e719600282900b121561018c57fe5b620d89e8600282900b1261011d57fe5b60008060008360020b126101b3578260020b6101bb565b8260020b6000035b9050620d89e88111156101f9576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b60006001821661021a5770010000000000000000000000000000000061022c565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610260576ffff97272373d413259a46990580e213a0260801c5b600482161561027f576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561029e576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156102bd576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156102dc576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156102fb576fff2ea16466c96a3843ec78b326b528610260801c5b608082161561031a576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561033a576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561035a576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561037a576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161561039a576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156103ba576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156103da576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156103fa576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561041a576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561043b576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561045b576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561047a576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615610497576b048a170391f7dc42444e8fa20260801c5b60008460020b13156104b25780600019816104ae57fe5b0490505b6401000000008106156104c65760016104c9565b60005b60ff16602082901c0192505050919050565b60006401000276a36001600160a01b03831610801590610517575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b61054c576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166fffffffffffffffffffffffffffffffff811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106105f657607f810383901c9150610600565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1461080157886001600160a01b03166107e58261019c565b6001600160a01b031611156107fa57816107fc565b805b610803565b815b999850505050505050505056fea26469706673582212202d7e0dccac88a0a57a22b0adfcd269be8b5a86a51a829b1584ad25a8aa2dc6c764736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x846 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 0x47D38F4D EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xDF01E52D EQ PUSH2 0x5D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x83 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x121 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8E DUP3 PUSH2 0x19C JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA6 PUSH1 0x1 DUP5 SUB PUSH2 0x19C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP1 ISZERO PUSH2 0xD8 JUMPI POP PUSH2 0xC3 DUP3 PUSH1 0x1 ADD PUSH2 0x19C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT JUMPDEST PUSH2 0xDE JUMPI INVALID JUMPDEST PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND LT ISZERO PUSH2 0xF6 JUMPI INVALID JUMPDEST PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND GT ISZERO PUSH2 0x11D JUMPI INVALID JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12C DUP3 PUSH2 0x4DB JUMP JUMPDEST SWAP1 POP PUSH2 0x137 DUP2 PUSH2 0x19C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO DUP1 ISZERO PUSH2 0x174 JUMPI POP PUSH2 0x15F DUP2 PUSH1 0x1 ADD PUSH2 0x19C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT JUMPDEST PUSH2 0x17A JUMPI INVALID JUMPDEST PUSH3 0xD89E7 NOT PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND SLT ISZERO PUSH2 0x18C JUMPI INVALID JUMPDEST PUSH3 0xD89E8 PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND SLT PUSH2 0x11D JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x1B3 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x1BB JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x1F9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x21A JUMPI PUSH17 0x100000000000000000000000000000000 PUSH2 0x22C JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x260 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x27F JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x29E JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x2BD JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x2DC JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x2FB JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x31A JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x33A JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x35A JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x37A JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x39A JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x3BA JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x3DA JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x3FA JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x41A JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x43B JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x45B JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x47A JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x497 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x4B2 JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x4AE JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x1 PUSH2 0x4C9 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 PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x517 JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT JUMPDEST PUSH2 0x54C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x20 DUP4 SWAP1 SHL AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x7 SHL DUP2 DUP2 SHR PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x6 SHL SWAP1 DUP2 SHR PUSH4 0xFFFFFFFF DUP2 GT PUSH1 0x5 SHL SWAP1 DUP2 SHR PUSH2 0xFFFF DUP2 GT PUSH1 0x4 SHL SWAP1 DUP2 SHR PUSH1 0xFF DUP2 GT PUSH1 0x3 SWAP1 DUP2 SHL SWAP2 DUP3 SHR PUSH1 0xF DUP2 GT PUSH1 0x2 SHL SWAP1 DUP2 SHR SWAP2 DUP3 GT PUSH1 0x1 SWAP1 DUP2 SHL SWAP3 DUP4 SHR SWAP8 SWAP1 DUP9 GT SWAP7 OR SWAP1 SWAP5 OR SWAP1 SWAP3 OR OR SWAP1 SWAP2 OR OR OR PUSH1 0x80 DUP2 LT PUSH2 0x5F6 JUMPI PUSH1 0x7F DUP2 SUB DUP4 SWAP1 SHR SWAP2 POP PUSH2 0x600 JUMP JUMPDEST DUP1 PUSH1 0x7F SUB DUP4 SWAP1 SHL SWAP2 POP JUMPDEST SWAP1 DUP1 MUL PUSH1 0x7F DUP2 DUP2 SHR PUSH1 0xFF DUP4 DUP2 SHR SWAP2 SWAP1 SWAP2 SHR DUP1 MUL DUP1 DUP4 SHR DUP2 DUP4 SHR SHR DUP1 MUL DUP1 DUP5 SHR DUP2 DUP5 SHR SHR DUP1 MUL DUP1 DUP6 SHR DUP2 DUP6 SHR SHR DUP1 MUL DUP1 DUP7 SHR DUP2 DUP7 SHR SHR DUP1 MUL DUP1 DUP8 SHR DUP2 DUP8 SHR SHR DUP1 MUL DUP1 DUP9 SHR DUP2 DUP9 SHR SHR DUP1 MUL DUP1 DUP10 SHR DUP2 DUP10 SHR SHR DUP1 MUL DUP1 DUP11 SHR DUP2 DUP11 SHR SHR DUP1 MUL DUP1 DUP12 SHR DUP2 DUP12 SHR SHR DUP1 MUL DUP1 DUP13 SHR DUP2 DUP13 SHR SHR DUP1 MUL DUP1 DUP14 SHR DUP2 DUP14 SHR SHR DUP1 MUL DUP1 DUP15 SHR SWAP13 DUP2 SWAP1 SHR SWAP13 SWAP1 SWAP13 SHR DUP1 MUL SWAP13 DUP14 SWAP1 SHR SWAP15 SWAP14 PUSH1 0x7F NOT DUP16 ADD PUSH1 0x40 SHL PUSH1 0xC0 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x8000000000000000 AND OR PUSH1 0xC1 SWAP12 SWAP1 SWAP12 SHR PUSH8 0x4000000000000000 AND SWAP11 SWAP1 SWAP11 OR PUSH1 0xC2 SWAP10 SWAP1 SWAP10 SHR PUSH8 0x2000000000000000 AND SWAP9 SWAP1 SWAP9 OR PUSH1 0xC3 SWAP8 SWAP1 SWAP8 SHR PUSH8 0x1000000000000000 AND SWAP7 SWAP1 SWAP7 OR PUSH1 0xC4 SWAP6 SWAP1 SWAP6 SHR PUSH8 0x800000000000000 AND SWAP5 SWAP1 SWAP5 OR PUSH1 0xC5 SWAP4 SWAP1 SWAP4 SHR PUSH8 0x400000000000000 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0xC6 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x200000000000000 AND OR PUSH1 0xC7 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x100000000000000 AND OR PUSH1 0xC8 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x80000000000000 AND OR PUSH1 0xC9 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x40000000000000 AND OR PUSH1 0xCA SWAP2 SWAP1 SWAP2 SHR PUSH7 0x20000000000000 AND OR PUSH1 0xCB SWAP2 SWAP1 SWAP2 SHR PUSH7 0x10000000000000 AND OR PUSH1 0xCC SWAP2 SWAP1 SWAP2 SHR PUSH7 0x8000000000000 AND OR PUSH1 0xCD SWAP2 SWAP1 SWAP2 SHR PUSH7 0x4000000000000 AND OR PUSH10 0x3627A301D71055774C85 DUP2 MUL PUSH16 0x28F6481AB7F045A5AF012A19D003AA9 NOT DUP2 ADD PUSH1 0x80 SWAP1 DUP2 SAR SWAP1 PUSH16 0xDB2DF09E81959A81455E260799A0632F DUP4 ADD SWAP1 SAR PUSH1 0x2 DUP2 DUP2 SIGNEXTEND SWAP1 DUP4 SWAP1 SIGNEXTEND EQ PUSH2 0x801 JUMPI DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7E5 DUP3 PUSH2 0x19C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x7FA JUMPI DUP2 PUSH2 0x7FC JUMP JUMPDEST DUP1 JUMPDEST PUSH2 0x803 JUMP JUMPDEST DUP2 JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D PUSH31 0xDCCAC88A0A57A22B0ADFCD269BE8B5A86A51A829B1584AD25A8AA2DC6C764 PUSH20 0x6F6C634300070600330000000000000000000000 ","sourceMap":"106:852:54:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c806347d38f4d1461003b578063df01e52d1461005d575b600080fd5b61005b6004803603602081101561005157600080fd5b503560020b610083565b005b61005b6004803603602081101561007357600080fd5b50356001600160a01b0316610121565b600061008e8261019c565b9050806001600160a01b03166100a66001840361019c565b6001600160a01b03161080156100d857506100c38260010161019c565b6001600160a01b0316816001600160a01b0316105b6100de57fe5b6401000276a36001600160a01b03821610156100f657fe5b73fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038216111561011d57fe5b5050565b600061012c826104db565b90506101378161019c565b6001600160a01b0316826001600160a01b031610158015610174575061015f8160010161019c565b6001600160a01b0316826001600160a01b0316105b61017a57fe5b620d89e719600282900b121561018c57fe5b620d89e8600282900b1261011d57fe5b60008060008360020b126101b3578260020b6101bb565b8260020b6000035b9050620d89e88111156101f9576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b60006001821661021a5770010000000000000000000000000000000061022c565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610260576ffff97272373d413259a46990580e213a0260801c5b600482161561027f576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561029e576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156102bd576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156102dc576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156102fb576fff2ea16466c96a3843ec78b326b528610260801c5b608082161561031a576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561033a576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561035a576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561037a576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161561039a576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156103ba576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156103da576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156103fa576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561041a576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561043b576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561045b576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561047a576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615610497576b048a170391f7dc42444e8fa20260801c5b60008460020b13156104b25780600019816104ae57fe5b0490505b6401000000008106156104c65760016104c9565b60005b60ff16602082901c0192505050919050565b60006401000276a36001600160a01b03831610801590610517575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b61054c576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166fffffffffffffffffffffffffffffffff811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106105f657607f810383901c9150610600565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1461080157886001600160a01b03166107e58261019c565b6001600160a01b031611156107fa57816107fc565b805b610803565b815b999850505050505050505056fea26469706673582212202d7e0dccac88a0a57a22b0adfcd269be8b5a86a51a829b1584ad25a8aa2dc6c764736f6c63430007060033","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 0x47D38F4D EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xDF01E52D EQ PUSH2 0x5D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x83 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x121 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8E DUP3 PUSH2 0x19C JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA6 PUSH1 0x1 DUP5 SUB PUSH2 0x19C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP1 ISZERO PUSH2 0xD8 JUMPI POP PUSH2 0xC3 DUP3 PUSH1 0x1 ADD PUSH2 0x19C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT JUMPDEST PUSH2 0xDE JUMPI INVALID JUMPDEST PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND LT ISZERO PUSH2 0xF6 JUMPI INVALID JUMPDEST PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND GT ISZERO PUSH2 0x11D JUMPI INVALID JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12C DUP3 PUSH2 0x4DB JUMP JUMPDEST SWAP1 POP PUSH2 0x137 DUP2 PUSH2 0x19C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO DUP1 ISZERO PUSH2 0x174 JUMPI POP PUSH2 0x15F DUP2 PUSH1 0x1 ADD PUSH2 0x19C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT JUMPDEST PUSH2 0x17A JUMPI INVALID JUMPDEST PUSH3 0xD89E7 NOT PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND SLT ISZERO PUSH2 0x18C JUMPI INVALID JUMPDEST PUSH3 0xD89E8 PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND SLT PUSH2 0x11D JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x1B3 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x1BB JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x1F9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x21A JUMPI PUSH17 0x100000000000000000000000000000000 PUSH2 0x22C JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x260 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x27F JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x29E JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x2BD JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x2DC JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x2FB JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x31A JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x33A JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x35A JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x37A JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x39A JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x3BA JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x3DA JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x3FA JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x41A JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x43B JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x45B JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x47A JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x497 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x4B2 JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x4AE JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x1 PUSH2 0x4C9 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 PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x517 JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT JUMPDEST PUSH2 0x54C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x20 DUP4 SWAP1 SHL AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x7 SHL DUP2 DUP2 SHR PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x6 SHL SWAP1 DUP2 SHR PUSH4 0xFFFFFFFF DUP2 GT PUSH1 0x5 SHL SWAP1 DUP2 SHR PUSH2 0xFFFF DUP2 GT PUSH1 0x4 SHL SWAP1 DUP2 SHR PUSH1 0xFF DUP2 GT PUSH1 0x3 SWAP1 DUP2 SHL SWAP2 DUP3 SHR PUSH1 0xF DUP2 GT PUSH1 0x2 SHL SWAP1 DUP2 SHR SWAP2 DUP3 GT PUSH1 0x1 SWAP1 DUP2 SHL SWAP3 DUP4 SHR SWAP8 SWAP1 DUP9 GT SWAP7 OR SWAP1 SWAP5 OR SWAP1 SWAP3 OR OR SWAP1 SWAP2 OR OR OR PUSH1 0x80 DUP2 LT PUSH2 0x5F6 JUMPI PUSH1 0x7F DUP2 SUB DUP4 SWAP1 SHR SWAP2 POP PUSH2 0x600 JUMP JUMPDEST DUP1 PUSH1 0x7F SUB DUP4 SWAP1 SHL SWAP2 POP JUMPDEST SWAP1 DUP1 MUL PUSH1 0x7F DUP2 DUP2 SHR PUSH1 0xFF DUP4 DUP2 SHR SWAP2 SWAP1 SWAP2 SHR DUP1 MUL DUP1 DUP4 SHR DUP2 DUP4 SHR SHR DUP1 MUL DUP1 DUP5 SHR DUP2 DUP5 SHR SHR DUP1 MUL DUP1 DUP6 SHR DUP2 DUP6 SHR SHR DUP1 MUL DUP1 DUP7 SHR DUP2 DUP7 SHR SHR DUP1 MUL DUP1 DUP8 SHR DUP2 DUP8 SHR SHR DUP1 MUL DUP1 DUP9 SHR DUP2 DUP9 SHR SHR DUP1 MUL DUP1 DUP10 SHR DUP2 DUP10 SHR SHR DUP1 MUL DUP1 DUP11 SHR DUP2 DUP11 SHR SHR DUP1 MUL DUP1 DUP12 SHR DUP2 DUP12 SHR SHR DUP1 MUL DUP1 DUP13 SHR DUP2 DUP13 SHR SHR DUP1 MUL DUP1 DUP14 SHR DUP2 DUP14 SHR SHR DUP1 MUL DUP1 DUP15 SHR SWAP13 DUP2 SWAP1 SHR SWAP13 SWAP1 SWAP13 SHR DUP1 MUL SWAP13 DUP14 SWAP1 SHR SWAP15 SWAP14 PUSH1 0x7F NOT DUP16 ADD PUSH1 0x40 SHL PUSH1 0xC0 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x8000000000000000 AND OR PUSH1 0xC1 SWAP12 SWAP1 SWAP12 SHR PUSH8 0x4000000000000000 AND SWAP11 SWAP1 SWAP11 OR PUSH1 0xC2 SWAP10 SWAP1 SWAP10 SHR PUSH8 0x2000000000000000 AND SWAP9 SWAP1 SWAP9 OR PUSH1 0xC3 SWAP8 SWAP1 SWAP8 SHR PUSH8 0x1000000000000000 AND SWAP7 SWAP1 SWAP7 OR PUSH1 0xC4 SWAP6 SWAP1 SWAP6 SHR PUSH8 0x800000000000000 AND SWAP5 SWAP1 SWAP5 OR PUSH1 0xC5 SWAP4 SWAP1 SWAP4 SHR PUSH8 0x400000000000000 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0xC6 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x200000000000000 AND OR PUSH1 0xC7 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x100000000000000 AND OR PUSH1 0xC8 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x80000000000000 AND OR PUSH1 0xC9 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x40000000000000 AND OR PUSH1 0xCA SWAP2 SWAP1 SWAP2 SHR PUSH7 0x20000000000000 AND OR PUSH1 0xCB SWAP2 SWAP1 SWAP2 SHR PUSH7 0x10000000000000 AND OR PUSH1 0xCC SWAP2 SWAP1 SWAP2 SHR PUSH7 0x8000000000000 AND OR PUSH1 0xCD SWAP2 SWAP1 SWAP2 SHR PUSH7 0x4000000000000 AND OR PUSH10 0x3627A301D71055774C85 DUP2 MUL PUSH16 0x28F6481AB7F045A5AF012A19D003AA9 NOT DUP2 ADD PUSH1 0x80 SWAP1 DUP2 SAR SWAP1 PUSH16 0xDB2DF09E81959A81455E260799A0632F DUP4 ADD SWAP1 SAR PUSH1 0x2 DUP2 DUP2 SIGNEXTEND SWAP1 DUP4 SWAP1 SIGNEXTEND EQ PUSH2 0x801 JUMPI DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7E5 DUP3 PUSH2 0x19C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x7FA JUMPI DUP2 PUSH2 0x7FC JUMP JUMPDEST DUP1 JUMPDEST PUSH2 0x803 JUMP JUMPDEST DUP2 JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D PUSH31 0xDCCAC88A0A57A22B0ADFCD269BE8B5A86A51A829B1584AD25A8AA2DC6C764 PUSH20 0x6F6C634300070600330000000000000000000000 ","sourceMap":"106:852:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;182:352;;;;;;;;;;;;;;;;-1:-1:-1;182:352:54;;;;:::i;:::-;;620:335;;;;;;;;;;;;;;;;-1:-1:-1;620:335:54;-1:-1:-1;;;;;620:335:54;;:::i;182:352::-;262:13;278:33;306:4;278:27;:33::i;:::-;262:49;;369:5;-1:-1:-1;;;;;329:45:54;:37;364:1;357:4;:8;329:27;:37::i;:::-;-1:-1:-1;;;;;329:45:54;;:94;;;;;386:37;414:4;421:1;414:8;386:27;:37::i;:::-;-1:-1:-1;;;;;378:45:54;:5;-1:-1:-1;;;;;378:45:54;;329:94;322:102;;;;837:10:28;-1:-1:-1;;;;;442:32:54;;;;435:40;;;;1019:49:28;-1:-1:-1;;;;;493:32:54;;;;486:40;;;;182:352;;:::o;620:335::-;703:10;716:34;744:5;716:27;:34::i;:::-;703:47;;777:33;805:4;777:27;:33::i;:::-;-1:-1:-1;;;;;768:42:54;:5;-1:-1:-1;;;;;768:42:54;;;:91;;;;;822:37;850:4;857:1;850:8;822:27;:37::i;:::-;-1:-1:-1;;;;;814:45:54;:5;-1:-1:-1;;;;;814:45:54;;768:91;761:99;;;;-1:-1:-1;;878:25:54;;;;;;871:33;;;;654:9:28;922:24:54;;;;;915:32;;;1384:2611:28;1447:20;1480:15;1505:1;1498:4;:8;;;:57;;1549:4;1542:12;;1498:57;;;1525:4;1518:12;;1517:13;;1498:57;1480:75;-1:-1:-1;654:9:28;1574:28;;;1566:42;;;;;-1:-1:-1;;;1566:42:28;;;;;;;;;;;;-1:-1:-1;;;1566:42:28;;;;;;;;;;;;;;;1621:13;1647:3;1637:13;;:93;;1695:35;1637:93;;;1658:34;1637:93;1621:109;;;-1:-1:-1;1755:3:28;1745:13;;:18;1741:83;;1782:34;1774:42;1821:3;1773:51;1741:83;1849:3;1839:13;;:18;1835:83;;1876:34;1868:42;1915:3;1867:51;1835:83;1943:3;1933:13;;:18;1929:83;;1970:34;1962:42;2009:3;1961:51;1929:83;2037:4;2027:14;;:19;2023:84;;2065:34;2057:42;2104:3;2056:51;2023:84;2132:4;2122:14;;:19;2118:84;;2160:34;2152:42;2199:3;2151:51;2118:84;2227:4;2217:14;;:19;2213:84;;2255:34;2247:42;2294:3;2246:51;2213:84;2322:4;2312:14;;:19;2308:84;;2350:34;2342:42;2389:3;2341:51;2308:84;2417:5;2407:15;;:20;2403:85;;2446:34;2438:42;2485:3;2437:51;2403:85;2513:5;2503:15;;:20;2499:85;;2542:34;2534:42;2581:3;2533:51;2499:85;2609:5;2599:15;;:20;2595:85;;2638:34;2630:42;2677:3;2629:51;2595:85;2705:5;2695:15;;:20;2691:85;;2734:34;2726:42;2773:3;2725:51;2691:85;2801:6;2791:16;;:21;2787:86;;2831:34;2823:42;2870:3;2822:51;2787:86;2898:6;2888:16;;:21;2884:86;;2928:34;2920:42;2967:3;2919:51;2884:86;2995:6;2985:16;;:21;2981:86;;3025:34;3017:42;3064:3;3016:51;2981:86;3092:6;3082:16;;:21;3078:86;;3122:34;3114:42;3161:3;3113:51;3078:86;3189:7;3179:17;;:22;3175:86;;3220:33;3212:41;3258:3;3211:50;3175:86;3286:7;3276:17;;:22;3272:85;;3317:32;3309:40;3354:3;3308:49;3272:85;3382:7;3372:17;;:22;3368:83;;3413:30;3405:38;3448:3;3404:47;3368:83;3476:7;3466:17;;:22;3462:78;;3507:25;3499:33;3537:3;3498:42;3462:78;3564:1;3557:4;:8;;;3553:47;;;3595:5;-1:-1:-1;;3575:25:28;;;;;;3567:33;;3553:47;3964:7;3955:5;:17;:22;:30;;3984:1;3955:30;;;3980:1;3955:30;3938:48;;3948:2;3939:5;:11;;3938:48;3915:72;;1384:2611;;;;;:::o;4421:4424::-;4494:10;837;-1:-1:-1;;;;;4625:30:28;;;;;;:63;;-1:-1:-1;1019:49:28;-1:-1:-1;;;;;4659:29:28;;;4625:63;4617:77;;;;;-1:-1:-1;;;4617:77:28;;;;;;;;;;;;-1:-1:-1;;;4617:77:28;;;;;;;;;;;;;;;4721:27;4746:2;4721:27;;;;4863:34;4857:41;;4854:1;4850:49;4949:9;;;5025:18;5019:25;;5016:1;5012:33;5095:9;;;5171:10;5165:17;;5162:1;5158:25;5233:9;;;5309:6;5303:13;;5300:1;5296:21;5367:9;;;5443:4;5437:11;;5434:1;5430:19;;;5499:9;;;5575:3;5569:10;;5566:1;5562:18;5630:9;;;5700:10;;;5697:1;5693:18;;;5761:9;;;;5824:10;;;5066;;5204;;;5338;;;5470;5601;;;5732;5855;5899:3;5892:10;;5888:80;;5924:3;5918;:9;5908:5;:20;;5904:24;;5888:80;;;5964:3;5958;:9;5948:5;:20;;5944:24;;5888:80;6072:9;;;6067:3;6063:19;;;6105:11;;;;6179:9;;;;6247;;6238:19;;;6280:11;;;6354:9;6422;;6413:19;;;6455:11;;;6529:9;6597;;6588:19;;;6630:11;;;6704:9;6772;;6763:19;;;6805:11;;;6879:9;6947;;6938:19;;;6980:11;;;7054:9;7122;;7113:19;;;7155:11;;;7229:9;7297;;7288:19;;;7330:11;;;7404:9;7472;;7463:19;;;7505:11;;;7579:9;7647;;7638:19;;;7680:11;;;7754:9;7822;;7813:19;;;7855:11;;;7929:9;7997;;7988:19;;;8030:11;;;8104:9;8172;;8163:19;;;8205:11;;;;8279:9;;;;8347;;8338:19;;;;;6072:9;-1:-1:-1;;5997:17:28;;6019:2;5996:25;6149:10;;;;;;;6139:21;6324:10;;;;;;;6314:21;;;;6499:10;;;;;;;6489:21;;;;6674:10;;;;;;;6664:21;;;;6849:10;;;;;;;6839:21;;;;7024:10;;;;;;;7014:21;;;;7199:10;;;;;;;7189:21;7374:10;;;;;;;7364:21;7549:10;;;;;;;7539:21;7724:10;;;;;;;7714:21;7899:10;;;;;;;7889:21;8074:10;;;;;;;8064:21;8249:10;;;;;;;8239:21;8424:10;;;;;;;8414:21;8489:24;8481:32;;-1:-1:-1;;8567:53:28;;6011:3;8566:62;;;;8678:39;8662:55;;8661:64;;8746:17;;;;;;;;;:91;;8806:12;-1:-1:-1;;;;;8776:42:28;:26;8795:6;8776:18;:26::i;:::-;-1:-1:-1;;;;;8776:42:28;;;:61;;8830:7;8776:61;;;8821:6;8776:61;8746:91;;;8766:7;8746:91;8739:98;4421:4424;-1:-1:-1;;;;;;;;;4421:4424:28:o"},"methodIdentifiers":{"checkGetSqrtRatioAtTickInvariants(int24)":"47d38f4d","checkGetTickAtSqrtRatioInvariants(uint160)":"df01e52d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"checkGetSqrtRatioAtTickInvariants\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"ratio\",\"type\":\"uint160\"}],\"name\":\"checkGetTickAtSqrtRatioInvariants\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/TickMathEchidnaTest.sol\":\"TickMathEchidnaTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-core/test/TickMathEchidnaTest.sol\":{\"keccak256\":\"0x1484c131ad92c0543b8dace85d7c54cd7060f061a482b99c83e449686c2af3d2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9e3bf3a9200532430a8a393bb678438b1c19e7c7ff009f0cf28be5f75699fcad\",\"dweb:/ipfs/QmdcVyv1kWiTybKbWQkP4joUZ1AV4xcyMm1P1PxveR2RUk\"]}},\"version\":1}"}},"contracts/elixir-core/test/TickMathTest.sol":{"TickMathTest":{"abi":[{"inputs":[],"name":"MAX_SQRT_RATIO","outputs":[{"internalType":"uint160","name":"","type":"uint160"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"MIN_SQRT_RATIO","outputs":[{"internalType":"uint160","name":"","type":"uint160"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"name":"getGasCostOfGetSqrtRatioAtTick","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"getGasCostOfGetTickAtSqrtRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"name":"getSqrtRatioAtTick","outputs":[{"internalType":"uint160","name":"","type":"uint160"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"getTickAtSqrtRatio","outputs":[{"internalType":"int24","name":"","type":"int24"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610867806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063a7398eb411610050578063a7398eb4146100f8578063b0622f671461012a578063ee8847ff1461015057610072565b80634f76c058146100775780636d2cc304146100b4578063986cfba3146100d8575b600080fd5b61009d6004803603602081101561008d57600080fd5b50356001600160a01b0316610158565b6040805160029290920b8252519081900360200190f35b6100bc610169565b604080516001600160a01b039092168252519081900360200190f35b6100bc600480360360208110156100ee57600080fd5b503560020b610181565b6101186004803603602081101561010e57600080fd5b503560020b61018c565b60408051918252519081900360200190f35b6101186004803603602081101561014057600080fd5b50356001600160a01b03166101a5565b6100bc6101b4565b6000610163826101bd565b92915050565b73fffd8963efd1fc6a506488495d951d5263988d2690565b6000610163826104f2565b6000805a905061019b836104f2565b505a900392915050565b6000805a905061019b836101bd565b6401000276a390565b60006401000276a36001600160a01b038316108015906101f9575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b61022e576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166fffffffffffffffffffffffffffffffff811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106102d857607f810383901c91506102e2565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146104e357886001600160a01b03166104c7826104f2565b6001600160a01b031611156104dc57816104de565b805b6104e5565b815b9998505050505050505050565b60008060008360020b12610509578260020b610511565b8260020b6000035b9050620d89e881111561054f576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b60006001821661057057700100000000000000000000000000000000610582565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156105b6576ffff97272373d413259a46990580e213a0260801c5b60048216156105d5576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156105f4576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615610613576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615610632576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615610651576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615610670576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615610690576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156106b0576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156106d0576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156106f0576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615610710576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615610730576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615610750576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615610770576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615610791576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156107b1576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156107d0576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156107ed576b048a170391f7dc42444e8fa20260801c5b60008460020b131561080857806000198161080457fe5b0490505b64010000000081061561081c57600161081f565b60005b60ff16602082901c019250505091905056fea26469706673582212206b26f506655f19f50f17e0164d1e14af11c0adaabf986e709cb8f760bae2819e64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x867 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 0xA7398EB4 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xA7398EB4 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0xB0622F67 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xEE8847FF EQ PUSH2 0x150 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x4F76C058 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x6D2CC304 EQ PUSH2 0xB4 JUMPI DUP1 PUSH4 0x986CFBA3 EQ PUSH2 0xD8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x158 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xBC PUSH2 0x169 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xBC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x181 JUMP JUMPDEST PUSH2 0x118 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x18C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x118 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A5 JUMP JUMPDEST PUSH2 0xBC PUSH2 0x1B4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163 DUP3 PUSH2 0x1BD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163 DUP3 PUSH2 0x4F2 JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x19B DUP4 PUSH2 0x4F2 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x19B DUP4 PUSH2 0x1BD JUMP JUMPDEST PUSH5 0x1000276A3 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x1F9 JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT JUMPDEST PUSH2 0x22E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x20 DUP4 SWAP1 SHL AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x7 SHL DUP2 DUP2 SHR PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x6 SHL SWAP1 DUP2 SHR PUSH4 0xFFFFFFFF DUP2 GT PUSH1 0x5 SHL SWAP1 DUP2 SHR PUSH2 0xFFFF DUP2 GT PUSH1 0x4 SHL SWAP1 DUP2 SHR PUSH1 0xFF DUP2 GT PUSH1 0x3 SWAP1 DUP2 SHL SWAP2 DUP3 SHR PUSH1 0xF DUP2 GT PUSH1 0x2 SHL SWAP1 DUP2 SHR SWAP2 DUP3 GT PUSH1 0x1 SWAP1 DUP2 SHL SWAP3 DUP4 SHR SWAP8 SWAP1 DUP9 GT SWAP7 OR SWAP1 SWAP5 OR SWAP1 SWAP3 OR OR SWAP1 SWAP2 OR OR OR PUSH1 0x80 DUP2 LT PUSH2 0x2D8 JUMPI PUSH1 0x7F DUP2 SUB DUP4 SWAP1 SHR SWAP2 POP PUSH2 0x2E2 JUMP JUMPDEST DUP1 PUSH1 0x7F SUB DUP4 SWAP1 SHL SWAP2 POP JUMPDEST SWAP1 DUP1 MUL PUSH1 0x7F DUP2 DUP2 SHR PUSH1 0xFF DUP4 DUP2 SHR SWAP2 SWAP1 SWAP2 SHR DUP1 MUL DUP1 DUP4 SHR DUP2 DUP4 SHR SHR DUP1 MUL DUP1 DUP5 SHR DUP2 DUP5 SHR SHR DUP1 MUL DUP1 DUP6 SHR DUP2 DUP6 SHR SHR DUP1 MUL DUP1 DUP7 SHR DUP2 DUP7 SHR SHR DUP1 MUL DUP1 DUP8 SHR DUP2 DUP8 SHR SHR DUP1 MUL DUP1 DUP9 SHR DUP2 DUP9 SHR SHR DUP1 MUL DUP1 DUP10 SHR DUP2 DUP10 SHR SHR DUP1 MUL DUP1 DUP11 SHR DUP2 DUP11 SHR SHR DUP1 MUL DUP1 DUP12 SHR DUP2 DUP12 SHR SHR DUP1 MUL DUP1 DUP13 SHR DUP2 DUP13 SHR SHR DUP1 MUL DUP1 DUP14 SHR DUP2 DUP14 SHR SHR DUP1 MUL DUP1 DUP15 SHR SWAP13 DUP2 SWAP1 SHR SWAP13 SWAP1 SWAP13 SHR DUP1 MUL SWAP13 DUP14 SWAP1 SHR SWAP15 SWAP14 PUSH1 0x7F NOT DUP16 ADD PUSH1 0x40 SHL PUSH1 0xC0 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x8000000000000000 AND OR PUSH1 0xC1 SWAP12 SWAP1 SWAP12 SHR PUSH8 0x4000000000000000 AND SWAP11 SWAP1 SWAP11 OR PUSH1 0xC2 SWAP10 SWAP1 SWAP10 SHR PUSH8 0x2000000000000000 AND SWAP9 SWAP1 SWAP9 OR PUSH1 0xC3 SWAP8 SWAP1 SWAP8 SHR PUSH8 0x1000000000000000 AND SWAP7 SWAP1 SWAP7 OR PUSH1 0xC4 SWAP6 SWAP1 SWAP6 SHR PUSH8 0x800000000000000 AND SWAP5 SWAP1 SWAP5 OR PUSH1 0xC5 SWAP4 SWAP1 SWAP4 SHR PUSH8 0x400000000000000 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0xC6 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x200000000000000 AND OR PUSH1 0xC7 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x100000000000000 AND OR PUSH1 0xC8 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x80000000000000 AND OR PUSH1 0xC9 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x40000000000000 AND OR PUSH1 0xCA SWAP2 SWAP1 SWAP2 SHR PUSH7 0x20000000000000 AND OR PUSH1 0xCB SWAP2 SWAP1 SWAP2 SHR PUSH7 0x10000000000000 AND OR PUSH1 0xCC SWAP2 SWAP1 SWAP2 SHR PUSH7 0x8000000000000 AND OR PUSH1 0xCD SWAP2 SWAP1 SWAP2 SHR PUSH7 0x4000000000000 AND OR PUSH10 0x3627A301D71055774C85 DUP2 MUL PUSH16 0x28F6481AB7F045A5AF012A19D003AA9 NOT DUP2 ADD PUSH1 0x80 SWAP1 DUP2 SAR SWAP1 PUSH16 0xDB2DF09E81959A81455E260799A0632F DUP4 ADD SWAP1 SAR PUSH1 0x2 DUP2 DUP2 SIGNEXTEND SWAP1 DUP4 SWAP1 SIGNEXTEND EQ PUSH2 0x4E3 JUMPI DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C7 DUP3 PUSH2 0x4F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4DC JUMPI DUP2 PUSH2 0x4DE JUMP JUMPDEST DUP1 JUMPDEST PUSH2 0x4E5 JUMP JUMPDEST DUP2 JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x509 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x511 JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x54F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x570 JUMPI PUSH17 0x100000000000000000000000000000000 PUSH2 0x582 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x5B6 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x5D5 JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x5F4 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x613 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x632 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x651 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x670 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x690 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x6B0 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x6D0 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x6F0 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x710 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x730 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x750 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x770 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x791 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x7B1 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x7D0 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x7ED JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x808 JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x804 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x81C JUMPI PUSH1 0x1 PUSH2 0x81F JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH12 0x26F506655F19F50F17E0164D 0x1E EQ 0xAF GT 0xC0 0xAD 0xAA 0xBF SWAP9 PUSH15 0x709CB8F760BAE2819E64736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"106:1012:55:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c8063a7398eb411610050578063a7398eb4146100f8578063b0622f671461012a578063ee8847ff1461015057610072565b80634f76c058146100775780636d2cc304146100b4578063986cfba3146100d8575b600080fd5b61009d6004803603602081101561008d57600080fd5b50356001600160a01b0316610158565b6040805160029290920b8252519081900360200190f35b6100bc610169565b604080516001600160a01b039092168252519081900360200190f35b6100bc600480360360208110156100ee57600080fd5b503560020b610181565b6101186004803603602081101561010e57600080fd5b503560020b61018c565b60408051918252519081900360200190f35b6101186004803603602081101561014057600080fd5b50356001600160a01b03166101a5565b6100bc6101b4565b6000610163826101bd565b92915050565b73fffd8963efd1fc6a506488495d951d5263988d2690565b6000610163826104f2565b6000805a905061019b836104f2565b505a900392915050565b6000805a905061019b836101bd565b6401000276a390565b60006401000276a36001600160a01b038316108015906101f9575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b61022e576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166fffffffffffffffffffffffffffffffff811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106102d857607f810383901c91506102e2565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146104e357886001600160a01b03166104c7826104f2565b6001600160a01b031611156104dc57816104de565b805b6104e5565b815b9998505050505050505050565b60008060008360020b12610509578260020b610511565b8260020b6000035b9050620d89e881111561054f576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b60006001821661057057700100000000000000000000000000000000610582565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156105b6576ffff97272373d413259a46990580e213a0260801c5b60048216156105d5576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156105f4576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615610613576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615610632576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615610651576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615610670576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615610690576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156106b0576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156106d0576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156106f0576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615610710576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615610730576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615610750576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615610770576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615610791576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156107b1576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156107d0576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156107ed576b048a170391f7dc42444e8fa20260801c5b60008460020b131561080857806000198161080457fe5b0490505b64010000000081061561081c57600161081f565b60005b60ff16602082901c019250505091905056fea26469706673582212206b26f506655f19f50f17e0164d1e14af11c0adaabf986e709cb8f760bae2819e64736f6c63430007060033","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 0xA7398EB4 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xA7398EB4 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0xB0622F67 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xEE8847FF EQ PUSH2 0x150 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x4F76C058 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x6D2CC304 EQ PUSH2 0xB4 JUMPI DUP1 PUSH4 0x986CFBA3 EQ PUSH2 0xD8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x158 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xBC PUSH2 0x169 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xBC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x181 JUMP JUMPDEST PUSH2 0x118 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x18C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x118 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A5 JUMP JUMPDEST PUSH2 0xBC PUSH2 0x1B4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163 DUP3 PUSH2 0x1BD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163 DUP3 PUSH2 0x4F2 JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x19B DUP4 PUSH2 0x4F2 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x19B DUP4 PUSH2 0x1BD JUMP JUMPDEST PUSH5 0x1000276A3 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x1F9 JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT JUMPDEST PUSH2 0x22E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x20 DUP4 SWAP1 SHL AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x7 SHL DUP2 DUP2 SHR PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x6 SHL SWAP1 DUP2 SHR PUSH4 0xFFFFFFFF DUP2 GT PUSH1 0x5 SHL SWAP1 DUP2 SHR PUSH2 0xFFFF DUP2 GT PUSH1 0x4 SHL SWAP1 DUP2 SHR PUSH1 0xFF DUP2 GT PUSH1 0x3 SWAP1 DUP2 SHL SWAP2 DUP3 SHR PUSH1 0xF DUP2 GT PUSH1 0x2 SHL SWAP1 DUP2 SHR SWAP2 DUP3 GT PUSH1 0x1 SWAP1 DUP2 SHL SWAP3 DUP4 SHR SWAP8 SWAP1 DUP9 GT SWAP7 OR SWAP1 SWAP5 OR SWAP1 SWAP3 OR OR SWAP1 SWAP2 OR OR OR PUSH1 0x80 DUP2 LT PUSH2 0x2D8 JUMPI PUSH1 0x7F DUP2 SUB DUP4 SWAP1 SHR SWAP2 POP PUSH2 0x2E2 JUMP JUMPDEST DUP1 PUSH1 0x7F SUB DUP4 SWAP1 SHL SWAP2 POP JUMPDEST SWAP1 DUP1 MUL PUSH1 0x7F DUP2 DUP2 SHR PUSH1 0xFF DUP4 DUP2 SHR SWAP2 SWAP1 SWAP2 SHR DUP1 MUL DUP1 DUP4 SHR DUP2 DUP4 SHR SHR DUP1 MUL DUP1 DUP5 SHR DUP2 DUP5 SHR SHR DUP1 MUL DUP1 DUP6 SHR DUP2 DUP6 SHR SHR DUP1 MUL DUP1 DUP7 SHR DUP2 DUP7 SHR SHR DUP1 MUL DUP1 DUP8 SHR DUP2 DUP8 SHR SHR DUP1 MUL DUP1 DUP9 SHR DUP2 DUP9 SHR SHR DUP1 MUL DUP1 DUP10 SHR DUP2 DUP10 SHR SHR DUP1 MUL DUP1 DUP11 SHR DUP2 DUP11 SHR SHR DUP1 MUL DUP1 DUP12 SHR DUP2 DUP12 SHR SHR DUP1 MUL DUP1 DUP13 SHR DUP2 DUP13 SHR SHR DUP1 MUL DUP1 DUP14 SHR DUP2 DUP14 SHR SHR DUP1 MUL DUP1 DUP15 SHR SWAP13 DUP2 SWAP1 SHR SWAP13 SWAP1 SWAP13 SHR DUP1 MUL SWAP13 DUP14 SWAP1 SHR SWAP15 SWAP14 PUSH1 0x7F NOT DUP16 ADD PUSH1 0x40 SHL PUSH1 0xC0 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x8000000000000000 AND OR PUSH1 0xC1 SWAP12 SWAP1 SWAP12 SHR PUSH8 0x4000000000000000 AND SWAP11 SWAP1 SWAP11 OR PUSH1 0xC2 SWAP10 SWAP1 SWAP10 SHR PUSH8 0x2000000000000000 AND SWAP9 SWAP1 SWAP9 OR PUSH1 0xC3 SWAP8 SWAP1 SWAP8 SHR PUSH8 0x1000000000000000 AND SWAP7 SWAP1 SWAP7 OR PUSH1 0xC4 SWAP6 SWAP1 SWAP6 SHR PUSH8 0x800000000000000 AND SWAP5 SWAP1 SWAP5 OR PUSH1 0xC5 SWAP4 SWAP1 SWAP4 SHR PUSH8 0x400000000000000 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0xC6 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x200000000000000 AND OR PUSH1 0xC7 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x100000000000000 AND OR PUSH1 0xC8 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x80000000000000 AND OR PUSH1 0xC9 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x40000000000000 AND OR PUSH1 0xCA SWAP2 SWAP1 SWAP2 SHR PUSH7 0x20000000000000 AND OR PUSH1 0xCB SWAP2 SWAP1 SWAP2 SHR PUSH7 0x10000000000000 AND OR PUSH1 0xCC SWAP2 SWAP1 SWAP2 SHR PUSH7 0x8000000000000 AND OR PUSH1 0xCD SWAP2 SWAP1 SWAP2 SHR PUSH7 0x4000000000000 AND OR PUSH10 0x3627A301D71055774C85 DUP2 MUL PUSH16 0x28F6481AB7F045A5AF012A19D003AA9 NOT DUP2 ADD PUSH1 0x80 SWAP1 DUP2 SAR SWAP1 PUSH16 0xDB2DF09E81959A81455E260799A0632F DUP4 ADD SWAP1 SAR PUSH1 0x2 DUP2 DUP2 SIGNEXTEND SWAP1 DUP4 SWAP1 SIGNEXTEND EQ PUSH2 0x4E3 JUMPI DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C7 DUP3 PUSH2 0x4F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4DC JUMPI DUP2 PUSH2 0x4DE JUMP JUMPDEST DUP1 JUMPDEST PUSH2 0x4E5 JUMP JUMPDEST DUP2 JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x509 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x511 JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x54F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x570 JUMPI PUSH17 0x100000000000000000000000000000000 PUSH2 0x582 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x5B6 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x5D5 JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x5F4 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x613 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x632 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x651 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x670 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x690 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x6B0 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x6D0 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x6F0 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x710 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x730 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x750 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x770 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x791 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x7B1 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x7D0 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x7ED JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x808 JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x804 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x81C JUMPI PUSH1 0x1 PUSH2 0x81F JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH12 0x26F506655F19F50F17E0164D 0x1E EQ 0xAF GT 0xC0 0xAD 0xAA 0xBF SWAP9 PUSH15 0x709CB8F760BAE2819E64736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"106:1012:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;497:147;;;;;;;;;;;;;;;;-1:-1:-1;497:147:55;-1:-1:-1;;;;;497:147:55;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1008:107;;;:::i;:::-;;;;-1:-1:-1;;;;;1008:107:55;;;;;;;;;;;;;;135:131;;;;;;;;;;;;;;;;-1:-1:-1;135:131:55;;;;:::i;274:215::-;;;;;;;;;;;;;;;;-1:-1:-1;274:215:55;;;;:::i;:::-;;;;;;;;;;;;;;;;652:233;;;;;;;;;;;;;;;;-1:-1:-1;652:233:55;-1:-1:-1;;;;;652:233:55;;:::i;893:107::-;;;:::i;497:147::-;570:5;595:41;623:12;595:27;:41::i;:::-;588:48;497:147;-1:-1:-1;;497:147:55:o;1008:107::-;1019:49:28;1008:107:55;:::o;135:131::-;198:7;225:33;253:4;225:27;:33::i;274:215::-;349:7;369:17;389:9;369:29;;409:33;437:4;409:27;:33::i;:::-;;472:9;460:21;;;274:215;-1:-1:-1;;274:215:55:o;652:233::-;737:7;757:17;777:9;757:29;;797:41;825:12;797:27;:41::i;893:107::-;837:10:28;893:107:55;:::o;4421:4424:28:-;4494:10;837;-1:-1:-1;;;;;4625:30:28;;;;;;:63;;-1:-1:-1;1019:49:28;-1:-1:-1;;;;;4659:29:28;;;4625:63;4617:77;;;;;-1:-1:-1;;;4617:77:28;;;;;;;;;;;;-1:-1:-1;;;4617:77:28;;;;;;;;;;;;;;;4721:27;4746:2;4721:27;;;;4863:34;4857:41;;4854:1;4850:49;4949:9;;;5025:18;5019:25;;5016:1;5012:33;5095:9;;;5171:10;5165:17;;5162:1;5158:25;5233:9;;;5309:6;5303:13;;5300:1;5296:21;5367:9;;;5443:4;5437:11;;5434:1;5430:19;;;5499:9;;;5575:3;5569:10;;5566:1;5562:18;5630:9;;;5700:10;;;5697:1;5693:18;;;5761:9;;;;5824:10;;;5066;;5204;;;5338;;;5470;5601;;;5732;5855;5899:3;5892:10;;5888:80;;5924:3;5918;:9;5908:5;:20;;5904:24;;5888:80;;;5964:3;5958;:9;5948:5;:20;;5944:24;;5888:80;6072:9;;;6067:3;6063:19;;;6105:11;;;;6179:9;;;;6247;;6238:19;;;6280:11;;;6354:9;6422;;6413:19;;;6455:11;;;6529:9;6597;;6588:19;;;6630:11;;;6704:9;6772;;6763:19;;;6805:11;;;6879:9;6947;;6938:19;;;6980:11;;;7054:9;7122;;7113:19;;;7155:11;;;7229:9;7297;;7288:19;;;7330:11;;;7404:9;7472;;7463:19;;;7505:11;;;7579:9;7647;;7638:19;;;7680:11;;;7754:9;7822;;7813:19;;;7855:11;;;7929:9;7997;;7988:19;;;8030:11;;;8104:9;8172;;8163:19;;;8205:11;;;;8279:9;;;;8347;;8338:19;;;;;6072:9;-1:-1:-1;;5997:17:28;;6019:2;5996:25;6149:10;;;;;;;6139:21;6324:10;;;;;;;6314:21;;;;6499:10;;;;;;;6489:21;;;;6674:10;;;;;;;6664:21;;;;6849:10;;;;;;;6839:21;;;;7024:10;;;;;;;7014:21;;;;7199:10;;;;;;;7189:21;7374:10;;;;;;;7364:21;7549:10;;;;;;;7539:21;7724:10;;;;;;;7714:21;7899:10;;;;;;;7889:21;8074:10;;;;;;;8064:21;8249:10;;;;;;;8239:21;8424:10;;;;;;;8414:21;8489:24;8481:32;;-1:-1:-1;;8567:53:28;;6011:3;8566:62;;;;8678:39;8662:55;;8661:64;;8746:17;;;;;;;;;:91;;8806:12;-1:-1:-1;;;;;8776:42:28;:26;8795:6;8776:18;:26::i;:::-;-1:-1:-1;;;;;8776:42:28;;;:61;;8830:7;8776:61;;;8821:6;8776:61;8746:91;;;8766:7;8746:91;8739:98;4421:4424;-1:-1:-1;;;;;;;;;4421:4424:28:o;1384:2611::-;1447:20;1480:15;1505:1;1498:4;:8;;;:57;;1549:4;1542:12;;1498:57;;;1525:4;1518:12;;1517:13;;1498:57;1480:75;-1:-1:-1;654:9:28;1574:28;;;1566:42;;;;;-1:-1:-1;;;1566:42:28;;;;;;;;;;;;-1:-1:-1;;;1566:42:28;;;;;;;;;;;;;;;1621:13;1647:3;1637:13;;:93;;1695:35;1637:93;;;1658:34;1637:93;1621:109;;;-1:-1:-1;1755:3:28;1745:13;;:18;1741:83;;1782:34;1774:42;1821:3;1773:51;1741:83;1849:3;1839:13;;:18;1835:83;;1876:34;1868:42;1915:3;1867:51;1835:83;1943:3;1933:13;;:18;1929:83;;1970:34;1962:42;2009:3;1961:51;1929:83;2037:4;2027:14;;:19;2023:84;;2065:34;2057:42;2104:3;2056:51;2023:84;2132:4;2122:14;;:19;2118:84;;2160:34;2152:42;2199:3;2151:51;2118:84;2227:4;2217:14;;:19;2213:84;;2255:34;2247:42;2294:3;2246:51;2213:84;2322:4;2312:14;;:19;2308:84;;2350:34;2342:42;2389:3;2341:51;2308:84;2417:5;2407:15;;:20;2403:85;;2446:34;2438:42;2485:3;2437:51;2403:85;2513:5;2503:15;;:20;2499:85;;2542:34;2534:42;2581:3;2533:51;2499:85;2609:5;2599:15;;:20;2595:85;;2638:34;2630:42;2677:3;2629:51;2595:85;2705:5;2695:15;;:20;2691:85;;2734:34;2726:42;2773:3;2725:51;2691:85;2801:6;2791:16;;:21;2787:86;;2831:34;2823:42;2870:3;2822:51;2787:86;2898:6;2888:16;;:21;2884:86;;2928:34;2920:42;2967:3;2919:51;2884:86;2995:6;2985:16;;:21;2981:86;;3025:34;3017:42;3064:3;3016:51;2981:86;3092:6;3082:16;;:21;3078:86;;3122:34;3114:42;3161:3;3113:51;3078:86;3189:7;3179:17;;:22;3175:86;;3220:33;3212:41;3258:3;3211:50;3175:86;3286:7;3276:17;;:22;3272:85;;3317:32;3309:40;3354:3;3308:49;3272:85;3382:7;3372:17;;:22;3368:83;;3413:30;3405:38;3448:3;3404:47;3368:83;3476:7;3466:17;;:22;3462:78;;3507:25;3499:33;3537:3;3498:42;3462:78;3564:1;3557:4;:8;;;3553:47;;;3595:5;-1:-1:-1;;3575:25:28;;;;;;3567:33;;3553:47;3964:7;3955:5;:17;:22;:30;;3984:1;3955:30;;;3980:1;3955:30;3938:48;;3948:2;3939:5;:11;;3938:48;3915:72;;1384:2611;;;;;:::o"},"methodIdentifiers":{"MAX_SQRT_RATIO()":"6d2cc304","MIN_SQRT_RATIO()":"ee8847ff","getGasCostOfGetSqrtRatioAtTick(int24)":"a7398eb4","getGasCostOfGetTickAtSqrtRatio(uint160)":"b0622f67","getSqrtRatioAtTick(int24)":"986cfba3","getTickAtSqrtRatio(uint160)":"4f76c058"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MAX_SQRT_RATIO\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_SQRT_RATIO\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"getGasCostOfGetSqrtRatioAtTick\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"getGasCostOfGetTickAtSqrtRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"getSqrtRatioAtTick\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"getTickAtSqrtRatio\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/TickMathTest.sol\":\"TickMathTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-core/test/TickMathTest.sol\":{\"keccak256\":\"0x4cec5dd91afc8ba1f9fc4f9622fcd61f2f3515448ddad876d05a1f9f61a8834d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d2d48b96b0930a7d00affd270218a922b2c3ae59d43b0567db69bfaf1102e76\",\"dweb:/ipfs/QmSky6h7P8SqsLPuqNyj5JRxjvbpdAfXtL31nJRpvUc2tt\"]}},\"version\":1}"}},"contracts/elixir-core/test/TickOverflowSafetyEchidnaTest.sol":{"TickOverflowSafetyEchidnaTest":{"abi":[{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"increaseFeeGrowthGlobal0X128","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"increaseFeeGrowthGlobal1X128","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int24","name":"target","type":"int24"}],"name":"moveToTick","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int128","name":"liquidityDelta","type":"int128"}],"name":"setPosition","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60806040526001805462ffffff19169055600060028190556001600160ff1b036003819055600455600581905560065534801561003b57600080fd5b506109688061004b6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630b0c061f146100515780633f03e19414610070578063541bdfb11461008d578063af759368146100c1575b600080fd5b61006e6004803603602081101561006757600080fd5b50356100e1565b005b61006e6004803603602081101561008657600080fd5b5035610104565b61006e600480360360608110156100a357600080fd5b508035600290810b91602081013590910b9060400135600f0b610127565b61006e600480360360208110156100d757600080fd5b503560020b6102ed565b600554818101116100f157600080fd5b6003805482019055600580549091019055565b6006548181011161011457600080fd5b6004805482019055600680549091019055565b600f19600284900b1361013957600080fd5b6010600283900b1261014a57600080fd5b8160020b8360020b1261015c57600080fd5b6001546003546004546000926101a892879260029290920b918691908680428160206001600160801b035b60075460009b9a9998979695949392909104906001600160c01b031661043b565b905060006101e084600160009054906101000a900460020b8560035460045460008042600160206001600160801b0380168161018757fe5b9050811561024f57600083600f0b121561022a57600285810b900b6000908152602081905260409020546001600160801b03161561021a57fe5b610225600086610696565b61024f565b600285810b900b6000908152602081905260409020546001600160801b031661024f57fe5b80156102bc57600083600f0b121561029757600284810b900b6000908152602081905260409020546001600160801b03161561028757fe5b610292600085610696565b6102bc565b600284810b900b6000908152602081905260409020546001600160801b03166102bc57fe5b60028054600f85900b0190819055600013156102d457fe5b6002546102e657600060058190556006555b5050505050565b600f19600282900b136102ff57600080fd5b6010600282900b1261031057600080fd5b600154600282810b91810b900b1461043857600154600282810b91810b900b12156103b55760018054600290810b909101810b900b6000908152602081905260409020546001600160801b03161561039357600180546003546004546007546103919460009460020b019291908490819042906001600160c01b03166106e8565b505b60018054600281810b8301900b62ffffff1662ffffff19909116179055610433565b600154600290810b810b900b6000908152602081905260409020546001600160801b0316156104105760015460035460045460075461040e9360009360029190910b9290918490819042906001600160c01b03166106e8565b505b60018054600019600282810b91909101900b62ffffff1662ffffff199091161790555b610310565b50565b60028b810b900b600090815260208d90526040812080546001600160801b031682610466828e610834565b9050856001600160801b0316816001600160801b031611156104b4576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b0382811615908216158114159450156105d9578d60020b8f60020b136105a9578b83600101819055508a8360020181905550898360030160076101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550888360030160006101000a81548166ffffffffffffff021916908360060b66ffffffffffffff1602179055508783600301601b6101000a81548163ffffffff021916908363ffffffff160217905550848360040160006101000a8154816001600160c01b0302191690836001600160c01b031602179055505b6003830180547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790555b82546fffffffffffffffffffffffffffffffff19166001600160801b038216178355866106375761063261062d8e600f0b8560000160109054906101000a9004600f0b600f0b6108f090919063ffffffff16565b610906565b610664565b61066461062d8e600f0b8560000160109054906101000a9004600f0b600f0b61091c90919063ffffffff16565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909d9c50505050505050505050505050565b600290810b810b600090815260209290925260408220828155600181018390559081018290556003810191909155600401805477ffffffffffffffffffffffffffffffffffffffffffffffff19169055565b600296870b870b60009081526020989098526040909720600181018054909603909555948401805490930390925560038301805463ffffffff7b0100000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff6701000000000000008085048216909603169094027fffffffffff0000000000000000000000000000000000000000ffffffffffffff90921691909117600681810b90950390940b66ffffffffffffff1666ffffffffffffff19909416939093178281048416909503909216027fff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff909316929092179091556004810180546001600160c01b0380821690940390931677ffffffffffffffffffffffffffffffffffffffffffffffff199093169290921790915554600160801b9004600f0b90565b60008082600f0b121561089957826001600160801b03168260000384039150816001600160801b031610610894576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b6108ea565b826001600160801b03168284019150816001600160801b031610156108ea576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b92915050565b818101828112156000831215146108ea57600080fd5b80600f81900b811461091757600080fd5b919050565b808203828113156000831215146108ea57600080fdfea26469706673582212204c8887694fe1004f1d4867b8623a3976d0fc28f5c9c0e80ca208572060fd8c9164736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 DUP1 SLOAD PUSH3 0xFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x0 PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB PUSH1 0x3 DUP2 SWAP1 SSTORE PUSH1 0x4 SSTORE PUSH1 0x5 DUP2 SWAP1 SSTORE PUSH1 0x6 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x968 DUP1 PUSH2 0x4B 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 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB0C061F EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x3F03E194 EQ PUSH2 0x70 JUMPI DUP1 PUSH4 0x541BDFB1 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0xAF759368 EQ PUSH2 0xC1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xE1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x104 JUMP JUMPDEST PUSH2 0x6E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0xF SIGNEXTEND PUSH2 0x127 JUMP JUMPDEST PUSH2 0x6E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x2ED JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 DUP2 ADD GT PUSH2 0xF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 DUP2 ADD GT PUSH2 0x114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xF NOT PUSH1 0x2 DUP5 SWAP1 SIGNEXTEND SGT PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x10 PUSH1 0x2 DUP4 SWAP1 SIGNEXTEND SLT PUSH2 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x2 SIGNEXTEND DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x3 SLOAD PUSH1 0x4 SLOAD PUSH1 0x0 SWAP3 PUSH2 0x1A8 SWAP3 DUP8 SWAP3 PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND SWAP2 DUP7 SWAP2 SWAP1 DUP7 DUP1 TIMESTAMP DUP2 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP1 SWAP2 DIV SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH2 0x43B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E0 DUP5 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x3 SLOAD PUSH1 0x4 SLOAD PUSH1 0x0 DUP1 TIMESTAMP PUSH1 0x1 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 AND DUP2 PUSH2 0x187 JUMPI INVALID JUMPDEST SWAP1 POP DUP2 ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP4 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x22A JUMPI PUSH1 0x2 DUP6 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x21A JUMPI INVALID JUMPDEST PUSH2 0x225 PUSH1 0x0 DUP7 PUSH2 0x696 JUMP JUMPDEST PUSH2 0x24F JUMP JUMPDEST PUSH1 0x2 DUP6 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x24F JUMPI INVALID JUMPDEST DUP1 ISZERO PUSH2 0x2BC JUMPI PUSH1 0x0 DUP4 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x297 JUMPI PUSH1 0x2 DUP5 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x287 JUMPI INVALID JUMPDEST PUSH2 0x292 PUSH1 0x0 DUP6 PUSH2 0x696 JUMP JUMPDEST PUSH2 0x2BC JUMP JUMPDEST PUSH1 0x2 DUP5 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2BC JUMPI INVALID JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0xF DUP6 SWAP1 SIGNEXTEND ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x0 SGT ISZERO PUSH2 0x2D4 JUMPI INVALID JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x2E6 JUMPI PUSH1 0x0 PUSH1 0x5 DUP2 SWAP1 SSTORE PUSH1 0x6 SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0xF NOT PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND SGT PUSH2 0x2FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x10 PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND SLT PUSH2 0x310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x2 DUP3 DUP2 SIGNEXTEND SWAP2 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND EQ PUSH2 0x438 JUMPI PUSH1 0x1 SLOAD PUSH1 0x2 DUP3 DUP2 SIGNEXTEND SWAP2 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND SLT ISZERO PUSH2 0x3B5 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SWAP2 ADD DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x393 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD PUSH1 0x4 SLOAD PUSH1 0x7 SLOAD PUSH2 0x391 SWAP5 PUSH1 0x0 SWAP5 PUSH1 0x2 SIGNEXTEND ADD SWAP3 SWAP2 SWAP1 DUP5 SWAP1 DUP2 SWAP1 TIMESTAMP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH2 0x6E8 JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x2 DUP2 DUP2 SIGNEXTEND DUP4 ADD SWAP1 SIGNEXTEND PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH2 0x433 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x410 JUMPI PUSH1 0x1 SLOAD PUSH1 0x3 SLOAD PUSH1 0x4 SLOAD PUSH1 0x7 SLOAD PUSH2 0x40E SWAP4 PUSH1 0x0 SWAP4 PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND SWAP3 SWAP1 SWAP2 DUP5 SWAP1 DUP2 SWAP1 TIMESTAMP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH2 0x6E8 JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x0 NOT PUSH1 0x2 DUP3 DUP2 SIGNEXTEND SWAP2 SWAP1 SWAP2 ADD SWAP1 SIGNEXTEND PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x310 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 DUP12 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH2 0x466 DUP3 DUP15 PUSH2 0x834 JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C4F PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 DUP2 AND ISZERO SWAP1 DUP3 AND ISZERO DUP2 EQ ISZERO SWAP5 POP ISZERO PUSH2 0x5D9 JUMPI DUP14 PUSH1 0x2 SIGNEXTEND DUP16 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x5A9 JUMPI DUP12 DUP4 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP11 DUP4 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP10 DUP4 PUSH1 0x3 ADD PUSH1 0x7 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP9 DUP4 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH7 0xFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x6 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP8 DUP4 PUSH1 0x3 ADD PUSH1 0x1B PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 DUP4 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xF8 SHL OR SWAP1 SSTORE JUMPDEST DUP3 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND OR DUP4 SSTORE DUP7 PUSH2 0x637 JUMPI PUSH2 0x632 PUSH2 0x62D DUP15 PUSH1 0xF SIGNEXTEND DUP6 PUSH1 0x0 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xF SIGNEXTEND PUSH1 0xF SIGNEXTEND PUSH2 0x8F0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x906 JUMP JUMPDEST PUSH2 0x664 JUMP JUMPDEST PUSH2 0x664 PUSH2 0x62D DUP15 PUSH1 0xF SIGNEXTEND DUP6 PUSH1 0x0 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xF SIGNEXTEND PUSH1 0xF SIGNEXTEND PUSH2 0x91C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 SLOAD PUSH1 0xF SWAP2 SWAP1 SWAP2 SIGNEXTEND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP2 AND OR SWAP1 SWAP3 SSTORE POP SWAP1 SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP4 SWAP1 SSTORE SWAP1 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x4 ADD DUP1 SLOAD PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x2 SWAP7 DUP8 SIGNEXTEND DUP8 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x40 SWAP1 SWAP8 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD SWAP1 SWAP7 SUB SWAP1 SWAP6 SSTORE SWAP5 DUP5 ADD DUP1 SLOAD SWAP1 SWAP4 SUB SWAP1 SWAP3 SSTORE PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH28 0x1000000000000000000000000000000000000000000000000000000 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH8 0x100000000000000 DUP1 DUP6 DIV DUP3 AND SWAP1 SWAP7 SUB AND SWAP1 SWAP5 MUL PUSH32 0xFFFFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x6 DUP2 DUP2 SIGNEXTEND SWAP1 SWAP6 SUB SWAP1 SWAP5 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND PUSH7 0xFFFFFFFFFFFFFF NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR DUP3 DUP2 DIV DUP5 AND SWAP1 SWAP6 SUB SWAP1 SWAP3 AND MUL PUSH32 0xFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP1 DUP3 AND SWAP1 SWAP5 SUB SWAP1 SWAP4 AND PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0xF SIGNEXTEND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x899 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x0 SUB DUP5 SUB SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x894 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C53 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x8EA JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 DUP5 ADD SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0x8EA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C41 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP3 DUP2 SLT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x8EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x917 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 SGT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x8EA JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4C DUP9 DUP8 PUSH10 0x4FE1004F1D4867B8623A CODECOPY PUSH23 0xD0FC28F5C9C0E80CA208572060FD8C9164736F6C634300 SMOD MOD STOP CALLER ","sourceMap":"102:4211:56:-:0;;;406:22;;;-1:-1:-1;;406:22:56;;;-1:-1:-1;406:22:56;525:25;;;-1:-1:-1;;;;;624:60:56;;;;691;;823:32;;;;862;;102:4211;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061004c5760003560e01c80630b0c061f146100515780633f03e19414610070578063541bdfb11461008d578063af759368146100c1575b600080fd5b61006e6004803603602081101561006757600080fd5b50356100e1565b005b61006e6004803603602081101561008657600080fd5b5035610104565b61006e600480360360608110156100a357600080fd5b508035600290810b91602081013590910b9060400135600f0b610127565b61006e600480360360208110156100d757600080fd5b503560020b6102ed565b600554818101116100f157600080fd5b6003805482019055600580549091019055565b6006548181011161011457600080fd5b6004805482019055600680549091019055565b600f19600284900b1361013957600080fd5b6010600283900b1261014a57600080fd5b8160020b8360020b1261015c57600080fd5b6001546003546004546000926101a892879260029290920b918691908680428160206001600160801b035b60075460009b9a9998979695949392909104906001600160c01b031661043b565b905060006101e084600160009054906101000a900460020b8560035460045460008042600160206001600160801b0380168161018757fe5b9050811561024f57600083600f0b121561022a57600285810b900b6000908152602081905260409020546001600160801b03161561021a57fe5b610225600086610696565b61024f565b600285810b900b6000908152602081905260409020546001600160801b031661024f57fe5b80156102bc57600083600f0b121561029757600284810b900b6000908152602081905260409020546001600160801b03161561028757fe5b610292600085610696565b6102bc565b600284810b900b6000908152602081905260409020546001600160801b03166102bc57fe5b60028054600f85900b0190819055600013156102d457fe5b6002546102e657600060058190556006555b5050505050565b600f19600282900b136102ff57600080fd5b6010600282900b1261031057600080fd5b600154600282810b91810b900b1461043857600154600282810b91810b900b12156103b55760018054600290810b909101810b900b6000908152602081905260409020546001600160801b03161561039357600180546003546004546007546103919460009460020b019291908490819042906001600160c01b03166106e8565b505b60018054600281810b8301900b62ffffff1662ffffff19909116179055610433565b600154600290810b810b900b6000908152602081905260409020546001600160801b0316156104105760015460035460045460075461040e9360009360029190910b9290918490819042906001600160c01b03166106e8565b505b60018054600019600282810b91909101900b62ffffff1662ffffff199091161790555b610310565b50565b60028b810b900b600090815260208d90526040812080546001600160801b031682610466828e610834565b9050856001600160801b0316816001600160801b031611156104b4576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b0382811615908216158114159450156105d9578d60020b8f60020b136105a9578b83600101819055508a8360020181905550898360030160076101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550888360030160006101000a81548166ffffffffffffff021916908360060b66ffffffffffffff1602179055508783600301601b6101000a81548163ffffffff021916908363ffffffff160217905550848360040160006101000a8154816001600160c01b0302191690836001600160c01b031602179055505b6003830180547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790555b82546fffffffffffffffffffffffffffffffff19166001600160801b038216178355866106375761063261062d8e600f0b8560000160109054906101000a9004600f0b600f0b6108f090919063ffffffff16565b610906565b610664565b61066461062d8e600f0b8560000160109054906101000a9004600f0b600f0b61091c90919063ffffffff16565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909d9c50505050505050505050505050565b600290810b810b600090815260209290925260408220828155600181018390559081018290556003810191909155600401805477ffffffffffffffffffffffffffffffffffffffffffffffff19169055565b600296870b870b60009081526020989098526040909720600181018054909603909555948401805490930390925560038301805463ffffffff7b0100000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff6701000000000000008085048216909603169094027fffffffffff0000000000000000000000000000000000000000ffffffffffffff90921691909117600681810b90950390940b66ffffffffffffff1666ffffffffffffff19909416939093178281048416909503909216027fff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff909316929092179091556004810180546001600160c01b0380821690940390931677ffffffffffffffffffffffffffffffffffffffffffffffff199093169290921790915554600160801b9004600f0b90565b60008082600f0b121561089957826001600160801b03168260000384039150816001600160801b031610610894576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b6108ea565b826001600160801b03168284019150816001600160801b031610156108ea576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b92915050565b818101828112156000831215146108ea57600080fd5b80600f81900b811461091757600080fd5b919050565b808203828113156000831215146108ea57600080fdfea26469706673582212204c8887694fe1004f1d4867b8623a3976d0fc28f5c9c0e80ca208572060fd8c9164736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB0C061F EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x3F03E194 EQ PUSH2 0x70 JUMPI DUP1 PUSH4 0x541BDFB1 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0xAF759368 EQ PUSH2 0xC1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xE1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x104 JUMP JUMPDEST PUSH2 0x6E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0xF SIGNEXTEND PUSH2 0x127 JUMP JUMPDEST PUSH2 0x6E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x2ED JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 DUP2 ADD GT PUSH2 0xF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 DUP2 ADD GT PUSH2 0x114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xF NOT PUSH1 0x2 DUP5 SWAP1 SIGNEXTEND SGT PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x10 PUSH1 0x2 DUP4 SWAP1 SIGNEXTEND SLT PUSH2 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x2 SIGNEXTEND DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x3 SLOAD PUSH1 0x4 SLOAD PUSH1 0x0 SWAP3 PUSH2 0x1A8 SWAP3 DUP8 SWAP3 PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND SWAP2 DUP7 SWAP2 SWAP1 DUP7 DUP1 TIMESTAMP DUP2 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP1 SWAP2 DIV SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH2 0x43B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E0 DUP5 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x3 SLOAD PUSH1 0x4 SLOAD PUSH1 0x0 DUP1 TIMESTAMP PUSH1 0x1 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 AND DUP2 PUSH2 0x187 JUMPI INVALID JUMPDEST SWAP1 POP DUP2 ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP4 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x22A JUMPI PUSH1 0x2 DUP6 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x21A JUMPI INVALID JUMPDEST PUSH2 0x225 PUSH1 0x0 DUP7 PUSH2 0x696 JUMP JUMPDEST PUSH2 0x24F JUMP JUMPDEST PUSH1 0x2 DUP6 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x24F JUMPI INVALID JUMPDEST DUP1 ISZERO PUSH2 0x2BC JUMPI PUSH1 0x0 DUP4 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x297 JUMPI PUSH1 0x2 DUP5 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x287 JUMPI INVALID JUMPDEST PUSH2 0x292 PUSH1 0x0 DUP6 PUSH2 0x696 JUMP JUMPDEST PUSH2 0x2BC JUMP JUMPDEST PUSH1 0x2 DUP5 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2BC JUMPI INVALID JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0xF DUP6 SWAP1 SIGNEXTEND ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x0 SGT ISZERO PUSH2 0x2D4 JUMPI INVALID JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x2E6 JUMPI PUSH1 0x0 PUSH1 0x5 DUP2 SWAP1 SSTORE PUSH1 0x6 SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0xF NOT PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND SGT PUSH2 0x2FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x10 PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND SLT PUSH2 0x310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x2 DUP3 DUP2 SIGNEXTEND SWAP2 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND EQ PUSH2 0x438 JUMPI PUSH1 0x1 SLOAD PUSH1 0x2 DUP3 DUP2 SIGNEXTEND SWAP2 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND SLT ISZERO PUSH2 0x3B5 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SWAP2 ADD DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x393 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD PUSH1 0x4 SLOAD PUSH1 0x7 SLOAD PUSH2 0x391 SWAP5 PUSH1 0x0 SWAP5 PUSH1 0x2 SIGNEXTEND ADD SWAP3 SWAP2 SWAP1 DUP5 SWAP1 DUP2 SWAP1 TIMESTAMP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH2 0x6E8 JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x2 DUP2 DUP2 SIGNEXTEND DUP4 ADD SWAP1 SIGNEXTEND PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH2 0x433 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x410 JUMPI PUSH1 0x1 SLOAD PUSH1 0x3 SLOAD PUSH1 0x4 SLOAD PUSH1 0x7 SLOAD PUSH2 0x40E SWAP4 PUSH1 0x0 SWAP4 PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND SWAP3 SWAP1 SWAP2 DUP5 SWAP1 DUP2 SWAP1 TIMESTAMP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH2 0x6E8 JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x0 NOT PUSH1 0x2 DUP3 DUP2 SIGNEXTEND SWAP2 SWAP1 SWAP2 ADD SWAP1 SIGNEXTEND PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x310 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 DUP12 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH2 0x466 DUP3 DUP15 PUSH2 0x834 JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C4F PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 DUP2 AND ISZERO SWAP1 DUP3 AND ISZERO DUP2 EQ ISZERO SWAP5 POP ISZERO PUSH2 0x5D9 JUMPI DUP14 PUSH1 0x2 SIGNEXTEND DUP16 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x5A9 JUMPI DUP12 DUP4 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP11 DUP4 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP10 DUP4 PUSH1 0x3 ADD PUSH1 0x7 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP9 DUP4 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH7 0xFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x6 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP8 DUP4 PUSH1 0x3 ADD PUSH1 0x1B PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 DUP4 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xF8 SHL OR SWAP1 SSTORE JUMPDEST DUP3 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND OR DUP4 SSTORE DUP7 PUSH2 0x637 JUMPI PUSH2 0x632 PUSH2 0x62D DUP15 PUSH1 0xF SIGNEXTEND DUP6 PUSH1 0x0 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xF SIGNEXTEND PUSH1 0xF SIGNEXTEND PUSH2 0x8F0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x906 JUMP JUMPDEST PUSH2 0x664 JUMP JUMPDEST PUSH2 0x664 PUSH2 0x62D DUP15 PUSH1 0xF SIGNEXTEND DUP6 PUSH1 0x0 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xF SIGNEXTEND PUSH1 0xF SIGNEXTEND PUSH2 0x91C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 SLOAD PUSH1 0xF SWAP2 SWAP1 SWAP2 SIGNEXTEND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP2 AND OR SWAP1 SWAP3 SSTORE POP SWAP1 SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP4 SWAP1 SSTORE SWAP1 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x4 ADD DUP1 SLOAD PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x2 SWAP7 DUP8 SIGNEXTEND DUP8 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x40 SWAP1 SWAP8 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD SWAP1 SWAP7 SUB SWAP1 SWAP6 SSTORE SWAP5 DUP5 ADD DUP1 SLOAD SWAP1 SWAP4 SUB SWAP1 SWAP3 SSTORE PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH28 0x1000000000000000000000000000000000000000000000000000000 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH8 0x100000000000000 DUP1 DUP6 DIV DUP3 AND SWAP1 SWAP7 SUB AND SWAP1 SWAP5 MUL PUSH32 0xFFFFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x6 DUP2 DUP2 SIGNEXTEND SWAP1 SWAP6 SUB SWAP1 SWAP5 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND PUSH7 0xFFFFFFFFFFFFFF NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR DUP3 DUP2 DIV DUP5 AND SWAP1 SWAP6 SUB SWAP1 SWAP3 AND MUL PUSH32 0xFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP1 DUP3 AND SWAP1 SWAP5 SUB SWAP1 SWAP4 AND PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0xF SIGNEXTEND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x899 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x0 SUB DUP5 SUB SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x894 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C53 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x8EA JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 DUP5 ADD SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0x8EA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C41 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP3 DUP2 SLT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x8EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x917 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 SGT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x8EA JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4C DUP9 DUP8 PUSH10 0x4FE1004F1D4867B8623A CODECOPY PUSH23 0xD0FC28F5C9C0E80CA208572060FD8C9164736F6C634300 SMOD MOD STOP CALLER ","sourceMap":"102:4211:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1000:239;;;;;;;;;;;;;;;;-1:-1:-1;1000:239:56;;:::i;:::-;;1247;;;;;;;;;;;;;;;;-1:-1:-1;1247:239:56;;:::i;1494:1711::-;;;;;;;;;;;;;;;;-1:-1:-1;1494:1711:56;;;;;;;;;;;;;;;;;;;;;:::i;3213:1097::-;;;;;;;;;;;;;;;;-1:-1:-1;3213:1097:56;;;;:::i;1000:239::-;1106:12;;1082:21;;;:36;1074:45;;;;;;1148:20;:30;;;;;;1209:12;:22;;;;;;;1000:239::o;1247:::-;1353:12;;1329:21;;;:36;1321:45;;;;;;1395:20;:30;;;;;;1456:12;:22;;;;;;;1247:239::o;1494:1711::-;-1:-1:-1;;1634:20:56;;;;;1626:29;;;;;;277:2;1674:20;;;;;1666:29;;;;;;1726:9;1714:21;;:9;:21;;;1706:30;;;;;;1818:4;;1866:20;;1901;;1747:17;;1767:329;;1794:9;;1818:4;;;;;;1837:14;;1866:20;1747:17;;1975:15;1747:17;347:2;-1:-1:-1;;;;;327:22:56;2054:31;;;;1767:329;;;;;;;;;327:22;;;;-1:-1:-1;;;;;2054:31:56;1767:12;:329::i;:::-;1747:349;;2107:17;2127:328;2154:9;2178:4;;;;;;;;;;;2197:14;2226:20;;2261;;2296:1;2312;2335:15;2366:4;347:2;-1:-1:-1;;;;;327:22:56;;;;;;2127:328;2107:348;;2472:12;2468:238;;;2522:1;2505:14;:18;;;2501:193;;;2551:16;;;;;;:5;:16;;;;;;;;;;:31;-1:-1:-1;;;;;2551:31:56;:36;2544:44;;;;2607:22;:5;2619:9;2607:11;:22::i;:::-;2501:193;;;2658:16;;;;;;2692:1;2658:16;;;;;;;;;;:31;-1:-1:-1;;;;;2658:31:56;2651:43;;;;2722:12;2718:238;;;2772:1;2755:14;:18;;;2751:193;;;2801:16;;;;;;:5;:16;;;;;;;;;;:31;-1:-1:-1;;;;;2801:31:56;:36;2794:44;;;;2857:22;:5;2869:9;2857:11;:22::i;:::-;2751:193;;;2908:16;;;;;;2942:1;2908:16;;;;;;;;;;:31;-1:-1:-1;;;;;2908:31:56;2901:43;;;;2968:14;:32;;;;;;;;;;;:14;-1:-1:-1;3066:19:56;3059:27;;;;3103:14;;3099:99;;3154:1;3139:12;:16;;;3170:12;:16;3099:99;1494:1711;;;;;:::o;3213:1097::-;-1:-1:-1;;3275:17:56;;;;;3267:26;;;;;;277:2;3312:17;;;;;3304:26;;;;;;3348:4;;:14;;;;:4;;;:14;;;3341:962;;3383:4;;:13;;;;:4;;;:13;;;3379:913;;;3427:4;;;;;;;:8;;;3421:15;;;;3454:1;3421:15;;;;;;;;;;:30;-1:-1:-1;;;;;3421:30:56;:34;3417:388;;3516:4;;;3551:20;;3598;;3751:31;;3478:327;;3516:4;;;;:8;;3551:20;3598;3516:4;;;;3708:15;;-1:-1:-1;;;;;3751:31:56;3478:11;:327::i;:::-;;3417:388;3824:4;:6;;;;;;;;;;;;-1:-1:-1;;3824:6:56;;;;;;3379:913;;;3881:4;;;;;;3875:11;;;;3904:1;3875:11;;;;;;;;;;:26;-1:-1:-1;;;;;3875:26:56;:30;3871:380;;3966:4;;3997:20;;4044;;4197:31;;3928:323;;3966:4;;;;;;;;3997:20;;3966:4;;;;4154:15;;-1:-1:-1;;;;;4197:31:56;3928:11;:323::i;:::-;;3871:380;4270:4;:6;;-1:-1:-1;;4270:6:56;;;;;;;;;;;;-1:-1:-1;;4270:6:56;;;;;;3379:913;3341:962;;;3213:1097;:::o;6433:1865:26:-;6941:10;;;;;;6891:12;6941:10;;;;;;;;;;6995:19;;-1:-1:-1;;;;;6995:19:26;6891:12;7055:60;6995:19;7100:14;7055:22;:60::i;:::-;7025:90;;7159:12;-1:-1:-1;;;;;7136:35:26;:19;-1:-1:-1;;;;;7136:35:26;;;7128:50;;;;;-1:-1:-1;;;7128:50:26;;;;;;;;;;;;-1:-1:-1;;;7128:50:26;;;;;;;;;;;;;;;-1:-1:-1;;;;;7232:25:26;;;;7202:24;;;;7201:57;;;;-1:-1:-1;7201:57:26;7271:668;;7442:11;7434:19;;:4;:19;;;7430:460;;7503:20;7474:4;:26;;:49;;;;7571:20;7542:4;:26;;:49;;;;7648:33;7610:4;:35;;;:71;;;;;;;;;;;;;;;;;;7729:14;7700:4;:26;;;:43;;;;;;;;;;;;;;;;;;;;7784:4;7762;:19;;;:26;;;;;;;;;;;;;;;;;;7843:31;7807:4;:33;;;:67;;;;;-1:-1:-1;;;;;7807:67:26;;;;;-1:-1:-1;;;;;7807:67:26;;;;;;7430:460;7904:16;;;:23;;;;-1:-1:-1;;;7904:23:26;;;7271:668;7951:41;;-1:-1:-1;;7951:41:26;-1:-1:-1;;;;;7951:41:26;;;;;8141:5;:149;;8234:56;:45;8264:14;8234:45;;8241:4;:17;;;;;;;;;;;;8234:25;;:29;;:45;;;;:::i;:::-;:54;:56::i;:::-;8141:149;;;8162:56;:45;8192:14;8162:45;;8169:4;:17;;;;;;;;;;;;8162:25;;:29;;:45;;;;:::i;:56::-;8121:169;;;;;;;-1:-1:-1;;;;;8121:169:26;;;-1:-1:-1;;;8121:169:26;;;;;;;-1:-1:-1;6433:1865:26;;;-1:-1:-1;;;;;;;;;;;;;6433:1865:26:o;8490:114::-;8586:10;;;;;;;;;;;;;;;;;;8579:17;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8579:17:26;;;8490:114::o;9387:1017::-;9789:10;;;;;;9732:19;9789:10;;;;;;;;;;;;9862:26;;;;;9839:49;;;9810:78;;;9951:26;;;;;9928:49;;;9899:78;;;10062:35;;;;;10220:19;;10062:35;;;;;;;10026:71;;;9988:109;;;;;;;;;;;;10154:26;;;;10137:43;;;10108:72;;;;;-1:-1:-1;;10108:72:26;;;;;;;10220:19;;;;;10213:26;;;10191:48;;;;;;;;;;;;;;;10320:33;;;;;-1:-1:-1;;;;;10320:33:26;;;10286:67;;;10250:103;;;-1:-1:-1;;10250:103:26;;;;;;;;;;10379:17;-1:-1:-1;;;10379:17:26;;;;;9387:1017::o;392:242:19:-;454:9;484:1;480;:5;;;476:151;;;534:1;-1:-1:-1;;;;;510:25:19;528:1;527:2;;515:1;:15;511:19;;;-1:-1:-1;;;;;510:25:19;;502:40;;;;;-1:-1:-1;;;502:40:19;;;;;;;;;;;;-1:-1:-1;;;502:40:19;;;;;;;;;;;;;;;476:151;;;607:1;-1:-1:-1;;;;;583:25:19;600:1;588;:14;584:18;;;-1:-1:-1;;;;;583:25:19;;;575:40;;;;;-1:-1:-1;;;575:40:19;;;;;;;;;;;;-1:-1:-1;;;575:40:19;;;;;;;;;;;;;;;392:242;;;;:::o;1310:122:20:-;1400:5;;;1395:16;;;;1366:8;1416:6;;;1395:28;1387:37;;;;;668:109:23;767:1;748:20;;;;;;740:29;;;;;;668:109;;;:::o;1615:122:20:-;1705:5;;;1700:16;;;;1671:8;1721:6;;;1700:28;1692:37;;;;"},"methodIdentifiers":{"increaseFeeGrowthGlobal0X128(uint256)":"0b0c061f","increaseFeeGrowthGlobal1X128(uint256)":"3f03e194","moveToTick(int24)":"af759368","setPosition(int24,int24,int128)":"541bdfb1"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"increaseFeeGrowthGlobal0X128\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"increaseFeeGrowthGlobal1X128\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"target\",\"type\":\"int24\"}],\"name\":\"moveToTick\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int128\",\"name\":\"liquidityDelta\",\"type\":\"int128\"}],\"name\":\"setPosition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/TickOverflowSafetyEchidnaTest.sol\":\"TickOverflowSafetyEchidnaTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x3ec938fd1b7cc8751df9e2ed90fd0abf32ffacc42cf4b6edbf7138629d747944\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a741475c8a3b5ae8eac7d328170c5a6811920dac22d3800197e39abe0ba42e01\",\"dweb:/ipfs/Qmc2fs5kxp437hWxtLZ6CB8g7vt3bkwKLxE7MMo9D5TAF9\"]},\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]},\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]},\"contracts/elixir-core/libraries/Tick.sol\":{\"keccak256\":\"0x20ddf3dd595491c899fde27706d0cd1d10ba2785589bd5e3d5f0830062254c3b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8d706f8b5bf653ac9cd4b5bbdfd6867eb072821b920141a283466c67f0fdf26\",\"dweb:/ipfs/QmfBZFTVNZhN4tNssH9en4Qz93tWovTijou5i6N8k9kZJM\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-core/test/TickOverflowSafetyEchidnaTest.sol\":{\"keccak256\":\"0xbfc520c932535b73d51e7916479b678f26da0cb1f1ea2bd07821e70d55340701\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://94de2d4f7d8074479dbe7be5990dc80512d092c8aa371ee3e97193f69e1a8f71\",\"dweb:/ipfs/QmYpQFdfzC9jbhMN6H9sVbx1RU1DD69EX2qp97sqb3VjYX\"]}},\"version\":1}"}},"contracts/elixir-core/test/TickTest.sol":{"TickTest":{"abi":[{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"name":"clear","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint256","name":"feeGrowthGlobal0X128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthGlobal1X128","type":"uint256"},{"internalType":"uint160","name":"secondsPerLiquidityCumulativeX128","type":"uint160"},{"internalType":"int56","name":"tickCumulative","type":"int56"},{"internalType":"uint32","name":"time","type":"uint32"},{"internalType":"uint192","name":"rewardPerLiquidityCumulativeX64","type":"uint192"}],"name":"cross","outputs":[{"internalType":"int128","name":"liquidityNet","type":"int128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int24","name":"tickCurrent","type":"int24"},{"internalType":"uint256","name":"feeGrowthGlobal0X128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthGlobal1X128","type":"uint256"}],"name":"getFeeGrowthInside","outputs":[{"internalType":"uint256","name":"feeGrowthInside0X128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1X128","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"},{"components":[{"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"},{"internalType":"uint192","name":"rewardPerLiquidityOutsideX64","type":"uint192"}],"internalType":"struct Tick.Info","name":"info","type":"tuple"}],"name":"setTick","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int24","name":"tickSpacing","type":"int24"}],"name":"tickSpacingToMaxLiquidityPerTick","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"int24","name":"","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"},{"internalType":"uint192","name":"rewardPerLiquidityOutsideX64","type":"uint192"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"int24","name":"tickCurrent","type":"int24"},{"internalType":"int128","name":"liquidityDelta","type":"int128"},{"internalType":"uint256","name":"feeGrowthGlobal0X128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthGlobal1X128","type":"uint256"},{"internalType":"uint160","name":"secondsPerLiquidityCumulativeX128","type":"uint160"},{"internalType":"int56","name":"tickCumulative","type":"int56"},{"internalType":"uint32","name":"time","type":"uint32"},{"internalType":"bool","name":"upper","type":"bool"},{"internalType":"uint128","name":"maxLiquidity","type":"uint128"},{"internalType":"uint192","name":"rewardPerLiquidityCumulativeX64","type":"uint192"}],"name":"update","outputs":[{"internalType":"bool","name":"flipped","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610d64806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806397308ed31161005b57806397308ed3146100ec578063b613524a1461010c578063e6fb02ee14610121578063f30dba93146101345761007d565b806330e3ff4c1461008257806382c66f87146100ac5780638e27463b146100cc575b600080fd5b610095610090366004610ac9565b61015c565b6040516100a3929190610cfc565b60405180910390f35b6100bf6100ba3660046109eb565b61017b565b6040516100a39190610c7e565b6100df6100da366004610a0c565b61018e565b6040516100a39190610c65565b6100ff6100fa366004610bee565b6101b4565b6040516100a39190610c70565b61011f61011a3660046109eb565b6101d2565b005b61011f61012f366004610b1d565b6101e0565b6101476101423660046109eb565b610340565b6040516100a399989796959493929190610c92565b60008061016d8188888888886103bd565b915091509550959350505050565b600061018682610469565b90505b919050565b60006101a4818d8d8d8d8d8d8d8d8d8d8d6104d3565b9c9b505050505050505050505050565b60006101c68189898989898989610714565b98975050505050505050565b6101dd600082610812565b50565b600291820b820b600090815260208181526040918290208351815492850151600f0b6001600160801b03908116600160801b029181166fffffffffffffffffffffffffffffffff1990941693909317909216919091178155908201516001820155606082015192810192909255608081015160038301805460a084015160c085015160e08601511515600160f81b027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff909216600160d81b0263ffffffff60d81b196001600160a01b03909416670100000000000000027fffffffffff0000000000000000000000000000000000000000ffffffffffffff60069890980b66ffffffffffffff1666ffffffffffffff199096169590951796909616939093179190911693909317929092169190911790556101000151600490910180546001600160c01b039092166001600160c01b0319909216919091179055565b600060208190529081526040902080546001820154600283015460038401546004909401546001600160801b03841694600160801b909404600f0b93600681900b9167010000000000000082046001600160a01b031691600160d81b810463ffffffff1691600160f81b90910460ff16906001600160c01b031689565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b1261040357505060018201546002830154610416565b8360010154880391508360020154870390505b6000808b60020b8b60020b12156104385750506001830154600284015461044b565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b60008082600281900b620d89e7198161047e57fe5b05029050600083600281900b620d89e88161049557fe5b0502905060008460020b83830360020b816104ac57fe5b0560010190508062ffffff166001600160801b038016816104c957fe5b0495945050505050565b60028b810b900b600090815260208d90526040812080546001600160801b0316826104fe828e610853565b9050856001600160801b0316816001600160801b0316111561054c576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b038281161590821615811415945015610657578d60020b8f60020b13610627578b83600101819055508a8360020181905550898360030160076101000a8154816001600160a01b0302191690836001600160a01b03160217905550888360030160006101000a81548166ffffffffffffff021916908360060b66ffffffffffffff1602179055508783600301601b6101000a81548163ffffffff021916908363ffffffff160217905550848360040160006101000a8154816001600160c01b0302191690836001600160c01b031602179055505b6003830180547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790555b82546fffffffffffffffffffffffffffffffff19166001600160801b038216178355866106b5576106b06106ab8e600f0b8560000160109054906101000a9004600f0b600f0b61090f90919063ffffffff16565b610925565b6106e2565b6106e26106ab8e600f0b8560000160109054906101000a9004600f0b600f0b61093690919063ffffffff16565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909d9c50505050505050505050505050565b600296870b870b60009081526020989098526040909720600181018054909603909555948401805490930390925560038301805463ffffffff600160d81b6001600160a01b036701000000000000008085048216909603169094027fffffffffff0000000000000000000000000000000000000000ffffffffffffff90921691909117600681810b90950390940b66ffffffffffffff1666ffffffffffffff199094169390931782810484169095039092160263ffffffff60d81b19909316929092179091556004810180546001600160c01b038082169094039093166001600160c01b03199093169290921790915554600160801b9004600f0b90565b600290810b810b60009081526020929092526040822082815560018101839055908101829055600381019190915560040180546001600160c01b0319169055565b60008082600f0b12156108b857826001600160801b03168260000384039150816001600160801b0316106108b3576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b610909565b826001600160801b03168284019150816001600160801b03161015610909576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b92915050565b8181018281121560008312151461090957600080fd5b80600f81900b811461018957600080fd5b8082038281131560008312151461090957600080fd5b8035801515811461018957600080fd5b8035600f81900b811461018957600080fd5b8035600281900b811461018957600080fd5b8035600681900b811461018957600080fd5b80356001600160801b038116811461018957600080fd5b80356001600160a01b038116811461018957600080fd5b80356001600160c01b038116811461018957600080fd5b803563ffffffff8116811461018957600080fd5b6000602082840312156109fc578081fd5b610a058261096e565b9392505050565b60008060008060008060008060008060006101608c8e031215610a2d578687fd5b610a368c61096e565b9a50610a4460208d0161096e565b9950610a5260408d0161095c565b985060608c0135975060808c01359650610a6e60a08d016109a9565b9550610a7c60c08d01610980565b9450610a8a60e08d016109d7565b9350610a996101008d0161094c565b9250610aa86101208d01610992565b9150610ab76101408d016109c0565b90509295989b509295989b9093969950565b600080600080600060a08688031215610ae0578081fd5b610ae98661096e565b9450610af76020870161096e565b9350610b056040870161096e565b94979396509394606081013594506080013592915050565b600080828403610140811215610b31578283fd5b610b3a8461096e565b925061012080601f1983011215610b4f578283fd5b610b5881610d0a565b9150610b6660208601610992565b8252610b746040860161095c565b60208301526060850135604083015260808501356060830152610b9960a08601610980565b6080830152610baa60c086016109a9565b60a0830152610bbb60e086016109d7565b60c0830152610100610bce81870161094c565b60e0840152610bde8287016109c0565b9083015250919491935090915050565b600080600080600080600060e0888a031215610c08578283fd5b610c118861096e565b96506020880135955060408801359450610c2d606089016109a9565b9350610c3b60808901610980565b9250610c4960a089016109d7565b9150610c5760c089016109c0565b905092959891949750929550565b901515815260200190565b600f9190910b815260200190565b6001600160801b0391909116815260200190565b6001600160801b03999099168952600f9790970b60208901526040880195909552606087019390935260069190910b60808601526001600160a01b031660a085015263ffffffff1660c0840152151560e08301526001600160c01b03166101008201526101200190565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715610d2657fe5b60405291905056fea26469706673582212208bf72920dbc94041515b4c333a172ebf7d9d179667e393f1b5cafb0fb0038cc464736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD64 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 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x97308ED3 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x97308ED3 EQ PUSH2 0xEC JUMPI DUP1 PUSH4 0xB613524A EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0xE6FB02EE EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0xF30DBA93 EQ PUSH2 0x134 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x30E3FF4C EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x82C66F87 EQ PUSH2 0xAC JUMPI DUP1 PUSH4 0x8E27463B EQ PUSH2 0xCC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0xAC9 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA3 SWAP3 SWAP2 SWAP1 PUSH2 0xCFC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBF PUSH2 0xBA CALLDATASIZE PUSH1 0x4 PUSH2 0x9EB JUMP JUMPDEST PUSH2 0x17B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA3 SWAP2 SWAP1 PUSH2 0xC7E JUMP JUMPDEST PUSH2 0xDF PUSH2 0xDA CALLDATASIZE PUSH1 0x4 PUSH2 0xA0C JUMP JUMPDEST PUSH2 0x18E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA3 SWAP2 SWAP1 PUSH2 0xC65 JUMP JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0xBEE JUMP JUMPDEST PUSH2 0x1B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA3 SWAP2 SWAP1 PUSH2 0xC70 JUMP JUMPDEST PUSH2 0x11F PUSH2 0x11A CALLDATASIZE PUSH1 0x4 PUSH2 0x9EB JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11F PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0xB1D JUMP JUMPDEST PUSH2 0x1E0 JUMP JUMPDEST PUSH2 0x147 PUSH2 0x142 CALLDATASIZE PUSH1 0x4 PUSH2 0x9EB JUMP JUMPDEST PUSH2 0x340 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA3 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xC92 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16D DUP2 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x3BD JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x186 DUP3 PUSH2 0x469 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A4 DUP2 DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 PUSH2 0x4D3 JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C6 DUP2 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x714 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1DD PUSH1 0x0 DUP3 PUSH2 0x812 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP3 DUP6 ADD MLOAD PUSH1 0xF SIGNEXTEND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP2 DUP2 AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR DUP2 SSTORE SWAP1 DUP3 ADD MLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x60 DUP3 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0xA0 DUP5 ADD MLOAD PUSH1 0xC0 DUP6 ADD MLOAD PUSH1 0xE0 DUP7 ADD MLOAD ISZERO ISZERO PUSH1 0x1 PUSH1 0xF8 SHL MUL PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xD8 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0xD8 SHL NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH8 0x100000000000000 MUL PUSH32 0xFFFFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFFFF PUSH1 0x6 SWAP9 SWAP1 SWAP9 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND PUSH7 0xFFFFFFFFFFFFFF NOT SWAP1 SWAP7 AND SWAP6 SWAP1 SWAP6 OR SWAP7 SWAP1 SWAP7 AND SWAP4 SWAP1 SWAP4 OR SWAP2 SWAP1 SWAP2 AND SWAP4 SWAP1 SWAP4 OR SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x100 ADD MLOAD PUSH1 0x4 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND SWAP5 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP5 DIV PUSH1 0xF SIGNEXTEND SWAP4 PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND SWAP2 PUSH8 0x100000000000000 DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV PUSH4 0xFFFFFFFF AND SWAP2 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP10 JUMP JUMPDEST PUSH1 0x2 DUP6 DUP2 SIGNEXTEND DUP1 DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP10 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP9 DUP6 SIGNEXTEND DUP6 SIGNEXTEND DUP4 MSTORE SWAP1 DUP3 KECCAK256 SWAP2 SWAP4 DUP5 SWAP4 SWAP2 SWAP3 SWAP2 DUP5 SWAP2 DUP3 SWAP2 SWAP1 DUP11 SWAP1 SIGNEXTEND SLT PUSH2 0x403 JUMPI POP POP PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH2 0x416 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SLOAD DUP9 SUB SWAP2 POP DUP4 PUSH1 0x2 ADD SLOAD DUP8 SUB SWAP1 POP JUMPDEST PUSH1 0x0 DUP1 DUP12 PUSH1 0x2 SIGNEXTEND DUP12 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x438 JUMPI POP POP PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x2 DUP5 ADD SLOAD PUSH2 0x44B JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SLOAD DUP11 SUB SWAP2 POP DUP5 PUSH1 0x2 ADD SLOAD DUP10 SUB SWAP1 POP JUMPDEST SWAP3 SWAP1 SWAP9 SUB SWAP8 SWAP1 SWAP8 SUB SWAP12 SWAP7 SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 SUB SWAP9 POP SWAP4 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E7 NOT DUP2 PUSH2 0x47E JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E8 DUP2 PUSH2 0x495 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP4 DUP4 SUB PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x4AC JUMPI INVALID JUMPDEST SDIV PUSH1 0x1 ADD SWAP1 POP DUP1 PUSH3 0xFFFFFF AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 AND DUP2 PUSH2 0x4C9 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP12 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH2 0x4FE DUP3 DUP15 PUSH2 0x853 JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT ISZERO PUSH2 0x54C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C4F PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 DUP2 AND ISZERO SWAP1 DUP3 AND ISZERO DUP2 EQ ISZERO SWAP5 POP ISZERO PUSH2 0x657 JUMPI DUP14 PUSH1 0x2 SIGNEXTEND DUP16 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x627 JUMPI DUP12 DUP4 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP11 DUP4 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP10 DUP4 PUSH1 0x3 ADD PUSH1 0x7 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP9 DUP4 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH7 0xFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x6 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP8 DUP4 PUSH1 0x3 ADD PUSH1 0x1B PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 DUP4 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xF8 SHL OR SWAP1 SSTORE JUMPDEST DUP3 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND OR DUP4 SSTORE DUP7 PUSH2 0x6B5 JUMPI PUSH2 0x6B0 PUSH2 0x6AB DUP15 PUSH1 0xF SIGNEXTEND DUP6 PUSH1 0x0 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xF SIGNEXTEND PUSH1 0xF SIGNEXTEND PUSH2 0x90F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x925 JUMP JUMPDEST PUSH2 0x6E2 JUMP JUMPDEST PUSH2 0x6E2 PUSH2 0x6AB DUP15 PUSH1 0xF SIGNEXTEND DUP6 PUSH1 0x0 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xF SIGNEXTEND PUSH1 0xF SIGNEXTEND PUSH2 0x936 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 SLOAD PUSH1 0xF SWAP2 SWAP1 SWAP2 SIGNEXTEND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP2 AND OR SWAP1 SWAP3 SSTORE POP SWAP1 SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP7 DUP8 SIGNEXTEND DUP8 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x40 SWAP1 SWAP8 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD SWAP1 SWAP7 SUB SWAP1 SWAP6 SSTORE SWAP5 DUP5 ADD DUP1 SLOAD SWAP1 SWAP4 SUB SWAP1 SWAP3 SSTORE PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xD8 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH8 0x100000000000000 DUP1 DUP6 DIV DUP3 AND SWAP1 SWAP7 SUB AND SWAP1 SWAP5 MUL PUSH32 0xFFFFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x6 DUP2 DUP2 SIGNEXTEND SWAP1 SWAP6 SUB SWAP1 SWAP5 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND PUSH7 0xFFFFFFFFFFFFFF NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR DUP3 DUP2 DIV DUP5 AND SWAP1 SWAP6 SUB SWAP1 SWAP3 AND MUL PUSH4 0xFFFFFFFF PUSH1 0xD8 SHL NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP1 DUP3 AND SWAP1 SWAP5 SUB SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0xF SIGNEXTEND SWAP1 JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP4 SWAP1 SSTORE SWAP1 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x8B8 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x0 SUB DUP5 SUB SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x8B3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C53 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x909 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 DUP5 ADD SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0x909 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C41 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP3 DUP2 SLT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x909 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 SGT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x909 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9FC JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xA05 DUP3 PUSH2 0x96E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x160 DUP13 DUP15 SUB SLT ISZERO PUSH2 0xA2D JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH2 0xA36 DUP13 PUSH2 0x96E JUMP JUMPDEST SWAP11 POP PUSH2 0xA44 PUSH1 0x20 DUP14 ADD PUSH2 0x96E JUMP JUMPDEST SWAP10 POP PUSH2 0xA52 PUSH1 0x40 DUP14 ADD PUSH2 0x95C JUMP JUMPDEST SWAP9 POP PUSH1 0x60 DUP13 ADD CALLDATALOAD SWAP8 POP PUSH1 0x80 DUP13 ADD CALLDATALOAD SWAP7 POP PUSH2 0xA6E PUSH1 0xA0 DUP14 ADD PUSH2 0x9A9 JUMP JUMPDEST SWAP6 POP PUSH2 0xA7C PUSH1 0xC0 DUP14 ADD PUSH2 0x980 JUMP JUMPDEST SWAP5 POP PUSH2 0xA8A PUSH1 0xE0 DUP14 ADD PUSH2 0x9D7 JUMP JUMPDEST SWAP4 POP PUSH2 0xA99 PUSH2 0x100 DUP14 ADD PUSH2 0x94C JUMP JUMPDEST SWAP3 POP PUSH2 0xAA8 PUSH2 0x120 DUP14 ADD PUSH2 0x992 JUMP JUMPDEST SWAP2 POP PUSH2 0xAB7 PUSH2 0x140 DUP14 ADD PUSH2 0x9C0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xAE0 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xAE9 DUP7 PUSH2 0x96E JUMP JUMPDEST SWAP5 POP PUSH2 0xAF7 PUSH1 0x20 DUP8 ADD PUSH2 0x96E JUMP JUMPDEST SWAP4 POP PUSH2 0xB05 PUSH1 0x40 DUP8 ADD PUSH2 0x96E JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH2 0x140 DUP2 SLT ISZERO PUSH2 0xB31 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xB3A DUP5 PUSH2 0x96E JUMP JUMPDEST SWAP3 POP PUSH2 0x120 DUP1 PUSH1 0x1F NOT DUP4 ADD SLT ISZERO PUSH2 0xB4F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xB58 DUP2 PUSH2 0xD0A JUMP JUMPDEST SWAP2 POP PUSH2 0xB66 PUSH1 0x20 DUP7 ADD PUSH2 0x992 JUMP JUMPDEST DUP3 MSTORE PUSH2 0xB74 PUSH1 0x40 DUP7 ADD PUSH2 0x95C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 DUP6 ADD CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0xB99 PUSH1 0xA0 DUP7 ADD PUSH2 0x980 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0xBAA PUSH1 0xC0 DUP7 ADD PUSH2 0x9A9 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0xBBB PUSH1 0xE0 DUP7 ADD PUSH2 0x9D7 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x100 PUSH2 0xBCE DUP2 DUP8 ADD PUSH2 0x94C JUMP JUMPDEST PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0xBDE DUP3 DUP8 ADD PUSH2 0x9C0 JUMP JUMPDEST SWAP1 DUP4 ADD MSTORE POP SWAP2 SWAP5 SWAP2 SWAP4 POP SWAP1 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xC08 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xC11 DUP9 PUSH2 0x96E JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH2 0xC2D PUSH1 0x60 DUP10 ADD PUSH2 0x9A9 JUMP JUMPDEST SWAP4 POP PUSH2 0xC3B PUSH1 0x80 DUP10 ADD PUSH2 0x980 JUMP JUMPDEST SWAP3 POP PUSH2 0xC49 PUSH1 0xA0 DUP10 ADD PUSH2 0x9D7 JUMP JUMPDEST SWAP2 POP PUSH2 0xC57 PUSH1 0xC0 DUP10 ADD PUSH2 0x9C0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0xF SWAP2 SWAP1 SWAP2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP10 SWAP1 SWAP10 AND DUP10 MSTORE PUSH1 0xF SWAP8 SWAP1 SWAP8 SIGNEXTEND PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x40 DUP9 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x6 SWAP2 SWAP1 SWAP2 SIGNEXTEND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xA0 DUP6 ADD MSTORE PUSH4 0xFFFFFFFF AND PUSH1 0xC0 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x120 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE 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 0xD26 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP12 0xF7 0x29 KECCAK256 0xDB 0xC9 BLOCKHASH COINBASE MLOAD JUMPDEST 0x4C CALLER GASPRICE OR 0x2E 0xBF PUSH30 0x9D179667E393F1B5CAFB0FB0038CC464736F6C6343000706003300000000 ","sourceMap":"123:2576:57:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6844:178","statements":[{"nodeType":"YulBlock","src":"6:3:178","statements":[]},{"body":{"nodeType":"YulBlock","src":"62:114:178","statements":[{"nodeType":"YulAssignment","src":"72:29:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"94:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"81:12:178"},"nodeType":"YulFunctionCall","src":"81:20:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"72:5:178"}]},{"body":{"nodeType":"YulBlock","src":"154:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"163:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"166:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"156:6:178"},"nodeType":"YulFunctionCall","src":"156:12:178"},"nodeType":"YulExpressionStatement","src":"156:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"123:5:178"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"144:5:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"137:6:178"},"nodeType":"YulFunctionCall","src":"137:13:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"130:6:178"},"nodeType":"YulFunctionCall","src":"130:21:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"120:2:178"},"nodeType":"YulFunctionCall","src":"120:32:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"113:6:178"},"nodeType":"YulFunctionCall","src":"113:40:178"},"nodeType":"YulIf","src":"110:2:178"}]},"name":"abi_decode_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"41:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"52:5:178","type":""}],"src":"14:162:178"},{"body":{"nodeType":"YulBlock","src":"231:114:178","statements":[{"nodeType":"YulAssignment","src":"241:29:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"263:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"250:12:178"},"nodeType":"YulFunctionCall","src":"250:20:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"241:5:178"}]},{"body":{"nodeType":"YulBlock","src":"323:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"332:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"335:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"325:6:178"},"nodeType":"YulFunctionCall","src":"325:12:178"},"nodeType":"YulExpressionStatement","src":"325:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"292:5:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"310:2:178","type":"","value":"15"},{"name":"value","nodeType":"YulIdentifier","src":"314:5:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"299:10:178"},"nodeType":"YulFunctionCall","src":"299:21:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"289:2:178"},"nodeType":"YulFunctionCall","src":"289:32:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"282:6:178"},"nodeType":"YulFunctionCall","src":"282:40:178"},"nodeType":"YulIf","src":"279:2:178"}]},"name":"abi_decode_t_int128","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"210:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"221:5:178","type":""}],"src":"181:164:178"},{"body":{"nodeType":"YulBlock","src":"399:113:178","statements":[{"nodeType":"YulAssignment","src":"409:29:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"431:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"418:12:178"},"nodeType":"YulFunctionCall","src":"418:20:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"409:5:178"}]},{"body":{"nodeType":"YulBlock","src":"490:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"499:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"502:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"492:6:178"},"nodeType":"YulFunctionCall","src":"492:12:178"},"nodeType":"YulExpressionStatement","src":"492:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"460:5:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"478:1:178","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"481:5:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"467:10:178"},"nodeType":"YulFunctionCall","src":"467:20:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"457:2:178"},"nodeType":"YulFunctionCall","src":"457:31:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"450:6:178"},"nodeType":"YulFunctionCall","src":"450:39:178"},"nodeType":"YulIf","src":"447:2:178"}]},"name":"abi_decode_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"378:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"389:5:178","type":""}],"src":"350:162:178"},{"body":{"nodeType":"YulBlock","src":"566:113:178","statements":[{"nodeType":"YulAssignment","src":"576:29:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"598:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"585:12:178"},"nodeType":"YulFunctionCall","src":"585:20:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"576:5:178"}]},{"body":{"nodeType":"YulBlock","src":"657:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"666:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"669:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"659:6:178"},"nodeType":"YulFunctionCall","src":"659:12:178"},"nodeType":"YulExpressionStatement","src":"659:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"627:5:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"645:1:178","type":"","value":"6"},{"name":"value","nodeType":"YulIdentifier","src":"648:5:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"634:10:178"},"nodeType":"YulFunctionCall","src":"634:20:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"624:2:178"},"nodeType":"YulFunctionCall","src":"624:31:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"617:6:178"},"nodeType":"YulFunctionCall","src":"617:39:178"},"nodeType":"YulIf","src":"614:2:178"}]},"name":"abi_decode_t_int56","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"545:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"556:5:178","type":""}],"src":"517:162:178"},{"body":{"nodeType":"YulBlock","src":"735:139:178","statements":[{"nodeType":"YulAssignment","src":"745:29:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"767:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"754:12:178"},"nodeType":"YulFunctionCall","src":"754:20:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"745:5:178"}]},{"body":{"nodeType":"YulBlock","src":"852:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"861:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"864:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"854:6:178"},"nodeType":"YulFunctionCall","src":"854:12:178"},"nodeType":"YulExpressionStatement","src":"854:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"796:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"807:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"814:34:178","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"803:3:178"},"nodeType":"YulFunctionCall","src":"803:46:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"793:2:178"},"nodeType":"YulFunctionCall","src":"793:57:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"786:6:178"},"nodeType":"YulFunctionCall","src":"786:65:178"},"nodeType":"YulIf","src":"783:2:178"}]},"name":"abi_decode_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"714:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"725:5:178","type":""}],"src":"684:190:178"},{"body":{"nodeType":"YulBlock","src":"930:147:178","statements":[{"nodeType":"YulAssignment","src":"940:29:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"962:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"949:12:178"},"nodeType":"YulFunctionCall","src":"949:20:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"940:5:178"}]},{"body":{"nodeType":"YulBlock","src":"1055:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1064:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1067:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1057:6:178"},"nodeType":"YulFunctionCall","src":"1057:12:178"},"nodeType":"YulExpressionStatement","src":"1057:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"991:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1002:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"1009:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"998:3:178"},"nodeType":"YulFunctionCall","src":"998:54:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"988:2:178"},"nodeType":"YulFunctionCall","src":"988:65:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"981:6:178"},"nodeType":"YulFunctionCall","src":"981:73:178"},"nodeType":"YulIf","src":"978:2:178"}]},"name":"abi_decode_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"909:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"920:5:178","type":""}],"src":"879:198:178"},{"body":{"nodeType":"YulBlock","src":"1133:155:178","statements":[{"nodeType":"YulAssignment","src":"1143:29:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1165:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1152:12:178"},"nodeType":"YulFunctionCall","src":"1152:20:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1143:5:178"}]},{"body":{"nodeType":"YulBlock","src":"1266:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1275:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1278:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1268:6:178"},"nodeType":"YulFunctionCall","src":"1268:12:178"},"nodeType":"YulExpressionStatement","src":"1268:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1194:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1205:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"1212:50:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1201:3:178"},"nodeType":"YulFunctionCall","src":"1201:62:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1191:2:178"},"nodeType":"YulFunctionCall","src":"1191:73:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1184:6:178"},"nodeType":"YulFunctionCall","src":"1184:81:178"},"nodeType":"YulIf","src":"1181:2:178"}]},"name":"abi_decode_t_uint192","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1112:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1123:5:178","type":""}],"src":"1082:206:178"},{"body":{"nodeType":"YulBlock","src":"1343:115:178","statements":[{"nodeType":"YulAssignment","src":"1353:29:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1375:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1362:12:178"},"nodeType":"YulFunctionCall","src":"1362:20:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1353:5:178"}]},{"body":{"nodeType":"YulBlock","src":"1436:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1445:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1448:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1438:6:178"},"nodeType":"YulFunctionCall","src":"1438:12:178"},"nodeType":"YulExpressionStatement","src":"1438:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1404:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1415:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"1422:10:178","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1411:3:178"},"nodeType":"YulFunctionCall","src":"1411:22:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1401:2:178"},"nodeType":"YulFunctionCall","src":"1401:33:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1394:6:178"},"nodeType":"YulFunctionCall","src":"1394:41:178"},"nodeType":"YulIf","src":"1391:2:178"}]},"name":"abi_decode_t_uint32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1322:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1333:5:178","type":""}],"src":"1293:165:178"},{"body":{"nodeType":"YulBlock","src":"1531:126:178","statements":[{"body":{"nodeType":"YulBlock","src":"1577:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1586:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1594:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1579:6:178"},"nodeType":"YulFunctionCall","src":"1579:22:178"},"nodeType":"YulExpressionStatement","src":"1579:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1552:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"1561:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1548:3:178"},"nodeType":"YulFunctionCall","src":"1548:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"1573:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1544:3:178"},"nodeType":"YulFunctionCall","src":"1544:32:178"},"nodeType":"YulIf","src":"1541:2:178"},{"nodeType":"YulAssignment","src":"1612:39:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1641:9:178"}],"functionName":{"name":"abi_decode_t_int24","nodeType":"YulIdentifier","src":"1622:18:178"},"nodeType":"YulFunctionCall","src":"1622:29:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1612:6:178"}]}]},"name":"abi_decode_tuple_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1497:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1508:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1520:6:178","type":""}],"src":"1463:194:178"},{"body":{"nodeType":"YulBlock","src":"1892:700:178","statements":[{"body":{"nodeType":"YulBlock","src":"1939:26:178","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1948:6:178"},{"name":"value4","nodeType":"YulIdentifier","src":"1956:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1941:6:178"},"nodeType":"YulFunctionCall","src":"1941:22:178"},"nodeType":"YulExpressionStatement","src":"1941:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1913:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"1922:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1909:3:178"},"nodeType":"YulFunctionCall","src":"1909:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"1934:3:178","type":"","value":"352"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1905:3:178"},"nodeType":"YulFunctionCall","src":"1905:33:178"},"nodeType":"YulIf","src":"1902:2:178"},{"nodeType":"YulAssignment","src":"1974:39:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2003:9:178"}],"functionName":{"name":"abi_decode_t_int24","nodeType":"YulIdentifier","src":"1984:18:178"},"nodeType":"YulFunctionCall","src":"1984:29:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1974:6:178"}]},{"nodeType":"YulAssignment","src":"2022:48:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2055:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2066:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2051:3:178"},"nodeType":"YulFunctionCall","src":"2051:18:178"}],"functionName":{"name":"abi_decode_t_int24","nodeType":"YulIdentifier","src":"2032:18:178"},"nodeType":"YulFunctionCall","src":"2032:38:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2022:6:178"}]},{"nodeType":"YulAssignment","src":"2079:49:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2113:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2124:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2109:3:178"},"nodeType":"YulFunctionCall","src":"2109:18:178"}],"functionName":{"name":"abi_decode_t_int128","nodeType":"YulIdentifier","src":"2089:19:178"},"nodeType":"YulFunctionCall","src":"2089:39:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2079:6:178"}]},{"nodeType":"YulAssignment","src":"2137:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2164:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2175:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2160:3:178"},"nodeType":"YulFunctionCall","src":"2160:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2147:12:178"},"nodeType":"YulFunctionCall","src":"2147:32:178"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"2137:6:178"}]},{"nodeType":"YulAssignment","src":"2188:43:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2215:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2226:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2211:3:178"},"nodeType":"YulFunctionCall","src":"2211:19:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2198:12:178"},"nodeType":"YulFunctionCall","src":"2198:33:178"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"2188:6:178"}]},{"nodeType":"YulAssignment","src":"2240:51:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2275:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2286:3:178","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2271:3:178"},"nodeType":"YulFunctionCall","src":"2271:19:178"}],"functionName":{"name":"abi_decode_t_uint160","nodeType":"YulIdentifier","src":"2250:20:178"},"nodeType":"YulFunctionCall","src":"2250:41:178"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"2240:6:178"}]},{"nodeType":"YulAssignment","src":"2300:49:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2333:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2344:3:178","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2329:3:178"},"nodeType":"YulFunctionCall","src":"2329:19:178"}],"functionName":{"name":"abi_decode_t_int56","nodeType":"YulIdentifier","src":"2310:18:178"},"nodeType":"YulFunctionCall","src":"2310:39:178"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"2300:6:178"}]},{"nodeType":"YulAssignment","src":"2358:50:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2392:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2403:3:178","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2388:3:178"},"nodeType":"YulFunctionCall","src":"2388:19:178"}],"functionName":{"name":"abi_decode_t_uint32","nodeType":"YulIdentifier","src":"2368:19:178"},"nodeType":"YulFunctionCall","src":"2368:40:178"},"variableNames":[{"name":"value7","nodeType":"YulIdentifier","src":"2358:6:178"}]},{"nodeType":"YulAssignment","src":"2417:48:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2449:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2460:3:178","type":"","value":"256"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2445:3:178"},"nodeType":"YulFunctionCall","src":"2445:19:178"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"2427:17:178"},"nodeType":"YulFunctionCall","src":"2427:38:178"},"variableNames":[{"name":"value8","nodeType":"YulIdentifier","src":"2417:6:178"}]},{"nodeType":"YulAssignment","src":"2474:51:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2509:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2520:3:178","type":"","value":"288"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2505:3:178"},"nodeType":"YulFunctionCall","src":"2505:19:178"}],"functionName":{"name":"abi_decode_t_uint128","nodeType":"YulIdentifier","src":"2484:20:178"},"nodeType":"YulFunctionCall","src":"2484:41:178"},"variableNames":[{"name":"value9","nodeType":"YulIdentifier","src":"2474:6:178"}]},{"nodeType":"YulAssignment","src":"2534:52:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2570:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2581:3:178","type":"","value":"320"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2566:3:178"},"nodeType":"YulFunctionCall","src":"2566:19:178"}],"functionName":{"name":"abi_decode_t_uint192","nodeType":"YulIdentifier","src":"2545:20:178"},"nodeType":"YulFunctionCall","src":"2545:41:178"},"variableNames":[{"name":"value10","nodeType":"YulIdentifier","src":"2534:7:178"}]}]},"name":"abi_decode_tuple_t_int24t_int24t_int128t_uint256t_uint256t_uint160t_int56t_uint32t_boolt_uint128t_uint192","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1777:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1788:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1800:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1808:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1816:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1824:6:178","type":""},{"name":"value4","nodeType":"YulTypedName","src":"1832:6:178","type":""},{"name":"value5","nodeType":"YulTypedName","src":"1840:6:178","type":""},{"name":"value6","nodeType":"YulTypedName","src":"1848:6:178","type":""},{"name":"value7","nodeType":"YulTypedName","src":"1856:6:178","type":""},{"name":"value8","nodeType":"YulTypedName","src":"1864:6:178","type":""},{"name":"value9","nodeType":"YulTypedName","src":"1872:6:178","type":""},{"name":"value10","nodeType":"YulTypedName","src":"1880:7:178","type":""}],"src":"1662:930:178"},{"body":{"nodeType":"YulBlock","src":"2729:344:178","statements":[{"body":{"nodeType":"YulBlock","src":"2776:26:178","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"2785:6:178"},{"name":"value4","nodeType":"YulIdentifier","src":"2793:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2778:6:178"},"nodeType":"YulFunctionCall","src":"2778:22:178"},"nodeType":"YulExpressionStatement","src":"2778:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2750:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"2759:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2746:3:178"},"nodeType":"YulFunctionCall","src":"2746:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"2771:3:178","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2742:3:178"},"nodeType":"YulFunctionCall","src":"2742:33:178"},"nodeType":"YulIf","src":"2739:2:178"},{"nodeType":"YulAssignment","src":"2811:39:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2840:9:178"}],"functionName":{"name":"abi_decode_t_int24","nodeType":"YulIdentifier","src":"2821:18:178"},"nodeType":"YulFunctionCall","src":"2821:29:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2811:6:178"}]},{"nodeType":"YulAssignment","src":"2859:48:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2892:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2903:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2888:3:178"},"nodeType":"YulFunctionCall","src":"2888:18:178"}],"functionName":{"name":"abi_decode_t_int24","nodeType":"YulIdentifier","src":"2869:18:178"},"nodeType":"YulFunctionCall","src":"2869:38:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2859:6:178"}]},{"nodeType":"YulAssignment","src":"2916:48:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2949:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2960:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2945:3:178"},"nodeType":"YulFunctionCall","src":"2945:18:178"}],"functionName":{"name":"abi_decode_t_int24","nodeType":"YulIdentifier","src":"2926:18:178"},"nodeType":"YulFunctionCall","src":"2926:38:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2916:6:178"}]},{"nodeType":"YulAssignment","src":"2973:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3000:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3011:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2996:3:178"},"nodeType":"YulFunctionCall","src":"2996:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2983:12:178"},"nodeType":"YulFunctionCall","src":"2983:32:178"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"2973:6:178"}]},{"nodeType":"YulAssignment","src":"3024:43:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3051:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3062:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3047:3:178"},"nodeType":"YulFunctionCall","src":"3047:19:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3034:12:178"},"nodeType":"YulFunctionCall","src":"3034:33:178"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"3024:6:178"}]}]},"name":"abi_decode_tuple_t_int24t_int24t_int24t_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2663:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2674:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2686:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2694:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2702:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2710:6:178","type":""},{"name":"value4","nodeType":"YulTypedName","src":"2718:6:178","type":""}],"src":"2597:476:178"},{"body":{"nodeType":"YulBlock","src":"3185:956:178","statements":[{"nodeType":"YulVariableDeclaration","src":"3195:33:178","value":{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3209:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"3218:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3205:3:178"},"nodeType":"YulFunctionCall","src":"3205:23:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3199:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3253:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3262:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3270:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3255:6:178"},"nodeType":"YulFunctionCall","src":"3255:22:178"},"nodeType":"YulExpressionStatement","src":"3255:22:178"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3244:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"3248:3:178","type":"","value":"320"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3240:3:178"},"nodeType":"YulFunctionCall","src":"3240:12:178"},"nodeType":"YulIf","src":"3237:2:178"},{"nodeType":"YulAssignment","src":"3288:39:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3317:9:178"}],"functionName":{"name":"abi_decode_t_int24","nodeType":"YulIdentifier","src":"3298:18:178"},"nodeType":"YulFunctionCall","src":"3298:29:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3288:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"3336:16:178","value":{"kind":"number","nodeType":"YulLiteral","src":"3346:6:178","type":"","value":"0x0120"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3340:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3390:26:178","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"3399:6:178"},{"name":"value1","nodeType":"YulIdentifier","src":"3407:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3392:6:178"},"nodeType":"YulFunctionCall","src":"3392:22:178"},"nodeType":"YulExpressionStatement","src":"3392:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3372:2:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3380:2:178","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3376:3:178"},"nodeType":"YulFunctionCall","src":"3376:7:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3368:3:178"},"nodeType":"YulFunctionCall","src":"3368:16:178"},{"name":"_2","nodeType":"YulIdentifier","src":"3386:2:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3364:3:178"},"nodeType":"YulFunctionCall","src":"3364:25:178"},"nodeType":"YulIf","src":"3361:2:178"},{"nodeType":"YulVariableDeclaration","src":"3425:31:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3453:2:178"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"3438:14:178"},"nodeType":"YulFunctionCall","src":"3438:18:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3429:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3472:5:178"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3504:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3515:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3500:3:178"},"nodeType":"YulFunctionCall","src":"3500:18:178"}],"functionName":{"name":"abi_decode_t_uint128","nodeType":"YulIdentifier","src":"3479:20:178"},"nodeType":"YulFunctionCall","src":"3479:40:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3465:6:178"},"nodeType":"YulFunctionCall","src":"3465:55:178"},"nodeType":"YulExpressionStatement","src":"3465:55:178"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3540:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"3547:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3536:3:178"},"nodeType":"YulFunctionCall","src":"3536:14:178"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3576:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3587:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3572:3:178"},"nodeType":"YulFunctionCall","src":"3572:18:178"}],"functionName":{"name":"abi_decode_t_int128","nodeType":"YulIdentifier","src":"3552:19:178"},"nodeType":"YulFunctionCall","src":"3552:39:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3529:6:178"},"nodeType":"YulFunctionCall","src":"3529:63:178"},"nodeType":"YulExpressionStatement","src":"3529:63:178"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3612:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"3619:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3608:3:178"},"nodeType":"YulFunctionCall","src":"3608:14:178"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3641:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3652:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3637:3:178"},"nodeType":"YulFunctionCall","src":"3637:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3624:12:178"},"nodeType":"YulFunctionCall","src":"3624:32:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3601:6:178"},"nodeType":"YulFunctionCall","src":"3601:56:178"},"nodeType":"YulExpressionStatement","src":"3601:56:178"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3677:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"3684:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3673:3:178"},"nodeType":"YulFunctionCall","src":"3673:14:178"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3706:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3717:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3702:3:178"},"nodeType":"YulFunctionCall","src":"3702:19:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3689:12:178"},"nodeType":"YulFunctionCall","src":"3689:33:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3666:6:178"},"nodeType":"YulFunctionCall","src":"3666:57:178"},"nodeType":"YulExpressionStatement","src":"3666:57:178"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3743:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"3750:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3739:3:178"},"nodeType":"YulFunctionCall","src":"3739:15:178"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3779:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3790:3:178","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3775:3:178"},"nodeType":"YulFunctionCall","src":"3775:19:178"}],"functionName":{"name":"abi_decode_t_int56","nodeType":"YulIdentifier","src":"3756:18:178"},"nodeType":"YulFunctionCall","src":"3756:39:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3732:6:178"},"nodeType":"YulFunctionCall","src":"3732:64:178"},"nodeType":"YulExpressionStatement","src":"3732:64:178"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3816:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"3823:3:178","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3812:3:178"},"nodeType":"YulFunctionCall","src":"3812:15:178"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3854:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3865:3:178","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3850:3:178"},"nodeType":"YulFunctionCall","src":"3850:19:178"}],"functionName":{"name":"abi_decode_t_uint160","nodeType":"YulIdentifier","src":"3829:20:178"},"nodeType":"YulFunctionCall","src":"3829:41:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3805:6:178"},"nodeType":"YulFunctionCall","src":"3805:66:178"},"nodeType":"YulExpressionStatement","src":"3805:66:178"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3891:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"3898:3:178","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3887:3:178"},"nodeType":"YulFunctionCall","src":"3887:15:178"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3928:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3939:3:178","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3924:3:178"},"nodeType":"YulFunctionCall","src":"3924:19:178"}],"functionName":{"name":"abi_decode_t_uint32","nodeType":"YulIdentifier","src":"3904:19:178"},"nodeType":"YulFunctionCall","src":"3904:40:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3880:6:178"},"nodeType":"YulFunctionCall","src":"3880:65:178"},"nodeType":"YulExpressionStatement","src":"3880:65:178"},{"nodeType":"YulVariableDeclaration","src":"3954:13:178","value":{"kind":"number","nodeType":"YulLiteral","src":"3964:3:178","type":"","value":"256"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"3958:2:178","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3987:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"3994:3:178","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3983:3:178"},"nodeType":"YulFunctionCall","src":"3983:15:178"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4022:9:178"},{"name":"_3","nodeType":"YulIdentifier","src":"4033:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4018:3:178"},"nodeType":"YulFunctionCall","src":"4018:18:178"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"4000:17:178"},"nodeType":"YulFunctionCall","src":"4000:37:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3976:6:178"},"nodeType":"YulFunctionCall","src":"3976:62:178"},"nodeType":"YulExpressionStatement","src":"3976:62:178"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4058:5:178"},{"name":"_3","nodeType":"YulIdentifier","src":"4065:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4054:3:178"},"nodeType":"YulFunctionCall","src":"4054:14:178"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4095:9:178"},{"name":"_2","nodeType":"YulIdentifier","src":"4106:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4091:3:178"},"nodeType":"YulFunctionCall","src":"4091:18:178"}],"functionName":{"name":"abi_decode_t_uint192","nodeType":"YulIdentifier","src":"4070:20:178"},"nodeType":"YulFunctionCall","src":"4070:40:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4047:6:178"},"nodeType":"YulFunctionCall","src":"4047:64:178"},"nodeType":"YulExpressionStatement","src":"4047:64:178"},{"nodeType":"YulAssignment","src":"4120:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"4130:5:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4120:6:178"}]}]},"name":"abi_decode_tuple_t_int24t_struct$_Info_$6335_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3143:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3154:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3166:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3174:6:178","type":""}],"src":"3078:1063:178"},{"body":{"nodeType":"YulBlock","src":"4313:465:178","statements":[{"body":{"nodeType":"YulBlock","src":"4360:26:178","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"4369:6:178"},{"name":"value4","nodeType":"YulIdentifier","src":"4377:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4362:6:178"},"nodeType":"YulFunctionCall","src":"4362:22:178"},"nodeType":"YulExpressionStatement","src":"4362:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4334:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"4343:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4330:3:178"},"nodeType":"YulFunctionCall","src":"4330:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"4355:3:178","type":"","value":"224"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4326:3:178"},"nodeType":"YulFunctionCall","src":"4326:33:178"},"nodeType":"YulIf","src":"4323:2:178"},{"nodeType":"YulAssignment","src":"4395:39:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4424:9:178"}],"functionName":{"name":"abi_decode_t_int24","nodeType":"YulIdentifier","src":"4405:18:178"},"nodeType":"YulFunctionCall","src":"4405:29:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4395:6:178"}]},{"nodeType":"YulAssignment","src":"4443:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4470:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4481:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4466:3:178"},"nodeType":"YulFunctionCall","src":"4466:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4453:12:178"},"nodeType":"YulFunctionCall","src":"4453:32:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4443:6:178"}]},{"nodeType":"YulAssignment","src":"4494:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4521:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4532:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4517:3:178"},"nodeType":"YulFunctionCall","src":"4517:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4504:12:178"},"nodeType":"YulFunctionCall","src":"4504:32:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4494:6:178"}]},{"nodeType":"YulAssignment","src":"4545:50:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4580:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4591:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4576:3:178"},"nodeType":"YulFunctionCall","src":"4576:18:178"}],"functionName":{"name":"abi_decode_t_uint160","nodeType":"YulIdentifier","src":"4555:20:178"},"nodeType":"YulFunctionCall","src":"4555:40:178"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4545:6:178"}]},{"nodeType":"YulAssignment","src":"4604:49:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4637:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4648:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4633:3:178"},"nodeType":"YulFunctionCall","src":"4633:19:178"}],"functionName":{"name":"abi_decode_t_int56","nodeType":"YulIdentifier","src":"4614:18:178"},"nodeType":"YulFunctionCall","src":"4614:39:178"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"4604:6:178"}]},{"nodeType":"YulAssignment","src":"4662:50:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4696:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4707:3:178","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4692:3:178"},"nodeType":"YulFunctionCall","src":"4692:19:178"}],"functionName":{"name":"abi_decode_t_uint32","nodeType":"YulIdentifier","src":"4672:19:178"},"nodeType":"YulFunctionCall","src":"4672:40:178"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"4662:6:178"}]},{"nodeType":"YulAssignment","src":"4721:51:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4756:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4767:3:178","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4752:3:178"},"nodeType":"YulFunctionCall","src":"4752:19:178"}],"functionName":{"name":"abi_decode_t_uint192","nodeType":"YulIdentifier","src":"4731:20:178"},"nodeType":"YulFunctionCall","src":"4731:41:178"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"4721:6:178"}]}]},"name":"abi_decode_tuple_t_int24t_uint256t_uint256t_uint160t_int56t_uint32t_uint192","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4231:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4242:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4254:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4262:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4270:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4278:6:178","type":""},{"name":"value4","nodeType":"YulTypedName","src":"4286:6:178","type":""},{"name":"value5","nodeType":"YulTypedName","src":"4294:6:178","type":""},{"name":"value6","nodeType":"YulTypedName","src":"4302:6:178","type":""}],"src":"4146:632:178"},{"body":{"nodeType":"YulBlock","src":"4878:92:178","statements":[{"nodeType":"YulAssignment","src":"4888:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4900:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4911:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4896:3:178"},"nodeType":"YulFunctionCall","src":"4896:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4888:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4930:9:178"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4955:6:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4948:6:178"},"nodeType":"YulFunctionCall","src":"4948:14:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4941:6:178"},"nodeType":"YulFunctionCall","src":"4941:22:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4923:6:178"},"nodeType":"YulFunctionCall","src":"4923:41:178"},"nodeType":"YulExpressionStatement","src":"4923:41:178"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4847:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4858:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4869:4:178","type":""}],"src":"4783:187:178"},{"body":{"nodeType":"YulBlock","src":"5074:92:178","statements":[{"nodeType":"YulAssignment","src":"5084:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5096:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5107:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5092:3:178"},"nodeType":"YulFunctionCall","src":"5092:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5084:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5126:9:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5148:2:178","type":"","value":"15"},{"name":"value0","nodeType":"YulIdentifier","src":"5152:6:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"5137:10:178"},"nodeType":"YulFunctionCall","src":"5137:22:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5119:6:178"},"nodeType":"YulFunctionCall","src":"5119:41:178"},"nodeType":"YulExpressionStatement","src":"5119:41:178"}]},"name":"abi_encode_tuple_t_int128__to_t_int128__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5043:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5054:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5065:4:178","type":""}],"src":"4975:191:178"},{"body":{"nodeType":"YulBlock","src":"5272:117:178","statements":[{"nodeType":"YulAssignment","src":"5282:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5294:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5305:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5290:3:178"},"nodeType":"YulFunctionCall","src":"5290:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5282:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5324:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5339:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"5347:34:178","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5335:3:178"},"nodeType":"YulFunctionCall","src":"5335:47:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5317:6:178"},"nodeType":"YulFunctionCall","src":"5317:66:178"},"nodeType":"YulExpressionStatement","src":"5317:66:178"}]},"name":"abi_encode_tuple_t_uint128__to_t_uint128__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5241:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5252:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5263:4:178","type":""}],"src":"5171:218:178"},{"body":{"nodeType":"YulBlock","src":"5705:637:178","statements":[{"nodeType":"YulAssignment","src":"5715:27:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5727:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5738:3:178","type":"","value":"288"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5723:3:178"},"nodeType":"YulFunctionCall","src":"5723:19:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5715:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5758:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5773:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"5781:34:178","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5769:3:178"},"nodeType":"YulFunctionCall","src":"5769:47:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5751:6:178"},"nodeType":"YulFunctionCall","src":"5751:66:178"},"nodeType":"YulExpressionStatement","src":"5751:66:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5837:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5848:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5833:3:178"},"nodeType":"YulFunctionCall","src":"5833:18:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5864:2:178","type":"","value":"15"},{"name":"value1","nodeType":"YulIdentifier","src":"5868:6:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"5853:10:178"},"nodeType":"YulFunctionCall","src":"5853:22:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5826:6:178"},"nodeType":"YulFunctionCall","src":"5826:50:178"},"nodeType":"YulExpressionStatement","src":"5826:50:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5896:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5907:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5892:3:178"},"nodeType":"YulFunctionCall","src":"5892:18:178"},{"name":"value2","nodeType":"YulIdentifier","src":"5912:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5885:6:178"},"nodeType":"YulFunctionCall","src":"5885:34:178"},"nodeType":"YulExpressionStatement","src":"5885:34:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5939:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5950:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5935:3:178"},"nodeType":"YulFunctionCall","src":"5935:18:178"},{"name":"value3","nodeType":"YulIdentifier","src":"5955:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5928:6:178"},"nodeType":"YulFunctionCall","src":"5928:34:178"},"nodeType":"YulExpressionStatement","src":"5928:34:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5982:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5993:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5978:3:178"},"nodeType":"YulFunctionCall","src":"5978:19:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6010:1:178","type":"","value":"6"},{"name":"value4","nodeType":"YulIdentifier","src":"6013:6:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"5999:10:178"},"nodeType":"YulFunctionCall","src":"5999:21:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5971:6:178"},"nodeType":"YulFunctionCall","src":"5971:50:178"},"nodeType":"YulExpressionStatement","src":"5971:50:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6041:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"6052:3:178","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6037:3:178"},"nodeType":"YulFunctionCall","src":"6037:19:178"},{"arguments":[{"name":"value5","nodeType":"YulIdentifier","src":"6062:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6070:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6058:3:178"},"nodeType":"YulFunctionCall","src":"6058:55:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6030:6:178"},"nodeType":"YulFunctionCall","src":"6030:84:178"},"nodeType":"YulExpressionStatement","src":"6030:84:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6134:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"6145:3:178","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6130:3:178"},"nodeType":"YulFunctionCall","src":"6130:19:178"},{"arguments":[{"name":"value6","nodeType":"YulIdentifier","src":"6155:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6163:10:178","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6151:3:178"},"nodeType":"YulFunctionCall","src":"6151:23:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6123:6:178"},"nodeType":"YulFunctionCall","src":"6123:52:178"},"nodeType":"YulExpressionStatement","src":"6123:52:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6195:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"6206:3:178","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6191:3:178"},"nodeType":"YulFunctionCall","src":"6191:19:178"},{"arguments":[{"arguments":[{"name":"value7","nodeType":"YulIdentifier","src":"6226:6:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6219:6:178"},"nodeType":"YulFunctionCall","src":"6219:14:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6212:6:178"},"nodeType":"YulFunctionCall","src":"6212:22:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6184:6:178"},"nodeType":"YulFunctionCall","src":"6184:51:178"},"nodeType":"YulExpressionStatement","src":"6184:51:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6255:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"6266:3:178","type":"","value":"256"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6251:3:178"},"nodeType":"YulFunctionCall","src":"6251:19:178"},{"arguments":[{"name":"value8","nodeType":"YulIdentifier","src":"6276:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6284:50:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6272:3:178"},"nodeType":"YulFunctionCall","src":"6272:63:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6244:6:178"},"nodeType":"YulFunctionCall","src":"6244:92:178"},"nodeType":"YulExpressionStatement","src":"6244:92:178"}]},"name":"abi_encode_tuple_t_uint128_t_int128_t_uint256_t_uint256_t_int56_t_uint160_t_uint32_t_bool_t_uint192__to_t_uint128_t_int128_t_uint256_t_uint256_t_int56_t_uint160_t_uint32_t_bool_t_uint192__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5610:9:178","type":""},{"name":"value8","nodeType":"YulTypedName","src":"5621:6:178","type":""},{"name":"value7","nodeType":"YulTypedName","src":"5629:6:178","type":""},{"name":"value6","nodeType":"YulTypedName","src":"5637:6:178","type":""},{"name":"value5","nodeType":"YulTypedName","src":"5645:6:178","type":""},{"name":"value4","nodeType":"YulTypedName","src":"5653:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"5661:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5669:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5677:6:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5685:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5696:4:178","type":""}],"src":"5394:948:178"},{"body":{"nodeType":"YulBlock","src":"6476:119:178","statements":[{"nodeType":"YulAssignment","src":"6486:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6498:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"6509:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6494:3:178"},"nodeType":"YulFunctionCall","src":"6494:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6486:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6528:9:178"},{"name":"value0","nodeType":"YulIdentifier","src":"6539:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6521:6:178"},"nodeType":"YulFunctionCall","src":"6521:25:178"},"nodeType":"YulExpressionStatement","src":"6521:25:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6566:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"6577:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6562:3:178"},"nodeType":"YulFunctionCall","src":"6562:18:178"},{"name":"value1","nodeType":"YulIdentifier","src":"6582:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6555:6:178"},"nodeType":"YulFunctionCall","src":"6555:34:178"},"nodeType":"YulExpressionStatement","src":"6555:34:178"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6437:9:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6448:6:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6456:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6467:4:178","type":""}],"src":"6347:248:178"},{"body":{"nodeType":"YulBlock","src":"6644:198:178","statements":[{"nodeType":"YulAssignment","src":"6654:19:178","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6670:2:178","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6664:5:178"},"nodeType":"YulFunctionCall","src":"6664:9:178"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6654:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"6682:35:178","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6704:6:178"},{"name":"size","nodeType":"YulIdentifier","src":"6712:4:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6700:3:178"},"nodeType":"YulFunctionCall","src":"6700:17:178"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"6686:10:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"6792:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"6794:7:178"},"nodeType":"YulFunctionCall","src":"6794:9:178"},"nodeType":"YulExpressionStatement","src":"6794:9:178"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"6735:10:178"},{"kind":"number","nodeType":"YulLiteral","src":"6747:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6732:2:178"},"nodeType":"YulFunctionCall","src":"6732:34:178"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"6771:10:178"},{"name":"memPtr","nodeType":"YulIdentifier","src":"6783:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6768:2:178"},"nodeType":"YulFunctionCall","src":"6768:22:178"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6729:2:178"},"nodeType":"YulFunctionCall","src":"6729:62:178"},"nodeType":"YulIf","src":"6726:2:178"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6821:2:178","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"6825:10:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6814:6:178"},"nodeType":"YulFunctionCall","src":"6814:22:178"},"nodeType":"YulExpressionStatement","src":"6814:22:178"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"6624:4:178","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"6633:6:178","type":""}],"src":"6600:242:178"}]},"contents":"{\n    { }\n    function abi_decode_t_bool(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_t_int128(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, signextend(15, value))) { revert(0, 0) }\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_int56(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, signextend(6, 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_t_uint160(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_t_uint192(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_t_uint32(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_int24(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := abi_decode_t_int24(headStart)\n    }\n    function abi_decode_tuple_t_int24t_int24t_int128t_uint256t_uint256t_uint160t_int56t_uint32t_boolt_uint128t_uint192(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10\n    {\n        if slt(sub(dataEnd, headStart), 352) { revert(value4, value4) }\n        value0 := abi_decode_t_int24(headStart)\n        value1 := abi_decode_t_int24(add(headStart, 32))\n        value2 := abi_decode_t_int128(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n        value5 := abi_decode_t_uint160(add(headStart, 160))\n        value6 := abi_decode_t_int56(add(headStart, 192))\n        value7 := abi_decode_t_uint32(add(headStart, 224))\n        value8 := abi_decode_t_bool(add(headStart, 256))\n        value9 := abi_decode_t_uint128(add(headStart, 288))\n        value10 := abi_decode_t_uint192(add(headStart, 320))\n    }\n    function abi_decode_tuple_t_int24t_int24t_int24t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        value0 := abi_decode_t_int24(headStart)\n        value1 := abi_decode_t_int24(add(headStart, 32))\n        value2 := abi_decode_t_int24(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n    }\n    function abi_decode_tuple_t_int24t_struct$_Info_$6335_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        let _1 := sub(dataEnd, headStart)\n        if slt(_1, 320) { revert(value0, value0) }\n        value0 := abi_decode_t_int24(headStart)\n        let _2 := 0x0120\n        if slt(add(_1, not(31)), _2) { revert(value1, value1) }\n        let value := allocateMemory(_2)\n        mstore(value, abi_decode_t_uint128(add(headStart, 32)))\n        mstore(add(value, 32), abi_decode_t_int128(add(headStart, 64)))\n        mstore(add(value, 64), calldataload(add(headStart, 96)))\n        mstore(add(value, 96), calldataload(add(headStart, 128)))\n        mstore(add(value, 128), abi_decode_t_int56(add(headStart, 160)))\n        mstore(add(value, 160), abi_decode_t_uint160(add(headStart, 192)))\n        mstore(add(value, 192), abi_decode_t_uint32(add(headStart, 224)))\n        let _3 := 256\n        mstore(add(value, 224), abi_decode_t_bool(add(headStart, _3)))\n        mstore(add(value, _3), abi_decode_t_uint192(add(headStart, _2)))\n        value1 := value\n    }\n    function abi_decode_tuple_t_int24t_uint256t_uint256t_uint160t_int56t_uint32t_uint192(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(value4, value4) }\n        value0 := abi_decode_t_int24(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := abi_decode_t_uint160(add(headStart, 96))\n        value4 := abi_decode_t_int56(add(headStart, 128))\n        value5 := abi_decode_t_uint32(add(headStart, 160))\n        value6 := abi_decode_t_uint192(add(headStart, 192))\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_int128__to_t_int128__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, signextend(15, value0))\n    }\n    function abi_encode_tuple_t_uint128__to_t_uint128__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint128_t_int128_t_uint256_t_uint256_t_int56_t_uint160_t_uint32_t_bool_t_uint192__to_t_uint128_t_int128_t_uint256_t_uint256_t_int56_t_uint160_t_uint32_t_bool_t_uint192__fromStack_reversed(headStart, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 288)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), signextend(15, value1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), signextend(6, value4))\n        mstore(add(headStart, 160), and(value5, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 192), and(value6, 0xffffffff))\n        mstore(add(headStart, 224), iszero(iszero(value7)))\n        mstore(add(headStart, 256), and(value8, 0xffffffffffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\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}","id":178,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c806397308ed31161005b57806397308ed3146100ec578063b613524a1461010c578063e6fb02ee14610121578063f30dba93146101345761007d565b806330e3ff4c1461008257806382c66f87146100ac5780638e27463b146100cc575b600080fd5b610095610090366004610ac9565b61015c565b6040516100a3929190610cfc565b60405180910390f35b6100bf6100ba3660046109eb565b61017b565b6040516100a39190610c7e565b6100df6100da366004610a0c565b61018e565b6040516100a39190610c65565b6100ff6100fa366004610bee565b6101b4565b6040516100a39190610c70565b61011f61011a3660046109eb565b6101d2565b005b61011f61012f366004610b1d565b6101e0565b6101476101423660046109eb565b610340565b6040516100a399989796959493929190610c92565b60008061016d8188888888886103bd565b915091509550959350505050565b600061018682610469565b90505b919050565b60006101a4818d8d8d8d8d8d8d8d8d8d8d6104d3565b9c9b505050505050505050505050565b60006101c68189898989898989610714565b98975050505050505050565b6101dd600082610812565b50565b600291820b820b600090815260208181526040918290208351815492850151600f0b6001600160801b03908116600160801b029181166fffffffffffffffffffffffffffffffff1990941693909317909216919091178155908201516001820155606082015192810192909255608081015160038301805460a084015160c085015160e08601511515600160f81b027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff909216600160d81b0263ffffffff60d81b196001600160a01b03909416670100000000000000027fffffffffff0000000000000000000000000000000000000000ffffffffffffff60069890980b66ffffffffffffff1666ffffffffffffff199096169590951796909616939093179190911693909317929092169190911790556101000151600490910180546001600160c01b039092166001600160c01b0319909216919091179055565b600060208190529081526040902080546001820154600283015460038401546004909401546001600160801b03841694600160801b909404600f0b93600681900b9167010000000000000082046001600160a01b031691600160d81b810463ffffffff1691600160f81b90910460ff16906001600160c01b031689565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b1261040357505060018201546002830154610416565b8360010154880391508360020154870390505b6000808b60020b8b60020b12156104385750506001830154600284015461044b565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b60008082600281900b620d89e7198161047e57fe5b05029050600083600281900b620d89e88161049557fe5b0502905060008460020b83830360020b816104ac57fe5b0560010190508062ffffff166001600160801b038016816104c957fe5b0495945050505050565b60028b810b900b600090815260208d90526040812080546001600160801b0316826104fe828e610853565b9050856001600160801b0316816001600160801b0316111561054c576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b038281161590821615811415945015610657578d60020b8f60020b13610627578b83600101819055508a8360020181905550898360030160076101000a8154816001600160a01b0302191690836001600160a01b03160217905550888360030160006101000a81548166ffffffffffffff021916908360060b66ffffffffffffff1602179055508783600301601b6101000a81548163ffffffff021916908363ffffffff160217905550848360040160006101000a8154816001600160c01b0302191690836001600160c01b031602179055505b6003830180547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790555b82546fffffffffffffffffffffffffffffffff19166001600160801b038216178355866106b5576106b06106ab8e600f0b8560000160109054906101000a9004600f0b600f0b61090f90919063ffffffff16565b610925565b6106e2565b6106e26106ab8e600f0b8560000160109054906101000a9004600f0b600f0b61093690919063ffffffff16565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909d9c50505050505050505050505050565b600296870b870b60009081526020989098526040909720600181018054909603909555948401805490930390925560038301805463ffffffff600160d81b6001600160a01b036701000000000000008085048216909603169094027fffffffffff0000000000000000000000000000000000000000ffffffffffffff90921691909117600681810b90950390940b66ffffffffffffff1666ffffffffffffff199094169390931782810484169095039092160263ffffffff60d81b19909316929092179091556004810180546001600160c01b038082169094039093166001600160c01b03199093169290921790915554600160801b9004600f0b90565b600290810b810b60009081526020929092526040822082815560018101839055908101829055600381019190915560040180546001600160c01b0319169055565b60008082600f0b12156108b857826001600160801b03168260000384039150816001600160801b0316106108b3576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b610909565b826001600160801b03168284019150816001600160801b03161015610909576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b92915050565b8181018281121560008312151461090957600080fd5b80600f81900b811461018957600080fd5b8082038281131560008312151461090957600080fd5b8035801515811461018957600080fd5b8035600f81900b811461018957600080fd5b8035600281900b811461018957600080fd5b8035600681900b811461018957600080fd5b80356001600160801b038116811461018957600080fd5b80356001600160a01b038116811461018957600080fd5b80356001600160c01b038116811461018957600080fd5b803563ffffffff8116811461018957600080fd5b6000602082840312156109fc578081fd5b610a058261096e565b9392505050565b60008060008060008060008060008060006101608c8e031215610a2d578687fd5b610a368c61096e565b9a50610a4460208d0161096e565b9950610a5260408d0161095c565b985060608c0135975060808c01359650610a6e60a08d016109a9565b9550610a7c60c08d01610980565b9450610a8a60e08d016109d7565b9350610a996101008d0161094c565b9250610aa86101208d01610992565b9150610ab76101408d016109c0565b90509295989b509295989b9093969950565b600080600080600060a08688031215610ae0578081fd5b610ae98661096e565b9450610af76020870161096e565b9350610b056040870161096e565b94979396509394606081013594506080013592915050565b600080828403610140811215610b31578283fd5b610b3a8461096e565b925061012080601f1983011215610b4f578283fd5b610b5881610d0a565b9150610b6660208601610992565b8252610b746040860161095c565b60208301526060850135604083015260808501356060830152610b9960a08601610980565b6080830152610baa60c086016109a9565b60a0830152610bbb60e086016109d7565b60c0830152610100610bce81870161094c565b60e0840152610bde8287016109c0565b9083015250919491935090915050565b600080600080600080600060e0888a031215610c08578283fd5b610c118861096e565b96506020880135955060408801359450610c2d606089016109a9565b9350610c3b60808901610980565b9250610c4960a089016109d7565b9150610c5760c089016109c0565b905092959891949750929550565b901515815260200190565b600f9190910b815260200190565b6001600160801b0391909116815260200190565b6001600160801b03999099168952600f9790970b60208901526040880195909552606087019390935260069190910b60808601526001600160a01b031660a085015263ffffffff1660c0840152151560e08301526001600160c01b03166101008201526101200190565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715610d2657fe5b60405291905056fea26469706673582212208bf72920dbc94041515b4c333a172ebf7d9d179667e393f1b5cafb0fb0038cc464736f6c63430007060033","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 0x97308ED3 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x97308ED3 EQ PUSH2 0xEC JUMPI DUP1 PUSH4 0xB613524A EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0xE6FB02EE EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0xF30DBA93 EQ PUSH2 0x134 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x30E3FF4C EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x82C66F87 EQ PUSH2 0xAC JUMPI DUP1 PUSH4 0x8E27463B EQ PUSH2 0xCC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0xAC9 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA3 SWAP3 SWAP2 SWAP1 PUSH2 0xCFC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBF PUSH2 0xBA CALLDATASIZE PUSH1 0x4 PUSH2 0x9EB JUMP JUMPDEST PUSH2 0x17B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA3 SWAP2 SWAP1 PUSH2 0xC7E JUMP JUMPDEST PUSH2 0xDF PUSH2 0xDA CALLDATASIZE PUSH1 0x4 PUSH2 0xA0C JUMP JUMPDEST PUSH2 0x18E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA3 SWAP2 SWAP1 PUSH2 0xC65 JUMP JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0xBEE JUMP JUMPDEST PUSH2 0x1B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA3 SWAP2 SWAP1 PUSH2 0xC70 JUMP JUMPDEST PUSH2 0x11F PUSH2 0x11A CALLDATASIZE PUSH1 0x4 PUSH2 0x9EB JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11F PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0xB1D JUMP JUMPDEST PUSH2 0x1E0 JUMP JUMPDEST PUSH2 0x147 PUSH2 0x142 CALLDATASIZE PUSH1 0x4 PUSH2 0x9EB JUMP JUMPDEST PUSH2 0x340 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA3 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xC92 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16D DUP2 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x3BD JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x186 DUP3 PUSH2 0x469 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A4 DUP2 DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 PUSH2 0x4D3 JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C6 DUP2 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x714 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1DD PUSH1 0x0 DUP3 PUSH2 0x812 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP3 DUP6 ADD MLOAD PUSH1 0xF SIGNEXTEND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP2 DUP2 AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR DUP2 SSTORE SWAP1 DUP3 ADD MLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x60 DUP3 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0xA0 DUP5 ADD MLOAD PUSH1 0xC0 DUP6 ADD MLOAD PUSH1 0xE0 DUP7 ADD MLOAD ISZERO ISZERO PUSH1 0x1 PUSH1 0xF8 SHL MUL PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xD8 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0xD8 SHL NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH8 0x100000000000000 MUL PUSH32 0xFFFFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFFFF PUSH1 0x6 SWAP9 SWAP1 SWAP9 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND PUSH7 0xFFFFFFFFFFFFFF NOT SWAP1 SWAP7 AND SWAP6 SWAP1 SWAP6 OR SWAP7 SWAP1 SWAP7 AND SWAP4 SWAP1 SWAP4 OR SWAP2 SWAP1 SWAP2 AND SWAP4 SWAP1 SWAP4 OR SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x100 ADD MLOAD PUSH1 0x4 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND SWAP5 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP5 DIV PUSH1 0xF SIGNEXTEND SWAP4 PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND SWAP2 PUSH8 0x100000000000000 DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV PUSH4 0xFFFFFFFF AND SWAP2 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND DUP10 JUMP JUMPDEST PUSH1 0x2 DUP6 DUP2 SIGNEXTEND DUP1 DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP10 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP9 DUP6 SIGNEXTEND DUP6 SIGNEXTEND DUP4 MSTORE SWAP1 DUP3 KECCAK256 SWAP2 SWAP4 DUP5 SWAP4 SWAP2 SWAP3 SWAP2 DUP5 SWAP2 DUP3 SWAP2 SWAP1 DUP11 SWAP1 SIGNEXTEND SLT PUSH2 0x403 JUMPI POP POP PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH2 0x416 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SLOAD DUP9 SUB SWAP2 POP DUP4 PUSH1 0x2 ADD SLOAD DUP8 SUB SWAP1 POP JUMPDEST PUSH1 0x0 DUP1 DUP12 PUSH1 0x2 SIGNEXTEND DUP12 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x438 JUMPI POP POP PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x2 DUP5 ADD SLOAD PUSH2 0x44B JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SLOAD DUP11 SUB SWAP2 POP DUP5 PUSH1 0x2 ADD SLOAD DUP10 SUB SWAP1 POP JUMPDEST SWAP3 SWAP1 SWAP9 SUB SWAP8 SWAP1 SWAP8 SUB SWAP12 SWAP7 SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 SUB SWAP9 POP SWAP4 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E7 NOT DUP2 PUSH2 0x47E JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E8 DUP2 PUSH2 0x495 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP4 DUP4 SUB PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x4AC JUMPI INVALID JUMPDEST SDIV PUSH1 0x1 ADD SWAP1 POP DUP1 PUSH3 0xFFFFFF AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 AND DUP2 PUSH2 0x4C9 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP12 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH2 0x4FE DUP3 DUP15 PUSH2 0x853 JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT ISZERO PUSH2 0x54C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C4F PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 DUP2 AND ISZERO SWAP1 DUP3 AND ISZERO DUP2 EQ ISZERO SWAP5 POP ISZERO PUSH2 0x657 JUMPI DUP14 PUSH1 0x2 SIGNEXTEND DUP16 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x627 JUMPI DUP12 DUP4 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP11 DUP4 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP10 DUP4 PUSH1 0x3 ADD PUSH1 0x7 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP9 DUP4 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH7 0xFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x6 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP8 DUP4 PUSH1 0x3 ADD PUSH1 0x1B PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 DUP4 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xF8 SHL OR SWAP1 SSTORE JUMPDEST DUP3 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND OR DUP4 SSTORE DUP7 PUSH2 0x6B5 JUMPI PUSH2 0x6B0 PUSH2 0x6AB DUP15 PUSH1 0xF SIGNEXTEND DUP6 PUSH1 0x0 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xF SIGNEXTEND PUSH1 0xF SIGNEXTEND PUSH2 0x90F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x925 JUMP JUMPDEST PUSH2 0x6E2 JUMP JUMPDEST PUSH2 0x6E2 PUSH2 0x6AB DUP15 PUSH1 0xF SIGNEXTEND DUP6 PUSH1 0x0 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xF SIGNEXTEND PUSH1 0xF SIGNEXTEND PUSH2 0x936 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 SLOAD PUSH1 0xF SWAP2 SWAP1 SWAP2 SIGNEXTEND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP2 AND OR SWAP1 SWAP3 SSTORE POP SWAP1 SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP7 DUP8 SIGNEXTEND DUP8 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x40 SWAP1 SWAP8 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD SWAP1 SWAP7 SUB SWAP1 SWAP6 SSTORE SWAP5 DUP5 ADD DUP1 SLOAD SWAP1 SWAP4 SUB SWAP1 SWAP3 SSTORE PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xD8 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH8 0x100000000000000 DUP1 DUP6 DIV DUP3 AND SWAP1 SWAP7 SUB AND SWAP1 SWAP5 MUL PUSH32 0xFFFFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x6 DUP2 DUP2 SIGNEXTEND SWAP1 SWAP6 SUB SWAP1 SWAP5 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND PUSH7 0xFFFFFFFFFFFFFF NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR DUP3 DUP2 DIV DUP5 AND SWAP1 SWAP6 SUB SWAP1 SWAP3 AND MUL PUSH4 0xFFFFFFFF PUSH1 0xD8 SHL NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP1 DUP3 AND SWAP1 SWAP5 SUB SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0xF SIGNEXTEND SWAP1 JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP4 SWAP1 SSTORE SWAP1 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x8B8 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x0 SUB DUP5 SUB SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x8B3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C53 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x909 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 DUP5 ADD SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0x909 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C41 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP3 DUP2 SLT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x909 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 SGT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x909 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9FC JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xA05 DUP3 PUSH2 0x96E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x160 DUP13 DUP15 SUB SLT ISZERO PUSH2 0xA2D JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH2 0xA36 DUP13 PUSH2 0x96E JUMP JUMPDEST SWAP11 POP PUSH2 0xA44 PUSH1 0x20 DUP14 ADD PUSH2 0x96E JUMP JUMPDEST SWAP10 POP PUSH2 0xA52 PUSH1 0x40 DUP14 ADD PUSH2 0x95C JUMP JUMPDEST SWAP9 POP PUSH1 0x60 DUP13 ADD CALLDATALOAD SWAP8 POP PUSH1 0x80 DUP13 ADD CALLDATALOAD SWAP7 POP PUSH2 0xA6E PUSH1 0xA0 DUP14 ADD PUSH2 0x9A9 JUMP JUMPDEST SWAP6 POP PUSH2 0xA7C PUSH1 0xC0 DUP14 ADD PUSH2 0x980 JUMP JUMPDEST SWAP5 POP PUSH2 0xA8A PUSH1 0xE0 DUP14 ADD PUSH2 0x9D7 JUMP JUMPDEST SWAP4 POP PUSH2 0xA99 PUSH2 0x100 DUP14 ADD PUSH2 0x94C JUMP JUMPDEST SWAP3 POP PUSH2 0xAA8 PUSH2 0x120 DUP14 ADD PUSH2 0x992 JUMP JUMPDEST SWAP2 POP PUSH2 0xAB7 PUSH2 0x140 DUP14 ADD PUSH2 0x9C0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xAE0 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xAE9 DUP7 PUSH2 0x96E JUMP JUMPDEST SWAP5 POP PUSH2 0xAF7 PUSH1 0x20 DUP8 ADD PUSH2 0x96E JUMP JUMPDEST SWAP4 POP PUSH2 0xB05 PUSH1 0x40 DUP8 ADD PUSH2 0x96E JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH2 0x140 DUP2 SLT ISZERO PUSH2 0xB31 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xB3A DUP5 PUSH2 0x96E JUMP JUMPDEST SWAP3 POP PUSH2 0x120 DUP1 PUSH1 0x1F NOT DUP4 ADD SLT ISZERO PUSH2 0xB4F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xB58 DUP2 PUSH2 0xD0A JUMP JUMPDEST SWAP2 POP PUSH2 0xB66 PUSH1 0x20 DUP7 ADD PUSH2 0x992 JUMP JUMPDEST DUP3 MSTORE PUSH2 0xB74 PUSH1 0x40 DUP7 ADD PUSH2 0x95C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 DUP6 ADD CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0xB99 PUSH1 0xA0 DUP7 ADD PUSH2 0x980 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0xBAA PUSH1 0xC0 DUP7 ADD PUSH2 0x9A9 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0xBBB PUSH1 0xE0 DUP7 ADD PUSH2 0x9D7 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x100 PUSH2 0xBCE DUP2 DUP8 ADD PUSH2 0x94C JUMP JUMPDEST PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0xBDE DUP3 DUP8 ADD PUSH2 0x9C0 JUMP JUMPDEST SWAP1 DUP4 ADD MSTORE POP SWAP2 SWAP5 SWAP2 SWAP4 POP SWAP1 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xC08 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xC11 DUP9 PUSH2 0x96E JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH2 0xC2D PUSH1 0x60 DUP10 ADD PUSH2 0x9A9 JUMP JUMPDEST SWAP4 POP PUSH2 0xC3B PUSH1 0x80 DUP10 ADD PUSH2 0x980 JUMP JUMPDEST SWAP3 POP PUSH2 0xC49 PUSH1 0xA0 DUP10 ADD PUSH2 0x9D7 JUMP JUMPDEST SWAP2 POP PUSH2 0xC57 PUSH1 0xC0 DUP10 ADD PUSH2 0x9C0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0xF SWAP2 SWAP1 SWAP2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP10 SWAP1 SWAP10 AND DUP10 MSTORE PUSH1 0xF SWAP8 SWAP1 SWAP8 SIGNEXTEND PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x40 DUP9 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x6 SWAP2 SWAP1 SWAP2 SIGNEXTEND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xA0 DUP6 ADD MSTORE PUSH4 0xFFFFFFFF AND PUSH1 0xC0 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x120 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE 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 0xD26 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP12 0xF7 0x29 KECCAK256 0xDB 0xC9 BLOCKHASH COINBASE MLOAD JUMPDEST 0x4C CALLER GASPRICE OR 0x2E 0xBF PUSH30 0x9D179667E393F1B5CAFB0FB0038CC464736F6C6343000706003300000000 ","sourceMap":"123:2576:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;547:550;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;248:185;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1105:864::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2057:639::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1977:72::-;;;;;;:::i;:::-;;:::i;:::-;;441:98;;;;;;:::i;:::-;;:::i;199:40::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;547:550::-;790:28;;886:203;790:28;929:9;957;985:11;1015:20;1054;886:24;:203::i;:::-;866:223;;;;547:550;;;;;;;;:::o;248:185::-;348:7;375:50;413:11;375:37;:50::i;:::-;368:57;;248:185;;;;:::o;1105:864::-;1512:12;1557:404;1512:12;1588:4;1611:11;1641:14;1674:20;1713;1752:33;1804:14;1837:4;1860:5;1884:12;1915:31;1557:12;:404::i;:::-;1537:424;1105:864;-1:-1:-1;;;;;;;;;;;;1105:864:57:o;2057:639::-;2351:19;2403:285;2351:19;2433:4;2456:20;2495;2534:33;2586:14;2619:4;2642:31;2403:11;:285::i;:::-;2383:305;2057:639;-1:-1:-1;;;;;;;;2057:639:57:o;1977:72::-;2024:17;:5;2036:4;2024:11;:17::i;:::-;1977:72;:::o;441:98::-;513:11;;;;;;:5;:11;;;;;;;;;;;;:18;;;;;;;;;;-1:-1:-1;;;;;513:18:57;;;-1:-1:-1;;;513:18:57;;;;-1:-1:-1;;513:18:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;513:18:57;;;;;;-1:-1:-1;;;513:18:57;-1:-1:-1;;;;;;;;;513:18:57;;;;;;;;;;;;;-1:-1:-1;;513:18:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;513:18:57;;;-1:-1:-1;;;;;;513:18:57;;;;;;;;;441:98::o;199:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;199:40:57;;;-1:-1:-1;;;199:40:57;;;;;;;;;;;;;;-1:-1:-1;;;;;199:40:57;;-1:-1:-1;;;199:40:57;;;;;-1:-1:-1;;;199:40:57;;;;;;-1:-1:-1;;;;;199:40:57;;:::o;3617:1604:26:-;3976:15;;;;;;;3884:28;3976:15;;;;;;;;;;;4023;;;;;;;;;;3884:28;;;;3976:15;;4023;3884:28;;;;4170:24;;;;;4166:362;;-1:-1:-1;;4233:27:26;;;;4297;;;;4166:362;;;4402:5;:27;;;4379:20;:50;4357:72;;4489:5;:27;;;4466:20;:50;4444:72;;4166:362;4579:27;4617;4673:9;4659:23;;:11;:23;;;4655:361;;;-1:-1:-1;;4721:27:26;;;;4785;;;;4655:361;;;4890:5;:27;;;4867:20;:50;4845:72;;4977:5;:27;;;4954:20;:50;4932:72;;4655:361;5051:42;;;;:64;;;;;5149:42;;;;:64;;;;;-1:-1:-1;3617:1604:26;;-1:-1:-1;;;;;;;3617:1604:26:o;2461:369::-;2545:7;;2617:11;2582:31;;;;-1:-1:-1;;2582:31:26;;;;;;2581:47;;-1:-1:-1;2639:13:26;2691:11;2656:31;;;;654:9:28;2656:31:26;;;;;;2655:47;2639:63;;2713:15;2760:11;2738:33;;2749:7;2739;:17;2738:33;;;;;;;;2775:1;2731:45;2713:63;;2814:8;2794:28;;-1:-1:-1;;;;;2794:28:26;;;;;;;;;2461:369;-1:-1:-1;;;;;2461:369:26:o;6433:1865::-;6941:10;;;;;;6891:12;6941:10;;;;;;;;;;6995:19;;-1:-1:-1;;;;;6995:19:26;6891:12;7055:60;6995:19;7100:14;7055:22;:60::i;:::-;7025:90;;7159:12;-1:-1:-1;;;;;7136:35:26;:19;-1:-1:-1;;;;;7136:35:26;;;7128:50;;;;;-1:-1:-1;;;7128:50:26;;;;;;;;;;;;-1:-1:-1;;;7128:50:26;;;;;;;;;;;;;;;-1:-1:-1;;;;;7232:25:26;;;;7202:24;;;;7201:57;;;;-1:-1:-1;7201:57:26;7271:668;;7442:11;7434:19;;:4;:19;;;7430:460;;7503:20;7474:4;:26;;:49;;;;7571:20;7542:4;:26;;:49;;;;7648:33;7610:4;:35;;;:71;;;;;-1:-1:-1;;;;;7610:71:26;;;;;-1:-1:-1;;;;;7610:71:26;;;;;;7729:14;7700:4;:26;;;:43;;;;;;;;;;;;;;;;;;;;7784:4;7762;:19;;;:26;;;;;;;;;;;;;;;;;;7843:31;7807:4;:33;;;:67;;;;;-1:-1:-1;;;;;7807:67:26;;;;;-1:-1:-1;;;;;7807:67:26;;;;;;7430:460;7904:16;;;:23;;;;-1:-1:-1;;;7904:23:26;;;7271:668;7951:41;;-1:-1:-1;;7951:41:26;-1:-1:-1;;;;;7951:41:26;;;;;8141:5;:149;;8234:56;:45;8264:14;8234:45;;8241:4;:17;;;;;;;;;;;;8234:25;;:29;;:45;;;;:::i;:::-;:54;:56::i;:::-;8141:149;;;8162:56;:45;8192:14;8162:45;;8169:4;:17;;;;;;;;;;;;8162:25;;:29;;:45;;;;:::i;:56::-;8121:169;;;;;;;-1:-1:-1;;;;;8121:169:26;;;-1:-1:-1;;;8121:169:26;;;;;;;-1:-1:-1;6433:1865:26;;;-1:-1:-1;;;;;;;;;;;;;6433:1865:26:o;9387:1017::-;9789:10;;;;;;9732:19;9789:10;;;;;;;;;;;;9862:26;;;;;9839:49;;;9810:78;;;9951:26;;;;;9928:49;;;9899:78;;;10062:35;;;;;10220:19;-1:-1:-1;;;;;;;;10062:35:26;;;;;;10026:71;;;9988:109;;;;;;;;;;;;10154:26;;;;10137:43;;;10108:72;;;;;-1:-1:-1;;10108:72:26;;;;;;;10220:19;;;;;10213:26;;;10191:48;;;;-1:-1:-1;;;;10191:48:26;;;;;;;;;;10320:33;;;;;-1:-1:-1;;;;;10320:33:26;;;10286:67;;;10250:103;;;-1:-1:-1;;;;;;10250:103:26;;;;;;;;;;10379:17;-1:-1:-1;;;10379:17:26;;;;;9387:1017::o;8490:114::-;8586:10;;;;;;;;;;;;;;;;;;8579:17;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8579:17:26;;;8490:114::o;392:242:19:-;454:9;484:1;480;:5;;;476:151;;;534:1;-1:-1:-1;;;;;510:25:19;528:1;527:2;;515:1;:15;511:19;;;-1:-1:-1;;;;;510:25:19;;502:40;;;;;-1:-1:-1;;;502:40:19;;;;;;;;;;;;-1:-1:-1;;;502:40:19;;;;;;;;;;;;;;;476:151;;;607:1;-1:-1:-1;;;;;583:25:19;600:1;588;:14;584:18;;;-1:-1:-1;;;;;583:25:19;;;575:40;;;;;-1:-1:-1;;;575:40:19;;;;;;;;;;;;-1:-1:-1;;;575:40:19;;;;;;;;;;;;;;;392:242;;;;:::o;1310:122:20:-;1400:5;;;1395:16;;;;1366:8;1416:6;;;1395:28;1387:37;;;;;668:109:23;767:1;748:20;;;;;;740:29;;;;;1615:122:20;1705:5;;;1700:16;;;;1671:8;1721:6;;;1700:28;1692:37;;;;;14:162:178;81:20;;137:13;;130:21;120:32;;110:2;;166:1;163;156:12;181:164;250:20;;310:2;299:21;;;289:32;;279:2;;335:1;332;325:12;350:162;418:20;;478:1;467:20;;;457:31;;447:2;;502:1;499;492:12;517:162;585:20;;645:1;634:20;;;624:31;;614:2;;669:1;666;659:12;684:190;754:20;;-1:-1:-1;;;;;803:46:178;;793:57;;783:2;;864:1;861;854:12;879:198;949:20;;-1:-1:-1;;;;;998:54:178;;988:65;;978:2;;1067:1;1064;1057:12;1082:206;1152:20;;-1:-1:-1;;;;;1201:62:178;;1191:73;;1181:2;;1278:1;1275;1268:12;1293:165;1362:20;;1422:10;1411:22;;1401:33;;1391:2;;1448:1;1445;1438:12;1463:194;;1573:2;1561:9;1552:7;1548:23;1544:32;1541:2;;;1594:6;1586;1579:22;1541:2;1622:29;1641:9;1622:29;:::i;:::-;1612:39;1531:126;-1:-1:-1;;;1531:126:178:o;1662:930::-;;;;;;;;;;;;1934:3;1922:9;1913:7;1909:23;1905:33;1902:2;;;1956:6;1948;1941:22;1902:2;1984:29;2003:9;1984:29;:::i;:::-;1974:39;;2032:38;2066:2;2055:9;2051:18;2032:38;:::i;:::-;2022:48;;2089:39;2124:2;2113:9;2109:18;2089:39;:::i;:::-;2079:49;;2175:2;2164:9;2160:18;2147:32;2137:42;;2226:3;2215:9;2211:19;2198:33;2188:43;;2250:41;2286:3;2275:9;2271:19;2250:41;:::i;:::-;2240:51;;2310:39;2344:3;2333:9;2329:19;2310:39;:::i;:::-;2300:49;;2368:40;2403:3;2392:9;2388:19;2368:40;:::i;:::-;2358:50;;2427:38;2460:3;2449:9;2445:19;2427:38;:::i;:::-;2417:48;;2484:41;2520:3;2509:9;2505:19;2484:41;:::i;:::-;2474:51;;2545:41;2581:3;2570:9;2566:19;2545:41;:::i;:::-;2534:52;;1892:700;;;;;;;;;;;;;;:::o;2597:476::-;;;;;;2771:3;2759:9;2750:7;2746:23;2742:33;2739:2;;;2793:6;2785;2778:22;2739:2;2821:29;2840:9;2821:29;:::i;:::-;2811:39;;2869:38;2903:2;2892:9;2888:18;2869:38;:::i;:::-;2859:48;;2926:38;2960:2;2949:9;2945:18;2926:38;:::i;:::-;2729:344;;;;-1:-1:-1;2916:48:178;;3011:2;2996:18;;2983:32;;-1:-1:-1;3062:3:178;3047:19;3034:33;;2729:344;-1:-1:-1;;2729:344:178:o;3078:1063::-;;;3218:9;3209:7;3205:23;3248:3;3244:2;3240:12;3237:2;;;3270:6;3262;3255:22;3237:2;3298:29;3317:9;3298:29;:::i;:::-;3288:39;;3346:6;3386:2;3380;3376:7;3372:2;3368:16;3364:25;3361:2;;;3407:6;3399;3392:22;3361:2;3438:18;3453:2;3438:18;:::i;:::-;3425:31;;3479:40;3515:2;3504:9;3500:18;3479:40;:::i;:::-;3472:5;3465:55;3552:39;3587:2;3576:9;3572:18;3552:39;:::i;:::-;3547:2;3540:5;3536:14;3529:63;3652:2;3641:9;3637:18;3624:32;3619:2;3612:5;3608:14;3601:56;3717:3;3706:9;3702:19;3689:33;3684:2;3677:5;3673:14;3666:57;3756:39;3790:3;3779:9;3775:19;3756:39;:::i;:::-;3750:3;3743:5;3739:15;3732:64;3829:41;3865:3;3854:9;3850:19;3829:41;:::i;:::-;3823:3;3816:5;3812:15;3805:66;3904:40;3939:3;3928:9;3924:19;3904:40;:::i;:::-;3898:3;3891:5;3887:15;3880:65;3964:3;4000:37;4033:2;4022:9;4018:18;4000:37;:::i;:::-;3994:3;3987:5;3983:15;3976:62;4070:40;4106:2;4095:9;4091:18;4070:40;:::i;:::-;4054:14;;;4047:64;-1:-1:-1;3185:956:178;;4058:5;;-1:-1:-1;3185:956:178;;-1:-1:-1;;3185:956:178:o;4146:632::-;;;;;;;;4355:3;4343:9;4334:7;4330:23;4326:33;4323:2;;;4377:6;4369;4362:22;4323:2;4405:29;4424:9;4405:29;:::i;:::-;4395:39;;4481:2;4470:9;4466:18;4453:32;4443:42;;4532:2;4521:9;4517:18;4504:32;4494:42;;4555:40;4591:2;4580:9;4576:18;4555:40;:::i;:::-;4545:50;;4614:39;4648:3;4637:9;4633:19;4614:39;:::i;:::-;4604:49;;4672:40;4707:3;4696:9;4692:19;4672:40;:::i;:::-;4662:50;;4731:41;4767:3;4756:9;4752:19;4731:41;:::i;:::-;4721:51;;4313:465;;;;;;;;;;:::o;4783:187::-;4948:14;;4941:22;4923:41;;4911:2;4896:18;;4878:92::o;4975:191::-;5148:2;5137:22;;;;5119:41;;5107:2;5092:18;;5074:92::o;5171:218::-;-1:-1:-1;;;;;5335:47:178;;;;5317:66;;5305:2;5290:18;;5272:117::o;5394:948::-;-1:-1:-1;;;;;5769:47:178;;;;5751:66;;5864:2;5853:22;;;;5848:2;5833:18;;5826:50;5907:2;5892:18;;5885:34;;;;5950:2;5935:18;;5928:34;;;;6010:1;5999:21;;;;5993:3;5978:19;;5971:50;-1:-1:-1;;;;;6058:55:178;6052:3;6037:19;;6030:84;6163:10;6151:23;6145:3;6130:19;;6123:52;6219:14;6212:22;6206:3;6191:19;;6184:51;-1:-1:-1;;;;;6272:63:178;6266:3;6251:19;;6244:92;5738:3;5723:19;;5705:637::o;6347:248::-;6521:25;;;6577:2;6562:18;;6555:34;6509:2;6494:18;;6476:119::o;6600:242::-;6670:2;6664:9;6700:17;;;6747:18;6732:34;;6768:22;;;6729:62;6726:2;;;6794:9;6726:2;6821;6814:22;6644:198;;-1:-1:-1;6644:198:178:o"},"methodIdentifiers":{"clear(int24)":"b613524a","cross(int24,uint256,uint256,uint160,int56,uint32,uint192)":"97308ed3","getFeeGrowthInside(int24,int24,int24,uint256,uint256)":"30e3ff4c","setTick(int24,(uint128,int128,uint256,uint256,int56,uint160,uint32,bool,uint192))":"e6fb02ee","tickSpacingToMaxLiquidityPerTick(int24)":"82c66f87","ticks(int24)":"f30dba93","update(int24,int24,int128,uint256,uint256,uint160,int56,uint32,bool,uint128,uint192)":"8e27463b"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"clear\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthGlobal0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthGlobal1X128\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityCumulativeX128\",\"type\":\"uint160\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"uint32\",\"name\":\"time\",\"type\":\"uint32\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityCumulativeX64\",\"type\":\"uint192\"}],\"name\":\"cross\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickCurrent\",\"type\":\"int24\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthGlobal0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthGlobal1X128\",\"type\":\"uint256\"}],\"name\":\"getFeeGrowthInside\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1X128\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"components\":[{\"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\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityOutsideX64\",\"type\":\"uint192\"}],\"internalType\":\"struct Tick.Info\",\"name\":\"info\",\"type\":\"tuple\"}],\"name\":\"setTick\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"tickSpacingToMaxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"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\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityOutsideX64\",\"type\":\"uint192\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickCurrent\",\"type\":\"int24\"},{\"internalType\":\"int128\",\"name\":\"liquidityDelta\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthGlobal0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthGlobal1X128\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityCumulativeX128\",\"type\":\"uint160\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"uint32\",\"name\":\"time\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"upper\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"maxLiquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityCumulativeX64\",\"type\":\"uint192\"}],\"name\":\"update\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"flipped\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/TickTest.sol\":\"TickTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x3ec938fd1b7cc8751df9e2ed90fd0abf32ffacc42cf4b6edbf7138629d747944\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a741475c8a3b5ae8eac7d328170c5a6811920dac22d3800197e39abe0ba42e01\",\"dweb:/ipfs/Qmc2fs5kxp437hWxtLZ6CB8g7vt3bkwKLxE7MMo9D5TAF9\"]},\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]},\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]},\"contracts/elixir-core/libraries/Tick.sol\":{\"keccak256\":\"0x20ddf3dd595491c899fde27706d0cd1d10ba2785589bd5e3d5f0830062254c3b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8d706f8b5bf653ac9cd4b5bbdfd6867eb072821b920141a283466c67f0fdf26\",\"dweb:/ipfs/QmfBZFTVNZhN4tNssH9en4Qz93tWovTijou5i6N8k9kZJM\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-core/test/TickTest.sol\":{\"keccak256\":\"0xc89ca0b5b070b966c366550e02695be1dd2dd4921a078c3e09e7f7dc647c3689\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b158b477387bfe4c71fb11e88dfef295f54644133c681b8324e42810146bd593\",\"dweb:/ipfs/Qmd5Mv8j6KdZvUzPm17QTV5TfUi7qXDH5WqhSrWwWB21SG\"]}},\"version\":1}"}},"contracts/elixir-core/test/UnsafeMathEchidnaTest.sol":{"UnsafeMathEchidnaTest":{"abi":[{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"d","type":"uint256"}],"name":"checkDivRoundingUp","outputs":[],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060dd8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80632724da4e14602d575b600080fd5b604d60048036036040811015604157600080fd5b5080359060200135604f565b005b60008111605b57600080fd5b600060658383609c565b90506000828481607157fe5b0482039050828481607e57fe5b06608d578015608957fe5b6096565b80600114609657fe5b50505050565b80820491061515019056fea264697066735822122028a475838afa1407d431666987637529a3dfb0508d8bd8631d8164ca363761cc64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xDD DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY 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 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2724DA4E EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH1 0x41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x4F JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP2 GT PUSH1 0x5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x65 DUP4 DUP4 PUSH1 0x9C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP5 DUP2 PUSH1 0x71 JUMPI INVALID JUMPDEST DIV DUP3 SUB SWAP1 POP DUP3 DUP5 DUP2 PUSH1 0x7E JUMPI INVALID JUMPDEST MOD PUSH1 0x8D JUMPI DUP1 ISZERO PUSH1 0x89 JUMPI INVALID JUMPDEST PUSH1 0x96 JUMP JUMPDEST DUP1 PUSH1 0x1 EQ PUSH1 0x96 JUMPI INVALID JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x28 LOG4 PUSH22 0x838AFA1407D431666987637529A3DFB0508D8BD8631D DUP2 PUSH5 0xCA363761CC PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"108:348:58:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060285760003560e01c80632724da4e14602d575b600080fd5b604d60048036036040811015604157600080fd5b5080359060200135604f565b005b60008111605b57600080fd5b600060658383609c565b90506000828481607157fe5b0482039050828481607e57fe5b06608d578015608957fe5b6096565b80600114609657fe5b50505050565b80820491061515019056fea264697066735822122028a475838afa1407d431666987637529a3dfb0508d8bd8631d8164ca363761cc64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2724DA4E EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH1 0x41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x4F JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP2 GT PUSH1 0x5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x65 DUP4 DUP4 PUSH1 0x9C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP5 DUP2 PUSH1 0x71 JUMPI INVALID JUMPDEST DIV DUP3 SUB SWAP1 POP DUP3 DUP5 DUP2 PUSH1 0x7E JUMPI INVALID JUMPDEST MOD PUSH1 0x8D JUMPI DUP1 ISZERO PUSH1 0x89 JUMPI INVALID JUMPDEST PUSH1 0x96 JUMP JUMPDEST DUP1 PUSH1 0x1 EQ PUSH1 0x96 JUMPI INVALID JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x28 LOG4 PUSH22 0x838AFA1407D431666987637529A3DFB0508D8BD8631D DUP2 PUSH5 0xCA363761CC PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"108:348:58:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;146:307;;;;;;;;;;;;;;;;-1:-1:-1;146:307:58;;;;;;;:::i;:::-;;;233:1;229;:5;221:14;;;;;;246:9;258:30;283:1;286;258:24;:30::i;:::-;246:42;;299:12;323:1;319;:5;;;;;;314:1;:11;299:26;;344:1;340;:5;;;;;;336:110;;374:9;;367:17;;;;336:110;;;424:4;432:1;424:9;417:17;;;;146:307;;;;:::o;503:169:30:-;626:9;;;640;;637:16;;622:32;;602:63::o"},"methodIdentifiers":{"checkDivRoundingUp(uint256,uint256)":"2724da4e"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"d\",\"type\":\"uint256\"}],\"name\":\"checkDivRoundingUp\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-core/test/UnsafeMathEchidnaTest.sol\":\"UnsafeMathEchidnaTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/UnsafeMath.sol\":{\"keccak256\":\"0x3c829e89e91323d9c3e0f15272baa9aa1d28291e7633ee4f1414774e6eca0a7d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f99f38de11092e98d43f1d14061fcfa7309a80ae93d2b7af99c9256c97312c23\",\"dweb:/ipfs/QmQXXUR1PhKUFVZXwwekW23YE9Zy7r3GvdtcDyc2nNTpSb\"]},\"contracts/elixir-core/test/UnsafeMathEchidnaTest.sol\":{\"keccak256\":\"0x639d781cd47211562421d2aeb9e41d433f2f061fecb97881ed8962b6b5c805a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3a976c7992e49d27848b9412253fe6be8071613d493d54064b5f97eea8ad577c\",\"dweb:/ipfs/QmVKQFCY6PqmNp9spf2Ga8E3hPc2N1d6mYMqYJFQbx4ZF1\"]}},\"version\":1}"}},"contracts/elixir-periphery/ElixirMigrator.sol":{"ElixirMigrator":{"abi":[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH9","type":"address"},{"internalType":"address","name":"_nonfungiblePositionManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH9","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":"refundAsETH","type":"bool"}],"internalType":"struct IElixirMigrator.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:178","statements":[{"nodeType":"YulBlock","src":"6:3:178","statements":[]},{"body":{"nodeType":"YulBlock","src":"76:117:178","statements":[{"nodeType":"YulAssignment","src":"86:22:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"101:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"95:5:178"},"nodeType":"YulFunctionCall","src":"95:13:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"86:5:178"}]},{"body":{"nodeType":"YulBlock","src":"171:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"180:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"183:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"173:6:178"},"nodeType":"YulFunctionCall","src":"173:12:178"},"nodeType":"YulExpressionStatement","src":"173:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"130:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"141:5:178"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"156:3:178","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"161:1:178","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"152:3:178"},"nodeType":"YulFunctionCall","src":"152:11:178"},{"kind":"number","nodeType":"YulLiteral","src":"165:1:178","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"148:3:178"},"nodeType":"YulFunctionCall","src":"148:19:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"137:3:178"},"nodeType":"YulFunctionCall","src":"137:31:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"127:2:178"},"nodeType":"YulFunctionCall","src":"127:42:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"120:6:178"},"nodeType":"YulFunctionCall","src":"120:50:178"},"nodeType":"YulIf","src":"117:2:178"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"55:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"66:5:178","type":""}],"src":"14:179:178"},{"body":{"nodeType":"YulBlock","src":"313:279:178","statements":[{"body":{"nodeType":"YulBlock","src":"359:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"368:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"376:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"361:6:178"},"nodeType":"YulFunctionCall","src":"361:22:178"},"nodeType":"YulExpressionStatement","src":"361:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"334:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"343:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"330:3:178"},"nodeType":"YulFunctionCall","src":"330:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"355:2:178","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"326:3:178"},"nodeType":"YulFunctionCall","src":"326:32:178"},"nodeType":"YulIf","src":"323:2:178"},{"nodeType":"YulAssignment","src":"394:52:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"436:9:178"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"404:31:178"},"nodeType":"YulFunctionCall","src":"404:42:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"394:6:178"}]},{"nodeType":"YulAssignment","src":"455:61:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"501:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"512:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"497:3:178"},"nodeType":"YulFunctionCall","src":"497:18:178"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"465:31:178"},"nodeType":"YulFunctionCall","src":"465:51:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"455:6:178"}]},{"nodeType":"YulAssignment","src":"525:61:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"582:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"567:3:178"},"nodeType":"YulFunctionCall","src":"567:18:178"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"535:31:178"},"nodeType":"YulFunctionCall","src":"535:51:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"525:6:178"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"263:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"274:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"286:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"294:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"302:6:178","type":""}],"src":"198:394:178"}]},"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":178,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60e06040523480156200001157600080fd5b5060405162001aa638038062001aa6833981016040819052620000349162000079565b6001600160601b0319606093841b811660805291831b821660a05290911b1660c052620000c2565b80516001600160a01b03811681146200007457600080fd5b919050565b6000806000606084860312156200008e578283fd5b62000099846200005c565b9250620000a9602085016200005c565b9150620000b9604085016200005c565b90509250925092565b60805160601c60a05160601c60c05160601c6119786200012e600039806107935280610a5e5280610a985280610ac25280610c6b52508060c552806105965280610cb75280610d0e5280610de95280610e4052508061022852806102ef528061084652506119786000f3fe6080604052600436106100b55760003560e01c8063b44a272211610069578063c45a01551161004e578063c45a0155146101be578063d44f2bf2146101d3578063f3995c67146101f35761010d565b8063b44a272214610196578063c2e3140a146101ab5761010d565b80634aa4a4fc1161009a5780634aa4a4fc1461014e578063a4a78f0c14610163578063ac9650d8146101765761010d565b806313ead562146101125780634659a4941461013b5761010d565b3661010d57336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461010b5760405162461bcd60e51b81526004016101029061177b565b60405180910390fd5b005b600080fd5b61012561012036600461136f565b610206565b6040516101329190611699565b60405180910390f35b61010b6101493660046113c8565b6104fa565b34801561015a57600080fd5b50610125610594565b61010b6101713660046113c8565b6105b8565b610189610184366004611421565b610651565b60405161013291906116d1565b3480156101a257600080fd5b50610125610791565b61010b6101b93660046113c8565b6107b5565b3480156101ca57600080fd5b50610125610844565b3480156101df57600080fd5b5061010b6101ee366004611580565b610868565b61010b6102013660046113c8565b610ed4565b6000836001600160a01b0316856001600160a01b03161061022657600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631698ee828686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff168152602001935050505060206040518083038186803b1580156102b157600080fd5b505afa1580156102c5573d6000803e3d6000fd5b505050506040513d60208110156102db57600080fd5b505190506001600160a01b038116610411577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a16712958686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff1681526020019350505050602060405180830381600087803b15801561037a57600080fd5b505af115801561038e573d6000803e3d6000fd5b505050506040513d60208110156103a457600080fd5b50516040805163f637731d60e01b81526001600160a01b03858116600483015291519293509083169163f637731d9160248082019260009290919082900301818387803b1580156103f457600080fd5b505af1158015610408573d6000803e3d6000fd5b505050506104f2565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561044c57600080fd5b505afa158015610460573d6000803e3d6000fd5b505050506040513d60e081101561047657600080fd5b505190506001600160a01b0381166104f057816001600160a01b031663f637731d846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156104d757600080fd5b505af11580156104eb573d6000803e3d6000fd5b505050505b505b949350505050565b604080516323f2ebc360e21b815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b15801561057457600080fd5b505af1158015610588573d6000803e3d6000fd5b50505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60408051636eb1769f60e11b81523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b15801561060957600080fd5b505afa15801561061d573d6000803e3d6000fd5b505050506040513d602081101561063357600080fd5b50511015610649576106498686868686866104fa565b505050505050565b60608167ffffffffffffffff8111801561066a57600080fd5b5060405190808252806020026020018201604052801561069e57816020015b60608152602001906001900390816106895790505b50905060005b8281101561078a57600080308686858181106106bc57fe5b90506020028101906106ce91906118a0565b6040516106dc929190611689565b600060405180830381855af49150503d8060008114610717576040519150601f19603f3d011682016040523d82523d6000602084013e61071c565b606091505b5091509150816107685760448151101561073557600080fd5b6004810190508080602001905181019061074f91906114e9565b60405162461bcd60e51b81526004016101029190611731565b8084848151811061077557fe5b602090810291909101015250506001016106a4565b5092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b15801561080457600080fd5b505afa158015610818573d6000803e3d6000fd5b505050506040513d602081101561082e57600080fd5b5051101561064957610649868686868686610ed4565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061087a6060830160408401611626565b60ff161161089a5760405162461bcd60e51b815260040161010290611744565b60646108ac6060830160408401611626565b60ff1611156108cd5760405162461bcd60e51b8152600401610102906117b2565b6108da602082018261134c565b6001600160a01b03166323b872dd336108f6602085018561134c565b84602001356040518463ffffffff1660e01b8152600401610919939291906116ad565b602060405180830381600087803b15801561093357600080fd5b505af1158015610947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096b91906114ac565b5060008061097c602084018461134c565b6001600160a01b03166389afcb44306040518263ffffffff1660e01b81526004016109a79190611699565b6040805180830381600087803b1580156109c057600080fd5b505af11580156109d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f89190611603565b909250905060006064610a1e610a146060870160408801611626565b859060ff16610f46565b81610a2557fe5b04905060006064610a3f610a146060880160408901611626565b81610a4657fe5b049050610a83610a5c608087016060880161134c565b7f000000000000000000000000000000000000000000000000000000000000000084610f70565b610abd610a9660a087016080880161134c565b7f000000000000000000000000000000000000000000000000000000000000000083610f70565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663883164566040518061016001604052808a6060016020810190610b0e919061134c565b6001600160a01b03168152602001610b2c60a08c0160808d0161134c565b6001600160a01b03168152602001610b4a60c08c0160a08d01611598565b62ffffff168152602001610b6460e08c0160c08d016114c8565b60020b8152602001610b7d6101008c0160e08d016114c8565b60020b815260208101889052604081018790526101008b013560608201526101208b0135608082015260a001610bbb6101608c016101408d0161134c565b6001600160a01b031681526020018a61016001358152506040518263ffffffff1660e01b8152600401610bee91906117e9565b608060405180830381600087803b158015610c0857600080fd5b505af1158015610c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4091906115b2565b93509350505085821015610da05783821015610c9157610c91610c696080890160608a0161134c565b7f00000000000000000000000000000000000000000000000000000000000000006000610f70565b818603610ca66101a089016101808a01611490565b8015610cf257506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016610ce760808a0160608b0161134c565b6001600160a01b0316145b15610d8457604051632e1a7d4d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90610d43908490600401611897565b600060405180830381600087803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50505050610d7f33826110d3565b610d9e565b610d9e610d9760808a0160608b0161134c565b33836111c7565b505b84811015610ecb5782811015610dc357610dc3610c6960a0890160808a0161134c565b808503610dd86101a089016101808a01611490565b8015610e2457506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016610e1960a08a0160808b0161134c565b6001600160a01b0316145b15610eb657604051632e1a7d4d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90610e75908490600401611897565b600060405180830381600087803b158015610e8f57600080fd5b505af1158015610ea3573d6000803e3d6000fd5b50505050610eb133826110d3565b610ec9565b610ec9610d9760a08a0160808b0161134c565b505b50505050505050565b6040805163d505accf60e01b8152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b15801561057457600080fd5b6000821580610f6157505081810281838281610f5e57fe5b04145b610f6a57600080fd5b92915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b1781529251825160009485949389169392918291908083835b602083106110015780518252601f199092019160209182019101610fe2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611063576040519150601f19603f3d011682016040523d82523d6000602084013e611068565b606091505b5091509150818015611096575080511580611096575080806020019051602081101561109357600080fd5b50515b6110cc576040805162461bcd60e51b8152602060048201526002602482015261534160f01b604482015290519081900360640190fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b6020831061111f5780518252601f199092019160209182019101611100565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611181576040519150601f19603f3d011682016040523d82523d6000602084013e611186565b606091505b50509050806111c2576040805162461bcd60e51b815260206004820152600360248201526253544560e81b604482015290519081900360640190fd5b505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106112585780518252601f199092019160209182019101611239565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112ba576040519150601f19603f3d011682016040523d82523d6000602084013e6112bf565b606091505b50915091508180156112ed5750805115806112ed57508080602001905160208110156112ea57600080fd5b50515b6110cc576040805162461bcd60e51b815260206004820152600260248201526114d560f21b604482015290519081900360640190fd5b803562ffffff8116811461133657600080fd5b919050565b803560ff8116811461133657600080fd5b60006020828403121561135d578081fd5b81356113688161191c565b9392505050565b60008060008060808587031215611384578283fd5b843561138f8161191c565b9350602085013561139f8161191c565b92506113ad60408601611323565b915060608501356113bd8161191c565b939692955090935050565b60008060008060008060c087890312156113e0578182fd5b86356113eb8161191c565b955060208701359450604087013593506114076060880161133b565b92506080870135915060a087013590509295509295509295565b60008060208385031215611433578182fd5b823567ffffffffffffffff8082111561144a578384fd5b818501915085601f83011261145d578384fd5b81358181111561146b578485fd5b866020808302850101111561147e578485fd5b60209290920196919550909350505050565b6000602082840312156114a1578081fd5b813561136881611934565b6000602082840312156114bd578081fd5b815161136881611934565b6000602082840312156114d9578081fd5b81358060020b8114611368578182fd5b6000602082840312156114fa578081fd5b815167ffffffffffffffff80821115611511578283fd5b818401915084601f830112611524578283fd5b81518181111561153057fe5b604051601f8201601f19168101602001838111828210171561154e57fe5b604052818152838201602001871015611565578485fd5b6115768260208301602087016118ec565b9695505050505050565b60006101a08284031215611592578081fd5b50919050565b6000602082840312156115a9578081fd5b61136882611323565b600080600080608085870312156115c7578384fd5b8451935060208501516fffffffffffffffffffffffffffffffff811681146115ed578384fd5b6040860151606090960151949790965092505050565b60008060408385031215611615578182fd5b505080516020909101519092909150565b600060208284031215611637578081fd5b6113688261133b565b6001600160a01b03169052565b600081518084526116658160208601602086016118ec565b601f01601f19169290920160200192915050565b60020b9052565b62ffffff169052565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000602080830181845280855180835260408601915060408482028701019250838701855b8281101561172457603f1988860301845261171285835161164d565b945092850192908501906001016116f6565b5092979650505050505050565b600060208252611368602083018461164d565b60208082526014908201527f50657263656e7461676520746f6f20736d616c6c000000000000000000000000604082015260600190565b60208082526009908201527f4e6f742057455448390000000000000000000000000000000000000000000000604082015260600190565b60208082526014908201527f50657263656e7461676520746f6f206c61726765000000000000000000000000604082015260600190565b6000610160820190506117fd828451611640565b602083015161180f6020840182611640565b5060408301516118226040840182611680565b5060608301516118356060840182611679565b5060808301516118486080840182611679565b5060a083015160a083015260c083015160c083015260e083015160e08301526101008084015181840152506101208084015161188682850182611640565b505061014092830151919092015290565b90815260200190565b6000808335601e198436030181126118b6578283fd5b83018035915067ffffffffffffffff8211156118d0578283fd5b6020019150368190038213156118e557600080fd5b9250929050565b60005b838110156119075781810151838201526020016118ef565b83811115611916576000848401525b50505050565b6001600160a01b038116811461193157600080fd5b50565b801515811461193157600080fdfea2646970667358221220815a01cfc8b97f79913cf08930051683ee447eac0be48bcc7e926ac135dad00564736f6c63430007060033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1AA6 CODESIZE SUB DUP1 PUSH3 0x1AA6 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 0x1978 PUSH3 0x12E PUSH1 0x0 CODECOPY DUP1 PUSH2 0x793 MSTORE DUP1 PUSH2 0xA5E MSTORE DUP1 PUSH2 0xA98 MSTORE DUP1 PUSH2 0xAC2 MSTORE DUP1 PUSH2 0xC6B MSTORE POP DUP1 PUSH1 0xC5 MSTORE DUP1 PUSH2 0x596 MSTORE DUP1 PUSH2 0xCB7 MSTORE DUP1 PUSH2 0xD0E MSTORE DUP1 PUSH2 0xDE9 MSTORE DUP1 PUSH2 0xE40 MSTORE POP DUP1 PUSH2 0x228 MSTORE DUP1 PUSH2 0x2EF MSTORE DUP1 PUSH2 0x846 MSTORE POP PUSH2 0x1978 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 0x1BE JUMPI DUP1 PUSH4 0xD44F2BF2 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x1F3 JUMPI PUSH2 0x10D JUMP JUMPDEST DUP1 PUSH4 0xB44A2722 EQ PUSH2 0x196 JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0x1AB JUMPI PUSH2 0x10D JUMP JUMPDEST DUP1 PUSH4 0x4AA4A4FC GT PUSH2 0x9A JUMPI DUP1 PUSH4 0x4AA4A4FC EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x163 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x176 JUMPI PUSH2 0x10D JUMP JUMPDEST DUP1 PUSH4 0x13EAD562 EQ PUSH2 0x112 JUMPI DUP1 PUSH4 0x4659A494 EQ PUSH2 0x13B JUMPI PUSH2 0x10D JUMP JUMPDEST CALLDATASIZE PUSH2 0x10D JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x10B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x102 SWAP1 PUSH2 0x177B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x125 PUSH2 0x120 CALLDATASIZE PUSH1 0x4 PUSH2 0x136F JUMP JUMPDEST PUSH2 0x206 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x132 SWAP2 SWAP1 PUSH2 0x1699 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10B PUSH2 0x149 CALLDATASIZE PUSH1 0x4 PUSH2 0x13C8 JUMP JUMPDEST PUSH2 0x4FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x125 PUSH2 0x594 JUMP JUMPDEST PUSH2 0x10B PUSH2 0x171 CALLDATASIZE PUSH1 0x4 PUSH2 0x13C8 JUMP JUMPDEST PUSH2 0x5B8 JUMP JUMPDEST PUSH2 0x189 PUSH2 0x184 CALLDATASIZE PUSH1 0x4 PUSH2 0x1421 JUMP JUMPDEST PUSH2 0x651 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x132 SWAP2 SWAP1 PUSH2 0x16D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x125 PUSH2 0x791 JUMP JUMPDEST PUSH2 0x10B PUSH2 0x1B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x13C8 JUMP JUMPDEST PUSH2 0x7B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x125 PUSH2 0x844 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B PUSH2 0x1EE CALLDATASIZE PUSH1 0x4 PUSH2 0x1580 JUMP JUMPDEST PUSH2 0x868 JUMP JUMPDEST PUSH2 0x10B PUSH2 0x201 CALLDATASIZE PUSH1 0x4 PUSH2 0x13C8 JUMP JUMPDEST PUSH2 0xED4 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1698EE82 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x2B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C5 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 0x2DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x411 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA1671295 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x37A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x38E 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 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xF637731D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x408 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x4F2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x460 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 0x476 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x4F0 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF637731D DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x4D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4EB 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 PUSH4 0x23F2EBC3 PUSH1 0xE2 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x588 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 PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 NOT SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x61D 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 0x633 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x649 JUMPI PUSH2 0x649 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x4FA JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x66A 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 0x69E JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x689 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x6BC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x6CE SWAP2 SWAP1 PUSH2 0x18A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6DC SWAP3 SWAP2 SWAP1 PUSH2 0x1689 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x717 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 0x71C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x768 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x735 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x74F SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x102 SWAP2 SWAP1 PUSH2 0x1731 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x775 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x6A4 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x804 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x818 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 0x82E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x649 JUMPI PUSH2 0x649 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0xED4 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87A PUSH1 0x60 DUP4 ADD PUSH1 0x40 DUP5 ADD PUSH2 0x1626 JUMP JUMPDEST PUSH1 0xFF AND GT PUSH2 0x89A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x102 SWAP1 PUSH2 0x1744 JUMP JUMPDEST PUSH1 0x64 PUSH2 0x8AC PUSH1 0x60 DUP4 ADD PUSH1 0x40 DUP5 ADD PUSH2 0x1626 JUMP JUMPDEST PUSH1 0xFF AND GT ISZERO PUSH2 0x8CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x102 SWAP1 PUSH2 0x17B2 JUMP JUMPDEST PUSH2 0x8DA PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x134C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD CALLER PUSH2 0x8F6 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x134C JUMP JUMPDEST DUP5 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x919 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x16AD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x947 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 0x96B SWAP2 SWAP1 PUSH2 0x14AC JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH2 0x97C PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x134C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x89AFCB44 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A7 SWAP2 SWAP1 PUSH2 0x1699 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9D4 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 0x9F8 SWAP2 SWAP1 PUSH2 0x1603 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH1 0x64 PUSH2 0xA1E PUSH2 0xA14 PUSH1 0x60 DUP8 ADD PUSH1 0x40 DUP9 ADD PUSH2 0x1626 JUMP JUMPDEST DUP6 SWAP1 PUSH1 0xFF AND PUSH2 0xF46 JUMP JUMPDEST DUP2 PUSH2 0xA25 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x64 PUSH2 0xA3F PUSH2 0xA14 PUSH1 0x60 DUP9 ADD PUSH1 0x40 DUP10 ADD PUSH2 0x1626 JUMP JUMPDEST DUP2 PUSH2 0xA46 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0xA83 PUSH2 0xA5C PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x134C JUMP JUMPDEST PUSH32 0x0 DUP5 PUSH2 0xF70 JUMP JUMPDEST PUSH2 0xABD PUSH2 0xA96 PUSH1 0xA0 DUP8 ADD PUSH1 0x80 DUP9 ADD PUSH2 0x134C JUMP JUMPDEST PUSH32 0x0 DUP4 PUSH2 0xF70 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x88316456 PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 DUP11 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xB0E SWAP2 SWAP1 PUSH2 0x134C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB2C PUSH1 0xA0 DUP13 ADD PUSH1 0x80 DUP14 ADD PUSH2 0x134C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB4A PUSH1 0xC0 DUP13 ADD PUSH1 0xA0 DUP14 ADD PUSH2 0x1598 JUMP JUMPDEST PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB64 PUSH1 0xE0 DUP13 ADD PUSH1 0xC0 DUP14 ADD PUSH2 0x14C8 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB7D PUSH2 0x100 DUP13 ADD PUSH1 0xE0 DUP14 ADD PUSH2 0x14C8 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 0xBBB PUSH2 0x160 DUP13 ADD PUSH2 0x140 DUP14 ADD PUSH2 0x134C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xBEE SWAP2 SWAP1 PUSH2 0x17E9 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC1C 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 0xC40 SWAP2 SWAP1 PUSH2 0x15B2 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP DUP6 DUP3 LT ISZERO PUSH2 0xDA0 JUMPI DUP4 DUP3 LT ISZERO PUSH2 0xC91 JUMPI PUSH2 0xC91 PUSH2 0xC69 PUSH1 0x80 DUP10 ADD PUSH1 0x60 DUP11 ADD PUSH2 0x134C JUMP JUMPDEST PUSH32 0x0 PUSH1 0x0 PUSH2 0xF70 JUMP JUMPDEST DUP2 DUP7 SUB PUSH2 0xCA6 PUSH2 0x1A0 DUP10 ADD PUSH2 0x180 DUP11 ADD PUSH2 0x1490 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xCF2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH2 0xCE7 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x134C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0xD84 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0xD43 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1897 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD71 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xD7F CALLER DUP3 PUSH2 0x10D3 JUMP JUMPDEST PUSH2 0xD9E JUMP JUMPDEST PUSH2 0xD9E PUSH2 0xD97 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x134C JUMP JUMPDEST CALLER DUP4 PUSH2 0x11C7 JUMP JUMPDEST POP JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xECB JUMPI DUP3 DUP2 LT ISZERO PUSH2 0xDC3 JUMPI PUSH2 0xDC3 PUSH2 0xC69 PUSH1 0xA0 DUP10 ADD PUSH1 0x80 DUP11 ADD PUSH2 0x134C JUMP JUMPDEST DUP1 DUP6 SUB PUSH2 0xDD8 PUSH2 0x1A0 DUP10 ADD PUSH2 0x180 DUP11 ADD PUSH2 0x1490 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xE24 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH2 0xE19 PUSH1 0xA0 DUP11 ADD PUSH1 0x80 DUP12 ADD PUSH2 0x134C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0xEB6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0xE75 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1897 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEA3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xEB1 CALLER DUP3 PUSH2 0x10D3 JUMP JUMPDEST PUSH2 0xEC9 JUMP JUMPDEST PUSH2 0xEC9 PUSH2 0xD97 PUSH1 0xA0 DUP11 ADD PUSH1 0x80 DUP12 ADD PUSH2 0x134C JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0xF61 JUMPI POP POP DUP2 DUP2 MUL DUP2 DUP4 DUP3 DUP2 PUSH2 0xF5E JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xF6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL 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 0x1001 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xFE2 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 0x1063 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 0x1068 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1096 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1096 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1093 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x10CC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x5341 PUSH1 0xF0 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x111F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1100 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 0x1181 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 0x1186 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x11C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x535445 PUSH1 0xE8 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH4 0xA9059CBB PUSH1 0xE0 SHL 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 0x1258 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1239 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 0x12BA 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 0x12BF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x12ED JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x12ED JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x10CC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x14D5 PUSH1 0xF2 SHL 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 0x1336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x135D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1368 DUP2 PUSH2 0x191C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1384 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x138F DUP2 PUSH2 0x191C JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x139F DUP2 PUSH2 0x191C JUMP JUMPDEST SWAP3 POP PUSH2 0x13AD PUSH1 0x40 DUP7 ADD PUSH2 0x1323 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x13BD DUP2 PUSH2 0x191C 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 0x13E0 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x13EB DUP2 PUSH2 0x191C JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x1407 PUSH1 0x60 DUP9 ADD PUSH2 0x133B 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 0x1433 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x144A JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x145D JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x146B JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x147E 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 0x14A1 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1368 DUP2 PUSH2 0x1934 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14BD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1368 DUP2 PUSH2 0x1934 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14D9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x1368 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14FA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1511 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1524 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x1530 JUMPI INVALID JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x154E JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x1565 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1576 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x18EC JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1592 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15A9 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1368 DUP3 PUSH2 0x1323 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x15C7 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 MLOAD SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x15ED 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 0x1615 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 0x1637 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1368 DUP3 PUSH2 0x133B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1665 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x18EC JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1724 JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x1712 DUP6 DUP4 MLOAD PUSH2 0x164D JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x16F6 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1368 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x164D 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 0x9 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F742057455448390000000000000000000000000000000000000000000000 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 0x17FD DUP3 DUP5 MLOAD PUSH2 0x1640 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x180F PUSH1 0x20 DUP5 ADD DUP3 PUSH2 0x1640 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x1822 PUSH1 0x40 DUP5 ADD DUP3 PUSH2 0x1680 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x1835 PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0x1679 JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x1848 PUSH1 0x80 DUP5 ADD DUP3 PUSH2 0x1679 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 0x1886 DUP3 DUP6 ADD DUP3 PUSH2 0x1640 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 PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x18B6 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x18D0 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x18E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1907 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x18EF JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1916 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1931 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1931 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP2 GAS ADD 0xCF 0xC8 0xB9 PUSH32 0x79913CF08930051683EE447EAC0BE48BCC7E926AC135DAD00564736F6C634300 SMOD MOD STOP CALLER ","sourceMap":"577:3531:59:-:0;;;793:234;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;536:18:64;;;;;;;;565:14;;;;;;;963:56:59;;;;::::1;::::0;577:3531;;14:179:178;95:13;;-1:-1:-1;;;;;137:31:178;;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;:::-;577:3531:59;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:11949:178","statements":[{"nodeType":"YulBlock","src":"6:3:178","statements":[]},{"body":{"nodeType":"YulBlock","src":"64:113:178","statements":[{"nodeType":"YulAssignment","src":"74:29:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"96:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"83:12:178"},"nodeType":"YulFunctionCall","src":"83:20:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"74:5:178"}]},{"body":{"nodeType":"YulBlock","src":"155:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"164:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"167:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"157:6:178"},"nodeType":"YulFunctionCall","src":"157:12:178"},"nodeType":"YulExpressionStatement","src":"157:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"125:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"136:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"143:8:178","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"132:3:178"},"nodeType":"YulFunctionCall","src":"132:20:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"122:2:178"},"nodeType":"YulFunctionCall","src":"122:31:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"115:6:178"},"nodeType":"YulFunctionCall","src":"115:39:178"},"nodeType":"YulIf","src":"112:2:178"}]},"name":"abi_decode_t_uint24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"43:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"54:5:178","type":""}],"src":"14:163:178"},{"body":{"nodeType":"YulBlock","src":"231:109:178","statements":[{"nodeType":"YulAssignment","src":"241:29:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"263:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"250:12:178"},"nodeType":"YulFunctionCall","src":"250:20:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"241:5:178"}]},{"body":{"nodeType":"YulBlock","src":"318:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"327:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"330:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"320:6:178"},"nodeType":"YulFunctionCall","src":"320:12:178"},"nodeType":"YulExpressionStatement","src":"320:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"292:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"303:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"310:4:178","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"299:3:178"},"nodeType":"YulFunctionCall","src":"299:16:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"289:2:178"},"nodeType":"YulFunctionCall","src":"289:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"282:6:178"},"nodeType":"YulFunctionCall","src":"282:35:178"},"nodeType":"YulIf","src":"279:2:178"}]},"name":"abi_decode_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"210:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"221:5:178","type":""}],"src":"182:158:178"},{"body":{"nodeType":"YulBlock","src":"415:189:178","statements":[{"body":{"nodeType":"YulBlock","src":"461:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"470:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"478:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"463:6:178"},"nodeType":"YulFunctionCall","src":"463:22:178"},"nodeType":"YulExpressionStatement","src":"463:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"436:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"445:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"432:3:178"},"nodeType":"YulFunctionCall","src":"432:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"457:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"428:3:178"},"nodeType":"YulFunctionCall","src":"428:32:178"},"nodeType":"YulIf","src":"425:2:178"},{"nodeType":"YulVariableDeclaration","src":"496:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"522:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"509:12:178"},"nodeType":"YulFunctionCall","src":"509:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"500:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"568:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"541:26:178"},"nodeType":"YulFunctionCall","src":"541:33:178"},"nodeType":"YulExpressionStatement","src":"541:33:178"},{"nodeType":"YulAssignment","src":"583:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"593:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"583:6:178"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"381:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"392:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"404:6:178","type":""}],"src":"345:259:178"},{"body":{"nodeType":"YulBlock","src":"729:500:178","statements":[{"body":{"nodeType":"YulBlock","src":"776:26:178","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"785:6:178"},{"name":"value1","nodeType":"YulIdentifier","src":"793:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"778:6:178"},"nodeType":"YulFunctionCall","src":"778:22:178"},"nodeType":"YulExpressionStatement","src":"778:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"750:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"759:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"746:3:178"},"nodeType":"YulFunctionCall","src":"746:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"771:3:178","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"742:3:178"},"nodeType":"YulFunctionCall","src":"742:33:178"},"nodeType":"YulIf","src":"739:2:178"},{"nodeType":"YulVariableDeclaration","src":"811:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"837:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"824:12:178"},"nodeType":"YulFunctionCall","src":"824:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"815:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"883:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"856:26:178"},"nodeType":"YulFunctionCall","src":"856:33:178"},"nodeType":"YulExpressionStatement","src":"856:33:178"},{"nodeType":"YulAssignment","src":"898:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"908:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"898:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"922:47:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"954:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"965:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"950:3:178"},"nodeType":"YulFunctionCall","src":"950:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"937:12:178"},"nodeType":"YulFunctionCall","src":"937:32:178"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"926:7:178","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1005:7:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"978:26:178"},"nodeType":"YulFunctionCall","src":"978:35:178"},"nodeType":"YulExpressionStatement","src":"978:35:178"},{"nodeType":"YulAssignment","src":"1022:17:178","value":{"name":"value_1","nodeType":"YulIdentifier","src":"1032:7:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1022:6:178"}]},{"nodeType":"YulAssignment","src":"1048:49:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1082:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1093:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1078:3:178"},"nodeType":"YulFunctionCall","src":"1078:18:178"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"1058:19:178"},"nodeType":"YulFunctionCall","src":"1058:39:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1048:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"1106:47:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1138:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1149:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1134:3:178"},"nodeType":"YulFunctionCall","src":"1134:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1121:12:178"},"nodeType":"YulFunctionCall","src":"1121:32:178"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"1110:7:178","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"1189:7:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1162:26:178"},"nodeType":"YulFunctionCall","src":"1162:35:178"},"nodeType":"YulExpressionStatement","src":"1162:35:178"},{"nodeType":"YulAssignment","src":"1206:17:178","value":{"name":"value_2","nodeType":"YulIdentifier","src":"1216:7:178"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1206:6:178"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint24t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"671:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"682:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"694:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"702:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"710:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"718:6:178","type":""}],"src":"609:620:178"},{"body":{"nodeType":"YulBlock","src":"1387:453:178","statements":[{"body":{"nodeType":"YulBlock","src":"1434:26:178","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1443:6:178"},{"name":"value4","nodeType":"YulIdentifier","src":"1451:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1436:6:178"},"nodeType":"YulFunctionCall","src":"1436:22:178"},"nodeType":"YulExpressionStatement","src":"1436:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1408:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"1417:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1404:3:178"},"nodeType":"YulFunctionCall","src":"1404:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"1429:3:178","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1400:3:178"},"nodeType":"YulFunctionCall","src":"1400:33:178"},"nodeType":"YulIf","src":"1397:2:178"},{"nodeType":"YulVariableDeclaration","src":"1469:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1495:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1482:12:178"},"nodeType":"YulFunctionCall","src":"1482:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1473:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1541:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1514:26:178"},"nodeType":"YulFunctionCall","src":"1514:33:178"},"nodeType":"YulExpressionStatement","src":"1514:33:178"},{"nodeType":"YulAssignment","src":"1556:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"1566:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1556:6:178"}]},{"nodeType":"YulAssignment","src":"1580:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1607:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1618:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1603:3:178"},"nodeType":"YulFunctionCall","src":"1603:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1590:12:178"},"nodeType":"YulFunctionCall","src":"1590:32:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1580:6:178"}]},{"nodeType":"YulAssignment","src":"1631:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1658:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1669:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1654:3:178"},"nodeType":"YulFunctionCall","src":"1654:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1641:12:178"},"nodeType":"YulFunctionCall","src":"1641:32:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1631:6:178"}]},{"nodeType":"YulAssignment","src":"1682:48:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1715:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1726:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1711:3:178"},"nodeType":"YulFunctionCall","src":"1711:18:178"}],"functionName":{"name":"abi_decode_t_uint8","nodeType":"YulIdentifier","src":"1692:18:178"},"nodeType":"YulFunctionCall","src":"1692:38:178"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1682:6:178"}]},{"nodeType":"YulAssignment","src":"1739:43:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1766:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1777:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1762:3:178"},"nodeType":"YulFunctionCall","src":"1762:19:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1749:12:178"},"nodeType":"YulFunctionCall","src":"1749:33:178"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"1739:6:178"}]},{"nodeType":"YulAssignment","src":"1791:43:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1818:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1829:3:178","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1814:3:178"},"nodeType":"YulFunctionCall","src":"1814:19:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1801:12:178"},"nodeType":"YulFunctionCall","src":"1801:33:178"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"1791:6:178"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1313:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1324:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1336:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1344:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1352:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1360:6:178","type":""},{"name":"value4","nodeType":"YulTypedName","src":"1368:6:178","type":""},{"name":"value5","nodeType":"YulTypedName","src":"1376:6:178","type":""}],"src":"1234:606:178"},{"body":{"nodeType":"YulBlock","src":"1961:561:178","statements":[{"body":{"nodeType":"YulBlock","src":"2007:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2016:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2024:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2009:6:178"},"nodeType":"YulFunctionCall","src":"2009:22:178"},"nodeType":"YulExpressionStatement","src":"2009:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1982:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"1991:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1978:3:178"},"nodeType":"YulFunctionCall","src":"1978:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"2003:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1974:3:178"},"nodeType":"YulFunctionCall","src":"1974:32:178"},"nodeType":"YulIf","src":"1971:2:178"},{"nodeType":"YulVariableDeclaration","src":"2042:37:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2069:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2056:12:178"},"nodeType":"YulFunctionCall","src":"2056:23:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2046:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2088:28:178","value":{"kind":"number","nodeType":"YulLiteral","src":"2098:18:178","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2092:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2143:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2152:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2160:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2145:6:178"},"nodeType":"YulFunctionCall","src":"2145:22:178"},"nodeType":"YulExpressionStatement","src":"2145:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2131:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"2139:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2128:2:178"},"nodeType":"YulFunctionCall","src":"2128:14:178"},"nodeType":"YulIf","src":"2125:2:178"},{"nodeType":"YulVariableDeclaration","src":"2178:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2192:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"2203:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2188:3:178"},"nodeType":"YulFunctionCall","src":"2188:22:178"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2182:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2258:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2267:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2275:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2260:6:178"},"nodeType":"YulFunctionCall","src":"2260:22:178"},"nodeType":"YulExpressionStatement","src":"2260:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2237:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"2241:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2233:3:178"},"nodeType":"YulFunctionCall","src":"2233:13:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2248:7:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2229:3:178"},"nodeType":"YulFunctionCall","src":"2229:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2222:6:178"},"nodeType":"YulFunctionCall","src":"2222:35:178"},"nodeType":"YulIf","src":"2219:2:178"},{"nodeType":"YulVariableDeclaration","src":"2293:30:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2320:2:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2307:12:178"},"nodeType":"YulFunctionCall","src":"2307:16:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2297:6:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2350:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2359:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2367:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2352:6:178"},"nodeType":"YulFunctionCall","src":"2352:22:178"},"nodeType":"YulExpressionStatement","src":"2352:22:178"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2338:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"2346:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2335:2:178"},"nodeType":"YulFunctionCall","src":"2335:14:178"},"nodeType":"YulIf","src":"2332:2:178"},{"body":{"nodeType":"YulBlock","src":"2435:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2444:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2452:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2437:6:178"},"nodeType":"YulFunctionCall","src":"2437:22:178"},"nodeType":"YulExpressionStatement","src":"2437:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2399:2:178"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2407:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"2415:2:178","type":"","value":"32"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2403:3:178"},"nodeType":"YulFunctionCall","src":"2403:15:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2395:3:178"},"nodeType":"YulFunctionCall","src":"2395:24:178"},{"kind":"number","nodeType":"YulLiteral","src":"2421:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2391:3:178"},"nodeType":"YulFunctionCall","src":"2391:33:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2426:7:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2388:2:178"},"nodeType":"YulFunctionCall","src":"2388:46:178"},"nodeType":"YulIf","src":"2385:2:178"},{"nodeType":"YulAssignment","src":"2470:21:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2484:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"2488:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2480:3:178"},"nodeType":"YulFunctionCall","src":"2480:11:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2470:6:178"}]},{"nodeType":"YulAssignment","src":"2500:16:178","value":{"name":"length","nodeType":"YulIdentifier","src":"2510:6:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2500:6:178"}]}]},"name":"abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1919:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1930:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1942:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1950:6:178","type":""}],"src":"1845:677:178"},{"body":{"nodeType":"YulBlock","src":"2594:186:178","statements":[{"body":{"nodeType":"YulBlock","src":"2640:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2649:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2657:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2642:6:178"},"nodeType":"YulFunctionCall","src":"2642:22:178"},"nodeType":"YulExpressionStatement","src":"2642:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2615:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"2624:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2611:3:178"},"nodeType":"YulFunctionCall","src":"2611:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"2636:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2607:3:178"},"nodeType":"YulFunctionCall","src":"2607:32:178"},"nodeType":"YulIf","src":"2604:2:178"},{"nodeType":"YulVariableDeclaration","src":"2675:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2701:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2688:12:178"},"nodeType":"YulFunctionCall","src":"2688:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2679:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2744:5:178"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"2720:23:178"},"nodeType":"YulFunctionCall","src":"2720:30:178"},"nodeType":"YulExpressionStatement","src":"2720:30:178"},{"nodeType":"YulAssignment","src":"2759:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"2769:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2759:6:178"}]}]},"name":"abi_decode_tuple_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2560:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2571:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2583:6:178","type":""}],"src":"2527:253:178"},{"body":{"nodeType":"YulBlock","src":"2863:179:178","statements":[{"body":{"nodeType":"YulBlock","src":"2909:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2918:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2926:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2911:6:178"},"nodeType":"YulFunctionCall","src":"2911:22:178"},"nodeType":"YulExpressionStatement","src":"2911:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2884:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"2893:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2880:3:178"},"nodeType":"YulFunctionCall","src":"2880:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"2905:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2876:3:178"},"nodeType":"YulFunctionCall","src":"2876:32:178"},"nodeType":"YulIf","src":"2873:2:178"},{"nodeType":"YulVariableDeclaration","src":"2944:29:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2963:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2957:5:178"},"nodeType":"YulFunctionCall","src":"2957:16:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2948:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3006:5:178"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"2982:23:178"},"nodeType":"YulFunctionCall","src":"2982:30:178"},"nodeType":"YulExpressionStatement","src":"2982:30:178"},{"nodeType":"YulAssignment","src":"3021:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"3031:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3021:6:178"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2829:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2840:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2852:6:178","type":""}],"src":"2785:257:178"},{"body":{"nodeType":"YulBlock","src":"3115:225:178","statements":[{"body":{"nodeType":"YulBlock","src":"3161:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3170:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3178:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3163:6:178"},"nodeType":"YulFunctionCall","src":"3163:22:178"},"nodeType":"YulExpressionStatement","src":"3163:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3136:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"3145:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3132:3:178"},"nodeType":"YulFunctionCall","src":"3132:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"3157:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3128:3:178"},"nodeType":"YulFunctionCall","src":"3128:32:178"},"nodeType":"YulIf","src":"3125:2:178"},{"nodeType":"YulVariableDeclaration","src":"3196:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3222:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3209:12:178"},"nodeType":"YulFunctionCall","src":"3209:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3200:5:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3284:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3293:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3301:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3286:6:178"},"nodeType":"YulFunctionCall","src":"3286:22:178"},"nodeType":"YulExpressionStatement","src":"3286:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3254:5:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3272:1:178","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"3275:5:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"3261:10:178"},"nodeType":"YulFunctionCall","src":"3261:20:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3251:2:178"},"nodeType":"YulFunctionCall","src":"3251:31:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3244:6:178"},"nodeType":"YulFunctionCall","src":"3244:39:178"},"nodeType":"YulIf","src":"3241:2:178"},{"nodeType":"YulAssignment","src":"3319:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"3329:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3319:6:178"}]}]},"name":"abi_decode_tuple_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3081:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3092:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3104:6:178","type":""}],"src":"3047:293:178"},{"body":{"nodeType":"YulBlock","src":"3436:785:178","statements":[{"body":{"nodeType":"YulBlock","src":"3482:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3491:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3499:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3484:6:178"},"nodeType":"YulFunctionCall","src":"3484:22:178"},"nodeType":"YulExpressionStatement","src":"3484:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3457:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"3466:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3453:3:178"},"nodeType":"YulFunctionCall","src":"3453:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"3478:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3449:3:178"},"nodeType":"YulFunctionCall","src":"3449:32:178"},"nodeType":"YulIf","src":"3446:2:178"},{"nodeType":"YulVariableDeclaration","src":"3517:30:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3537:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3531:5:178"},"nodeType":"YulFunctionCall","src":"3531:16:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3521:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3556:28:178","value":{"kind":"number","nodeType":"YulLiteral","src":"3566:18:178","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3560:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3611:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3620:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3628:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3613:6:178"},"nodeType":"YulFunctionCall","src":"3613:22:178"},"nodeType":"YulExpressionStatement","src":"3613:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3599:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3607:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3596:2:178"},"nodeType":"YulFunctionCall","src":"3596:14:178"},"nodeType":"YulIf","src":"3593:2:178"},{"nodeType":"YulVariableDeclaration","src":"3646:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3660:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"3671:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3656:3:178"},"nodeType":"YulFunctionCall","src":"3656:22:178"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3650:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3726:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3735:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3743:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3728:6:178"},"nodeType":"YulFunctionCall","src":"3728:22:178"},"nodeType":"YulExpressionStatement","src":"3728:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3705:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"3709:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:178"},"nodeType":"YulFunctionCall","src":"3701:13:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3716:7:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3697:3:178"},"nodeType":"YulFunctionCall","src":"3697:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3690:6:178"},"nodeType":"YulFunctionCall","src":"3690:35:178"},"nodeType":"YulIf","src":"3687:2:178"},{"nodeType":"YulVariableDeclaration","src":"3761:19:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3777:2:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3771:5:178"},"nodeType":"YulFunctionCall","src":"3771:9:178"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"3765:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3803:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"3805:7:178"},"nodeType":"YulFunctionCall","src":"3805:9:178"},"nodeType":"YulExpressionStatement","src":"3805:9:178"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3795:2:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3799:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3792:2:178"},"nodeType":"YulFunctionCall","src":"3792:10:178"},"nodeType":"YulIf","src":"3789:2:178"},{"nodeType":"YulVariableDeclaration","src":"3825:23:178","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3845:2:178","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3839:5:178"},"nodeType":"YulFunctionCall","src":"3839:9:178"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"3829:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3857:67:178","value":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3883:6:178"},{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3899:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"3903:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3895:3:178"},"nodeType":"YulFunctionCall","src":"3895:13:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3914:2:178","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3910:3:178"},"nodeType":"YulFunctionCall","src":"3910:7:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3891:3:178"},"nodeType":"YulFunctionCall","src":"3891:27:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3879:3:178"},"nodeType":"YulFunctionCall","src":"3879:40:178"},{"kind":"number","nodeType":"YulLiteral","src":"3921:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3875:3:178"},"nodeType":"YulFunctionCall","src":"3875:49:178"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"3861:10:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3983:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"3985:7:178"},"nodeType":"YulFunctionCall","src":"3985:9:178"},"nodeType":"YulExpressionStatement","src":"3985:9:178"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3942:10:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3954:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3939:2:178"},"nodeType":"YulFunctionCall","src":"3939:18:178"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3962:10:178"},{"name":"memPtr","nodeType":"YulIdentifier","src":"3974:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3959:2:178"},"nodeType":"YulFunctionCall","src":"3959:22:178"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"3936:2:178"},"nodeType":"YulFunctionCall","src":"3936:46:178"},"nodeType":"YulIf","src":"3933:2:178"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4012:2:178","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4016:10:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4005:6:178"},"nodeType":"YulFunctionCall","src":"4005:22:178"},"nodeType":"YulExpressionStatement","src":"4005:22:178"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4043:6:178"},{"name":"_3","nodeType":"YulIdentifier","src":"4051:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4036:6:178"},"nodeType":"YulFunctionCall","src":"4036:18:178"},"nodeType":"YulExpressionStatement","src":"4036:18:178"},{"body":{"nodeType":"YulBlock","src":"4100:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4109:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"4117:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4102:6:178"},"nodeType":"YulFunctionCall","src":"4102:22:178"},"nodeType":"YulExpressionStatement","src":"4102:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4077:2:178"},{"name":"_3","nodeType":"YulIdentifier","src":"4081:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4073:3:178"},"nodeType":"YulFunctionCall","src":"4073:11:178"},{"kind":"number","nodeType":"YulLiteral","src":"4086:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4069:3:178"},"nodeType":"YulFunctionCall","src":"4069:20:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4091:7:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4066:2:178"},"nodeType":"YulFunctionCall","src":"4066:33:178"},"nodeType":"YulIf","src":"4063:2:178"},{"expression":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4161:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"4165:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4157:3:178"},"nodeType":"YulFunctionCall","src":"4157:11:178"},{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4174:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"4182:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4170:3:178"},"nodeType":"YulFunctionCall","src":"4170:15:178"},{"name":"_3","nodeType":"YulIdentifier","src":"4187:2:178"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"4135:21:178"},"nodeType":"YulFunctionCall","src":"4135:55:178"},"nodeType":"YulExpressionStatement","src":"4135:55:178"},{"nodeType":"YulAssignment","src":"4199:16:178","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"4209:6:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4199:6:178"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3402:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3413:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3425:6:178","type":""}],"src":"3345:876:178"},{"body":{"nodeType":"YulBlock","src":"4330:107:178","statements":[{"body":{"nodeType":"YulBlock","src":"4377:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4386:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"4394:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4379:6:178"},"nodeType":"YulFunctionCall","src":"4379:22:178"},"nodeType":"YulExpressionStatement","src":"4379:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4351:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"4360:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4347:3:178"},"nodeType":"YulFunctionCall","src":"4347:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"4372:3:178","type":"","value":"416"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4343:3:178"},"nodeType":"YulFunctionCall","src":"4343:33:178"},"nodeType":"YulIf","src":"4340:2:178"},{"nodeType":"YulAssignment","src":"4412:19:178","value":{"name":"headStart","nodeType":"YulIdentifier","src":"4422:9:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4412:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_MigrateParams_$15739_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4296:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4307:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4319:6:178","type":""}],"src":"4226:211:178"},{"body":{"nodeType":"YulBlock","src":"4511:127:178","statements":[{"body":{"nodeType":"YulBlock","src":"4557:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4566:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"4574:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4559:6:178"},"nodeType":"YulFunctionCall","src":"4559:22:178"},"nodeType":"YulExpressionStatement","src":"4559:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4532:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"4541:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4528:3:178"},"nodeType":"YulFunctionCall","src":"4528:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"4553:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4524:3:178"},"nodeType":"YulFunctionCall","src":"4524:32:178"},"nodeType":"YulIf","src":"4521:2:178"},{"nodeType":"YulAssignment","src":"4592:40:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4622:9:178"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"4602:19:178"},"nodeType":"YulFunctionCall","src":"4602:30:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4592:6:178"}]}]},"name":"abi_decode_tuple_t_uint24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4477:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4488:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4500:6:178","type":""}],"src":"4442:196:178"},{"body":{"nodeType":"YulBlock","src":"4775:377:178","statements":[{"body":{"nodeType":"YulBlock","src":"4822:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4831:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"4839:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4824:6:178"},"nodeType":"YulFunctionCall","src":"4824:22:178"},"nodeType":"YulExpressionStatement","src":"4824:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4796:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"4805:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4792:3:178"},"nodeType":"YulFunctionCall","src":"4792:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"4817:3:178","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4788:3:178"},"nodeType":"YulFunctionCall","src":"4788:33:178"},"nodeType":"YulIf","src":"4785:2:178"},{"nodeType":"YulAssignment","src":"4857:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4873:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4867:5:178"},"nodeType":"YulFunctionCall","src":"4867:16:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4857:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"4892:38:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4915:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4926:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4911:3:178"},"nodeType":"YulFunctionCall","src":"4911:18:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4905:5:178"},"nodeType":"YulFunctionCall","src":"4905:25:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4896:5:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"5008:26:178","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"5017:6:178"},{"name":"value1","nodeType":"YulIdentifier","src":"5025:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5010:6:178"},"nodeType":"YulFunctionCall","src":"5010:22:178"},"nodeType":"YulExpressionStatement","src":"5010:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4952:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4963:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"4970:34:178","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4959:3:178"},"nodeType":"YulFunctionCall","src":"4959:46:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4949:2:178"},"nodeType":"YulFunctionCall","src":"4949:57:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4942:6:178"},"nodeType":"YulFunctionCall","src":"4942:65:178"},"nodeType":"YulIf","src":"4939:2:178"},{"nodeType":"YulAssignment","src":"5043:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"5053:5:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5043:6:178"}]},{"nodeType":"YulAssignment","src":"5067:35:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5087:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5098:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5083:3:178"},"nodeType":"YulFunctionCall","src":"5083:18:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5077:5:178"},"nodeType":"YulFunctionCall","src":"5077:25:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5067:6:178"}]},{"nodeType":"YulAssignment","src":"5111:35:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5131:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5142:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5127:3:178"},"nodeType":"YulFunctionCall","src":"5127:18:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5121:5:178"},"nodeType":"YulFunctionCall","src":"5121:25:178"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"5111:6:178"}]}]},"name":"abi_decode_tuple_t_uint256t_uint128t_uint256t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4717:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4728:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4740:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4748:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4756:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4764:6:178","type":""}],"src":"4643:509:178"},{"body":{"nodeType":"YulBlock","src":"5255:157:178","statements":[{"body":{"nodeType":"YulBlock","src":"5301:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5310:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"5318:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5303:6:178"},"nodeType":"YulFunctionCall","src":"5303:22:178"},"nodeType":"YulExpressionStatement","src":"5303:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5276:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"5285:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5272:3:178"},"nodeType":"YulFunctionCall","src":"5272:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"5297:2:178","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5268:3:178"},"nodeType":"YulFunctionCall","src":"5268:32:178"},"nodeType":"YulIf","src":"5265:2:178"},{"nodeType":"YulAssignment","src":"5336:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5352:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5346:5:178"},"nodeType":"YulFunctionCall","src":"5346:16:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5336:6:178"}]},{"nodeType":"YulAssignment","src":"5371:35:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5391:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5402:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5387:3:178"},"nodeType":"YulFunctionCall","src":"5387:18:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5381:5:178"},"nodeType":"YulFunctionCall","src":"5381:25:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5371:6:178"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5213:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5224:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5236:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5244:6:178","type":""}],"src":"5157:255:178"},{"body":{"nodeType":"YulBlock","src":"5485:126:178","statements":[{"body":{"nodeType":"YulBlock","src":"5531:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5540:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"5548:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5533:6:178"},"nodeType":"YulFunctionCall","src":"5533:22:178"},"nodeType":"YulExpressionStatement","src":"5533:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5506:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"5515:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5502:3:178"},"nodeType":"YulFunctionCall","src":"5502:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"5527:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5498:3:178"},"nodeType":"YulFunctionCall","src":"5498:32:178"},"nodeType":"YulIf","src":"5495:2:178"},{"nodeType":"YulAssignment","src":"5566:39:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5595:9:178"}],"functionName":{"name":"abi_decode_t_uint8","nodeType":"YulIdentifier","src":"5576:18:178"},"nodeType":"YulFunctionCall","src":"5576:29:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5566:6:178"}]}]},"name":"abi_decode_tuple_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5451:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5462:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5474:6:178","type":""}],"src":"5417:194:178"},{"body":{"nodeType":"YulBlock","src":"5662:83:178","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5679:3:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5688:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"5695:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5684:3:178"},"nodeType":"YulFunctionCall","src":"5684:54:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5672:6:178"},"nodeType":"YulFunctionCall","src":"5672:67:178"},"nodeType":"YulExpressionStatement","src":"5672:67:178"}]},"name":"abi_encode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5646:5:178","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5653:3:178","type":""}],"src":"5616:129:178"},{"body":{"nodeType":"YulBlock","src":"5801:208:178","statements":[{"nodeType":"YulVariableDeclaration","src":"5811:26:178","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5831:5:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5825:5:178"},"nodeType":"YulFunctionCall","src":"5825:12:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5815:6:178","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5853:3:178"},{"name":"length","nodeType":"YulIdentifier","src":"5858:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5846:6:178"},"nodeType":"YulFunctionCall","src":"5846:19:178"},"nodeType":"YulExpressionStatement","src":"5846:19:178"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5900:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"5907:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5896:3:178"},"nodeType":"YulFunctionCall","src":"5896:16:178"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5918:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"5923:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5914:3:178"},"nodeType":"YulFunctionCall","src":"5914:14:178"},{"name":"length","nodeType":"YulIdentifier","src":"5930:6:178"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"5874:21:178"},"nodeType":"YulFunctionCall","src":"5874:63:178"},"nodeType":"YulExpressionStatement","src":"5874:63:178"},{"nodeType":"YulAssignment","src":"5946:57:178","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5961:3:178"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5974:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"5982:2:178","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5970:3:178"},"nodeType":"YulFunctionCall","src":"5970:15:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5991:2:178","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"5987:3:178"},"nodeType":"YulFunctionCall","src":"5987:7:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5966:3:178"},"nodeType":"YulFunctionCall","src":"5966:29:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5957:3:178"},"nodeType":"YulFunctionCall","src":"5957:39:178"},{"kind":"number","nodeType":"YulLiteral","src":"5998:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5953:3:178"},"nodeType":"YulFunctionCall","src":"5953:50:178"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5946:3:178"}]}]},"name":"abi_encode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5778:5:178","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5785:3:178","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5793:3:178","type":""}],"src":"5750:259:178"},{"body":{"nodeType":"YulBlock","src":"6058:49:178","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6075:3:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6091:1:178","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"6094:5:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"6080:10:178"},"nodeType":"YulFunctionCall","src":"6080:20:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6068:6:178"},"nodeType":"YulFunctionCall","src":"6068:33:178"},"nodeType":"YulExpressionStatement","src":"6068:33:178"}]},"name":"abi_encode_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6042:5:178","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6049:3:178","type":""}],"src":"6014:93:178"},{"body":{"nodeType":"YulBlock","src":"6157:49:178","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6174:3:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6183:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"6190:8:178","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6179:3:178"},"nodeType":"YulFunctionCall","src":"6179:20:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6167:6:178"},"nodeType":"YulFunctionCall","src":"6167:33:178"},"nodeType":"YulExpressionStatement","src":"6167:33:178"}]},"name":"abi_encode_t_uint24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6141:5:178","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6148:3:178","type":""}],"src":"6112:94:178"},{"body":{"nodeType":"YulBlock","src":"6358:126:178","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6381:3:178"},{"name":"value0","nodeType":"YulIdentifier","src":"6386:6:178"},{"name":"value1","nodeType":"YulIdentifier","src":"6394:6:178"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"6368:12:178"},"nodeType":"YulFunctionCall","src":"6368:33:178"},"nodeType":"YulExpressionStatement","src":"6368:33:178"},{"nodeType":"YulVariableDeclaration","src":"6410:26:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6424:3:178"},{"name":"value1","nodeType":"YulIdentifier","src":"6429:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6420:3:178"},"nodeType":"YulFunctionCall","src":"6420:16:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6414:2:178","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"6452:2:178"},{"name":"end","nodeType":"YulIdentifier","src":"6456:3:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6445:6:178"},"nodeType":"YulFunctionCall","src":"6445:15:178"},"nodeType":"YulExpressionStatement","src":"6445:15:178"},{"nodeType":"YulAssignment","src":"6469:9:178","value":{"name":"_1","nodeType":"YulIdentifier","src":"6476:2:178"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6469:3:178"}]}]},"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":"6326:3:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6331:6:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6339:6:178","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6350:3:178","type":""}],"src":"6211:273:178"},{"body":{"nodeType":"YulBlock","src":"6590:125:178","statements":[{"nodeType":"YulAssignment","src":"6600:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6612:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"6623:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6608:3:178"},"nodeType":"YulFunctionCall","src":"6608:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6600:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6642:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6657:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6665:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6653:3:178"},"nodeType":"YulFunctionCall","src":"6653:55:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6635:6:178"},"nodeType":"YulFunctionCall","src":"6635:74:178"},"nodeType":"YulExpressionStatement","src":"6635:74:178"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6559:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6570:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6581:4:178","type":""}],"src":"6489:226:178"},{"body":{"nodeType":"YulBlock","src":"6829:125:178","statements":[{"nodeType":"YulAssignment","src":"6839:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6851:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"6862:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6847:3:178"},"nodeType":"YulFunctionCall","src":"6847:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6839:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6881:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6896:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6904:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6892:3:178"},"nodeType":"YulFunctionCall","src":"6892:55:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6874:6:178"},"nodeType":"YulFunctionCall","src":"6874:74:178"},"nodeType":"YulExpressionStatement","src":"6874:74:178"}]},"name":"abi_encode_tuple_t_address_payable__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6798:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6809:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6820:4:178","type":""}],"src":"6720:234:178"},{"body":{"nodeType":"YulBlock","src":"7124:241:178","statements":[{"nodeType":"YulAssignment","src":"7134:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7146:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"7157:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7142:3:178"},"nodeType":"YulFunctionCall","src":"7142:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7134:4:178"}]},{"nodeType":"YulVariableDeclaration","src":"7169:52:178","value":{"kind":"number","nodeType":"YulLiteral","src":"7179:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7173:2:178","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7237:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7252:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"7260:2:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7248:3:178"},"nodeType":"YulFunctionCall","src":"7248:15:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7230:6:178"},"nodeType":"YulFunctionCall","src":"7230:34:178"},"nodeType":"YulExpressionStatement","src":"7230:34:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7284:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"7295:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7280:3:178"},"nodeType":"YulFunctionCall","src":"7280:18:178"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7304:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"7312:2:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7300:3:178"},"nodeType":"YulFunctionCall","src":"7300:15:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7273:6:178"},"nodeType":"YulFunctionCall","src":"7273:43:178"},"nodeType":"YulExpressionStatement","src":"7273:43:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7336:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"7347:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7332:3:178"},"nodeType":"YulFunctionCall","src":"7332:18:178"},{"name":"value2","nodeType":"YulIdentifier","src":"7352:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7325:6:178"},"nodeType":"YulFunctionCall","src":"7325:34:178"},"nodeType":"YulExpressionStatement","src":"7325:34:178"}]},"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":"7077:9:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7088:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7096:6:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7104:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7115:4:178","type":""}],"src":"6959:406:178"},{"body":{"nodeType":"YulBlock","src":"7539:637:178","statements":[{"nodeType":"YulVariableDeclaration","src":"7549:12:178","value":{"kind":"number","nodeType":"YulLiteral","src":"7559:2:178","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7553:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7570:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7588:9:178"},{"name":"_1","nodeType":"YulIdentifier","src":"7599:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7584:3:178"},"nodeType":"YulFunctionCall","src":"7584:18:178"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"7574:6:178","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7618:9:178"},{"name":"_1","nodeType":"YulIdentifier","src":"7629:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7611:6:178"},"nodeType":"YulFunctionCall","src":"7611:21:178"},"nodeType":"YulExpressionStatement","src":"7611:21:178"},{"nodeType":"YulVariableDeclaration","src":"7641:17:178","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"7652:6:178"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"7645:3:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7667:27:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7687:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7681:5:178"},"nodeType":"YulFunctionCall","src":"7681:13:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7671:6:178","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"7710:6:178"},{"name":"length","nodeType":"YulIdentifier","src":"7718:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7703:6:178"},"nodeType":"YulFunctionCall","src":"7703:22:178"},"nodeType":"YulExpressionStatement","src":"7703:22:178"},{"nodeType":"YulAssignment","src":"7734:25:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7745:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"7756:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7741:3:178"},"nodeType":"YulFunctionCall","src":"7741:18:178"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7734:3:178"}]},{"nodeType":"YulVariableDeclaration","src":"7768:54:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7790:9:178"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7805:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"7813:2:178"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7801:3:178"},"nodeType":"YulFunctionCall","src":"7801:15:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7786:3:178"},"nodeType":"YulFunctionCall","src":"7786:31:178"},{"kind":"number","nodeType":"YulLiteral","src":"7819:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7782:3:178"},"nodeType":"YulFunctionCall","src":"7782:40:178"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"7772:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7831:29:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7849:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"7857:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7845:3:178"},"nodeType":"YulFunctionCall","src":"7845:15:178"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"7835:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7869:13:178","value":{"name":"tail","nodeType":"YulIdentifier","src":"7878:4:178"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"7873:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"7940:207:178","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7961:3:178"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"7974:6:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"7982:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7970:3:178"},"nodeType":"YulFunctionCall","src":"7970:22:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7998:2:178","type":"","value":"63"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7994:3:178"},"nodeType":"YulFunctionCall","src":"7994:7:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7966:3:178"},"nodeType":"YulFunctionCall","src":"7966:36:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7954:6:178"},"nodeType":"YulFunctionCall","src":"7954:49:178"},"nodeType":"YulExpressionStatement","src":"7954:49:178"},{"nodeType":"YulAssignment","src":"8016:51:178","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8051:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8045:5:178"},"nodeType":"YulFunctionCall","src":"8045:13:178"},{"name":"tail_2","nodeType":"YulIdentifier","src":"8060:6:178"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"8026:18:178"},"nodeType":"YulFunctionCall","src":"8026:41:178"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8016:6:178"}]},{"nodeType":"YulAssignment","src":"8080:25:178","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8094:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"8102:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8090:3:178"},"nodeType":"YulFunctionCall","src":"8090:15:178"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8080:6:178"}]},{"nodeType":"YulAssignment","src":"8118:19:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8129:3:178"},{"name":"_1","nodeType":"YulIdentifier","src":"8134:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8125:3:178"},"nodeType":"YulFunctionCall","src":"8125:12:178"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8118:3:178"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"7902:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"7905:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7899:2:178"},"nodeType":"YulFunctionCall","src":"7899:13:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"7913:18:178","statements":[{"nodeType":"YulAssignment","src":"7915:14:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"7924:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"7927:1:178","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7920:3:178"},"nodeType":"YulFunctionCall","src":"7920:9:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"7915:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"7895:3:178","statements":[]},"src":"7891:256:178"},{"nodeType":"YulAssignment","src":"8156:14:178","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"8164:6:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8156:4:178"}]}]},"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":"7508:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7519:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7530:4:178","type":""}],"src":"7370:806:178"},{"body":{"nodeType":"YulBlock","src":"8302:100:178","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8319:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"8330:2:178","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8312:6:178"},"nodeType":"YulFunctionCall","src":"8312:21:178"},"nodeType":"YulExpressionStatement","src":"8312:21:178"},{"nodeType":"YulAssignment","src":"8342:54:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8369:6:178"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8381:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"8392:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8377:3:178"},"nodeType":"YulFunctionCall","src":"8377:18:178"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"8350:18:178"},"nodeType":"YulFunctionCall","src":"8350:46:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8342:4:178"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8271:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8282:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8293:4:178","type":""}],"src":"8181:221:178"},{"body":{"nodeType":"YulBlock","src":"8581:170:178","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8598:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"8609:2:178","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8591:6:178"},"nodeType":"YulFunctionCall","src":"8591:21:178"},"nodeType":"YulExpressionStatement","src":"8591:21:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8632:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"8643:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8628:3:178"},"nodeType":"YulFunctionCall","src":"8628:18:178"},{"kind":"number","nodeType":"YulLiteral","src":"8648:2:178","type":"","value":"20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8621:6:178"},"nodeType":"YulFunctionCall","src":"8621:30:178"},"nodeType":"YulExpressionStatement","src":"8621:30:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8671:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"8682:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8667:3:178"},"nodeType":"YulFunctionCall","src":"8667:18:178"},{"kind":"string","nodeType":"YulLiteral","src":"8687:22:178","type":"","value":"Percentage too small"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8660:6:178"},"nodeType":"YulFunctionCall","src":"8660:50:178"},"nodeType":"YulExpressionStatement","src":"8660:50:178"},{"nodeType":"YulAssignment","src":"8719:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8731:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"8742:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8727:3:178"},"nodeType":"YulFunctionCall","src":"8727:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8719:4:178"}]}]},"name":"abi_encode_tuple_t_stringliteral_441c69a76c2d33fd9de54332033d9c05337cb9707baa639e0118d8dc01b47be7__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8558:9:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8572:4:178","type":""}],"src":"8407:344:178"},{"body":{"nodeType":"YulBlock","src":"8930:158:178","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8947:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"8958:2:178","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8940:6:178"},"nodeType":"YulFunctionCall","src":"8940:21:178"},"nodeType":"YulExpressionStatement","src":"8940:21:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8981:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"8992:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8977:3:178"},"nodeType":"YulFunctionCall","src":"8977:18:178"},{"kind":"number","nodeType":"YulLiteral","src":"8997:1:178","type":"","value":"9"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8970:6:178"},"nodeType":"YulFunctionCall","src":"8970:29:178"},"nodeType":"YulExpressionStatement","src":"8970:29:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9019:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"9030:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9015:3:178"},"nodeType":"YulFunctionCall","src":"9015:18:178"},{"kind":"string","nodeType":"YulLiteral","src":"9035:11:178","type":"","value":"Not WETH9"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9008:6:178"},"nodeType":"YulFunctionCall","src":"9008:39:178"},"nodeType":"YulExpressionStatement","src":"9008:39:178"},{"nodeType":"YulAssignment","src":"9056:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9068:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"9079:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9064:3:178"},"nodeType":"YulFunctionCall","src":"9064:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9056:4:178"}]}]},"name":"abi_encode_tuple_t_stringliteral_9a5f12903ee10b20c1ea1ca8d6f6723d553112d744fe8db2bc5453efb990e6b1__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8907:9:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8921:4:178","type":""}],"src":"8756:332:178"},{"body":{"nodeType":"YulBlock","src":"9267:170:178","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9284:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"9295:2:178","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9277:6:178"},"nodeType":"YulFunctionCall","src":"9277:21:178"},"nodeType":"YulExpressionStatement","src":"9277:21:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9318:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"9329:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9314:3:178"},"nodeType":"YulFunctionCall","src":"9314:18:178"},{"kind":"number","nodeType":"YulLiteral","src":"9334:2:178","type":"","value":"20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9307:6:178"},"nodeType":"YulFunctionCall","src":"9307:30:178"},"nodeType":"YulExpressionStatement","src":"9307:30:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9357:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"9368:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9353:3:178"},"nodeType":"YulFunctionCall","src":"9353:18:178"},{"kind":"string","nodeType":"YulLiteral","src":"9373:22:178","type":"","value":"Percentage too large"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9346:6:178"},"nodeType":"YulFunctionCall","src":"9346:50:178"},"nodeType":"YulExpressionStatement","src":"9346:50:178"},{"nodeType":"YulAssignment","src":"9405:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9417:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"9428:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9413:3:178"},"nodeType":"YulFunctionCall","src":"9413:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9405:4:178"}]}]},"name":"abi_encode_tuple_t_stringliteral_9a769b63cd4026b5e7e44da6e571c3cde616fe3a40029eab2d6b59e7b569424b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9244:9:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9258:4:178","type":""}],"src":"9093:344:178"},{"body":{"nodeType":"YulBlock","src":"9601:1077:178","statements":[{"nodeType":"YulAssignment","src":"9611:27:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9623:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"9634:3:178","type":"","value":"352"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9619:3:178"},"nodeType":"YulFunctionCall","src":"9619:19:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9611:4:178"}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9674:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9668:5:178"},"nodeType":"YulFunctionCall","src":"9668:13:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"9683:9:178"}],"functionName":{"name":"abi_encode_t_address","nodeType":"YulIdentifier","src":"9647:20:178"},"nodeType":"YulFunctionCall","src":"9647:46:178"},"nodeType":"YulExpressionStatement","src":"9647:46:178"},{"nodeType":"YulVariableDeclaration","src":"9702:44:178","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9732:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"9740:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9728:3:178"},"nodeType":"YulFunctionCall","src":"9728:17:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9722:5:178"},"nodeType":"YulFunctionCall","src":"9722:24:178"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"9706:12:178","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"9776:12:178"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9794:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"9805:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9790:3:178"},"nodeType":"YulFunctionCall","src":"9790:20:178"}],"functionName":{"name":"abi_encode_t_address","nodeType":"YulIdentifier","src":"9755:20:178"},"nodeType":"YulFunctionCall","src":"9755:56:178"},"nodeType":"YulExpressionStatement","src":"9755:56:178"},{"nodeType":"YulVariableDeclaration","src":"9820:46:178","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9852:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"9860:4:178","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9848:3:178"},"nodeType":"YulFunctionCall","src":"9848:17:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9842:5:178"},"nodeType":"YulFunctionCall","src":"9842:24:178"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"9824:14:178","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"9895:14:178"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9915:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"9926:4:178","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9911:3:178"},"nodeType":"YulFunctionCall","src":"9911:20:178"}],"functionName":{"name":"abi_encode_t_uint24","nodeType":"YulIdentifier","src":"9875:19:178"},"nodeType":"YulFunctionCall","src":"9875:57:178"},"nodeType":"YulExpressionStatement","src":"9875:57:178"},{"nodeType":"YulVariableDeclaration","src":"9941:46:178","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9973:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"9981:4:178","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9969:3:178"},"nodeType":"YulFunctionCall","src":"9969:17:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9963:5:178"},"nodeType":"YulFunctionCall","src":"9963:24:178"},"variables":[{"name":"memberValue0_2","nodeType":"YulTypedName","src":"9945:14:178","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_2","nodeType":"YulIdentifier","src":"10015:14:178"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10035:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"10046:4:178","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10031:3:178"},"nodeType":"YulFunctionCall","src":"10031:20:178"}],"functionName":{"name":"abi_encode_t_int24","nodeType":"YulIdentifier","src":"9996:18:178"},"nodeType":"YulFunctionCall","src":"9996:56:178"},"nodeType":"YulExpressionStatement","src":"9996:56:178"},{"nodeType":"YulVariableDeclaration","src":"10061:46:178","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10093:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"10101:4:178","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10089:3:178"},"nodeType":"YulFunctionCall","src":"10089:17:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10083:5:178"},"nodeType":"YulFunctionCall","src":"10083:24:178"},"variables":[{"name":"memberValue0_3","nodeType":"YulTypedName","src":"10065:14:178","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_3","nodeType":"YulIdentifier","src":"10135:14:178"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10155:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"10166:4:178","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10151:3:178"},"nodeType":"YulFunctionCall","src":"10151:20:178"}],"functionName":{"name":"abi_encode_t_int24","nodeType":"YulIdentifier","src":"10116:18:178"},"nodeType":"YulFunctionCall","src":"10116:56:178"},"nodeType":"YulExpressionStatement","src":"10116:56:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10192:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"10203:4:178","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10188:3:178"},"nodeType":"YulFunctionCall","src":"10188:20:178"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10220:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"10228:4:178","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10216:3:178"},"nodeType":"YulFunctionCall","src":"10216:17:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10210:5:178"},"nodeType":"YulFunctionCall","src":"10210:24:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10181:6:178"},"nodeType":"YulFunctionCall","src":"10181:54:178"},"nodeType":"YulExpressionStatement","src":"10181:54:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10255:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"10266:4:178","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10251:3:178"},"nodeType":"YulFunctionCall","src":"10251:20:178"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10283:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"10291:4:178","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10279:3:178"},"nodeType":"YulFunctionCall","src":"10279:17:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10273:5:178"},"nodeType":"YulFunctionCall","src":"10273:24:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10244:6:178"},"nodeType":"YulFunctionCall","src":"10244:54:178"},"nodeType":"YulExpressionStatement","src":"10244:54:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10318:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"10329:4:178","type":"","value":"0xe0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10314:3:178"},"nodeType":"YulFunctionCall","src":"10314:20:178"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10346:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"10354:4:178","type":"","value":"0xe0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10342:3:178"},"nodeType":"YulFunctionCall","src":"10342:17:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10336:5:178"},"nodeType":"YulFunctionCall","src":"10336:24:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10307:6:178"},"nodeType":"YulFunctionCall","src":"10307:54:178"},"nodeType":"YulExpressionStatement","src":"10307:54:178"},{"nodeType":"YulVariableDeclaration","src":"10370:16:178","value":{"kind":"number","nodeType":"YulLiteral","src":"10380:6:178","type":"","value":"0x0100"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"10374:2:178","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10406:9:178"},{"name":"_1","nodeType":"YulIdentifier","src":"10417:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10402:3:178"},"nodeType":"YulFunctionCall","src":"10402:18:178"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10432:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"10440:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10428:3:178"},"nodeType":"YulFunctionCall","src":"10428:15:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10422:5:178"},"nodeType":"YulFunctionCall","src":"10422:22:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10395:6:178"},"nodeType":"YulFunctionCall","src":"10395:50:178"},"nodeType":"YulExpressionStatement","src":"10395:50:178"},{"nodeType":"YulVariableDeclaration","src":"10454:16:178","value":{"kind":"number","nodeType":"YulLiteral","src":"10464:6:178","type":"","value":"0x0120"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"10458:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"10479:44:178","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10511:6:178"},{"name":"_2","nodeType":"YulIdentifier","src":"10519:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10507:3:178"},"nodeType":"YulFunctionCall","src":"10507:15:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10501:5:178"},"nodeType":"YulFunctionCall","src":"10501:22:178"},"variables":[{"name":"memberValue0_4","nodeType":"YulTypedName","src":"10483:14:178","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_4","nodeType":"YulIdentifier","src":"10553:14:178"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10573:9:178"},{"name":"_2","nodeType":"YulIdentifier","src":"10584:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10569:3:178"},"nodeType":"YulFunctionCall","src":"10569:18:178"}],"functionName":{"name":"abi_encode_t_address","nodeType":"YulIdentifier","src":"10532:20:178"},"nodeType":"YulFunctionCall","src":"10532:56:178"},"nodeType":"YulExpressionStatement","src":"10532:56:178"},{"nodeType":"YulVariableDeclaration","src":"10597:16:178","value":{"kind":"number","nodeType":"YulLiteral","src":"10607:6:178","type":"","value":"0x0140"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"10601:2:178","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10633:9:178"},{"name":"_3","nodeType":"YulIdentifier","src":"10644:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10629:3:178"},"nodeType":"YulFunctionCall","src":"10629:18:178"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10659:6:178"},{"name":"_3","nodeType":"YulIdentifier","src":"10667:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10655:3:178"},"nodeType":"YulFunctionCall","src":"10655:15:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10649:5:178"},"nodeType":"YulFunctionCall","src":"10649:22:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10622:6:178"},"nodeType":"YulFunctionCall","src":"10622:50:178"},"nodeType":"YulExpressionStatement","src":"10622:50:178"}]},"name":"abi_encode_tuple_t_struct$_MintParams_$15982_memory_ptr__to_t_struct$_MintParams_$15982_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9570:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9581:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9592:4:178","type":""}],"src":"9442:1236:178"},{"body":{"nodeType":"YulBlock","src":"10784:76:178","statements":[{"nodeType":"YulAssignment","src":"10794:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10806:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"10817:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10802:3:178"},"nodeType":"YulFunctionCall","src":"10802:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10794:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10836:9:178"},{"name":"value0","nodeType":"YulIdentifier","src":"10847:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10829:6:178"},"nodeType":"YulFunctionCall","src":"10829:25:178"},"nodeType":"YulExpressionStatement","src":"10829:25:178"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10753:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10764:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10775:4:178","type":""}],"src":"10683:177:178"},{"body":{"nodeType":"YulBlock","src":"10959:439:178","statements":[{"nodeType":"YulVariableDeclaration","src":"10969:51:178","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"11008:11:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10995:12:178"},"nodeType":"YulFunctionCall","src":"10995:25:178"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"10973:18:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"11109:22:178","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"11118:4:178"},{"name":"addr","nodeType":"YulIdentifier","src":"11124:4:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11111:6:178"},"nodeType":"YulFunctionCall","src":"11111:18:178"},"nodeType":"YulExpressionStatement","src":"11111:18:178"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"11043:18:178"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"11071:12:178"},"nodeType":"YulFunctionCall","src":"11071:14:178"},{"name":"base_ref","nodeType":"YulIdentifier","src":"11087:8:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11067:3:178"},"nodeType":"YulFunctionCall","src":"11067:29:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11102:2:178","type":"","value":"30"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"11098:3:178"},"nodeType":"YulFunctionCall","src":"11098:7:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11063:3:178"},"nodeType":"YulFunctionCall","src":"11063:43:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11039:3:178"},"nodeType":"YulFunctionCall","src":"11039:68:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11032:6:178"},"nodeType":"YulFunctionCall","src":"11032:76:178"},"nodeType":"YulIf","src":"11029:2:178"},{"nodeType":"YulVariableDeclaration","src":"11140:47:178","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"11158:8:178"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"11168:18:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11154:3:178"},"nodeType":"YulFunctionCall","src":"11154:33:178"},"variables":[{"name":"addr_1","nodeType":"YulTypedName","src":"11144:6:178","type":""}]},{"nodeType":"YulAssignment","src":"11196:30:178","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"11219:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11206:12:178"},"nodeType":"YulFunctionCall","src":"11206:20:178"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"11196:6:178"}]},{"body":{"nodeType":"YulBlock","src":"11269:22:178","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"11278:4:178"},{"name":"addr","nodeType":"YulIdentifier","src":"11284:4:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11271:6:178"},"nodeType":"YulFunctionCall","src":"11271:18:178"},"nodeType":"YulExpressionStatement","src":"11271:18:178"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"11241:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"11249:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11238:2:178"},"nodeType":"YulFunctionCall","src":"11238:30:178"},"nodeType":"YulIf","src":"11235:2:178"},{"nodeType":"YulAssignment","src":"11300:25:178","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"11312:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"11320:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11308:3:178"},"nodeType":"YulFunctionCall","src":"11308:17:178"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"11300:4:178"}]},{"body":{"nodeType":"YulBlock","src":"11376:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11385:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11388:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11378:6:178"},"nodeType":"YulFunctionCall","src":"11378:12:178"},"nodeType":"YulExpressionStatement","src":"11378:12:178"}]},"condition":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"11341:4:178"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"11351:12:178"},"nodeType":"YulFunctionCall","src":"11351:14:178"},{"name":"length","nodeType":"YulIdentifier","src":"11367:6:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11347:3:178"},"nodeType":"YulFunctionCall","src":"11347:27:178"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"11337:3:178"},"nodeType":"YulFunctionCall","src":"11337:38:178"},"nodeType":"YulIf","src":"11334:2:178"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"10916:8:178","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"10926:11:178","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"10942:4:178","type":""},{"name":"length","nodeType":"YulTypedName","src":"10948:6:178","type":""}],"src":"10865:533:178"},{"body":{"nodeType":"YulBlock","src":"11456:205:178","statements":[{"nodeType":"YulVariableDeclaration","src":"11466:10:178","value":{"kind":"number","nodeType":"YulLiteral","src":"11475:1:178","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"11470:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"11535:63:178","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"11560:3:178"},{"name":"i","nodeType":"YulIdentifier","src":"11565:1:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11556:3:178"},"nodeType":"YulFunctionCall","src":"11556:11:178"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"11579:3:178"},{"name":"i","nodeType":"YulIdentifier","src":"11584:1:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11575:3:178"},"nodeType":"YulFunctionCall","src":"11575:11:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11569:5:178"},"nodeType":"YulFunctionCall","src":"11569:18:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11549:6:178"},"nodeType":"YulFunctionCall","src":"11549:39:178"},"nodeType":"YulExpressionStatement","src":"11549:39:178"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11496:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"11499:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"11493:2:178"},"nodeType":"YulFunctionCall","src":"11493:13:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"11507:19:178","statements":[{"nodeType":"YulAssignment","src":"11509:15:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11518:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"11521:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11514:3:178"},"nodeType":"YulFunctionCall","src":"11514:10:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"11509:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"11489:3:178","statements":[]},"src":"11485:113:178"},{"body":{"nodeType":"YulBlock","src":"11624:31:178","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"11637:3:178"},{"name":"length","nodeType":"YulIdentifier","src":"11642:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11633:3:178"},"nodeType":"YulFunctionCall","src":"11633:16:178"},{"kind":"number","nodeType":"YulLiteral","src":"11651:1:178","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11626:6:178"},"nodeType":"YulFunctionCall","src":"11626:27:178"},"nodeType":"YulExpressionStatement","src":"11626:27:178"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11613:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"11616:6:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11610:2:178"},"nodeType":"YulFunctionCall","src":"11610:13:178"},"nodeType":"YulIf","src":"11607:2:178"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"11434:3:178","type":""},{"name":"dst","nodeType":"YulTypedName","src":"11439:3:178","type":""},{"name":"length","nodeType":"YulTypedName","src":"11444:6:178","type":""}],"src":"11403:258:178"},{"body":{"nodeType":"YulBlock","src":"11713:109:178","statements":[{"body":{"nodeType":"YulBlock","src":"11800:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11809:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11812:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11802:6:178"},"nodeType":"YulFunctionCall","src":"11802:12:178"},"nodeType":"YulExpressionStatement","src":"11802:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11736:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11747:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"11754:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11743:3:178"},"nodeType":"YulFunctionCall","src":"11743:54:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"11733:2:178"},"nodeType":"YulFunctionCall","src":"11733:65:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11726:6:178"},"nodeType":"YulFunctionCall","src":"11726:73:178"},"nodeType":"YulIf","src":"11723:2:178"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11702:5:178","type":""}],"src":"11666:156:178"},{"body":{"nodeType":"YulBlock","src":"11871:76:178","statements":[{"body":{"nodeType":"YulBlock","src":"11925:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11934:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11937:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11927:6:178"},"nodeType":"YulFunctionCall","src":"11927:12:178"},"nodeType":"YulExpressionStatement","src":"11927:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11894:5:178"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11915:5:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11908:6:178"},"nodeType":"YulFunctionCall","src":"11908:13:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11901:6:178"},"nodeType":"YulFunctionCall","src":"11901:21:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"11891:2:178"},"nodeType":"YulFunctionCall","src":"11891:32:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11884:6:178"},"nodeType":"YulFunctionCall","src":"11884:40:178"},"nodeType":"YulIf","src":"11881:2:178"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11860:5:178","type":""}],"src":"11827:120:178"}]},"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), not(31))), 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_$15739_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), not(31))), 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), not(63)))\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_9a5f12903ee10b20c1ea1ca8d6f6723d553112d744fe8db2bc5453efb990e6b1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 9)\n        mstore(add(headStart, 64), \"Not WETH9\")\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_$15982_memory_ptr__to_t_struct$_MintParams_$15982_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), not(30)))) { 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":178,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"13477":[{"length":32,"start":1939},{"length":32,"start":2654},{"length":32,"start":2712},{"length":32,"start":2754},{"length":32,"start":3179}],"14934":[{"length":32,"start":552},{"length":32,"start":751},{"length":32,"start":2118}],"14938":[{"length":32,"start":197},{"length":32,"start":1430},{"length":32,"start":3255},{"length":32,"start":3342},{"length":32,"start":3561},{"length":32,"start":3648}]},"linkReferences":{},"object":"6080604052600436106100b55760003560e01c8063b44a272211610069578063c45a01551161004e578063c45a0155146101be578063d44f2bf2146101d3578063f3995c67146101f35761010d565b8063b44a272214610196578063c2e3140a146101ab5761010d565b80634aa4a4fc1161009a5780634aa4a4fc1461014e578063a4a78f0c14610163578063ac9650d8146101765761010d565b806313ead562146101125780634659a4941461013b5761010d565b3661010d57336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461010b5760405162461bcd60e51b81526004016101029061177b565b60405180910390fd5b005b600080fd5b61012561012036600461136f565b610206565b6040516101329190611699565b60405180910390f35b61010b6101493660046113c8565b6104fa565b34801561015a57600080fd5b50610125610594565b61010b6101713660046113c8565b6105b8565b610189610184366004611421565b610651565b60405161013291906116d1565b3480156101a257600080fd5b50610125610791565b61010b6101b93660046113c8565b6107b5565b3480156101ca57600080fd5b50610125610844565b3480156101df57600080fd5b5061010b6101ee366004611580565b610868565b61010b6102013660046113c8565b610ed4565b6000836001600160a01b0316856001600160a01b03161061022657600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631698ee828686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff168152602001935050505060206040518083038186803b1580156102b157600080fd5b505afa1580156102c5573d6000803e3d6000fd5b505050506040513d60208110156102db57600080fd5b505190506001600160a01b038116610411577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a16712958686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff1681526020019350505050602060405180830381600087803b15801561037a57600080fd5b505af115801561038e573d6000803e3d6000fd5b505050506040513d60208110156103a457600080fd5b50516040805163f637731d60e01b81526001600160a01b03858116600483015291519293509083169163f637731d9160248082019260009290919082900301818387803b1580156103f457600080fd5b505af1158015610408573d6000803e3d6000fd5b505050506104f2565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561044c57600080fd5b505afa158015610460573d6000803e3d6000fd5b505050506040513d60e081101561047657600080fd5b505190506001600160a01b0381166104f057816001600160a01b031663f637731d846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156104d757600080fd5b505af11580156104eb573d6000803e3d6000fd5b505050505b505b949350505050565b604080516323f2ebc360e21b815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b15801561057457600080fd5b505af1158015610588573d6000803e3d6000fd5b50505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60408051636eb1769f60e11b81523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b15801561060957600080fd5b505afa15801561061d573d6000803e3d6000fd5b505050506040513d602081101561063357600080fd5b50511015610649576106498686868686866104fa565b505050505050565b60608167ffffffffffffffff8111801561066a57600080fd5b5060405190808252806020026020018201604052801561069e57816020015b60608152602001906001900390816106895790505b50905060005b8281101561078a57600080308686858181106106bc57fe5b90506020028101906106ce91906118a0565b6040516106dc929190611689565b600060405180830381855af49150503d8060008114610717576040519150601f19603f3d011682016040523d82523d6000602084013e61071c565b606091505b5091509150816107685760448151101561073557600080fd5b6004810190508080602001905181019061074f91906114e9565b60405162461bcd60e51b81526004016101029190611731565b8084848151811061077557fe5b602090810291909101015250506001016106a4565b5092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b15801561080457600080fd5b505afa158015610818573d6000803e3d6000fd5b505050506040513d602081101561082e57600080fd5b5051101561064957610649868686868686610ed4565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061087a6060830160408401611626565b60ff161161089a5760405162461bcd60e51b815260040161010290611744565b60646108ac6060830160408401611626565b60ff1611156108cd5760405162461bcd60e51b8152600401610102906117b2565b6108da602082018261134c565b6001600160a01b03166323b872dd336108f6602085018561134c565b84602001356040518463ffffffff1660e01b8152600401610919939291906116ad565b602060405180830381600087803b15801561093357600080fd5b505af1158015610947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096b91906114ac565b5060008061097c602084018461134c565b6001600160a01b03166389afcb44306040518263ffffffff1660e01b81526004016109a79190611699565b6040805180830381600087803b1580156109c057600080fd5b505af11580156109d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f89190611603565b909250905060006064610a1e610a146060870160408801611626565b859060ff16610f46565b81610a2557fe5b04905060006064610a3f610a146060880160408901611626565b81610a4657fe5b049050610a83610a5c608087016060880161134c565b7f000000000000000000000000000000000000000000000000000000000000000084610f70565b610abd610a9660a087016080880161134c565b7f000000000000000000000000000000000000000000000000000000000000000083610f70565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663883164566040518061016001604052808a6060016020810190610b0e919061134c565b6001600160a01b03168152602001610b2c60a08c0160808d0161134c565b6001600160a01b03168152602001610b4a60c08c0160a08d01611598565b62ffffff168152602001610b6460e08c0160c08d016114c8565b60020b8152602001610b7d6101008c0160e08d016114c8565b60020b815260208101889052604081018790526101008b013560608201526101208b0135608082015260a001610bbb6101608c016101408d0161134c565b6001600160a01b031681526020018a61016001358152506040518263ffffffff1660e01b8152600401610bee91906117e9565b608060405180830381600087803b158015610c0857600080fd5b505af1158015610c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4091906115b2565b93509350505085821015610da05783821015610c9157610c91610c696080890160608a0161134c565b7f00000000000000000000000000000000000000000000000000000000000000006000610f70565b818603610ca66101a089016101808a01611490565b8015610cf257506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016610ce760808a0160608b0161134c565b6001600160a01b0316145b15610d8457604051632e1a7d4d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90610d43908490600401611897565b600060405180830381600087803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50505050610d7f33826110d3565b610d9e565b610d9e610d9760808a0160608b0161134c565b33836111c7565b505b84811015610ecb5782811015610dc357610dc3610c6960a0890160808a0161134c565b808503610dd86101a089016101808a01611490565b8015610e2457506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016610e1960a08a0160808b0161134c565b6001600160a01b0316145b15610eb657604051632e1a7d4d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90610e75908490600401611897565b600060405180830381600087803b158015610e8f57600080fd5b505af1158015610ea3573d6000803e3d6000fd5b50505050610eb133826110d3565b610ec9565b610ec9610d9760a08a0160808b0161134c565b505b50505050505050565b6040805163d505accf60e01b8152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b15801561057457600080fd5b6000821580610f6157505081810281838281610f5e57fe5b04145b610f6a57600080fd5b92915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b1781529251825160009485949389169392918291908083835b602083106110015780518252601f199092019160209182019101610fe2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611063576040519150601f19603f3d011682016040523d82523d6000602084013e611068565b606091505b5091509150818015611096575080511580611096575080806020019051602081101561109357600080fd5b50515b6110cc576040805162461bcd60e51b8152602060048201526002602482015261534160f01b604482015290519081900360640190fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b6020831061111f5780518252601f199092019160209182019101611100565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611181576040519150601f19603f3d011682016040523d82523d6000602084013e611186565b606091505b50509050806111c2576040805162461bcd60e51b815260206004820152600360248201526253544560e81b604482015290519081900360640190fd5b505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106112585780518252601f199092019160209182019101611239565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112ba576040519150601f19603f3d011682016040523d82523d6000602084013e6112bf565b606091505b50915091508180156112ed5750805115806112ed57508080602001905160208110156112ea57600080fd5b50515b6110cc576040805162461bcd60e51b815260206004820152600260248201526114d560f21b604482015290519081900360640190fd5b803562ffffff8116811461133657600080fd5b919050565b803560ff8116811461133657600080fd5b60006020828403121561135d578081fd5b81356113688161191c565b9392505050565b60008060008060808587031215611384578283fd5b843561138f8161191c565b9350602085013561139f8161191c565b92506113ad60408601611323565b915060608501356113bd8161191c565b939692955090935050565b60008060008060008060c087890312156113e0578182fd5b86356113eb8161191c565b955060208701359450604087013593506114076060880161133b565b92506080870135915060a087013590509295509295509295565b60008060208385031215611433578182fd5b823567ffffffffffffffff8082111561144a578384fd5b818501915085601f83011261145d578384fd5b81358181111561146b578485fd5b866020808302850101111561147e578485fd5b60209290920196919550909350505050565b6000602082840312156114a1578081fd5b813561136881611934565b6000602082840312156114bd578081fd5b815161136881611934565b6000602082840312156114d9578081fd5b81358060020b8114611368578182fd5b6000602082840312156114fa578081fd5b815167ffffffffffffffff80821115611511578283fd5b818401915084601f830112611524578283fd5b81518181111561153057fe5b604051601f8201601f19168101602001838111828210171561154e57fe5b604052818152838201602001871015611565578485fd5b6115768260208301602087016118ec565b9695505050505050565b60006101a08284031215611592578081fd5b50919050565b6000602082840312156115a9578081fd5b61136882611323565b600080600080608085870312156115c7578384fd5b8451935060208501516fffffffffffffffffffffffffffffffff811681146115ed578384fd5b6040860151606090960151949790965092505050565b60008060408385031215611615578182fd5b505080516020909101519092909150565b600060208284031215611637578081fd5b6113688261133b565b6001600160a01b03169052565b600081518084526116658160208601602086016118ec565b601f01601f19169290920160200192915050565b60020b9052565b62ffffff169052565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000602080830181845280855180835260408601915060408482028701019250838701855b8281101561172457603f1988860301845261171285835161164d565b945092850192908501906001016116f6565b5092979650505050505050565b600060208252611368602083018461164d565b60208082526014908201527f50657263656e7461676520746f6f20736d616c6c000000000000000000000000604082015260600190565b60208082526009908201527f4e6f742057455448390000000000000000000000000000000000000000000000604082015260600190565b60208082526014908201527f50657263656e7461676520746f6f206c61726765000000000000000000000000604082015260600190565b6000610160820190506117fd828451611640565b602083015161180f6020840182611640565b5060408301516118226040840182611680565b5060608301516118356060840182611679565b5060808301516118486080840182611679565b5060a083015160a083015260c083015160c083015260e083015160e08301526101008084015181840152506101208084015161188682850182611640565b505061014092830151919092015290565b90815260200190565b6000808335601e198436030181126118b6578283fd5b83018035915067ffffffffffffffff8211156118d0578283fd5b6020019150368190038213156118e557600080fd5b9250929050565b60005b838110156119075781810151838201526020016118ef565b83811115611916576000848401525b50505050565b6001600160a01b038116811461193157600080fd5b50565b801515811461193157600080fdfea2646970667358221220815a01cfc8b97f79913cf08930051683ee447eac0be48bcc7e926ac135dad00564736f6c63430007060033","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 0x1BE JUMPI DUP1 PUSH4 0xD44F2BF2 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x1F3 JUMPI PUSH2 0x10D JUMP JUMPDEST DUP1 PUSH4 0xB44A2722 EQ PUSH2 0x196 JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0x1AB JUMPI PUSH2 0x10D JUMP JUMPDEST DUP1 PUSH4 0x4AA4A4FC GT PUSH2 0x9A JUMPI DUP1 PUSH4 0x4AA4A4FC EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x163 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x176 JUMPI PUSH2 0x10D JUMP JUMPDEST DUP1 PUSH4 0x13EAD562 EQ PUSH2 0x112 JUMPI DUP1 PUSH4 0x4659A494 EQ PUSH2 0x13B JUMPI PUSH2 0x10D JUMP JUMPDEST CALLDATASIZE PUSH2 0x10D JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x10B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x102 SWAP1 PUSH2 0x177B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x125 PUSH2 0x120 CALLDATASIZE PUSH1 0x4 PUSH2 0x136F JUMP JUMPDEST PUSH2 0x206 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x132 SWAP2 SWAP1 PUSH2 0x1699 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10B PUSH2 0x149 CALLDATASIZE PUSH1 0x4 PUSH2 0x13C8 JUMP JUMPDEST PUSH2 0x4FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x125 PUSH2 0x594 JUMP JUMPDEST PUSH2 0x10B PUSH2 0x171 CALLDATASIZE PUSH1 0x4 PUSH2 0x13C8 JUMP JUMPDEST PUSH2 0x5B8 JUMP JUMPDEST PUSH2 0x189 PUSH2 0x184 CALLDATASIZE PUSH1 0x4 PUSH2 0x1421 JUMP JUMPDEST PUSH2 0x651 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x132 SWAP2 SWAP1 PUSH2 0x16D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x125 PUSH2 0x791 JUMP JUMPDEST PUSH2 0x10B PUSH2 0x1B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x13C8 JUMP JUMPDEST PUSH2 0x7B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x125 PUSH2 0x844 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B PUSH2 0x1EE CALLDATASIZE PUSH1 0x4 PUSH2 0x1580 JUMP JUMPDEST PUSH2 0x868 JUMP JUMPDEST PUSH2 0x10B PUSH2 0x201 CALLDATASIZE PUSH1 0x4 PUSH2 0x13C8 JUMP JUMPDEST PUSH2 0xED4 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1698EE82 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x2B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C5 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 0x2DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x411 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA1671295 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x37A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x38E 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 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xF637731D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x408 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x4F2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x460 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 0x476 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x4F0 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF637731D DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x4D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4EB 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 PUSH4 0x23F2EBC3 PUSH1 0xE2 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x588 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 PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 NOT SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x61D 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 0x633 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x649 JUMPI PUSH2 0x649 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x4FA JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x66A 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 0x69E JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x689 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x6BC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x6CE SWAP2 SWAP1 PUSH2 0x18A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6DC SWAP3 SWAP2 SWAP1 PUSH2 0x1689 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x717 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 0x71C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x768 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x735 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x74F SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x102 SWAP2 SWAP1 PUSH2 0x1731 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x775 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x6A4 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x804 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x818 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 0x82E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x649 JUMPI PUSH2 0x649 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0xED4 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87A PUSH1 0x60 DUP4 ADD PUSH1 0x40 DUP5 ADD PUSH2 0x1626 JUMP JUMPDEST PUSH1 0xFF AND GT PUSH2 0x89A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x102 SWAP1 PUSH2 0x1744 JUMP JUMPDEST PUSH1 0x64 PUSH2 0x8AC PUSH1 0x60 DUP4 ADD PUSH1 0x40 DUP5 ADD PUSH2 0x1626 JUMP JUMPDEST PUSH1 0xFF AND GT ISZERO PUSH2 0x8CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x102 SWAP1 PUSH2 0x17B2 JUMP JUMPDEST PUSH2 0x8DA PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x134C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD CALLER PUSH2 0x8F6 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x134C JUMP JUMPDEST DUP5 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x919 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x16AD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x947 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 0x96B SWAP2 SWAP1 PUSH2 0x14AC JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH2 0x97C PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x134C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x89AFCB44 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A7 SWAP2 SWAP1 PUSH2 0x1699 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9D4 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 0x9F8 SWAP2 SWAP1 PUSH2 0x1603 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH1 0x64 PUSH2 0xA1E PUSH2 0xA14 PUSH1 0x60 DUP8 ADD PUSH1 0x40 DUP9 ADD PUSH2 0x1626 JUMP JUMPDEST DUP6 SWAP1 PUSH1 0xFF AND PUSH2 0xF46 JUMP JUMPDEST DUP2 PUSH2 0xA25 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x64 PUSH2 0xA3F PUSH2 0xA14 PUSH1 0x60 DUP9 ADD PUSH1 0x40 DUP10 ADD PUSH2 0x1626 JUMP JUMPDEST DUP2 PUSH2 0xA46 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0xA83 PUSH2 0xA5C PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x134C JUMP JUMPDEST PUSH32 0x0 DUP5 PUSH2 0xF70 JUMP JUMPDEST PUSH2 0xABD PUSH2 0xA96 PUSH1 0xA0 DUP8 ADD PUSH1 0x80 DUP9 ADD PUSH2 0x134C JUMP JUMPDEST PUSH32 0x0 DUP4 PUSH2 0xF70 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x88316456 PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 DUP11 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xB0E SWAP2 SWAP1 PUSH2 0x134C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB2C PUSH1 0xA0 DUP13 ADD PUSH1 0x80 DUP14 ADD PUSH2 0x134C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB4A PUSH1 0xC0 DUP13 ADD PUSH1 0xA0 DUP14 ADD PUSH2 0x1598 JUMP JUMPDEST PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB64 PUSH1 0xE0 DUP13 ADD PUSH1 0xC0 DUP14 ADD PUSH2 0x14C8 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB7D PUSH2 0x100 DUP13 ADD PUSH1 0xE0 DUP14 ADD PUSH2 0x14C8 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 0xBBB PUSH2 0x160 DUP13 ADD PUSH2 0x140 DUP14 ADD PUSH2 0x134C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xBEE SWAP2 SWAP1 PUSH2 0x17E9 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC1C 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 0xC40 SWAP2 SWAP1 PUSH2 0x15B2 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP DUP6 DUP3 LT ISZERO PUSH2 0xDA0 JUMPI DUP4 DUP3 LT ISZERO PUSH2 0xC91 JUMPI PUSH2 0xC91 PUSH2 0xC69 PUSH1 0x80 DUP10 ADD PUSH1 0x60 DUP11 ADD PUSH2 0x134C JUMP JUMPDEST PUSH32 0x0 PUSH1 0x0 PUSH2 0xF70 JUMP JUMPDEST DUP2 DUP7 SUB PUSH2 0xCA6 PUSH2 0x1A0 DUP10 ADD PUSH2 0x180 DUP11 ADD PUSH2 0x1490 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xCF2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH2 0xCE7 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x134C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0xD84 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0xD43 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1897 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD71 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xD7F CALLER DUP3 PUSH2 0x10D3 JUMP JUMPDEST PUSH2 0xD9E JUMP JUMPDEST PUSH2 0xD9E PUSH2 0xD97 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x134C JUMP JUMPDEST CALLER DUP4 PUSH2 0x11C7 JUMP JUMPDEST POP JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xECB JUMPI DUP3 DUP2 LT ISZERO PUSH2 0xDC3 JUMPI PUSH2 0xDC3 PUSH2 0xC69 PUSH1 0xA0 DUP10 ADD PUSH1 0x80 DUP11 ADD PUSH2 0x134C JUMP JUMPDEST DUP1 DUP6 SUB PUSH2 0xDD8 PUSH2 0x1A0 DUP10 ADD PUSH2 0x180 DUP11 ADD PUSH2 0x1490 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xE24 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH2 0xE19 PUSH1 0xA0 DUP11 ADD PUSH1 0x80 DUP12 ADD PUSH2 0x134C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0xEB6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0xE75 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1897 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEA3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xEB1 CALLER DUP3 PUSH2 0x10D3 JUMP JUMPDEST PUSH2 0xEC9 JUMP JUMPDEST PUSH2 0xEC9 PUSH2 0xD97 PUSH1 0xA0 DUP11 ADD PUSH1 0x80 DUP12 ADD PUSH2 0x134C JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0xF61 JUMPI POP POP DUP2 DUP2 MUL DUP2 DUP4 DUP3 DUP2 PUSH2 0xF5E JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xF6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL 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 0x1001 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xFE2 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 0x1063 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 0x1068 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1096 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1096 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1093 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x10CC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x5341 PUSH1 0xF0 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x111F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1100 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 0x1181 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 0x1186 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x11C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x535445 PUSH1 0xE8 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH4 0xA9059CBB PUSH1 0xE0 SHL 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 0x1258 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1239 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 0x12BA 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 0x12BF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x12ED JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x12ED JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x10CC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x14D5 PUSH1 0xF2 SHL 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 0x1336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x135D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1368 DUP2 PUSH2 0x191C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1384 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x138F DUP2 PUSH2 0x191C JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x139F DUP2 PUSH2 0x191C JUMP JUMPDEST SWAP3 POP PUSH2 0x13AD PUSH1 0x40 DUP7 ADD PUSH2 0x1323 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x13BD DUP2 PUSH2 0x191C 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 0x13E0 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x13EB DUP2 PUSH2 0x191C JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x1407 PUSH1 0x60 DUP9 ADD PUSH2 0x133B 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 0x1433 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x144A JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x145D JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x146B JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x147E 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 0x14A1 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1368 DUP2 PUSH2 0x1934 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14BD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1368 DUP2 PUSH2 0x1934 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14D9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x1368 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14FA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1511 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1524 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x1530 JUMPI INVALID JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x154E JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x1565 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1576 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x18EC JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1592 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15A9 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1368 DUP3 PUSH2 0x1323 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x15C7 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 MLOAD SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x15ED 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 0x1615 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 0x1637 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1368 DUP3 PUSH2 0x133B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1665 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x18EC JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1724 JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x1712 DUP6 DUP4 MLOAD PUSH2 0x164D JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x16F6 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1368 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x164D 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 0x9 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F742057455448390000000000000000000000000000000000000000000000 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 0x17FD DUP3 DUP5 MLOAD PUSH2 0x1640 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x180F PUSH1 0x20 DUP5 ADD DUP3 PUSH2 0x1640 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x1822 PUSH1 0x40 DUP5 ADD DUP3 PUSH2 0x1680 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x1835 PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0x1679 JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x1848 PUSH1 0x80 DUP5 ADD DUP3 PUSH2 0x1679 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 0x1886 DUP3 DUP6 ADD DUP3 PUSH2 0x1640 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 PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x18B6 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x18D0 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x18E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1907 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x18EF JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1916 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1931 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1931 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP2 GAS ADD 0xCF 0xC8 0xB9 PUSH32 0x79913CF08930051683EE447EAC0BE48BCC7E926AC135DAD00564736F6C634300 SMOD MOD STOP CALLER ","sourceMap":"577:3531:59:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1081:10;-1:-1:-1;;;;;1095:5:59;1081:19;;1073:41;;;;-1:-1:-1;;;1073:41:59;;;;;;;:::i;:::-;;;;;;;;;577:3531;;;;;448:722:68;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1380:298:69;;;;;;:::i;:::-;;:::i;431:39:64:-;;;;;;;;;;;;;:::i;1719:358:69:-;;;;;;:::i;:::-;;:::i;318:669:63:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;733:51:59:-;;;;;;;;;;;;;:::i;1016:323:69:-;;;;;;:::i;:::-;;:::i;337:41:64:-;;;;;;;;;;;;;:::i;1130:2975:59:-;;;;;;;;;;-1:-1:-1;1130:2975:59;;;;;:::i;:::-;;:::i;693:282:69:-;;;;;;:::i;:::-;;:::i;448:722:68:-;636:12;678:6;-1:-1:-1;;;;;669:15:68;:6;-1:-1:-1;;;;;669:15:68;;661:24;;;;;;718:7;-1:-1:-1;;;;;703:31:68;;735:6;743;751:3;703:52;;;;;;;;;;;;;-1:-1:-1;;;;;703:52:68;;;;;;-1:-1:-1;;;;;703:52:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;703:52:68;;-1:-1:-1;;;;;;772:18:68;;768:395;;829:7;-1:-1:-1;;;;;814:34:68;;849:6;857;865:3;814:55;;;;;;;;;;;;;-1:-1:-1;;;;;814:55:68;;;;;;-1:-1:-1;;;;;814:55:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;814:55:68;884:42;;;-1:-1:-1;;;884:42:68;;-1:-1:-1;;;;;884:42:68;;;;;;;;;814:55;;-1:-1:-1;884:28:68;;;;;;:42;;;;;-1:-1:-1;;884:42:68;;;;;;;;-1:-1:-1;884:28:68;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;768:395;;;960:28;1016:4;-1:-1:-1;;;;;1004:23:68;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1004:25:68;;-1:-1:-1;;;;;;1048:25:68;;1044:108;;1106:4;-1:-1:-1;;;;;1094:28:68;;1123:12;1094:42;;;;;;;;;;;;;-1:-1:-1;;;;;1094:42:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1044:108;768:395;;448:722;;;;;;:::o;1380:298:69:-;1580:90;;;-1:-1:-1;;;1580:90:69;;1614:10;1580:90;;;;1634:4;1580:90;;;;;;;;;;;;;;;;1656:4;1580:90;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1580:33:69;;;;;:90;;;;;-1:-1:-1;;1580:90:69;;;;;;;-1:-1:-1;1580:33:69;:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1380:298;;;;;;:::o;431:39:64:-;;;:::o;1719:358:69:-;1936:50;;;-1:-1:-1;;;1936:50:69;;1960:10;1936:50;;;;1980:4;1936:50;;;;;;-1:-1:-1;;1989:17:69;-1:-1:-1;;;;;1936:23:69;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1936:50:69;:70;1932:137;;;2021:48;2039:5;2046;2053:6;2061:1;2064;2067;2021:17;:48::i;:::-;1719:358;;;;;;:::o;318:669:63:-;393:22;450:4;438:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;428:34;;478:9;473:507;493:15;;;473:507;;;531:12;;576:4;595;;600:1;595:7;;;;;;;;;;;;;;;;;;:::i;:::-;568:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;530:73;;;;625:7;620:313;;754:2;738:6;:13;:18;734:32;;;758:8;;;734:32;839:4;831:6;827:17;817:27;;899:6;888:28;;;;;;;;;;;;:::i;:::-;881:36;;-1:-1:-1;;;881:36:63;;;;;;;;:::i;620:313::-;962:6;949:7;957:1;949:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;510:3:63;;473:507;;;;318:669;;;;:::o;733:51:59:-;;;:::o;1016:323:69:-;1228:50;;;-1:-1:-1;;;1228:50:69;;1252:10;1228:50;;;;1272:4;1228:50;;;;;;1281:5;;-1:-1:-1;;;;;1228:23:69;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1228:50:69;:58;1224:107;;;1288:43;1299:5;1306;1313:8;1323:1;1326;1329;1288:10;:43::i;337:41:64:-;;;:::o;1130:2975:59:-;1244:1;1215:26;;;;;;;;:::i;:::-;:30;;;1207:63;;;;-1:-1:-1;;;1207:63:59;;;;;;;:::i;:::-;1319:3;1289:26;;;;;;;;:::i;:::-;:33;;;;1281:66;;;;-1:-1:-1;;;1281:66:59;;;;;;;:::i;:::-;1420:11;;;;:6;:11;:::i;:::-;-1:-1:-1;;;;;1406:39:59;;1446:10;1458:11;;;;:6;:11;:::i;:::-;1471:6;:25;;;1406:91;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1509:17:59;;1563:11;;;;:6;:11;:::i;:::-;-1:-1:-1;;;;;1549:31:59;;1589:4;1549:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1508:87;;-1:-1:-1;1508:87:59;-1:-1:-1;1663:26:59;1736:3;1692:41;1706:26;;;;;;;;:::i;:::-;1692:9;;:41;;:13;:41::i;:::-;:47;;;;;;;-1:-1:-1;1750:26:59;1823:3;1779:41;1793:26;;;;;;;;:::i;1779:41::-;:47;;;;;;;-1:-1:-1;1912:89:59;1939:13;;;;;;;;:::i;:::-;1954:26;1982:18;1912:26;:89::i;:::-;2012;2039:13;;;;;;;;:::i;:::-;2054:26;2082:18;2012:26;:89::i;:::-;2157:17;2176;2238:26;-1:-1:-1;;;;;2210:60:59;;2289:601;;;;;;;;2359:6;:13;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2289:601:59;;;;;2403:13;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2289:601:59;;;;;2444:10;;;;;;;;:::i;:::-;2289:601;;;;;;2488:16;;;;;;;;:::i;:::-;2289:601;;;;;;2538:16;;;;;;;;:::i;:::-;2289:601;;;;;;;;;;;;;;;;2703:17;;;;2289:601;;;;2755:17;;;;2289:601;;;;;;2806:16;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2289:601:59;;;;;2855:6;:15;;;2289:601;;;2210:695;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2152:753;;;;;;2992:9;2980;:21;2976:556;;;3034:18;3022:9;:30;3018:143;;;3073:72;3100:13;;;;;;;;:::i;:::-;3115:26;3143:1;3073:26;:72::i;:::-;3195:21;;;3235:18;;;;;;;;:::i;:::-;:44;;;;-1:-1:-1;;;;;;3274:5:59;3257:22;:13;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3257:22:59;;3235:44;3231:290;;;3300:31;;-1:-1:-1;;;3300:31:59;;-1:-1:-1;;;;;3307:5:59;3300:22;;;;:31;;3323:7;;3300:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3350:51;3381:10;3393:7;3350:30;:51::i;:::-;3231:290;;;3442:63;3470:13;;;;;;;;:::i;:::-;3485:10;3497:7;3442:27;:63::i;:::-;2976:556;;3558:9;3546;:21;3542:556;;;3600:18;3588:9;:30;3584:143;;;3639:72;3666:13;;;;;;;;:::i;3639:72::-;3761:21;;;3801:18;;;;;;;;:::i;:::-;:44;;;;-1:-1:-1;;;;;;3840:5:59;3823:22;:13;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3823:22:59;;3801:44;3797:290;;;3866:31;;-1:-1:-1;;;3866:31:59;;-1:-1:-1;;;;;3873:5:59;3866:22;;;;:31;;3889:7;;3866:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3916:51;3947:10;3959:7;3916:30;:51::i;:::-;3797:290;;;4008:63;4036:13;;;;;;;;:::i;4008:63::-;3542:556;;1130:2975;;;;;;;:::o;693:282:69:-;888:79;;;-1:-1:-1;;;888:79:69;;915:10;888:79;;;;935:4;888:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;888:26:69;;;;;:79;;;;;-1:-1:-1;;888:79:69;;;;;;;-1:-1:-1;888:26:69;:79;;;;;;;;;;1012:127:20;1070:9;1100:6;;;:30;;-1:-1:-1;;1115:5:20;;;1129:1;1124;1115:5;1124:1;1110:15;;;;;:20;1100:30;1092:39;;;;;;1012:127;;;;:::o;1923:314:103:-;2087:58;;;-1:-1:-1;;;;;2087:58:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2087:58:103;;;2076:70;;;;2041:12;;;;2076:10;;;;2087:58;2076:70;;;2087:58;2076:70;;2087:58;2076:70;;;;;;;;;;-1:-1:-1;;2076:70:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2040:106;;;;2165:7;:57;;;;-1:-1:-1;2177:11:103;;:16;;:44;;;2208:4;2197:24;;;;;;;;;;;;;;;-1:-1:-1;2197:24:103;2177:44;2157:72;;;;;-1:-1:-1;;;2157:72:103;;;;;;;;;;;;-1:-1:-1;;;2157:72:103;;;;;;;;;;;;;;;1923:314;;;;;:::o;2433:168::-;2546:12;;;2506;2546;;;;;;;;;-1:-1:-1;;;;;2524:7:103;;;2539:5;;2524:35;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2524:35:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2505:54;;;2578:7;2570:23;;;;;-1:-1:-1;;;2570:23:103;;;;;;;;;;;;-1:-1:-1;;;2570:23:103;;;;;;;;;;;;;;;2433:168;;;:::o;1247:316::-;1412:59;;;-1:-1:-1;;;;;1412:59:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1412:59:103;;;1401:71;;;;1366:12;;;;1401:10;;;;1412:59;1401:71;;;1412:59;1401:71;;1412:59;1401:71;;;;;;;;;;-1:-1:-1;;1401:71:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1365:107;;;;1491:7;:57;;;;-1:-1:-1;1503:11:103;;:16;;:44;;;1534:4;1523:24;;;;;;;;;;;;;;;-1:-1:-1;1523:24:103;1503:44;1483:72;;;;;-1:-1:-1;;;1483:72:103;;;;;;;;;;;;-1:-1:-1;;;1483:72:103;;;;;;;;;;;;;;14:163:178;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:178: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:178;950:18;;937:32;978:35;937:32;978:35;:::i;:::-;1032:7;-1:-1:-1;1058:39:178;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:178;;-1:-1:-1;;729:500:178: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:178;1603:18;;1590:32;;-1:-1:-1;1669:2:178;1654:18;;1641:32;;-1:-1:-1;1692:38:178;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:178;;-1:-1:-1;;;;1961:561:178: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:876;;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;3914:2;3895:13;;-1:-1:-1;;3891:27:178;3879:40;;3921:2;3875:49;3939:18;;;3959:22;;;3936:46;3933:2;;;3985:9;3933:2;4012;4005:22;4036:18;;;4073:11;;;4086:2;4069:20;4066:33;-1:-1:-1;4063:2:178;;;4117:6;4109;4102:22;4063:2;4135:55;4187:2;4182;4174:6;4170:15;4165:2;4161;4157:11;4135:55;:::i;:::-;4209:6;3436:785;-1:-1:-1;;;;;;3436:785:178:o;4226:211::-;;4372:3;4360:9;4351:7;4347:23;4343:33;4340:2;;;4394:6;4386;4379:22;4340:2;-1:-1:-1;4422:9:178;4330:107;-1:-1:-1;4330:107:178:o;4442:196::-;;4553:2;4541:9;4532:7;4528:23;4524:32;4521:2;;;4574:6;4566;4559:22;4521:2;4602:30;4622:9;4602:30;:::i;4643:509::-;;;;;4817:3;4805:9;4796:7;4792:23;4788:33;4785:2;;;4839:6;4831;4824:22;4785:2;4873:9;4867:16;4857:26;;4926:2;4915:9;4911:18;4905:25;4970:34;4963:5;4959:46;4952:5;4949:57;4939:2;;5025:6;5017;5010:22;4939:2;5098;5083:18;;5077:25;5142:2;5127:18;;;5121:25;4775:377;;5053:5;;-1:-1:-1;4775:377:178;-1:-1:-1;;;4775:377:178:o;5157:255::-;;;5297:2;5285:9;5276:7;5272:23;5268:32;5265:2;;;5318:6;5310;5303:22;5265:2;-1:-1:-1;;5346:16:178;;5402:2;5387:18;;;5381:25;5346:16;;5381:25;;-1:-1:-1;5255:157:178:o;5417:194::-;;5527:2;5515:9;5506:7;5502:23;5498:32;5495:2;;;5548:6;5540;5533:22;5495:2;5576:29;5595:9;5576:29;:::i;5616:129::-;-1:-1:-1;;;;;5684:54:178;5672:67;;5662:83::o;5750:259::-;;5831:5;5825:12;5858:6;5853:3;5846:19;5874:63;5930:6;5923:4;5918:3;5914:14;5907:4;5900:5;5896:16;5874:63;:::i;:::-;5991:2;5970:15;-1:-1:-1;;5966:29:178;5957:39;;;;5998:4;5953:50;;5801:208;-1:-1:-1;;5801:208:178:o;6014:93::-;6091:1;6080:20;6068:33;;6058:49::o;6112:94::-;6190:8;6179:20;6167:33;;6157:49::o;6211:273::-;;6394:6;6386;6381:3;6368:33;6420:16;;6445:15;;;6420:16;6358:126;-1:-1:-1;6358:126:178:o;6489:226::-;-1:-1:-1;;;;;6653:55:178;;;;6635:74;;6623:2;6608:18;;6590:125::o;6959:406::-;-1:-1:-1;;;;;7248:15:178;;;7230:34;;7300:15;;;;7295:2;7280:18;;7273:43;7347:2;7332:18;;7325:34;;;;7157:2;7142:18;;7124:241::o;7370:806::-;;7559:2;7599;7588:9;7584:18;7629:2;7618:9;7611:21;7652:6;7687;7681:13;7718:6;7710;7703:22;7756:2;7745:9;7741:18;7734:25;;7819:2;7813;7805:6;7801:15;7790:9;7786:31;7782:40;7768:54;;7857:2;7849:6;7845:15;7878:4;7891:256;7905:6;7902:1;7899:13;7891:256;;;7998:2;7994:7;7982:9;7974:6;7970:22;7966:36;7961:3;7954:49;8026:41;8060:6;8051;8045:13;8026:41;:::i;:::-;8016:51;-1:-1:-1;8125:12:178;;;;8090:15;;;;7927:1;7920:9;7891:256;;;-1:-1:-1;8164:6:178;;7539:637;-1:-1:-1;;;;;;;7539:637:178:o;8181:221::-;;8330:2;8319:9;8312:21;8350:46;8392:2;8381:9;8377:18;8369:6;8350:46;:::i;8407:344::-;8609:2;8591:21;;;8648:2;8628:18;;;8621:30;8687:22;8682:2;8667:18;;8660:50;8742:2;8727:18;;8581:170::o;8756:332::-;8958:2;8940:21;;;8997:1;8977:18;;;8970:29;9035:11;9030:2;9015:18;;9008:39;9079:2;9064:18;;8930:158::o;9093:344::-;9295:2;9277:21;;;9334:2;9314:18;;;9307:30;9373:22;9368:2;9353:18;;9346:50;9428:2;9413:18;;9267:170::o;9442:1236::-;;9634:3;9623:9;9619:19;9611:27;;9647:46;9683:9;9674:6;9668:13;9647:46;:::i;:::-;9740:4;9732:6;9728:17;9722:24;9755:56;9805:4;9794:9;9790:20;9776:12;9755:56;:::i;:::-;;9860:4;9852:6;9848:17;9842:24;9875:57;9926:4;9915:9;9911:20;9895:14;9875:57;:::i;:::-;;9981:4;9973:6;9969:17;9963:24;9996:56;10046:4;10035:9;10031:20;10015:14;9996:56;:::i;:::-;;10101:4;10093:6;10089:17;10083:24;10116:56;10166:4;10155:9;10151:20;10135:14;10116:56;:::i;:::-;;10228:4;10220:6;10216:17;10210:24;10203:4;10192:9;10188:20;10181:54;10291:4;10283:6;10279:17;10273:24;10266:4;10255:9;10251:20;10244:54;10354:4;10346:6;10342:17;10336:24;10329:4;10318:9;10314:20;10307:54;10380:6;10440:2;10432:6;10428:15;10422:22;10417:2;10406:9;10402:18;10395:50;;10464:6;10519:2;10511:6;10507:15;10501:22;10532:56;10584:2;10573:9;10569:18;10553:14;10532:56;:::i;:::-;-1:-1:-1;;10607:6:178;10655:15;;;10649:22;10629:18;;;;10622:50;9601:1077;:::o;10683:177::-;10829:25;;;10817:2;10802:18;;10784:76::o;10865:533::-;;;11008:11;10995:25;11102:2;11098:7;11087:8;11071:14;11067:29;11063:43;11043:18;11039:68;11029:2;;11124:4;11118;11111:18;11029:2;11154:33;;11206:20;;;-1:-1:-1;11249:18:178;11238:30;;11235:2;;;11284:4;11278;11271:18;11235:2;11320:4;11308:17;;-1:-1:-1;11351:14:178;11347:27;;;11337:38;;11334:2;;;11388:1;11385;11378:12;11334:2;10959:439;;;;;:::o;11403:258::-;11475:1;11485:113;11499:6;11496:1;11493:13;11485:113;;;11575:11;;;11569:18;11556:11;;;11549:39;11521:2;11514:10;11485:113;;;11616:6;11613:1;11610:13;11607:2;;;11651:1;11642:6;11637:3;11633:16;11626:27;11607:2;;11456:205;;;:::o;11666:156::-;-1:-1:-1;;;;;11747:5:178;11743:54;11736:5;11733:65;11723:2;;11812:1;11809;11802:12;11723:2;11713:109;:::o;11827:120::-;11915:5;11908:13;11901:21;11894:5;11891:32;11881:2;;11937:1;11934;11927:12"},"methodIdentifiers":{"WETH9()":"4aa4a4fc","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\":\"_WETH9\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_nonfungiblePositionManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"WETH9\",\"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\":\"refundAsETH\",\"type\":\"bool\"}],\"internalType\":\"struct IElixirMigrator.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 elixir 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 elixir liquidity that the v1 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 v1 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\":\"Elixir 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 elxir by burning v1 liquidity and minting a new position for elixir\"},\"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/elixir-periphery/ElixirMigrator.sol\":\"ElixirMigrator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirFactory.sol\":{\"keccak256\":\"0xeed23ad43ddda20bfb439f677f8f768460e46e6b2624381ea45c6dc59e56c1ea\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9bbded0c2ed0d252b28a26f18603b6c1dc6d49e761621e057d112de0cb00ead\",\"dweb:/ipfs/QmaWXq8nuhisTR5j2DfWfqYVbEJ1wWxZA6LyAdoHmiM83G\"]},\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]},\"contracts/elixir-periphery/ElixirMigrator.sol\":{\"keccak256\":\"0xe93a329afcf1666ac893c2dda75b15cd6936ef47c7042d849ac1a39255bf2e8a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2b0b93cb8a15099c8232290d01720b16c54535d943c26f8ad393b6a7474c2f8a\",\"dweb:/ipfs/QmcaWBNYynPHEdyZjCaCGV9dqvWkafJRmQ6kpjeN4EWgAR\"]},\"contracts/elixir-periphery/base/Multicall.sol\":{\"keccak256\":\"0x3acc1acf20b9f218e68706d90f71b28d63fbca91b8a6b5445613e12d5c98aac6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c4414bcad1d2971596866d1dc95790954fac1ca9e772d9864785496348083839\",\"dweb:/ipfs/QmXeTSwz3446DddKoZSaY1vZ4mNsMvdF4zAeX4ANoMxhjT\"]},\"contracts/elixir-periphery/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x1d0175136fda60c5e1b6aab6dfa4a35856717413d754d0750eb75866f3f5e43f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8e19496cd2a7239e9e869bafbfb9f762691a9ab52f169b579f11d752d7df79a5\",\"dweb:/ipfs/QmTaLVPUVMGp4ZywHwpFupnz2873NPyqYs3EzbJTHpVNSA\"]},\"contracts/elixir-periphery/base/PoolInitializer.sol\":{\"keccak256\":\"0x8fddad649086f0cb0dcd2fb7b03af5ee61c795efb358fbf70aad3a2ff5cb054a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f63312d984b53b27c8d8bb7753c8351415bea1ca55f0a2206f0f7fb43106c74e\",\"dweb:/ipfs/QmPbmpP9d1fXiCmztfvFBRuSxHbs93Aaq8MwrD7tPPHzqK\"]},\"contracts/elixir-periphery/base/SelfPermit.sol\":{\"keccak256\":\"0x93b6b25fba6b55918c18fd5d55ddb8a85336dcbb4773c3d7ab6d486960c9a665\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://fd2a053076cdd2a7fbd4ba498c9a493cd173cba860ead6139eb9e5c3fe60f067\",\"dweb:/ipfs/QmQwpbEx5aMbJAXeKGeA43qNGcCAYMz8ng1vwG5z4SCqv1\"]},\"contracts/elixir-periphery/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x1731f38308b9364d3d18a34a4da72afe434ad49f99939d81300dab93a940c458\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1cf9728098907ca0140ddf5398b7cebb2e6b8a0487bb1cf8338a4da603989be7\",\"dweb:/ipfs/QmPt5nvaLrdbXLxzJNhX4fM8s2akbdUPTmxZQaN2ierJPA\"]},\"contracts/elixir-periphery/interfaces/IElixirMigrator.sol\":{\"keccak256\":\"0x6f07edeb83c503371d8c89e61abec22b307c236792f68ffccbf54b836cbc709f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ab0bdcd163263bd58ea535e8c370cfd52550a2a40f3786a1c8d4254296201e6f\",\"dweb:/ipfs/QmYvohZL1fjwXyoANYETRcE5aRhP3ALnonnZCrmu3s123s\"]},\"contracts/elixir-periphery/interfaces/IMulticall.sol\":{\"keccak256\":\"0x76aeef8a8cd237f1bd8fb67f21e1734ba5c294b522c1932ce336f72fe41e5355\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b577b8f8e1b2767f218d0a1d78f7cc4d7b24ccd01ed7422a7129f9ae465edff\",\"dweb:/ipfs/QmVUzqSeAXf9Urwc1tseh1sW3pNz6z36vEYYYAGTNAnDWf\"]},\"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0xf968ea5f5b29c4407b3337051b0fb2ea786b8a6e3f476d40cdde1cb9415b1735\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c92f629ddeb1a6bcec8b154e6619a492053a375db3a28b37bbcd49b35d4b171\",\"dweb:/ipfs/QmYRNQmFQ8gD3dkTQz85cEHwEkBuXW4F64HQB9MUUHHYse\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x8e0cdb6280728619c44a8220996512b81e85f6fa7bc5373db742ea953a81eda8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0748123e32874d0e1e405a463fafcf98f686fac0055da2e13bfdaa0db917766\",\"dweb:/ipfs/QmRZPF69X1e6T3yT2z8HTgzEtXHTVScqzoEMbfvp5Niggq\"]},\"contracts/elixir-periphery/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x0d3371b28c765f2ad1231c212ce395c91c925738f54e2280298bfd08b50a2c97\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://18a3777dc86b84fb192cf54fbefd444058f5a5adc13b1080f393ada3ee0a5a08\",\"dweb:/ipfs/QmabPex6ctJszwwNGGnS9Va6xqsN6MpcQC3M869rbwcGCo\"]},\"contracts/elixir-periphery/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0xb442ad31c8fef5c47ebb82b3b3f906d0a5dbca8eb26db90b287a4825bf53d595\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6e36e6e894083ad07e2ba62977a06db0874b8ed1f6eac705f4c9d89a410f54ea\",\"dweb:/ipfs/QmWLWTuKrcCzxZeedLpUG3c8jjFLs5gLmvt35Ysp2uc9c6\"]},\"contracts/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x1495f5068f2b892668447889f379d87decb18c9369f4506df9d23edba9ccb4b7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6f322bead944abc1da0e75aba72c9e02b22f02c15712f49b212bb65869b406ca\",\"dweb:/ipfs/QmTZAqfg4EwuFAX61ZW4nA55sUbn3o2Qy3W55C3ghPUAWM\"]},\"contracts/elixir-periphery/interfaces/external/IWETH9.sol\":{\"keccak256\":\"0xa992da106a4a4ee9aca70fd30222480366e153411592c23defb169176f1aaf09\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://95eeaee1cae3d1fabaad9bd9f06d8310415e8d04951c44b019adcb47f428e833\",\"dweb:/ipfs/QmYnaMUiuMvikcuC92HWhWruuiMkvEx2eR7g7Y44PzHHKu\"]},\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]},\"contracts/elixir-periphery/libraries/TransferHelper.sol\":{\"keccak256\":\"0xc7727a37285f7b260c7b6a1f42655da9b6a1765dcb7f57bcba31627d9c2ec978\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://22a8e896dbac834f895395fc5cac70e8f2bab8045b9e34fe479ed0e92dbd99a9\",\"dweb:/ipfs/QmZYbeZxEvD1nfoeozEkrWzLYTKuS5618fsEgoKTnDuM2L\"]},\"contracts/pangolin-core/interfaces/IPangolinPair.sol\":{\"keccak256\":\"0x0511ddea9c27b93469fea324ad29206830b559f6bfd16e9d033ba05edc37f1ab\",\"urls\":[\"bzz-raw://721a8c3595a7a7cc8ddf44a41a6db15b186e6e275990dc0e1790b61679b736a3\",\"dweb:/ipfs/QmU2UX4i5ZYtzv333x4FVjLQymC8rFmJ6Hsmi3Ka1HjFMu\"]},\"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]},\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]}},\"version\":1}"}},"contracts/elixir-periphery/SwapRouter.sol":{"SwapRouter":{"abi":[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH9","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH9","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":"elixirSwapCallback","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":"refundETH","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":"unwrapWETH9","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":"unwrapWETH9WithFee","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:507:178","statements":[{"nodeType":"YulBlock","src":"6:3:178","statements":[]},{"body":{"nodeType":"YulBlock","src":"76:117:178","statements":[{"nodeType":"YulAssignment","src":"86:22:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"101:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"95:5:178"},"nodeType":"YulFunctionCall","src":"95:13:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"86:5:178"}]},{"body":{"nodeType":"YulBlock","src":"171:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"180:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"183:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"173:6:178"},"nodeType":"YulFunctionCall","src":"173:12:178"},"nodeType":"YulExpressionStatement","src":"173:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"130:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"141:5:178"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"156:3:178","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"161:1:178","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"152:3:178"},"nodeType":"YulFunctionCall","src":"152:11:178"},{"kind":"number","nodeType":"YulLiteral","src":"165:1:178","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"148:3:178"},"nodeType":"YulFunctionCall","src":"148:19:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"137:3:178"},"nodeType":"YulFunctionCall","src":"137:31:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"127:2:178"},"nodeType":"YulFunctionCall","src":"127:42:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"120:6:178"},"nodeType":"YulFunctionCall","src":"120:50:178"},"nodeType":"YulIf","src":"117:2:178"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"55:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"66:5:178","type":""}],"src":"14:179:178"},{"body":{"nodeType":"YulBlock","src":"296:209:178","statements":[{"body":{"nodeType":"YulBlock","src":"342:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"351:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"359:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"344:6:178"},"nodeType":"YulFunctionCall","src":"344:22:178"},"nodeType":"YulExpressionStatement","src":"344:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"317:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"326:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"313:3:178"},"nodeType":"YulFunctionCall","src":"313:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"338:2:178","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"309:3:178"},"nodeType":"YulFunctionCall","src":"309:32:178"},"nodeType":"YulIf","src":"306:2:178"},{"nodeType":"YulAssignment","src":"377:52:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"419:9:178"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"387:31:178"},"nodeType":"YulFunctionCall","src":"387:42:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"377:6:178"}]},{"nodeType":"YulAssignment","src":"438:61:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"484:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"495:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"480:3:178"},"nodeType":"YulFunctionCall","src":"480:18:178"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"448:31:178"},"nodeType":"YulFunctionCall","src":"448:51:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"438:6:178"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"254:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"265:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"277:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"285:6:178","type":""}],"src":"198:307:178"}]},"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":178,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60c06040526000196000553480156200001757600080fd5b50604051620027df380380620027df8339810160408190526200003a9162000076565b6001600160601b0319606092831b8116608052911b1660a052620000ad565b80516001600160a01b03811681146200007157600080fd5b919050565b6000806040838503121562000089578182fd5b620000948362000059565b9150620000a46020840162000059565b90509250929050565b60805160601c60a05160601c6126d6620001096000398061012252806104a2528061059852806106255280610665528061075b52806113f7528061143d52806114b1525080610b535280610bba528061186352506126d66000f3fe6080604052600436106101125760003560e01c8063c04b8d59116100a5578063db3e219811610074578063e0e189a011610059578063e0e189a0146102db578063f28c0498146102ee578063f3995c671461030157610196565b8063db3e2198146102b5578063df2ab5bb146102c857610196565b8063c04b8d591461025a578063c2e3140a1461026d578063c45a015514610280578063d804d7a71461029557610196565b80634aa4a4fc116100e15780634aa4a4fc146101f25780639b2c0a3714610214578063a4a78f0c14610227578063ac9650d81461023a57610196565b806312210e8a1461019b578063414bf389146101a35780634659a494146101cc57806349404b7c146101df57610196565b3661019657336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610194576040805162461bcd60e51b815260206004820152600960248201527f4e6f742057455448390000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b610194610314565b6101b66101b1366004612241565b61031e565b6040516101c391906125c4565b60405180910390f35b6101946101da366004611fbf565b610404565b6101946101ed366004612348565b61049e565b3480156101fe57600080fd5b50610207610623565b6040516101c3919061244f565b610194610222366004612377565b610647565b610194610235366004611fbf565b61081e565b61024d61024836600461201f565b6108af565b6040516101c391906124a8565b6101b6610268366004612196565b6109ef565b61019461027b366004611fbf565b610ac2565b34801561028c57600080fd5b50610207610b51565b3480156102a157600080fd5b506101946102b03660046120b1565b610b75565b6101b66102c3366004612241565b610c88565b6101946102d6366004611f20565b610d66565b6101946102e9366004611f61565b610e4f565b6101b66102fc36600461225d565b610f81565b61019461030f366004611fbf565b61102e565b61031c6110a0565b565b6000816080013561032e816110b0565b6103c760a08401356103466080860160608701611efd565b610357610100870160e08801611efd565b604080518082019091528061036f60208a018a611efd565b61037f60608b0160408c01612325565b61038f60408c0160208d01611efd565b6040516020016103a1939291906123ec565b6040516020818303038152906040528152602001336001600160a01b0316815250611108565b91508260c001358210156103f65760405162461bcd60e51b81526004016103ed90612552565b60405180910390fd5b6103fe6110a0565b50919050565b604080516323f2ebc360e21b815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b50505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561050d57600080fd5b505afa158015610521573d6000803e3d6000fd5b505050506040513d602081101561053757600080fd5b5051905082811015610590576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b801561061e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b5050505061061e828261125a565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082118015610658575060648211155b61066157600080fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156106d057600080fd5b505afa1580156106e4573d6000803e3d6000fd5b505050506040513d60208110156106fa57600080fd5b5051905084811015610753576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b8015610817577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156107bf57600080fd5b505af11580156107d3573d6000803e3d6000fd5b5050505060006127106107ef858461134990919063ffffffff16565b816107f657fe5b049050801561080957610809838261125a565b6108158582840361125a565b505b5050505050565b60408051636eb1769f60e11b81523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b15801561086f57600080fd5b505afa158015610883573d6000803e3d6000fd5b505050506040513d602081101561089957600080fd5b5051101561081557610815868686868686610404565b60608167ffffffffffffffff811180156108c857600080fd5b506040519080825280602002602001820160405280156108fc57816020015b60608152602001906001900390816108e75790505b50905060005b828110156109e8576000803086868581811061091a57fe5b905060200281019061092c91906125cd565b60405161093a92919061243f565b600060405180830381855af49150503d8060008114610975576040519150601f19603f3d011682016040523d82523d6000602084013e61097a565b606091505b5091509150816109c65760448151101561099357600080fd5b600481019050808060200190518101906109ad919061212c565b60405162461bcd60e51b81526004016103ed9190612508565b808484815181106109d357fe5b60209081029190910101525050600101610902565b5092915050565b600081604001516109ff816110b0565b335b6000610a108560000151611373565b9050610a5c856060015182610a29578660200151610a2b565b305b60006040518060400160405280610a458b6000015161137f565b8152602001876001600160a01b0316815250611108565b60608601528015610a7c578451309250610a759061138e565b8552610a89565b8460600151935050610a8f565b50610a01565b8360800151831015610ab35760405162461bcd60e51b81526004016103ed90612552565b610abb6110a0565b5050919050565b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b158015610b1157600080fd5b505afa158015610b25573d6000803e3d6000fd5b505050506040513d6020811015610b3b57600080fd5b505110156108155761081586868686868661102e565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000841380610b845750600083135b610b8d57600080fd5b6000610b9b82840184612295565b90506000806000610baf84600001516113a5565b925092509250610be17f00000000000000000000000000000000000000000000000000000000000000008484846113d6565b5060008060008a13610c0857846001600160a01b0316846001600160a01b03161089610c1f565b836001600160a01b0316856001600160a01b0316108a5b915091508115610c3e57610c3985876020015133846113f5565b610492565b8551610c4990611373565b15610c6e578551610c599061138e565b8652610c688133600089611585565b50610492565b8060008190555083945061049285876020015133846113f5565b60008160800135610c98816110b0565b610d3460a0840135610cb06080860160608701611efd565b610cc1610100870160e08801611efd565b6040518060400160405280886020016020810190610cdf9190611efd565b610cef60608b0160408c01612325565b610cfc60208c018c611efd565b604051602001610d0e939291906123ec565b6040516020818303038152906040528152602001336001600160a01b0316815250611585565b91508260c00135821115610d5a5760405162461bcd60e51b81526004016103ed9061251b565b50600019600055919050565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610db557600080fd5b505afa158015610dc9573d6000803e3d6000fd5b505050506040513d6020811015610ddf57600080fd5b5051905082811015610e38576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b8015610e4957610e49848383611700565b50505050565b600082118015610e60575060648211155b610e6957600080fd5b6000856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610eb857600080fd5b505afa158015610ecc573d6000803e3d6000fd5b505050506040513d6020811015610ee257600080fd5b5051905084811015610f3b576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b8015610815576000612710610f508386611349565b81610f5757fe5b0490508015610f6b57610f6b878483611700565b610f788786838503611700565b50505050505050565b60008160400135610f91816110b0565b6110046060840135610fa96040860160208701611efd565b6040805180820190915260009080610fc189806125cd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525033602090910152611585565b5060005491508260800135821115610d5a5760405162461bcd60e51b81526004016103ed9061251b565b6040805163d505accf60e01b8152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b15801561047e57600080fd5b471561031c5761031c334761125a565b80421115611105576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b50565b60006001600160a01b03841661111c573093505b600080600061112e85600001516113a5565b919450925090506001600160a01b038083169084161060008061115286868661185c565b6001600160a01b031663128acb088b8561116b8f61189a565b6001600160a01b038e1615611180578d6111a6565b8761119f5773fffd8963efd1fc6a506488495d951d5263988d256111a6565b6401000276a45b8d6040516020016111b79190612589565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016111e6959493929190612463565b6040805180830381600087803b1580156111ff57600080fd5b505af1158015611213573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611237919061208e565b91509150826112465781611248565b805b6000039b9a5050505050505050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106112a65780518252601f199092019160209182019101611287565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611308576040519150601f19603f3d011682016040523d82523d6000602084013e61130d565b606091505b505090508061061e576040805162461bcd60e51b815260206004820152600360248201526253544560e81b604482015290519081900360640190fd5b60008215806113645750508181028183828161136157fe5b04145b61136d57600080fd5b92915050565b8051604211155b919050565b606061136d826000602b6118b0565b805160609061136d908390601790601619016118b0565b600080806113b38482611a0d565b92506113c0846014611ad9565b90506113cd846017611a0d565b91509193909250565b60006113ec856113e7868686611b95565b611beb565b95945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156114365750804710155b15611558577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561149657600080fd5b505af11580156114aa573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561152657600080fd5b505af115801561153a573d6000803e3d6000fd5b505050506040513d602081101561155057600080fd5b50610e499050565b6001600160a01b03831630141561157957611574848383611700565b610e49565b610e4984848484611c0e565b60006001600160a01b038416611599573093505b60008060006115ab85600001516113a5565b919450925090506001600160a01b03808416908316106000806115cf85878661185c565b6001600160a01b031663128acb088b856115e88f61189a565b6000036001600160a01b038e1615611600578d611626565b8761161f5773fffd8963efd1fc6a506488495d951d5263988d25611626565b6401000276a45b8d6040516020016116379190612589565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401611666959493929190612463565b6040805180830381600087803b15801561167f57600080fd5b505af1158015611693573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b7919061208e565b915091506000836116cc5781836000036116d2565b82826000035b90985090506001600160a01b038a166116f1578b81146116f157600080fd5b50505050505050949350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106117915780518252601f199092019160209182019101611772565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146117f3576040519150601f19603f3d011682016040523d82523d6000602084013e6117f8565b606091505b5091509150818015611826575080511580611826575080806020019051602081101561182357600080fd5b50515b610817576040805162461bcd60e51b815260206004820152600260248201526114d560f21b604482015290519081900360640190fd5b60006118927f000000000000000000000000000000000000000000000000000000000000000061188d868686611b95565b611d73565b949350505050565b6000600160ff1b82106118ac57600080fd5b5090565b60608182601f0110156118fb576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015611943576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b8183018451101561199b576040805162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b6060821580156119ba5760405191506000825260208201604052611a04565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156119f35780518352602092830192016119db565b5050858452601f01601f1916604052505b50949350505050565b600081826014011015611a67576040805162461bcd60e51b815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015611ac0576040805162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015611b33576040805162461bcd60e51b815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015611b8c576040805162461bcd60e51b815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b611b9d611e6f565b826001600160a01b0316846001600160a01b03161115611bbb579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b6000611bf78383611d73565b9050336001600160a01b0382161461136d57600080fd5b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b178152925182516000948594938a169392918291908083835b60208310611ca75780518252601f199092019160209182019101611c88565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611d09576040519150601f19603f3d011682016040523d82523d6000602084013e611d0e565b606091505b5091509150818015611d3c575080511580611d3c5750808060200190516020811015611d3957600080fd5b50515b610815576040805162461bcd60e51b815260206004820152600360248201526229aa2360e91b604482015290519081900360640190fd5b600081602001516001600160a01b031682600001516001600160a01b031610611d9b57600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f5909101909152805191012090565b604080516060810182526000808252602082018190529181019190915290565b803561137a8161268b565b600082601f830112611eaa578081fd5b8135611ebd611eb88261263d565b612619565b818152846020838601011115611ed1578283fd5b816020850160208301379081016020019190915292915050565b600061010082840312156103fe578081fd5b600060208284031215611f0e578081fd5b8135611f198161268b565b9392505050565b600080600060608486031215611f34578182fd5b8335611f3f8161268b565b9250602084013591506040840135611f568161268b565b809150509250925092565b600080600080600060a08688031215611f78578081fd5b8535611f838161268b565b9450602086013593506040860135611f9a8161268b565b9250606086013591506080860135611fb18161268b565b809150509295509295909350565b60008060008060008060c08789031215611fd7578081fd5b8635611fe28161268b565b95506020870135945060408701359350606087013560ff81168114612005578182fd5b9598949750929560808101359460a0909101359350915050565b60008060208385031215612031578182fd5b823567ffffffffffffffff80821115612048578384fd5b818501915085601f83011261205b578384fd5b813581811115612069578485fd5b866020808302850101111561207c578485fd5b60209290920196919550909350505050565b600080604083850312156120a0578182fd5b505080516020909101519092909150565b600080600080606085870312156120c6578182fd5b8435935060208501359250604085013567ffffffffffffffff808211156120eb578384fd5b818701915087601f8301126120fe578384fd5b81358181111561210c578485fd5b88602082850101111561211d578485fd5b95989497505060200194505050565b60006020828403121561213d578081fd5b815167ffffffffffffffff811115612153578182fd5b8201601f81018413612163578182fd5b8051612171611eb88261263d565b818152856020838501011115612185578384fd5b6113ec82602083016020860161265f565b6000602082840312156121a7578081fd5b813567ffffffffffffffff808211156121be578283fd5b9083019060a082860312156121d1578283fd5b60405160a0810181811083821117156121e657fe5b6040528235828111156121f7578485fd5b61220387828601611e9a565b82525061221260208401611e8f565b602082015260408301356040820152606083013560608201526080830135608082015280935050505092915050565b60006101008284031215612253578081fd5b611f198383611eeb565b60006020828403121561226e578081fd5b813567ffffffffffffffff811115612284578182fd5b820160a08185031215611f19578182fd5b6000602082840312156122a6578081fd5b813567ffffffffffffffff808211156122bd578283fd5b90830190604082860312156122d0578283fd5b6040516040810181811083821117156122e557fe5b6040528235828111156122f6578485fd5b61230287828601611e9a565b825250602083013592506123158361268b565b6020810192909252509392505050565b600060208284031215612336578081fd5b813562ffffff81168114611f19578182fd5b6000806040838503121561235a578182fd5b82359150602083013561236c8161268b565b809150509250929050565b6000806000806080858703121561238c578182fd5b84359350602085013561239e8161268b565b92506040850135915060608501356123b58161268b565b939692955090935050565b600081518084526123d881602086016020860161265f565b601f01601f19169290920160200192915050565b606093841b6bffffffffffffffffffffffff19908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b60006001600160a01b038088168352861515602084015285604084015280851660608401525060a0608083015261249d60a08301846123c0565b979650505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156124fb57603f198886030184526124e98583516123c0565b945092850192908501906001016124cd565b5092979650505050505050565b600060208252611f1960208301846123c0565b60208082526012908201527f546f6f206d756368207265717565737465640000000000000000000000000000604082015260600190565b60208082526013908201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604082015260600190565b6000602082528251604060208401526125a560608401826123c0565b90506001600160a01b0360208501511660408401528091505092915050565b90815260200190565b6000808335601e198436030181126125e3578283fd5b83018035915067ffffffffffffffff8211156125fd578283fd5b60200191503681900382131561261257600080fd5b9250929050565b60405181810167ffffffffffffffff8111828210171561263557fe5b604052919050565b600067ffffffffffffffff82111561265157fe5b50601f01601f191660200190565b60005b8381101561267a578181015183820152602001612662565b83811115610e495750506000910152565b6001600160a01b038116811461110557600080fdfea2646970667358221220ec84789d9c1a39359d7c1faf092d42099441efa4511916e1f9a1c8daebc9b3fd64736f6c63430007060033","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 0x27DF CODESIZE SUB DUP1 PUSH3 0x27DF 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 0x26D6 PUSH3 0x109 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x122 MSTORE DUP1 PUSH2 0x4A2 MSTORE DUP1 PUSH2 0x598 MSTORE DUP1 PUSH2 0x625 MSTORE DUP1 PUSH2 0x665 MSTORE DUP1 PUSH2 0x75B MSTORE DUP1 PUSH2 0x13F7 MSTORE DUP1 PUSH2 0x143D MSTORE DUP1 PUSH2 0x14B1 MSTORE POP DUP1 PUSH2 0xB53 MSTORE DUP1 PUSH2 0xBBA MSTORE DUP1 PUSH2 0x1863 MSTORE POP PUSH2 0x26D6 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 0x2DB JUMPI DUP1 PUSH4 0xF28C0498 EQ PUSH2 0x2EE JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x301 JUMPI PUSH2 0x196 JUMP JUMPDEST DUP1 PUSH4 0xDB3E2198 EQ PUSH2 0x2B5 JUMPI DUP1 PUSH4 0xDF2AB5BB EQ PUSH2 0x2C8 JUMPI PUSH2 0x196 JUMP JUMPDEST DUP1 PUSH4 0xC04B8D59 EQ PUSH2 0x25A JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0xD804D7A7 EQ PUSH2 0x295 JUMPI PUSH2 0x196 JUMP JUMPDEST DUP1 PUSH4 0x4AA4A4FC GT PUSH2 0xE1 JUMPI DUP1 PUSH4 0x4AA4A4FC EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0x9B2C0A37 EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x23A JUMPI PUSH2 0x196 JUMP JUMPDEST DUP1 PUSH4 0x12210E8A EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x414BF389 EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0x4659A494 EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x49404B7C EQ PUSH2 0x1DF JUMPI PUSH2 0x196 JUMP JUMPDEST CALLDATASIZE PUSH2 0x196 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x194 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F742057455448390000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x194 PUSH2 0x314 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x1B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2241 JUMP JUMPDEST PUSH2 0x31E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C3 SWAP2 SWAP1 PUSH2 0x25C4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x194 PUSH2 0x1DA CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBF JUMP JUMPDEST PUSH2 0x404 JUMP JUMPDEST PUSH2 0x194 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x2348 JUMP JUMPDEST PUSH2 0x49E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x207 PUSH2 0x623 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C3 SWAP2 SWAP1 PUSH2 0x244F JUMP JUMPDEST PUSH2 0x194 PUSH2 0x222 CALLDATASIZE PUSH1 0x4 PUSH2 0x2377 JUMP JUMPDEST PUSH2 0x647 JUMP JUMPDEST PUSH2 0x194 PUSH2 0x235 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBF JUMP JUMPDEST PUSH2 0x81E JUMP JUMPDEST PUSH2 0x24D PUSH2 0x248 CALLDATASIZE PUSH1 0x4 PUSH2 0x201F JUMP JUMPDEST PUSH2 0x8AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C3 SWAP2 SWAP1 PUSH2 0x24A8 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x268 CALLDATASIZE PUSH1 0x4 PUSH2 0x2196 JUMP JUMPDEST PUSH2 0x9EF JUMP JUMPDEST PUSH2 0x194 PUSH2 0x27B CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBF JUMP JUMPDEST PUSH2 0xAC2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x207 PUSH2 0xB51 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x194 PUSH2 0x2B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x20B1 JUMP JUMPDEST PUSH2 0xB75 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x2C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2241 JUMP JUMPDEST PUSH2 0xC88 JUMP JUMPDEST PUSH2 0x194 PUSH2 0x2D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F20 JUMP JUMPDEST PUSH2 0xD66 JUMP JUMPDEST PUSH2 0x194 PUSH2 0x2E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F61 JUMP JUMPDEST PUSH2 0xE4F JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x2FC CALLDATASIZE PUSH1 0x4 PUSH2 0x225D JUMP JUMPDEST PUSH2 0xF81 JUMP JUMPDEST PUSH2 0x194 PUSH2 0x30F CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBF JUMP JUMPDEST PUSH2 0x102E JUMP JUMPDEST PUSH2 0x31C PUSH2 0x10A0 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x32E DUP2 PUSH2 0x10B0 JUMP JUMPDEST PUSH2 0x3C7 PUSH1 0xA0 DUP5 ADD CALLDATALOAD PUSH2 0x346 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x1EFD JUMP JUMPDEST PUSH2 0x357 PUSH2 0x100 DUP8 ADD PUSH1 0xE0 DUP9 ADD PUSH2 0x1EFD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH2 0x36F PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x1EFD JUMP JUMPDEST PUSH2 0x37F PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x2325 JUMP JUMPDEST PUSH2 0x38F PUSH1 0x40 DUP13 ADD PUSH1 0x20 DUP14 ADD PUSH2 0x1EFD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3A1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x23EC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH2 0x1108 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0xC0 ADD CALLDATALOAD DUP3 LT ISZERO PUSH2 0x3F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3ED SWAP1 PUSH2 0x2552 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3FE PUSH2 0x10A0 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23F2EBC3 PUSH1 0xE2 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x47E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x492 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x50D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x521 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 0x537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x590 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742057455448390000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x61E JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x610 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x61E DUP3 DUP3 PUSH2 0x125A JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x658 JUMPI POP PUSH1 0x64 DUP3 GT ISZERO JUMPDEST PUSH2 0x661 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x6D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6E4 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 0x6FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP5 DUP2 LT ISZERO PUSH2 0x753 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742057455448390000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x817 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x2710 PUSH2 0x7EF DUP6 DUP5 PUSH2 0x1349 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x7F6 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x809 JUMPI PUSH2 0x809 DUP4 DUP3 PUSH2 0x125A JUMP JUMPDEST PUSH2 0x815 DUP6 DUP3 DUP5 SUB PUSH2 0x125A JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 NOT SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x86F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x883 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 0x899 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x815 JUMPI PUSH2 0x815 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x404 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x8C8 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 0x8FC JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x8E7 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x91A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x92C SWAP2 SWAP1 PUSH2 0x25CD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x93A SWAP3 SWAP2 SWAP1 PUSH2 0x243F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x975 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 0x97A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x9C6 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x993 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x9AD SWAP2 SWAP1 PUSH2 0x212C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3ED SWAP2 SWAP1 PUSH2 0x2508 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x9D3 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x902 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD PUSH2 0x9FF DUP2 PUSH2 0x10B0 JUMP JUMPDEST CALLER JUMPDEST PUSH1 0x0 PUSH2 0xA10 DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x1373 JUMP JUMPDEST SWAP1 POP PUSH2 0xA5C DUP6 PUSH1 0x60 ADD MLOAD DUP3 PUSH2 0xA29 JUMPI DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0xA2B JUMP JUMPDEST ADDRESS JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xA45 DUP12 PUSH1 0x0 ADD MLOAD PUSH2 0x137F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH2 0x1108 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE DUP1 ISZERO PUSH2 0xA7C JUMPI DUP5 MLOAD ADDRESS SWAP3 POP PUSH2 0xA75 SWAP1 PUSH2 0x138E JUMP JUMPDEST DUP6 MSTORE PUSH2 0xA89 JUMP JUMPDEST DUP5 PUSH1 0x60 ADD MLOAD SWAP4 POP POP PUSH2 0xA8F JUMP JUMPDEST POP PUSH2 0xA01 JUMP JUMPDEST DUP4 PUSH1 0x80 ADD MLOAD DUP4 LT ISZERO PUSH2 0xAB3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3ED SWAP1 PUSH2 0x2552 JUMP JUMPDEST PUSH2 0xABB PUSH2 0x10A0 JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xB11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB25 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 0xB3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x815 JUMPI PUSH2 0x815 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x102E JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP5 SGT DUP1 PUSH2 0xB84 JUMPI POP PUSH1 0x0 DUP4 SGT JUMPDEST PUSH2 0xB8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB9B DUP3 DUP5 ADD DUP5 PUSH2 0x2295 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xBAF DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x13A5 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0xBE1 PUSH32 0x0 DUP5 DUP5 DUP5 PUSH2 0x13D6 JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP11 SGT PUSH2 0xC08 JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP10 PUSH2 0xC1F JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP11 JUMPDEST SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0xC3E JUMPI PUSH2 0xC39 DUP6 DUP8 PUSH1 0x20 ADD MLOAD CALLER DUP5 PUSH2 0x13F5 JUMP JUMPDEST PUSH2 0x492 JUMP JUMPDEST DUP6 MLOAD PUSH2 0xC49 SWAP1 PUSH2 0x1373 JUMP JUMPDEST ISZERO PUSH2 0xC6E JUMPI DUP6 MLOAD PUSH2 0xC59 SWAP1 PUSH2 0x138E JUMP JUMPDEST DUP7 MSTORE PUSH2 0xC68 DUP2 CALLER PUSH1 0x0 DUP10 PUSH2 0x1585 JUMP JUMPDEST POP PUSH2 0x492 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP DUP4 SWAP5 POP PUSH2 0x492 DUP6 DUP8 PUSH1 0x20 ADD MLOAD CALLER DUP5 PUSH2 0x13F5 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0xC98 DUP2 PUSH2 0x10B0 JUMP JUMPDEST PUSH2 0xD34 PUSH1 0xA0 DUP5 ADD CALLDATALOAD PUSH2 0xCB0 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x1EFD JUMP JUMPDEST PUSH2 0xCC1 PUSH2 0x100 DUP8 ADD PUSH1 0xE0 DUP9 ADD PUSH2 0x1EFD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xCDF SWAP2 SWAP1 PUSH2 0x1EFD JUMP JUMPDEST PUSH2 0xCEF PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x2325 JUMP JUMPDEST PUSH2 0xCFC PUSH1 0x20 DUP13 ADD DUP13 PUSH2 0x1EFD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD0E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x23EC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH2 0x1585 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0xC0 ADD CALLDATALOAD DUP3 GT ISZERO PUSH2 0xD5A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3ED SWAP1 PUSH2 0x251B JUMP JUMPDEST POP PUSH1 0x0 NOT PUSH1 0x0 SSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xDB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDC9 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 0xDDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0xE38 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0xE49 JUMPI PUSH2 0xE49 DUP5 DUP4 DUP4 PUSH2 0x1700 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0xE60 JUMPI POP PUSH1 0x64 DUP3 GT ISZERO JUMPDEST PUSH2 0xE69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xEB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xECC 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 0xEE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP5 DUP2 LT ISZERO PUSH2 0xF3B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x815 JUMPI PUSH1 0x0 PUSH2 0x2710 PUSH2 0xF50 DUP4 DUP7 PUSH2 0x1349 JUMP JUMPDEST DUP2 PUSH2 0xF57 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0xF6B JUMPI PUSH2 0xF6B DUP8 DUP5 DUP4 PUSH2 0x1700 JUMP JUMPDEST PUSH2 0xF78 DUP8 DUP7 DUP4 DUP6 SUB PUSH2 0x1700 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF91 DUP2 PUSH2 0x10B0 JUMP JUMPDEST PUSH2 0x1004 PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH2 0xFA9 PUSH1 0x40 DUP7 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EFD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 DUP1 PUSH2 0xFC1 DUP10 DUP1 PUSH2 0x25CD 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 0x1585 JUMP JUMPDEST POP PUSH1 0x0 SLOAD SWAP2 POP DUP3 PUSH1 0x80 ADD CALLDATALOAD DUP3 GT ISZERO PUSH2 0xD5A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3ED SWAP1 PUSH2 0x251B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x47E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SELFBALANCE ISZERO PUSH2 0x31C JUMPI PUSH2 0x31C CALLER SELFBALANCE PUSH2 0x125A JUMP JUMPDEST DUP1 TIMESTAMP GT ISZERO PUSH2 0x1105 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x111C JUMPI ADDRESS SWAP4 POP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x112E DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x13A5 JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP1 DUP5 AND LT PUSH1 0x0 DUP1 PUSH2 0x1152 DUP7 DUP7 DUP7 PUSH2 0x185C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP12 DUP6 PUSH2 0x116B DUP16 PUSH2 0x189A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND ISZERO PUSH2 0x1180 JUMPI DUP14 PUSH2 0x11A6 JUMP JUMPDEST DUP8 PUSH2 0x119F JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x11A6 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x11B7 SWAP2 SWAP1 PUSH2 0x2589 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 0x11E6 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2463 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1213 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 0x1237 SWAP2 SWAP1 PUSH2 0x208E JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 PUSH2 0x1246 JUMPI DUP2 PUSH2 0x1248 JUMP JUMPDEST DUP1 JUMPDEST PUSH1 0x0 SUB SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x12A6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1287 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 0x1308 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 0x130D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x61E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x535445 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x1364 JUMPI POP POP DUP2 DUP2 MUL DUP2 DUP4 DUP3 DUP2 PUSH2 0x1361 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x136D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x42 GT ISZERO JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x136D DUP3 PUSH1 0x0 PUSH1 0x2B PUSH2 0x18B0 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x136D SWAP1 DUP4 SWAP1 PUSH1 0x17 SWAP1 PUSH1 0x16 NOT ADD PUSH2 0x18B0 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x13B3 DUP5 DUP3 PUSH2 0x1A0D JUMP JUMPDEST SWAP3 POP PUSH2 0x13C0 DUP5 PUSH1 0x14 PUSH2 0x1AD9 JUMP JUMPDEST SWAP1 POP PUSH2 0x13CD DUP5 PUSH1 0x17 PUSH2 0x1A0D JUMP JUMPDEST SWAP2 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13EC DUP6 PUSH2 0x13E7 DUP7 DUP7 DUP7 PUSH2 0x1B95 JUMP JUMPDEST PUSH2 0x1BEB JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x1436 JUMPI POP DUP1 SELFBALANCE LT ISZERO JUMPDEST ISZERO PUSH2 0x1558 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x153A 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 0x1550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE49 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ ISZERO PUSH2 0x1579 JUMPI PUSH2 0x1574 DUP5 DUP4 DUP4 PUSH2 0x1700 JUMP JUMPDEST PUSH2 0xE49 JUMP JUMPDEST PUSH2 0xE49 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1C0E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1599 JUMPI ADDRESS SWAP4 POP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x15AB DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x13A5 JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP1 DUP4 AND LT PUSH1 0x0 DUP1 PUSH2 0x15CF DUP6 DUP8 DUP7 PUSH2 0x185C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP12 DUP6 PUSH2 0x15E8 DUP16 PUSH2 0x189A JUMP JUMPDEST PUSH1 0x0 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND ISZERO PUSH2 0x1600 JUMPI DUP14 PUSH2 0x1626 JUMP JUMPDEST DUP8 PUSH2 0x161F JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x1626 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1637 SWAP2 SWAP1 PUSH2 0x2589 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 0x1666 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2463 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x167F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1693 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 0x16B7 SWAP2 SWAP1 PUSH2 0x208E JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP4 PUSH2 0x16CC JUMPI DUP2 DUP4 PUSH1 0x0 SUB PUSH2 0x16D2 JUMP JUMPDEST DUP3 DUP3 PUSH1 0x0 SUB JUMPDEST SWAP1 SWAP9 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH2 0x16F1 JUMPI DUP12 DUP2 EQ PUSH2 0x16F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH4 0xA9059CBB PUSH1 0xE0 SHL 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 0x1791 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1772 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 0x17F3 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 0x17F8 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1826 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1826 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1823 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x817 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x14D5 PUSH1 0xF2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1892 PUSH32 0x0 PUSH2 0x188D DUP7 DUP7 DUP7 PUSH2 0x1B95 JUMP JUMPDEST PUSH2 0x1D73 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 LT PUSH2 0x18AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP3 PUSH1 0x1F ADD LT ISZERO PUSH2 0x18FB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x736C6963655F6F766572666C6F77 PUSH1 0x90 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 DUP5 ADD LT ISZERO PUSH2 0x1943 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x736C6963655F6F766572666C6F77 PUSH1 0x90 SHL 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 0x199B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x19BA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x0 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1A04 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 0x19F3 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x19DB JUMP JUMPDEST POP POP DUP6 DUP5 MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT 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 0x1A67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x1AC0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x1B33 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x1B8C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x1B9D PUSH2 0x1E6F JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x1BBB JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1BF7 DUP4 DUP4 PUSH2 0x1D73 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x136D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH4 0x23B872DD PUSH1 0xE0 SHL 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 0x1CA7 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1C88 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 0x1D09 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 0x1D0E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1D3C JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1D3C JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x815 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x29AA23 PUSH1 0xE9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x1D9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x41A723F9E6457830B1B7A44DF4435FAB88581D073226894B33131815DD674C22 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 0x137A DUP2 PUSH2 0x268B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1EAA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1EBD PUSH2 0x1EB8 DUP3 PUSH2 0x263D JUMP JUMPDEST PUSH2 0x2619 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1ED1 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 0x3FE JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F0E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1F19 DUP2 PUSH2 0x268B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1F34 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1F3F DUP2 PUSH2 0x268B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1F56 DUP2 PUSH2 0x268B 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 0x1F78 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x1F83 DUP2 PUSH2 0x268B JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x1F9A DUP2 PUSH2 0x268B JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x1FB1 DUP2 PUSH2 0x268B 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 0x1FD7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x1FE2 DUP2 PUSH2 0x268B 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 0x2005 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 0x2031 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2048 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x205B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2069 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x207C 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 0x20A0 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 0x20C6 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 0x20EB JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x20FE JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x210C JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x211D 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 0x213D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2153 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x2163 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x2171 PUSH2 0x1EB8 DUP3 PUSH2 0x263D JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x2185 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x13EC DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x265F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21A7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x21BE JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0xA0 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x21D1 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x21E6 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x21F7 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2203 DUP8 DUP3 DUP7 ADD PUSH2 0x1E9A JUMP JUMPDEST DUP3 MSTORE POP PUSH2 0x2212 PUSH1 0x20 DUP5 ADD PUSH2 0x1E8F 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 0x2253 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1F19 DUP4 DUP4 PUSH2 0x1EEB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x226E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2284 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0xA0 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x1F19 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22A6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x22BD JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x40 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x22D0 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x22E5 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x22F6 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2302 DUP8 DUP3 DUP7 ADD PUSH2 0x1E9A JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP3 POP PUSH2 0x2315 DUP4 PUSH2 0x268B 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 0x2336 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1F19 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x235A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x236C DUP2 PUSH2 0x268B 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 0x238C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x239E DUP2 PUSH2 0x268B JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x23B5 DUP2 PUSH2 0x268B JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x23D8 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x265F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SWAP4 DUP5 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x249D PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x23C0 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 0x24FB JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x24E9 DUP6 DUP4 MLOAD PUSH2 0x23C0 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x24CD JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1F19 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x23C0 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 0x25A5 PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0x23C0 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x25E3 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x25FD JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2612 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 0x2635 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2651 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x267A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2662 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xE49 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1105 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEC DUP5 PUSH25 0x9D9C1A39359D7C1FAF092D42099441EFA4511916E1F9A1C8DA 0xEB 0xC9 0xB3 REVERT PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"749:8596:60:-:0;;;-1:-1:-1;;1328:57:60;;1394:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;536:18:64;;;;;;;;565:14;;;;;749:8596:60;;14:179:178;95:13;;-1:-1:-1;;;;;137:31:178;;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;:::-;749:8596:60;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:15424:178","statements":[{"nodeType":"YulBlock","src":"6:3:178","statements":[]},{"body":{"nodeType":"YulBlock","src":"65:87:178","statements":[{"nodeType":"YulAssignment","src":"75:29:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"97:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"84:12:178"},"nodeType":"YulFunctionCall","src":"84:20:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"75:5:178"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"140:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"113:26:178"},"nodeType":"YulFunctionCall","src":"113:33:178"},"nodeType":"YulExpressionStatement","src":"113:33:178"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"44:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"55:5:178","type":""}],"src":"14:138:178"},{"body":{"nodeType":"YulBlock","src":"211:431:178","statements":[{"body":{"nodeType":"YulBlock","src":"260:24:178","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"269:5:178"},{"name":"array","nodeType":"YulIdentifier","src":"276:5:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"262:6:178"},"nodeType":"YulFunctionCall","src":"262:20:178"},"nodeType":"YulExpressionStatement","src":"262:20:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"239:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"247:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:178"},"nodeType":"YulFunctionCall","src":"235:17:178"},{"name":"end","nodeType":"YulIdentifier","src":"254:3:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"231:3:178"},"nodeType":"YulFunctionCall","src":"231:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"224:6:178"},"nodeType":"YulFunctionCall","src":"224:35:178"},"nodeType":"YulIf","src":"221:2:178"},{"nodeType":"YulVariableDeclaration","src":"293:30:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"316:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"303:12:178"},"nodeType":"YulFunctionCall","src":"303:20:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"297:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"332:64:178","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"392:2:178"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"362:29:178"},"nodeType":"YulFunctionCall","src":"362:33:178"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"347:14:178"},"nodeType":"YulFunctionCall","src":"347:49:178"},"variables":[{"name":"array_1","nodeType":"YulTypedName","src":"336:7:178","type":""}]},{"expression":{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"412:7:178"},{"name":"_1","nodeType":"YulIdentifier","src":"421:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"405:6:178"},"nodeType":"YulFunctionCall","src":"405:19:178"},"nodeType":"YulExpressionStatement","src":"405:19:178"},{"body":{"nodeType":"YulBlock","src":"472:24:178","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"481:5:178"},{"name":"array","nodeType":"YulIdentifier","src":"488:5:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"474:6:178"},"nodeType":"YulFunctionCall","src":"474:20:178"},"nodeType":"YulExpressionStatement","src":"474:20:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"447:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"455:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"443:3:178"},"nodeType":"YulFunctionCall","src":"443:15:178"},{"kind":"number","nodeType":"YulLiteral","src":"460:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"439:3:178"},"nodeType":"YulFunctionCall","src":"439:26:178"},{"name":"end","nodeType":"YulIdentifier","src":"467:3:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"436:2:178"},"nodeType":"YulFunctionCall","src":"436:35:178"},"nodeType":"YulIf","src":"433:2:178"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"522:7:178"},{"kind":"number","nodeType":"YulLiteral","src":"531:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"518:3:178"},"nodeType":"YulFunctionCall","src":"518:18:178"},{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"542:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"550:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"538:3:178"},"nodeType":"YulFunctionCall","src":"538:17:178"},{"name":"_1","nodeType":"YulIdentifier","src":"557:2:178"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"505:12:178"},"nodeType":"YulFunctionCall","src":"505:55:178"},"nodeType":"YulExpressionStatement","src":"505:55:178"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"584:7:178"},{"name":"_1","nodeType":"YulIdentifier","src":"593:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"580:3:178"},"nodeType":"YulFunctionCall","src":"580:16:178"},{"kind":"number","nodeType":"YulLiteral","src":"598:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"576:3:178"},"nodeType":"YulFunctionCall","src":"576:27:178"},{"name":"array","nodeType":"YulIdentifier","src":"605:5:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"569:6:178"},"nodeType":"YulFunctionCall","src":"569:42:178"},"nodeType":"YulExpressionStatement","src":"569:42:178"},{"nodeType":"YulAssignment","src":"620:16:178","value":{"name":"array_1","nodeType":"YulIdentifier","src":"629:7:178"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"620:5:178"}]}]},"name":"abi_decode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"185:6:178","type":""},{"name":"end","nodeType":"YulTypedName","src":"193:3:178","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"201:5:178","type":""}],"src":"157:485:178"},{"body":{"nodeType":"YulBlock","src":"735:94:178","statements":[{"body":{"nodeType":"YulBlock","src":"775:24:178","statements":[{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"784:5:178"},{"name":"value","nodeType":"YulIdentifier","src":"791:5:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"777:6:178"},"nodeType":"YulFunctionCall","src":"777:20:178"},"nodeType":"YulExpressionStatement","src":"777:20:178"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"756:3:178"},{"name":"offset","nodeType":"YulIdentifier","src":"761:6:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"752:3:178"},"nodeType":"YulFunctionCall","src":"752:16:178"},{"kind":"number","nodeType":"YulLiteral","src":"770:3:178","type":"","value":"256"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"748:3:178"},"nodeType":"YulFunctionCall","src":"748:26:178"},"nodeType":"YulIf","src":"745:2:178"},{"nodeType":"YulAssignment","src":"808:15:178","value":{"name":"offset","nodeType":"YulIdentifier","src":"817:6:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"808:5:178"}]}]},"name":"abi_decode_t_struct$_ExactInputSingleParams_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"709:6:178","type":""},{"name":"end","nodeType":"YulTypedName","src":"717:3:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"725:5:178","type":""}],"src":"647:182:178"},{"body":{"nodeType":"YulBlock","src":"904:189:178","statements":[{"body":{"nodeType":"YulBlock","src":"950:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"959:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"967:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"952:6:178"},"nodeType":"YulFunctionCall","src":"952:22:178"},"nodeType":"YulExpressionStatement","src":"952:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"925:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"934:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"921:3:178"},"nodeType":"YulFunctionCall","src":"921:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"946:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"917:3:178"},"nodeType":"YulFunctionCall","src":"917:32:178"},"nodeType":"YulIf","src":"914:2:178"},{"nodeType":"YulVariableDeclaration","src":"985:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1011:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"998:12:178"},"nodeType":"YulFunctionCall","src":"998:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"989:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1057:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1030:26:178"},"nodeType":"YulFunctionCall","src":"1030:33:178"},"nodeType":"YulExpressionStatement","src":"1030:33:178"},{"nodeType":"YulAssignment","src":"1072:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"1082:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1072:6:178"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"870:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"881:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"893:6:178","type":""}],"src":"834:259:178"},{"body":{"nodeType":"YulBlock","src":"1202:366:178","statements":[{"body":{"nodeType":"YulBlock","src":"1248:26:178","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1257:6:178"},{"name":"value1","nodeType":"YulIdentifier","src":"1265:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1250:6:178"},"nodeType":"YulFunctionCall","src":"1250:22:178"},"nodeType":"YulExpressionStatement","src":"1250:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1223:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"1232:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1219:3:178"},"nodeType":"YulFunctionCall","src":"1219:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"1244:2:178","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1215:3:178"},"nodeType":"YulFunctionCall","src":"1215:32:178"},"nodeType":"YulIf","src":"1212:2:178"},{"nodeType":"YulVariableDeclaration","src":"1283:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1309:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1296:12:178"},"nodeType":"YulFunctionCall","src":"1296:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1287:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1328:26:178"},"nodeType":"YulFunctionCall","src":"1328:33:178"},"nodeType":"YulExpressionStatement","src":"1328:33:178"},{"nodeType":"YulAssignment","src":"1370:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"1380:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1370:6:178"}]},{"nodeType":"YulAssignment","src":"1394:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1421:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1432:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1417:3:178"},"nodeType":"YulFunctionCall","src":"1417:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1404:12:178"},"nodeType":"YulFunctionCall","src":"1404:32:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1394:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"1445:47:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1477:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1488:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1473:3:178"},"nodeType":"YulFunctionCall","src":"1473:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1460:12:178"},"nodeType":"YulFunctionCall","src":"1460:32:178"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1449:7:178","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1528:7:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1501:26:178"},"nodeType":"YulFunctionCall","src":"1501:35:178"},"nodeType":"YulExpressionStatement","src":"1501:35:178"},{"nodeType":"YulAssignment","src":"1545:17:178","value":{"name":"value_1","nodeType":"YulIdentifier","src":"1555:7:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1545:6:178"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1152:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1163:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1175:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1183:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1191:6:178","type":""}],"src":"1098:470:178"},{"body":{"nodeType":"YulBlock","src":"1711:545:178","statements":[{"body":{"nodeType":"YulBlock","src":"1758:26:178","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1767:6:178"},{"name":"value4","nodeType":"YulIdentifier","src":"1775:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1760:6:178"},"nodeType":"YulFunctionCall","src":"1760:22:178"},"nodeType":"YulExpressionStatement","src":"1760:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1732:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"1741:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1728:3:178"},"nodeType":"YulFunctionCall","src":"1728:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"1753:3:178","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1724:3:178"},"nodeType":"YulFunctionCall","src":"1724:33:178"},"nodeType":"YulIf","src":"1721:2:178"},{"nodeType":"YulVariableDeclaration","src":"1793:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1819:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1806:12:178"},"nodeType":"YulFunctionCall","src":"1806:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1797:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1865:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1838:26:178"},"nodeType":"YulFunctionCall","src":"1838:33:178"},"nodeType":"YulExpressionStatement","src":"1838:33:178"},{"nodeType":"YulAssignment","src":"1880:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"1890:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1880:6:178"}]},{"nodeType":"YulAssignment","src":"1904:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1931:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1942:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1927:3:178"},"nodeType":"YulFunctionCall","src":"1927:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1914:12:178"},"nodeType":"YulFunctionCall","src":"1914:32:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1904:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"1955:47:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1987:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1998:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1983:3:178"},"nodeType":"YulFunctionCall","src":"1983:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1970:12:178"},"nodeType":"YulFunctionCall","src":"1970:32:178"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1959:7:178","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2038:7:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2011:26:178"},"nodeType":"YulFunctionCall","src":"2011:35:178"},"nodeType":"YulExpressionStatement","src":"2011:35:178"},{"nodeType":"YulAssignment","src":"2055:17:178","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2065:7:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2055:6:178"}]},{"nodeType":"YulAssignment","src":"2081:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2108:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2119:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2104:3:178"},"nodeType":"YulFunctionCall","src":"2104:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2091:12:178"},"nodeType":"YulFunctionCall","src":"2091:32:178"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"2081:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"2132:48:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2164:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2175:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2160:3:178"},"nodeType":"YulFunctionCall","src":"2160:19:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2147:12:178"},"nodeType":"YulFunctionCall","src":"2147:33:178"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"2136:7:178","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"2216:7:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2189:26:178"},"nodeType":"YulFunctionCall","src":"2189:35:178"},"nodeType":"YulExpressionStatement","src":"2189:35:178"},{"nodeType":"YulAssignment","src":"2233:17:178","value":{"name":"value_2","nodeType":"YulIdentifier","src":"2243:7:178"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"2233:6:178"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_addresst_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1645:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1656:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1668:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1676:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1684:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1692:6:178","type":""},{"name":"value4","nodeType":"YulTypedName","src":"1700:6:178","type":""}],"src":"1573:683:178"},{"body":{"nodeType":"YulBlock","src":"2414:556:178","statements":[{"body":{"nodeType":"YulBlock","src":"2461:26:178","statements":[{"expression":{"arguments":[{"name":"value5","nodeType":"YulIdentifier","src":"2470:6:178"},{"name":"value5","nodeType":"YulIdentifier","src":"2478:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2463:6:178"},"nodeType":"YulFunctionCall","src":"2463:22:178"},"nodeType":"YulExpressionStatement","src":"2463:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2435:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"2444:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2431:3:178"},"nodeType":"YulFunctionCall","src":"2431:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"2456:3:178","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2427:3:178"},"nodeType":"YulFunctionCall","src":"2427:33:178"},"nodeType":"YulIf","src":"2424:2:178"},{"nodeType":"YulVariableDeclaration","src":"2496:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2522:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2509:12:178"},"nodeType":"YulFunctionCall","src":"2509:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2500:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2568:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2541:26:178"},"nodeType":"YulFunctionCall","src":"2541:33:178"},"nodeType":"YulExpressionStatement","src":"2541:33:178"},{"nodeType":"YulAssignment","src":"2583:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"2593:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2583:6:178"}]},{"nodeType":"YulAssignment","src":"2607:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2634:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2645:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2630:3:178"},"nodeType":"YulFunctionCall","src":"2630:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2617:12:178"},"nodeType":"YulFunctionCall","src":"2617:32:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2607:6:178"}]},{"nodeType":"YulAssignment","src":"2658:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2685:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2696:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2681:3:178"},"nodeType":"YulFunctionCall","src":"2681:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2668:12:178"},"nodeType":"YulFunctionCall","src":"2668:32:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2658:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"2709:47:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2741:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2752:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2737:3:178"},"nodeType":"YulFunctionCall","src":"2737:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2724:12:178"},"nodeType":"YulFunctionCall","src":"2724:32:178"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"2713:7:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2808:26:178","statements":[{"expression":{"arguments":[{"name":"value5","nodeType":"YulIdentifier","src":"2817:6:178"},{"name":"value5","nodeType":"YulIdentifier","src":"2825:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2810:6:178"},"nodeType":"YulFunctionCall","src":"2810:22:178"},"nodeType":"YulExpressionStatement","src":"2810:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2778:7:178"},{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2791:7:178"},{"kind":"number","nodeType":"YulLiteral","src":"2800:4:178","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2787:3:178"},"nodeType":"YulFunctionCall","src":"2787:18:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2775:2:178"},"nodeType":"YulFunctionCall","src":"2775:31:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2768:6:178"},"nodeType":"YulFunctionCall","src":"2768:39:178"},"nodeType":"YulIf","src":"2765:2:178"},{"nodeType":"YulAssignment","src":"2843:17:178","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2853:7:178"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"2843:6:178"}]},{"nodeType":"YulAssignment","src":"2869:43:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2896:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2907:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2892:3:178"},"nodeType":"YulFunctionCall","src":"2892:19:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2879:12:178"},"nodeType":"YulFunctionCall","src":"2879:33:178"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"2869:6:178"}]},{"nodeType":"YulAssignment","src":"2921:43:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2948:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2959:3:178","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2944:3:178"},"nodeType":"YulFunctionCall","src":"2944:19:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2931:12:178"},"nodeType":"YulFunctionCall","src":"2931:33:178"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"2921:6:178"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2340:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2351:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2363:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2371:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2379:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2387:6:178","type":""},{"name":"value4","nodeType":"YulTypedName","src":"2395:6:178","type":""},{"name":"value5","nodeType":"YulTypedName","src":"2403:6:178","type":""}],"src":"2261:709:178"},{"body":{"nodeType":"YulBlock","src":"3091:561:178","statements":[{"body":{"nodeType":"YulBlock","src":"3137:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3146:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3154:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3139:6:178"},"nodeType":"YulFunctionCall","src":"3139:22:178"},"nodeType":"YulExpressionStatement","src":"3139:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3112:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"3121:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3108:3:178"},"nodeType":"YulFunctionCall","src":"3108:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"3133:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3104:3:178"},"nodeType":"YulFunctionCall","src":"3104:32:178"},"nodeType":"YulIf","src":"3101:2:178"},{"nodeType":"YulVariableDeclaration","src":"3172:37:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3199:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3186:12:178"},"nodeType":"YulFunctionCall","src":"3186:23:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3176:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3218:28:178","value":{"kind":"number","nodeType":"YulLiteral","src":"3228:18:178","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3222:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3273:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3282:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3290:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3275:6:178"},"nodeType":"YulFunctionCall","src":"3275:22:178"},"nodeType":"YulExpressionStatement","src":"3275:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3261:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3269:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3258:2:178"},"nodeType":"YulFunctionCall","src":"3258:14:178"},"nodeType":"YulIf","src":"3255:2:178"},{"nodeType":"YulVariableDeclaration","src":"3308:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3322:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"3333:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3318:3:178"},"nodeType":"YulFunctionCall","src":"3318:22:178"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3312:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3388:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3397:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3405:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3390:6:178"},"nodeType":"YulFunctionCall","src":"3390:22:178"},"nodeType":"YulExpressionStatement","src":"3390:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3367:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"3371:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3363:3:178"},"nodeType":"YulFunctionCall","src":"3363:13:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3378:7:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3359:3:178"},"nodeType":"YulFunctionCall","src":"3359:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3352:6:178"},"nodeType":"YulFunctionCall","src":"3352:35:178"},"nodeType":"YulIf","src":"3349:2:178"},{"nodeType":"YulVariableDeclaration","src":"3423:30:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3450:2:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3437:12:178"},"nodeType":"YulFunctionCall","src":"3437:16:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3427:6:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3480:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3489:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3497:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3482:6:178"},"nodeType":"YulFunctionCall","src":"3482:22:178"},"nodeType":"YulExpressionStatement","src":"3482:22:178"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3468:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3476:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3465:2:178"},"nodeType":"YulFunctionCall","src":"3465:14:178"},"nodeType":"YulIf","src":"3462:2:178"},{"body":{"nodeType":"YulBlock","src":"3565:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3574:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3582:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3567:6:178"},"nodeType":"YulFunctionCall","src":"3567:22:178"},"nodeType":"YulExpressionStatement","src":"3567:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3529:2:178"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3537:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"3545:2:178","type":"","value":"32"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3533:3:178"},"nodeType":"YulFunctionCall","src":"3533:15:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3525:3:178"},"nodeType":"YulFunctionCall","src":"3525:24:178"},{"kind":"number","nodeType":"YulLiteral","src":"3551:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3521:3:178"},"nodeType":"YulFunctionCall","src":"3521:33:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3556:7:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3518:2:178"},"nodeType":"YulFunctionCall","src":"3518:46:178"},"nodeType":"YulIf","src":"3515:2:178"},{"nodeType":"YulAssignment","src":"3600:21:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3614:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"3618:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3610:3:178"},"nodeType":"YulFunctionCall","src":"3610:11:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3600:6:178"}]},{"nodeType":"YulAssignment","src":"3630:16:178","value":{"name":"length","nodeType":"YulIdentifier","src":"3640:6:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3630:6:178"}]}]},"name":"abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3049:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3060:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3072:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3080:6:178","type":""}],"src":"2975:677:178"},{"body":{"nodeType":"YulBlock","src":"3753:157:178","statements":[{"body":{"nodeType":"YulBlock","src":"3799:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3808:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3816:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3801:6:178"},"nodeType":"YulFunctionCall","src":"3801:22:178"},"nodeType":"YulExpressionStatement","src":"3801:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3774:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"3783:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3770:3:178"},"nodeType":"YulFunctionCall","src":"3770:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"3795:2:178","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3766:3:178"},"nodeType":"YulFunctionCall","src":"3766:32:178"},"nodeType":"YulIf","src":"3763:2:178"},{"nodeType":"YulAssignment","src":"3834:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3850:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3844:5:178"},"nodeType":"YulFunctionCall","src":"3844:16:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3834:6:178"}]},{"nodeType":"YulAssignment","src":"3869:35:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3889:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3900:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3885:3:178"},"nodeType":"YulFunctionCall","src":"3885:18:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3879:5:178"},"nodeType":"YulFunctionCall","src":"3879:25:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3869:6:178"}]}]},"name":"abi_decode_tuple_t_int256t_int256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3711:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3722:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3734:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3742:6:178","type":""}],"src":"3657:253:178"},{"body":{"nodeType":"YulBlock","src":"4036:654:178","statements":[{"body":{"nodeType":"YulBlock","src":"4082:26:178","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4091:6:178"},{"name":"value2","nodeType":"YulIdentifier","src":"4099:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4084:6:178"},"nodeType":"YulFunctionCall","src":"4084:22:178"},"nodeType":"YulExpressionStatement","src":"4084:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4057:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"4066:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4053:3:178"},"nodeType":"YulFunctionCall","src":"4053:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"4078:2:178","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4049:3:178"},"nodeType":"YulFunctionCall","src":"4049:32:178"},"nodeType":"YulIf","src":"4046:2:178"},{"nodeType":"YulAssignment","src":"4117:33:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4140:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4127:12:178"},"nodeType":"YulFunctionCall","src":"4127:23:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4117:6:178"}]},{"nodeType":"YulAssignment","src":"4159:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4186:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4197:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4182:3:178"},"nodeType":"YulFunctionCall","src":"4182:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4169:12:178"},"nodeType":"YulFunctionCall","src":"4169:32:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4159:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"4210:46:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4241:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4252:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4237:3:178"},"nodeType":"YulFunctionCall","src":"4237:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4224:12:178"},"nodeType":"YulFunctionCall","src":"4224:32:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4214:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4265:28:178","value":{"kind":"number","nodeType":"YulLiteral","src":"4275:18:178","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4269:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"4320:26:178","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4329:6:178"},{"name":"value2","nodeType":"YulIdentifier","src":"4337:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4322:6:178"},"nodeType":"YulFunctionCall","src":"4322:22:178"},"nodeType":"YulExpressionStatement","src":"4322:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4308:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"4316:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4305:2:178"},"nodeType":"YulFunctionCall","src":"4305:14:178"},"nodeType":"YulIf","src":"4302:2:178"},{"nodeType":"YulVariableDeclaration","src":"4355:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4369:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"4380:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4365:3:178"},"nodeType":"YulFunctionCall","src":"4365:22:178"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"4359:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"4435:26:178","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4444:6:178"},{"name":"value2","nodeType":"YulIdentifier","src":"4452:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4437:6:178"},"nodeType":"YulFunctionCall","src":"4437:22:178"},"nodeType":"YulExpressionStatement","src":"4437:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4414:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"4418:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4410:3:178"},"nodeType":"YulFunctionCall","src":"4410:13:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4425:7:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4406:3:178"},"nodeType":"YulFunctionCall","src":"4406:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4399:6:178"},"nodeType":"YulFunctionCall","src":"4399:35:178"},"nodeType":"YulIf","src":"4396:2:178"},{"nodeType":"YulVariableDeclaration","src":"4470:30:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4497:2:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4484:12:178"},"nodeType":"YulFunctionCall","src":"4484:16:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4474:6:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"4527:26:178","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4536:6:178"},{"name":"value2","nodeType":"YulIdentifier","src":"4544:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4529:6:178"},"nodeType":"YulFunctionCall","src":"4529:22:178"},"nodeType":"YulExpressionStatement","src":"4529:22:178"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4515:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"4523:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4512:2:178"},"nodeType":"YulFunctionCall","src":"4512:14:178"},"nodeType":"YulIf","src":"4509:2:178"},{"body":{"nodeType":"YulBlock","src":"4603:26:178","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4612:6:178"},{"name":"value2","nodeType":"YulIdentifier","src":"4620:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4605:6:178"},"nodeType":"YulFunctionCall","src":"4605:22:178"},"nodeType":"YulExpressionStatement","src":"4605:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4576:2:178"},{"name":"length","nodeType":"YulIdentifier","src":"4580:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4572:3:178"},"nodeType":"YulFunctionCall","src":"4572:15:178"},{"kind":"number","nodeType":"YulLiteral","src":"4589:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4568:3:178"},"nodeType":"YulFunctionCall","src":"4568:24:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4594:7:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4565:2:178"},"nodeType":"YulFunctionCall","src":"4565:37:178"},"nodeType":"YulIf","src":"4562:2:178"},{"nodeType":"YulAssignment","src":"4638:21:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4652:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"4656:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4648:3:178"},"nodeType":"YulFunctionCall","src":"4648:11:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4638:6:178"}]},{"nodeType":"YulAssignment","src":"4668:16:178","value":{"name":"length","nodeType":"YulIdentifier","src":"4678:6:178"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4668:6:178"}]}]},"name":"abi_decode_tuple_t_int256t_int256t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3978:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3989:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4001:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4009:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4017:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4025:6:178","type":""}],"src":"3915:775:178"},{"body":{"nodeType":"YulBlock","src":"4786:585:178","statements":[{"body":{"nodeType":"YulBlock","src":"4832:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4841:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"4849:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4834:6:178"},"nodeType":"YulFunctionCall","src":"4834:22:178"},"nodeType":"YulExpressionStatement","src":"4834:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4807:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"4816:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4803:3:178"},"nodeType":"YulFunctionCall","src":"4803:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"4828:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4799:3:178"},"nodeType":"YulFunctionCall","src":"4799:32:178"},"nodeType":"YulIf","src":"4796:2:178"},{"nodeType":"YulVariableDeclaration","src":"4867:30:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4887:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4881:5:178"},"nodeType":"YulFunctionCall","src":"4881:16:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4871:6:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"4940:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4949:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"4957:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4942:6:178"},"nodeType":"YulFunctionCall","src":"4942:22:178"},"nodeType":"YulExpressionStatement","src":"4942:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4912:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"4920:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4909:2:178"},"nodeType":"YulFunctionCall","src":"4909:30:178"},"nodeType":"YulIf","src":"4906:2:178"},{"nodeType":"YulVariableDeclaration","src":"4975:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4989:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"5000:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4985:3:178"},"nodeType":"YulFunctionCall","src":"4985:22:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4979:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"5055:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5064:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"5072:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5057:6:178"},"nodeType":"YulFunctionCall","src":"5057:22:178"},"nodeType":"YulExpressionStatement","src":"5057:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"5034:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"5038:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5030:3:178"},"nodeType":"YulFunctionCall","src":"5030:13:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5045:7:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5026:3:178"},"nodeType":"YulFunctionCall","src":"5026:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5019:6:178"},"nodeType":"YulFunctionCall","src":"5019:35:178"},"nodeType":"YulIf","src":"5016:2:178"},{"nodeType":"YulVariableDeclaration","src":"5090:19:178","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"5106:2:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5100:5:178"},"nodeType":"YulFunctionCall","src":"5100:9:178"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"5094:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5118:62:178","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5176:2:178"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"5146:29:178"},"nodeType":"YulFunctionCall","src":"5146:33:178"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"5131:14:178"},"nodeType":"YulFunctionCall","src":"5131:49:178"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"5122:5:178","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"5196:5:178"},{"name":"_2","nodeType":"YulIdentifier","src":"5203:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5189:6:178"},"nodeType":"YulFunctionCall","src":"5189:17:178"},"nodeType":"YulExpressionStatement","src":"5189:17:178"},{"body":{"nodeType":"YulBlock","src":"5252:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5261:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"5269:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5254:6:178"},"nodeType":"YulFunctionCall","src":"5254:22:178"},"nodeType":"YulExpressionStatement","src":"5254:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"5229:2:178"},{"name":"_2","nodeType":"YulIdentifier","src":"5233:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5225:3:178"},"nodeType":"YulFunctionCall","src":"5225:11:178"},{"kind":"number","nodeType":"YulLiteral","src":"5238:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5221:3:178"},"nodeType":"YulFunctionCall","src":"5221:20:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5243:7:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5218:2:178"},"nodeType":"YulFunctionCall","src":"5218:33:178"},"nodeType":"YulIf","src":"5215:2:178"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"5313:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"5317:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5309:3:178"},"nodeType":"YulFunctionCall","src":"5309:11:178"},{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"5326:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"5333:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5322:3:178"},"nodeType":"YulFunctionCall","src":"5322:14:178"},{"name":"_2","nodeType":"YulIdentifier","src":"5338:2:178"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"5287:21:178"},"nodeType":"YulFunctionCall","src":"5287:54:178"},"nodeType":"YulExpressionStatement","src":"5287:54:178"},{"nodeType":"YulAssignment","src":"5350:15:178","value":{"name":"array","nodeType":"YulIdentifier","src":"5360:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5350:6:178"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4752:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4763:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4775:6:178","type":""}],"src":"4695:676:178"},{"body":{"nodeType":"YulBlock","src":"5481:938:178","statements":[{"body":{"nodeType":"YulBlock","src":"5527:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5536:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"5544:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5529:6:178"},"nodeType":"YulFunctionCall","src":"5529:22:178"},"nodeType":"YulExpressionStatement","src":"5529:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5502:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"5511:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5498:3:178"},"nodeType":"YulFunctionCall","src":"5498:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"5523:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5494:3:178"},"nodeType":"YulFunctionCall","src":"5494:32:178"},"nodeType":"YulIf","src":"5491:2:178"},{"nodeType":"YulVariableDeclaration","src":"5562:37:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5589:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5576:12:178"},"nodeType":"YulFunctionCall","src":"5576:23:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5566:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5608:28:178","value":{"kind":"number","nodeType":"YulLiteral","src":"5618:18:178","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5612:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"5663:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5672:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"5680:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5665:6:178"},"nodeType":"YulFunctionCall","src":"5665:22:178"},"nodeType":"YulExpressionStatement","src":"5665:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5651:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"5659:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5648:2:178"},"nodeType":"YulFunctionCall","src":"5648:14:178"},"nodeType":"YulIf","src":"5645:2:178"},{"nodeType":"YulVariableDeclaration","src":"5698:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5712:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"5723:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5708:3:178"},"nodeType":"YulFunctionCall","src":"5708:22:178"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"5702:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"5770:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5779:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"5787:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5772:6:178"},"nodeType":"YulFunctionCall","src":"5772:22:178"},"nodeType":"YulExpressionStatement","src":"5772:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5750:7:178"},{"name":"_2","nodeType":"YulIdentifier","src":"5759:2:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5746:3:178"},"nodeType":"YulFunctionCall","src":"5746:16:178"},{"kind":"number","nodeType":"YulLiteral","src":"5764:4:178","type":"","value":"0xa0"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5742:3:178"},"nodeType":"YulFunctionCall","src":"5742:27:178"},"nodeType":"YulIf","src":"5739:2:178"},{"nodeType":"YulVariableDeclaration","src":"5805:23:178","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5825:2:178","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5819:5:178"},"nodeType":"YulFunctionCall","src":"5819:9:178"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5809:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5837:35:178","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5859:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"5867:4:178","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5855:3:178"},"nodeType":"YulFunctionCall","src":"5855:17:178"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"5841:10:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"5931:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"5933:7:178"},"nodeType":"YulFunctionCall","src":"5933:9:178"},"nodeType":"YulExpressionStatement","src":"5933:9:178"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5890:10:178"},{"name":"_1","nodeType":"YulIdentifier","src":"5902:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5887:2:178"},"nodeType":"YulFunctionCall","src":"5887:18:178"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5910:10:178"},{"name":"memPtr","nodeType":"YulIdentifier","src":"5922:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5907:2:178"},"nodeType":"YulFunctionCall","src":"5907:22:178"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5884:2:178"},"nodeType":"YulFunctionCall","src":"5884:46:178"},"nodeType":"YulIf","src":"5881:2:178"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5960:2:178","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5964:10:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5953:6:178"},"nodeType":"YulFunctionCall","src":"5953:22:178"},"nodeType":"YulExpressionStatement","src":"5953:22:178"},{"nodeType":"YulVariableDeclaration","src":"5984:32:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6013:2:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6000:12:178"},"nodeType":"YulFunctionCall","src":"6000:16:178"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"5988:8:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"6045:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6054:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"6062:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6047:6:178"},"nodeType":"YulFunctionCall","src":"6047:22:178"},"nodeType":"YulExpressionStatement","src":"6047:22:178"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"6031:8:178"},{"name":"_1","nodeType":"YulIdentifier","src":"6041:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6028:2:178"},"nodeType":"YulFunctionCall","src":"6028:16:178"},"nodeType":"YulIf","src":"6025:2:178"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6087:6:178"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6118:2:178"},{"name":"offset_1","nodeType":"YulIdentifier","src":"6122:8:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6114:3:178"},"nodeType":"YulFunctionCall","src":"6114:17:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6133:7:178"}],"functionName":{"name":"abi_decode_t_bytes","nodeType":"YulIdentifier","src":"6095:18:178"},"nodeType":"YulFunctionCall","src":"6095:46:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6080:6:178"},"nodeType":"YulFunctionCall","src":"6080:62:178"},"nodeType":"YulExpressionStatement","src":"6080:62:178"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6162:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6170:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6158:3:178"},"nodeType":"YulFunctionCall","src":"6158:15:178"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6200:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"6204:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6196:3:178"},"nodeType":"YulFunctionCall","src":"6196:11:178"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6175:20:178"},"nodeType":"YulFunctionCall","src":"6175:33:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6151:6:178"},"nodeType":"YulFunctionCall","src":"6151:58:178"},"nodeType":"YulExpressionStatement","src":"6151:58:178"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6229:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6237:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6225:3:178"},"nodeType":"YulFunctionCall","src":"6225:15:178"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6259:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"6263:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6255:3:178"},"nodeType":"YulFunctionCall","src":"6255:11:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6242:12:178"},"nodeType":"YulFunctionCall","src":"6242:25:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6218:6:178"},"nodeType":"YulFunctionCall","src":"6218:50:178"},"nodeType":"YulExpressionStatement","src":"6218:50:178"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6288:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6296:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6284:3:178"},"nodeType":"YulFunctionCall","src":"6284:15:178"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6318:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"6322:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6314:3:178"},"nodeType":"YulFunctionCall","src":"6314:11:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6301:12:178"},"nodeType":"YulFunctionCall","src":"6301:25:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6277:6:178"},"nodeType":"YulFunctionCall","src":"6277:50:178"},"nodeType":"YulExpressionStatement","src":"6277:50:178"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6347:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6355:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6343:3:178"},"nodeType":"YulFunctionCall","src":"6343:16:178"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6378:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"6382:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6374:3:178"},"nodeType":"YulFunctionCall","src":"6374:12:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6361:12:178"},"nodeType":"YulFunctionCall","src":"6361:26:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6336:6:178"},"nodeType":"YulFunctionCall","src":"6336:52:178"},"nodeType":"YulExpressionStatement","src":"6336:52:178"},{"nodeType":"YulAssignment","src":"6397:16:178","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"6407:6:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6397:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_ExactInputParams_$16314_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5447:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5458:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5470:6:178","type":""}],"src":"5376:1043:178"},{"body":{"nodeType":"YulBlock","src":"6537:170:178","statements":[{"body":{"nodeType":"YulBlock","src":"6584:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6593:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"6601:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6586:6:178"},"nodeType":"YulFunctionCall","src":"6586:22:178"},"nodeType":"YulExpressionStatement","src":"6586:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6558:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"6567:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6554:3:178"},"nodeType":"YulFunctionCall","src":"6554:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"6579:3:178","type":"","value":"256"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6550:3:178"},"nodeType":"YulFunctionCall","src":"6550:33:178"},"nodeType":"YulIf","src":"6547:2:178"},{"nodeType":"YulAssignment","src":"6619:82:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6682:9:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6693:7:178"}],"functionName":{"name":"abi_decode_t_struct$_ExactInputSingleParams_calldata","nodeType":"YulIdentifier","src":"6629:52:178"},"nodeType":"YulFunctionCall","src":"6629:72:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6619:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_ExactInputSingleParams_$16295_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6503:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6514:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6526:6:178","type":""}],"src":"6424:283:178"},{"body":{"nodeType":"YulBlock","src":"6820:320:178","statements":[{"body":{"nodeType":"YulBlock","src":"6866:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6875:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"6883:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6868:6:178"},"nodeType":"YulFunctionCall","src":"6868:22:178"},"nodeType":"YulExpressionStatement","src":"6868:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6841:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"6850:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6837:3:178"},"nodeType":"YulFunctionCall","src":"6837:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"6862:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6833:3:178"},"nodeType":"YulFunctionCall","src":"6833:32:178"},"nodeType":"YulIf","src":"6830:2:178"},{"nodeType":"YulVariableDeclaration","src":"6901:37:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6928:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6915:12:178"},"nodeType":"YulFunctionCall","src":"6915:23:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6905:6:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"6981:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6990:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"6998:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6983:6:178"},"nodeType":"YulFunctionCall","src":"6983:22:178"},"nodeType":"YulExpressionStatement","src":"6983:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6953:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6961:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6950:2:178"},"nodeType":"YulFunctionCall","src":"6950:30:178"},"nodeType":"YulIf","src":"6947:2:178"},{"nodeType":"YulVariableDeclaration","src":"7016:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7030:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"7041:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7026:3:178"},"nodeType":"YulFunctionCall","src":"7026:22:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7020:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"7087:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7096:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"7104:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7089:6:178"},"nodeType":"YulFunctionCall","src":"7089:22:178"},"nodeType":"YulExpressionStatement","src":"7089:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7068:7:178"},{"name":"_1","nodeType":"YulIdentifier","src":"7077:2:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7064:3:178"},"nodeType":"YulFunctionCall","src":"7064:16:178"},{"kind":"number","nodeType":"YulLiteral","src":"7082:3:178","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7060:3:178"},"nodeType":"YulFunctionCall","src":"7060:26:178"},"nodeType":"YulIf","src":"7057:2:178"},{"nodeType":"YulAssignment","src":"7122:12:178","value":{"name":"_1","nodeType":"YulIdentifier","src":"7132:2:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7122:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_ExactOutputParams_$16358_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6786:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6797:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6809:6:178","type":""}],"src":"6712:428:178"},{"body":{"nodeType":"YulBlock","src":"7259:170:178","statements":[{"body":{"nodeType":"YulBlock","src":"7306:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7315:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"7323:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7308:6:178"},"nodeType":"YulFunctionCall","src":"7308:22:178"},"nodeType":"YulExpressionStatement","src":"7308:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7280:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"7289:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7276:3:178"},"nodeType":"YulFunctionCall","src":"7276:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"7301:3:178","type":"","value":"256"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7272:3:178"},"nodeType":"YulFunctionCall","src":"7272:33:178"},"nodeType":"YulIf","src":"7269:2:178"},{"nodeType":"YulAssignment","src":"7341:82:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7404:9:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7415:7:178"}],"functionName":{"name":"abi_decode_t_struct$_ExactInputSingleParams_calldata","nodeType":"YulIdentifier","src":"7351:52:178"},"nodeType":"YulFunctionCall","src":"7351:72:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7341:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_ExactOutputSingleParams_$16339_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7225:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7236:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7248:6:178","type":""}],"src":"7145:284:178"},{"body":{"nodeType":"YulBlock","src":"7539:824:178","statements":[{"body":{"nodeType":"YulBlock","src":"7585:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7594:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"7602:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7587:6:178"},"nodeType":"YulFunctionCall","src":"7587:22:178"},"nodeType":"YulExpressionStatement","src":"7587:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7560:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"7569:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7556:3:178"},"nodeType":"YulFunctionCall","src":"7556:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"7581:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7552:3:178"},"nodeType":"YulFunctionCall","src":"7552:32:178"},"nodeType":"YulIf","src":"7549:2:178"},{"nodeType":"YulVariableDeclaration","src":"7620:37:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7647:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7634:12:178"},"nodeType":"YulFunctionCall","src":"7634:23:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7624:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7666:28:178","value":{"kind":"number","nodeType":"YulLiteral","src":"7676:18:178","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7670:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"7721:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7730:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"7738:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7723:6:178"},"nodeType":"YulFunctionCall","src":"7723:22:178"},"nodeType":"YulExpressionStatement","src":"7723:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7709:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"7717:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7706:2:178"},"nodeType":"YulFunctionCall","src":"7706:14:178"},"nodeType":"YulIf","src":"7703:2:178"},{"nodeType":"YulVariableDeclaration","src":"7756:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7770:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"7781:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7766:3:178"},"nodeType":"YulFunctionCall","src":"7766:22:178"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"7760:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"7828:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7837:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"7845:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7830:6:178"},"nodeType":"YulFunctionCall","src":"7830:22:178"},"nodeType":"YulExpressionStatement","src":"7830:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7808:7:178"},{"name":"_2","nodeType":"YulIdentifier","src":"7817:2:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7804:3:178"},"nodeType":"YulFunctionCall","src":"7804:16:178"},{"kind":"number","nodeType":"YulLiteral","src":"7822:4:178","type":"","value":"0x40"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7800:3:178"},"nodeType":"YulFunctionCall","src":"7800:27:178"},"nodeType":"YulIf","src":"7797:2:178"},{"nodeType":"YulVariableDeclaration","src":"7863:25:178","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7883:4:178","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7877:5:178"},"nodeType":"YulFunctionCall","src":"7877:11:178"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7867:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7897:35:178","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7919:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"7927:4:178","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7915:3:178"},"nodeType":"YulFunctionCall","src":"7915:17:178"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7901:10:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"7991:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"7993:7:178"},"nodeType":"YulFunctionCall","src":"7993:9:178"},"nodeType":"YulExpressionStatement","src":"7993:9:178"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7950:10:178"},{"name":"_1","nodeType":"YulIdentifier","src":"7962:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7947:2:178"},"nodeType":"YulFunctionCall","src":"7947:18:178"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7970:10:178"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7982:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7967:2:178"},"nodeType":"YulFunctionCall","src":"7967:22:178"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7944:2:178"},"nodeType":"YulFunctionCall","src":"7944:46:178"},"nodeType":"YulIf","src":"7941:2:178"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8020:4:178","type":"","value":"0x40"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8026:10:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8013:6:178"},"nodeType":"YulFunctionCall","src":"8013:24:178"},"nodeType":"YulExpressionStatement","src":"8013:24:178"},{"nodeType":"YulVariableDeclaration","src":"8046:32:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"8075:2:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8062:12:178"},"nodeType":"YulFunctionCall","src":"8062:16:178"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"8050:8:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"8107:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8116:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"8124:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8109:6:178"},"nodeType":"YulFunctionCall","src":"8109:22:178"},"nodeType":"YulExpressionStatement","src":"8109:22:178"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"8093:8:178"},{"name":"_1","nodeType":"YulIdentifier","src":"8103:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8090:2:178"},"nodeType":"YulFunctionCall","src":"8090:16:178"},"nodeType":"YulIf","src":"8087:2:178"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8149:6:178"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"8180:2:178"},{"name":"offset_1","nodeType":"YulIdentifier","src":"8184:8:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8176:3:178"},"nodeType":"YulFunctionCall","src":"8176:17:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8195:7:178"}],"functionName":{"name":"abi_decode_t_bytes","nodeType":"YulIdentifier","src":"8157:18:178"},"nodeType":"YulFunctionCall","src":"8157:46:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8142:6:178"},"nodeType":"YulFunctionCall","src":"8142:62:178"},"nodeType":"YulExpressionStatement","src":"8142:62:178"},{"nodeType":"YulVariableDeclaration","src":"8213:38:178","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"8243:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"8247:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8239:3:178"},"nodeType":"YulFunctionCall","src":"8239:11:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8226:12:178"},"nodeType":"YulFunctionCall","src":"8226:25:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8217:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8287:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"8260:26:178"},"nodeType":"YulFunctionCall","src":"8260:33:178"},"nodeType":"YulExpressionStatement","src":"8260:33:178"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8313:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"8321:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8309:3:178"},"nodeType":"YulFunctionCall","src":"8309:15:178"},{"name":"value","nodeType":"YulIdentifier","src":"8326:5:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8302:6:178"},"nodeType":"YulFunctionCall","src":"8302:30:178"},"nodeType":"YulExpressionStatement","src":"8302:30:178"},{"nodeType":"YulAssignment","src":"8341:16:178","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"8351:6:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8341:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_SwapCallbackData_$13840_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7505:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7516:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7528:6:178","type":""}],"src":"7434:929:178"},{"body":{"nodeType":"YulBlock","src":"8438:189:178","statements":[{"body":{"nodeType":"YulBlock","src":"8484:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8493:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"8501:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8486:6:178"},"nodeType":"YulFunctionCall","src":"8486:22:178"},"nodeType":"YulExpressionStatement","src":"8486:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8459:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"8468:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8455:3:178"},"nodeType":"YulFunctionCall","src":"8455:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"8480:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8451:3:178"},"nodeType":"YulFunctionCall","src":"8451:32:178"},"nodeType":"YulIf","src":"8448:2:178"},{"nodeType":"YulVariableDeclaration","src":"8519:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8545:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8532:12:178"},"nodeType":"YulFunctionCall","src":"8532:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8523:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8591:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"8564:26:178"},"nodeType":"YulFunctionCall","src":"8564:33:178"},"nodeType":"YulExpressionStatement","src":"8564:33:178"},{"nodeType":"YulAssignment","src":"8606:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"8616:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8606:6:178"}]}]},"name":"abi_decode_tuple_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8404:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8415:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8427:6:178","type":""}],"src":"8368:259:178"},{"body":{"nodeType":"YulBlock","src":"8701:225:178","statements":[{"body":{"nodeType":"YulBlock","src":"8747:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8756:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"8764:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8749:6:178"},"nodeType":"YulFunctionCall","src":"8749:22:178"},"nodeType":"YulExpressionStatement","src":"8749:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8722:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"8731:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8718:3:178"},"nodeType":"YulFunctionCall","src":"8718:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"8743:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8714:3:178"},"nodeType":"YulFunctionCall","src":"8714:32:178"},"nodeType":"YulIf","src":"8711:2:178"},{"nodeType":"YulVariableDeclaration","src":"8782:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8808:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8795:12:178"},"nodeType":"YulFunctionCall","src":"8795:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8786:5:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"8870:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8879:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"8887:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8872:6:178"},"nodeType":"YulFunctionCall","src":"8872:22:178"},"nodeType":"YulExpressionStatement","src":"8872:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8840:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8851:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"8858:8:178","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8847:3:178"},"nodeType":"YulFunctionCall","src":"8847:20:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8837:2:178"},"nodeType":"YulFunctionCall","src":"8837:31:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8830:6:178"},"nodeType":"YulFunctionCall","src":"8830:39:178"},"nodeType":"YulIf","src":"8827:2:178"},{"nodeType":"YulAssignment","src":"8905:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"8915:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8905:6:178"}]}]},"name":"abi_decode_tuple_t_uint24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8667:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8678:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8690:6:178","type":""}],"src":"8632:294:178"},{"body":{"nodeType":"YulBlock","src":"9018:240:178","statements":[{"body":{"nodeType":"YulBlock","src":"9064:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9073:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"9081:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9066:6:178"},"nodeType":"YulFunctionCall","src":"9066:22:178"},"nodeType":"YulExpressionStatement","src":"9066:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9039:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"9048:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9035:3:178"},"nodeType":"YulFunctionCall","src":"9035:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"9060:2:178","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9031:3:178"},"nodeType":"YulFunctionCall","src":"9031:32:178"},"nodeType":"YulIf","src":"9028:2:178"},{"nodeType":"YulAssignment","src":"9099:33:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9122:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9109:12:178"},"nodeType":"YulFunctionCall","src":"9109:23:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9099:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"9141:45:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9171:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"9182:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9167:3:178"},"nodeType":"YulFunctionCall","src":"9167:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9154:12:178"},"nodeType":"YulFunctionCall","src":"9154:32:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"9145:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9222:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"9195:26:178"},"nodeType":"YulFunctionCall","src":"9195:33:178"},"nodeType":"YulExpressionStatement","src":"9195:33:178"},{"nodeType":"YulAssignment","src":"9237:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"9247:5:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9237:6:178"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8976:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8987:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8999:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9007:6:178","type":""}],"src":"8931:327:178"},{"body":{"nodeType":"YulBlock","src":"9384:418:178","statements":[{"body":{"nodeType":"YulBlock","src":"9431:26:178","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"9440:6:178"},{"name":"value2","nodeType":"YulIdentifier","src":"9448:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9433:6:178"},"nodeType":"YulFunctionCall","src":"9433:22:178"},"nodeType":"YulExpressionStatement","src":"9433:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9405:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"9414:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9401:3:178"},"nodeType":"YulFunctionCall","src":"9401:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"9426:3:178","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9397:3:178"},"nodeType":"YulFunctionCall","src":"9397:33:178"},"nodeType":"YulIf","src":"9394:2:178"},{"nodeType":"YulAssignment","src":"9466:33:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9489:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9476:12:178"},"nodeType":"YulFunctionCall","src":"9476:23:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9466:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"9508:45:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9538:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"9549:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9534:3:178"},"nodeType":"YulFunctionCall","src":"9534:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9521:12:178"},"nodeType":"YulFunctionCall","src":"9521:32:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"9512:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9589:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"9562:26:178"},"nodeType":"YulFunctionCall","src":"9562:33:178"},"nodeType":"YulExpressionStatement","src":"9562:33:178"},{"nodeType":"YulAssignment","src":"9604:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"9614:5:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9604:6:178"}]},{"nodeType":"YulAssignment","src":"9628:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9655:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"9666:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9651:3:178"},"nodeType":"YulFunctionCall","src":"9651:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9638:12:178"},"nodeType":"YulFunctionCall","src":"9638:32:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"9628:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"9679:47:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9711:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"9722:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9707:3:178"},"nodeType":"YulFunctionCall","src":"9707:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9694:12:178"},"nodeType":"YulFunctionCall","src":"9694:32:178"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"9683:7:178","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"9762:7:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"9735:26:178"},"nodeType":"YulFunctionCall","src":"9735:35:178"},"nodeType":"YulExpressionStatement","src":"9735:35:178"},{"nodeType":"YulAssignment","src":"9779:17:178","value":{"name":"value_1","nodeType":"YulIdentifier","src":"9789:7:178"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"9779:6:178"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9326:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9337:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9349:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9357:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9365:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9373:6:178","type":""}],"src":"9263:539:178"},{"body":{"nodeType":"YulBlock","src":"9858:208:178","statements":[{"nodeType":"YulVariableDeclaration","src":"9868:26:178","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9888:5:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9882:5:178"},"nodeType":"YulFunctionCall","src":"9882:12:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9872:6:178","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9910:3:178"},{"name":"length","nodeType":"YulIdentifier","src":"9915:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9903:6:178"},"nodeType":"YulFunctionCall","src":"9903:19:178"},"nodeType":"YulExpressionStatement","src":"9903:19:178"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9957:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"9964:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9953:3:178"},"nodeType":"YulFunctionCall","src":"9953:16:178"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9975:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"9980:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9971:3:178"},"nodeType":"YulFunctionCall","src":"9971:14:178"},{"name":"length","nodeType":"YulIdentifier","src":"9987:6:178"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"9931:21:178"},"nodeType":"YulFunctionCall","src":"9931:63:178"},"nodeType":"YulExpressionStatement","src":"9931:63:178"},{"nodeType":"YulAssignment","src":"10003:57:178","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10018:3:178"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10031:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"10039:2:178","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10027:3:178"},"nodeType":"YulFunctionCall","src":"10027:15:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10048:2:178","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10044:3:178"},"nodeType":"YulFunctionCall","src":"10044:7:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10023:3:178"},"nodeType":"YulFunctionCall","src":"10023:29:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10014:3:178"},"nodeType":"YulFunctionCall","src":"10014:39:178"},{"kind":"number","nodeType":"YulLiteral","src":"10055:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10010:3:178"},"nodeType":"YulFunctionCall","src":"10010:50:178"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10003:3:178"}]}]},"name":"abi_encode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9835:5:178","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9842:3:178","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9850:3:178","type":""}],"src":"9807:259:178"},{"body":{"nodeType":"YulBlock","src":"10244:258:178","statements":[{"nodeType":"YulVariableDeclaration","src":"10254:41:178","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10268:26:178","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10264:3:178"},"nodeType":"YulFunctionCall","src":"10264:31:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"10258:2:178","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10311:3:178"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10324:2:178","type":"","value":"96"},{"name":"value0","nodeType":"YulIdentifier","src":"10328:6:178"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10320:3:178"},"nodeType":"YulFunctionCall","src":"10320:15:178"},{"name":"_1","nodeType":"YulIdentifier","src":"10337:2:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10316:3:178"},"nodeType":"YulFunctionCall","src":"10316:24:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10304:6:178"},"nodeType":"YulFunctionCall","src":"10304:37:178"},"nodeType":"YulExpressionStatement","src":"10304:37:178"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10361:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"10366:2:178","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10357:3:178"},"nodeType":"YulFunctionCall","src":"10357:12:178"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10379:3:178","type":"","value":"232"},{"name":"value1","nodeType":"YulIdentifier","src":"10384:6:178"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10375:3:178"},"nodeType":"YulFunctionCall","src":"10375:16:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10397:3:178","type":"","value":"232"},{"kind":"number","nodeType":"YulLiteral","src":"10402:8:178","type":"","value":"16777215"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10393:3:178"},"nodeType":"YulFunctionCall","src":"10393:18:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10371:3:178"},"nodeType":"YulFunctionCall","src":"10371:41:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10350:6:178"},"nodeType":"YulFunctionCall","src":"10350:63:178"},"nodeType":"YulExpressionStatement","src":"10350:63:178"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10433:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"10438:2:178","type":"","value":"23"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10429:3:178"},"nodeType":"YulFunctionCall","src":"10429:12:178"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10451:2:178","type":"","value":"96"},{"name":"value2","nodeType":"YulIdentifier","src":"10455:6:178"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10447:3:178"},"nodeType":"YulFunctionCall","src":"10447:15:178"},{"name":"_1","nodeType":"YulIdentifier","src":"10464:2:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10443:3:178"},"nodeType":"YulFunctionCall","src":"10443:24:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10422:6:178"},"nodeType":"YulFunctionCall","src":"10422:46:178"},"nodeType":"YulExpressionStatement","src":"10422:46:178"},{"nodeType":"YulAssignment","src":"10477:19:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10488:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"10493:2:178","type":"","value":"43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10484:3:178"},"nodeType":"YulFunctionCall","src":"10484:12:178"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10477:3:178"}]}]},"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":"10204:3:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10209:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10217:6:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10225:6:178","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10236:3:178","type":""}],"src":"10071:431:178"},{"body":{"nodeType":"YulBlock","src":"10654:126:178","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10677:3:178"},{"name":"value0","nodeType":"YulIdentifier","src":"10682:6:178"},{"name":"value1","nodeType":"YulIdentifier","src":"10690:6:178"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"10664:12:178"},"nodeType":"YulFunctionCall","src":"10664:33:178"},"nodeType":"YulExpressionStatement","src":"10664:33:178"},{"nodeType":"YulVariableDeclaration","src":"10706:26:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10720:3:178"},{"name":"value1","nodeType":"YulIdentifier","src":"10725:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10716:3:178"},"nodeType":"YulFunctionCall","src":"10716:16:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"10710:2:178","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"10748:2:178"},{"name":"end","nodeType":"YulIdentifier","src":"10752:3:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10741:6:178"},"nodeType":"YulFunctionCall","src":"10741:15:178"},"nodeType":"YulExpressionStatement","src":"10741:15:178"},{"nodeType":"YulAssignment","src":"10765:9:178","value":{"name":"_1","nodeType":"YulIdentifier","src":"10772:2:178"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10765:3:178"}]}]},"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":"10622:3:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10627:6:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10635:6:178","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10646:3:178","type":""}],"src":"10507:273:178"},{"body":{"nodeType":"YulBlock","src":"10886:125:178","statements":[{"nodeType":"YulAssignment","src":"10896:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10908:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"10919:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10904:3:178"},"nodeType":"YulFunctionCall","src":"10904:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10896:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10938:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10953:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"10961:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10949:3:178"},"nodeType":"YulFunctionCall","src":"10949:55:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10931:6:178"},"nodeType":"YulFunctionCall","src":"10931:74:178"},"nodeType":"YulExpressionStatement","src":"10931:74:178"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10855:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10866:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10877:4:178","type":""}],"src":"10785:226:178"},{"body":{"nodeType":"YulBlock","src":"11239:370:178","statements":[{"nodeType":"YulVariableDeclaration","src":"11249:52:178","value":{"kind":"number","nodeType":"YulLiteral","src":"11259:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"11253:2:178","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11317:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11332:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"11340:2:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11328:3:178"},"nodeType":"YulFunctionCall","src":"11328:15:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11310:6:178"},"nodeType":"YulFunctionCall","src":"11310:34:178"},"nodeType":"YulExpressionStatement","src":"11310:34:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11364:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"11375:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11360:3:178"},"nodeType":"YulFunctionCall","src":"11360:18:178"},{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11394:6:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11387:6:178"},"nodeType":"YulFunctionCall","src":"11387:14:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11380:6:178"},"nodeType":"YulFunctionCall","src":"11380:22:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11353:6:178"},"nodeType":"YulFunctionCall","src":"11353:50:178"},"nodeType":"YulExpressionStatement","src":"11353:50:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11423:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"11434:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11419:3:178"},"nodeType":"YulFunctionCall","src":"11419:18:178"},{"name":"value2","nodeType":"YulIdentifier","src":"11439:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11412:6:178"},"nodeType":"YulFunctionCall","src":"11412:34:178"},"nodeType":"YulExpressionStatement","src":"11412:34:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11466:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"11477:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11462:3:178"},"nodeType":"YulFunctionCall","src":"11462:18:178"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"11486:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"11494:2:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11482:3:178"},"nodeType":"YulFunctionCall","src":"11482:15:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11455:6:178"},"nodeType":"YulFunctionCall","src":"11455:43:178"},"nodeType":"YulExpressionStatement","src":"11455:43:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11518:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"11529:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11514:3:178"},"nodeType":"YulFunctionCall","src":"11514:19:178"},{"kind":"number","nodeType":"YulLiteral","src":"11535:3:178","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11507:6:178"},"nodeType":"YulFunctionCall","src":"11507:32:178"},"nodeType":"YulExpressionStatement","src":"11507:32:178"},{"nodeType":"YulAssignment","src":"11548:55:178","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"11575:6:178"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11587:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"11598:3:178","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11583:3:178"},"nodeType":"YulFunctionCall","src":"11583:19:178"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"11556:18:178"},"nodeType":"YulFunctionCall","src":"11556:47:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11548:4:178"}]}]},"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":"11176:9:178","type":""},{"name":"value4","nodeType":"YulTypedName","src":"11187:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"11195:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11203:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11211:6:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11219:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11230:4:178","type":""}],"src":"11016:593:178"},{"body":{"nodeType":"YulBlock","src":"11783:637:178","statements":[{"nodeType":"YulVariableDeclaration","src":"11793:12:178","value":{"kind":"number","nodeType":"YulLiteral","src":"11803:2:178","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"11797:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11814:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11832:9:178"},{"name":"_1","nodeType":"YulIdentifier","src":"11843:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11828:3:178"},"nodeType":"YulFunctionCall","src":"11828:18:178"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"11818:6:178","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11862:9:178"},{"name":"_1","nodeType":"YulIdentifier","src":"11873:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11855:6:178"},"nodeType":"YulFunctionCall","src":"11855:21:178"},"nodeType":"YulExpressionStatement","src":"11855:21:178"},{"nodeType":"YulVariableDeclaration","src":"11885:17:178","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"11896:6:178"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"11889:3:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11911:27:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11931:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11925:5:178"},"nodeType":"YulFunctionCall","src":"11925:13:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"11915:6:178","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"11954:6:178"},{"name":"length","nodeType":"YulIdentifier","src":"11962:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11947:6:178"},"nodeType":"YulFunctionCall","src":"11947:22:178"},"nodeType":"YulExpressionStatement","src":"11947:22:178"},{"nodeType":"YulAssignment","src":"11978:25:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11989:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"12000:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11985:3:178"},"nodeType":"YulFunctionCall","src":"11985:18:178"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11978:3:178"}]},{"nodeType":"YulVariableDeclaration","src":"12012:54:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12034:9:178"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12049:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"12057:2:178"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"12045:3:178"},"nodeType":"YulFunctionCall","src":"12045:15:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12030:3:178"},"nodeType":"YulFunctionCall","src":"12030:31:178"},{"kind":"number","nodeType":"YulLiteral","src":"12063:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12026:3:178"},"nodeType":"YulFunctionCall","src":"12026:40:178"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"12016:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12075:29:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12093:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"12101:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12089:3:178"},"nodeType":"YulFunctionCall","src":"12089:15:178"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"12079:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12113:13:178","value":{"name":"tail","nodeType":"YulIdentifier","src":"12122:4:178"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"12117:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"12184:207:178","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12205:3:178"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12218:6:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"12226:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12214:3:178"},"nodeType":"YulFunctionCall","src":"12214:22:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12242:2:178","type":"","value":"63"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"12238:3:178"},"nodeType":"YulFunctionCall","src":"12238:7:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12210:3:178"},"nodeType":"YulFunctionCall","src":"12210:36:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12198:6:178"},"nodeType":"YulFunctionCall","src":"12198:49:178"},"nodeType":"YulExpressionStatement","src":"12198:49:178"},{"nodeType":"YulAssignment","src":"12260:51:178","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"12295:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12289:5:178"},"nodeType":"YulFunctionCall","src":"12289:13:178"},{"name":"tail_2","nodeType":"YulIdentifier","src":"12304:6:178"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"12270:18:178"},"nodeType":"YulFunctionCall","src":"12270:41:178"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12260:6:178"}]},{"nodeType":"YulAssignment","src":"12324:25:178","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"12338:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"12346:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12334:3:178"},"nodeType":"YulFunctionCall","src":"12334:15:178"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"12324:6:178"}]},{"nodeType":"YulAssignment","src":"12362:19:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12373:3:178"},{"name":"_1","nodeType":"YulIdentifier","src":"12378:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12369:3:178"},"nodeType":"YulFunctionCall","src":"12369:12:178"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12362:3:178"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"12146:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"12149:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"12143:2:178"},"nodeType":"YulFunctionCall","src":"12143:13:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"12157:18:178","statements":[{"nodeType":"YulAssignment","src":"12159:14:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"12168:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"12171:1:178","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12164:3:178"},"nodeType":"YulFunctionCall","src":"12164:9:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"12159:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"12139:3:178","statements":[]},"src":"12135:256:178"},{"nodeType":"YulAssignment","src":"12400:14:178","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"12408:6:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12400:4:178"}]}]},"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":"11752:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11763:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11774:4:178","type":""}],"src":"11614:806:178"},{"body":{"nodeType":"YulBlock","src":"12546:100:178","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12563:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"12574:2:178","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12556:6:178"},"nodeType":"YulFunctionCall","src":"12556:21:178"},"nodeType":"YulExpressionStatement","src":"12556:21:178"},{"nodeType":"YulAssignment","src":"12586:54:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12613:6:178"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12625:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"12636:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12621:3:178"},"nodeType":"YulFunctionCall","src":"12621:18:178"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"12594:18:178"},"nodeType":"YulFunctionCall","src":"12594:46:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12586:4:178"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12515:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12526:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12537:4:178","type":""}],"src":"12425:221:178"},{"body":{"nodeType":"YulBlock","src":"12825:168:178","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12842:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"12853:2:178","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12835:6:178"},"nodeType":"YulFunctionCall","src":"12835:21:178"},"nodeType":"YulExpressionStatement","src":"12835:21:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12876:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"12887:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12872:3:178"},"nodeType":"YulFunctionCall","src":"12872:18:178"},{"kind":"number","nodeType":"YulLiteral","src":"12892:2:178","type":"","value":"18"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12865:6:178"},"nodeType":"YulFunctionCall","src":"12865:30:178"},"nodeType":"YulExpressionStatement","src":"12865:30:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12915:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"12926:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12911:3:178"},"nodeType":"YulFunctionCall","src":"12911:18:178"},{"kind":"string","nodeType":"YulLiteral","src":"12931:20:178","type":"","value":"Too much requested"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12904:6:178"},"nodeType":"YulFunctionCall","src":"12904:48:178"},"nodeType":"YulExpressionStatement","src":"12904:48:178"},{"nodeType":"YulAssignment","src":"12961:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12973:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"12984:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12969:3:178"},"nodeType":"YulFunctionCall","src":"12969:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12961:4:178"}]}]},"name":"abi_encode_tuple_t_stringliteral_a5c1362ddf12293b907d8907d79f16e40792a7ddc4f09ee6d70cfec4ad443305__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12802:9:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12816:4:178","type":""}],"src":"12651:342:178"},{"body":{"nodeType":"YulBlock","src":"13172:169:178","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13189:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13200:2:178","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13182:6:178"},"nodeType":"YulFunctionCall","src":"13182:21:178"},"nodeType":"YulExpressionStatement","src":"13182:21:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13223:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13234:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13219:3:178"},"nodeType":"YulFunctionCall","src":"13219:18:178"},{"kind":"number","nodeType":"YulLiteral","src":"13239:2:178","type":"","value":"19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13212:6:178"},"nodeType":"YulFunctionCall","src":"13212:30:178"},"nodeType":"YulExpressionStatement","src":"13212:30:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13262:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13273:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13258:3:178"},"nodeType":"YulFunctionCall","src":"13258:18:178"},{"kind":"string","nodeType":"YulLiteral","src":"13278:21:178","type":"","value":"Too little received"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13251:6:178"},"nodeType":"YulFunctionCall","src":"13251:49:178"},"nodeType":"YulExpressionStatement","src":"13251:49:178"},{"nodeType":"YulAssignment","src":"13309:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13321:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13332:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13317:3:178"},"nodeType":"YulFunctionCall","src":"13317:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13309:4:178"}]}]},"name":"abi_encode_tuple_t_stringliteral_f037a9cbca9be03859489f289f0cf5f85c0414bbfdd9785bc7ab31bd734e249c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13149:9:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13163:4:178","type":""}],"src":"12998:343:178"},{"body":{"nodeType":"YulBlock","src":"13517:328:178","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13534:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13545:2:178","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13527:6:178"},"nodeType":"YulFunctionCall","src":"13527:21:178"},"nodeType":"YulExpressionStatement","src":"13527:21:178"},{"nodeType":"YulVariableDeclaration","src":"13557:33:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13583:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13577:5:178"},"nodeType":"YulFunctionCall","src":"13577:13:178"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"13561:12:178","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13610:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13621:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13606:3:178"},"nodeType":"YulFunctionCall","src":"13606:18:178"},{"kind":"number","nodeType":"YulLiteral","src":"13626:4:178","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13599:6:178"},"nodeType":"YulFunctionCall","src":"13599:32:178"},"nodeType":"YulExpressionStatement","src":"13599:32:178"},{"nodeType":"YulVariableDeclaration","src":"13640:66:178","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"13673:12:178"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13691:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13702:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13687:3:178"},"nodeType":"YulFunctionCall","src":"13687:18:178"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"13654:18:178"},"nodeType":"YulFunctionCall","src":"13654:52:178"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"13644:6:178","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13726:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13737:4:178","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13722:3:178"},"nodeType":"YulFunctionCall","src":"13722:20:178"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13758:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"13766:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13754:3:178"},"nodeType":"YulFunctionCall","src":"13754:15:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13748:5:178"},"nodeType":"YulFunctionCall","src":"13748:22:178"},{"kind":"number","nodeType":"YulLiteral","src":"13772:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13744:3:178"},"nodeType":"YulFunctionCall","src":"13744:71:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13715:6:178"},"nodeType":"YulFunctionCall","src":"13715:101:178"},"nodeType":"YulExpressionStatement","src":"13715:101:178"},{"nodeType":"YulAssignment","src":"13825:14:178","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"13833:6:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13825:4:178"}]}]},"name":"abi_encode_tuple_t_struct$_SwapCallbackData_$13840_memory_ptr__to_t_struct$_SwapCallbackData_$13840_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13486:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13497:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13508:4:178","type":""}],"src":"13346:499:178"},{"body":{"nodeType":"YulBlock","src":"13951:76:178","statements":[{"nodeType":"YulAssignment","src":"13961:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13973:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13984:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13969:3:178"},"nodeType":"YulFunctionCall","src":"13969:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13961:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14003:9:178"},{"name":"value0","nodeType":"YulIdentifier","src":"14014:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13996:6:178"},"nodeType":"YulFunctionCall","src":"13996:25:178"},"nodeType":"YulExpressionStatement","src":"13996:25:178"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13920:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13931:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13942:4:178","type":""}],"src":"13850:177:178"},{"body":{"nodeType":"YulBlock","src":"14126:439:178","statements":[{"nodeType":"YulVariableDeclaration","src":"14136:51:178","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"14175:11:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14162:12:178"},"nodeType":"YulFunctionCall","src":"14162:25:178"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"14140:18:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"14276:22:178","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"14285:4:178"},{"name":"addr","nodeType":"YulIdentifier","src":"14291:4:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14278:6:178"},"nodeType":"YulFunctionCall","src":"14278:18:178"},"nodeType":"YulExpressionStatement","src":"14278:18:178"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"14210:18:178"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"14238:12:178"},"nodeType":"YulFunctionCall","src":"14238:14:178"},{"name":"base_ref","nodeType":"YulIdentifier","src":"14254:8:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14234:3:178"},"nodeType":"YulFunctionCall","src":"14234:29:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14269:2:178","type":"","value":"30"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"14265:3:178"},"nodeType":"YulFunctionCall","src":"14265:7:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14230:3:178"},"nodeType":"YulFunctionCall","src":"14230:43:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"14206:3:178"},"nodeType":"YulFunctionCall","src":"14206:68:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"14199:6:178"},"nodeType":"YulFunctionCall","src":"14199:76:178"},"nodeType":"YulIf","src":"14196:2:178"},{"nodeType":"YulVariableDeclaration","src":"14307:47:178","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"14325:8:178"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"14335:18:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14321:3:178"},"nodeType":"YulFunctionCall","src":"14321:33:178"},"variables":[{"name":"addr_1","nodeType":"YulTypedName","src":"14311:6:178","type":""}]},{"nodeType":"YulAssignment","src":"14363:30:178","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"14386:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14373:12:178"},"nodeType":"YulFunctionCall","src":"14373:20:178"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"14363:6:178"}]},{"body":{"nodeType":"YulBlock","src":"14436:22:178","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"14445:4:178"},{"name":"addr","nodeType":"YulIdentifier","src":"14451:4:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14438:6:178"},"nodeType":"YulFunctionCall","src":"14438:18:178"},"nodeType":"YulExpressionStatement","src":"14438:18:178"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14408:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"14416:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14405:2:178"},"nodeType":"YulFunctionCall","src":"14405:30:178"},"nodeType":"YulIf","src":"14402:2:178"},{"nodeType":"YulAssignment","src":"14467:25:178","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"14479:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"14487:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14475:3:178"},"nodeType":"YulFunctionCall","src":"14475:17:178"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"14467:4:178"}]},{"body":{"nodeType":"YulBlock","src":"14543:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14552:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14555:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14545:6:178"},"nodeType":"YulFunctionCall","src":"14545:12:178"},"nodeType":"YulExpressionStatement","src":"14545:12:178"}]},"condition":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"14508:4:178"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"14518:12:178"},"nodeType":"YulFunctionCall","src":"14518:14:178"},{"name":"length","nodeType":"YulIdentifier","src":"14534:6:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14514:3:178"},"nodeType":"YulFunctionCall","src":"14514:27:178"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"14504:3:178"},"nodeType":"YulFunctionCall","src":"14504:38:178"},"nodeType":"YulIf","src":"14501:2:178"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"14083:8:178","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"14093:11:178","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"14109:4:178","type":""},{"name":"length","nodeType":"YulTypedName","src":"14115:6:178","type":""}],"src":"14032:533:178"},{"body":{"nodeType":"YulBlock","src":"14614:198:178","statements":[{"nodeType":"YulAssignment","src":"14624:19:178","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14640:2:178","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14634:5:178"},"nodeType":"YulFunctionCall","src":"14634:9:178"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14624:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"14652:35:178","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14674:6:178"},{"name":"size","nodeType":"YulIdentifier","src":"14682:4:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14670:3:178"},"nodeType":"YulFunctionCall","src":"14670:17:178"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"14656:10:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"14762:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"14764:7:178"},"nodeType":"YulFunctionCall","src":"14764:9:178"},"nodeType":"YulExpressionStatement","src":"14764:9:178"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"14705:10:178"},{"kind":"number","nodeType":"YulLiteral","src":"14717:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14702:2:178"},"nodeType":"YulFunctionCall","src":"14702:34:178"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"14741:10:178"},{"name":"memPtr","nodeType":"YulIdentifier","src":"14753:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14738:2:178"},"nodeType":"YulFunctionCall","src":"14738:22:178"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"14699:2:178"},"nodeType":"YulFunctionCall","src":"14699:62:178"},"nodeType":"YulIf","src":"14696:2:178"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14791:2:178","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"14795:10:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14784:6:178"},"nodeType":"YulFunctionCall","src":"14784:22:178"},"nodeType":"YulExpressionStatement","src":"14784:22:178"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"14594:4:178","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"14603:6:178","type":""}],"src":"14570:242:178"},{"body":{"nodeType":"YulBlock","src":"14876:122:178","statements":[{"body":{"nodeType":"YulBlock","src":"14920:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"14922:7:178"},"nodeType":"YulFunctionCall","src":"14922:9:178"},"nodeType":"YulExpressionStatement","src":"14922:9:178"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14892:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"14900:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14889:2:178"},"nodeType":"YulFunctionCall","src":"14889:30:178"},"nodeType":"YulIf","src":"14886:2:178"},{"nodeType":"YulAssignment","src":"14942:50:178","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14962:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"14970:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14958:3:178"},"nodeType":"YulFunctionCall","src":"14958:17:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14981:2:178","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"14977:3:178"},"nodeType":"YulFunctionCall","src":"14977:7:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14954:3:178"},"nodeType":"YulFunctionCall","src":"14954:31:178"},{"kind":"number","nodeType":"YulLiteral","src":"14987:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14950:3:178"},"nodeType":"YulFunctionCall","src":"14950:42:178"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"14942:4:178"}]}]},"name":"array_allocation_size_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"14856:6:178","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"14867:4:178","type":""}],"src":"14817:181:178"},{"body":{"nodeType":"YulBlock","src":"15056:205:178","statements":[{"nodeType":"YulVariableDeclaration","src":"15066:10:178","value":{"kind":"number","nodeType":"YulLiteral","src":"15075:1:178","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"15070:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"15135:63:178","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"15160:3:178"},{"name":"i","nodeType":"YulIdentifier","src":"15165:1:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15156:3:178"},"nodeType":"YulFunctionCall","src":"15156:11:178"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"15179:3:178"},{"name":"i","nodeType":"YulIdentifier","src":"15184:1:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15175:3:178"},"nodeType":"YulFunctionCall","src":"15175:11:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15169:5:178"},"nodeType":"YulFunctionCall","src":"15169:18:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15149:6:178"},"nodeType":"YulFunctionCall","src":"15149:39:178"},"nodeType":"YulExpressionStatement","src":"15149:39:178"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"15096:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"15099:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"15093:2:178"},"nodeType":"YulFunctionCall","src":"15093:13:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"15107:19:178","statements":[{"nodeType":"YulAssignment","src":"15109:15:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"15118:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"15121:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15114:3:178"},"nodeType":"YulFunctionCall","src":"15114:10:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"15109:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"15089:3:178","statements":[]},"src":"15085:113:178"},{"body":{"nodeType":"YulBlock","src":"15224:31:178","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"15237:3:178"},{"name":"length","nodeType":"YulIdentifier","src":"15242:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15233:3:178"},"nodeType":"YulFunctionCall","src":"15233:16:178"},{"kind":"number","nodeType":"YulLiteral","src":"15251:1:178","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15226:6:178"},"nodeType":"YulFunctionCall","src":"15226:27:178"},"nodeType":"YulExpressionStatement","src":"15226:27:178"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"15213:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"15216:6:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15210:2:178"},"nodeType":"YulFunctionCall","src":"15210:13:178"},"nodeType":"YulIf","src":"15207:2:178"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"15034:3:178","type":""},{"name":"dst","nodeType":"YulTypedName","src":"15039:3:178","type":""},{"name":"length","nodeType":"YulTypedName","src":"15044:6:178","type":""}],"src":"15003:258:178"},{"body":{"nodeType":"YulBlock","src":"15313:109:178","statements":[{"body":{"nodeType":"YulBlock","src":"15400:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15409:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15412:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"15402:6:178"},"nodeType":"YulFunctionCall","src":"15402:12:178"},"nodeType":"YulExpressionStatement","src":"15402:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15336:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15347:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"15354:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15343:3:178"},"nodeType":"YulFunctionCall","src":"15343:54:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"15333:2:178"},"nodeType":"YulFunctionCall","src":"15333:65:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"15326:6:178"},"nodeType":"YulFunctionCall","src":"15326:73:178"},"nodeType":"YulIf","src":"15323:2:178"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15302:5:178","type":""}],"src":"15266:156:178"}]},"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_$16314_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_$16295_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_$16358_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_$16339_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_$13840_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), not(31))), 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 := not(0xffffffffffffffffffffffff)\n        mstore(pos, and(shl(96, value0), _1))\n        mstore(add(pos, 20), and(shl(232, value1), shl(232, 16777215)))\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), not(63)))\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_$13840_memory_ptr__to_t_struct$_SwapCallbackData_$13840_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), not(30)))) { 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), not(31)), 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":178,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"14934":[{"length":32,"start":2899},{"length":32,"start":3002},{"length":32,"start":6243}],"14938":[{"length":32,"start":290},{"length":32,"start":1186},{"length":32,"start":1432},{"length":32,"start":1573},{"length":32,"start":1637},{"length":32,"start":1883},{"length":32,"start":5111},{"length":32,"start":5181},{"length":32,"start":5297}]},"linkReferences":{},"object":"6080604052600436106101125760003560e01c8063c04b8d59116100a5578063db3e219811610074578063e0e189a011610059578063e0e189a0146102db578063f28c0498146102ee578063f3995c671461030157610196565b8063db3e2198146102b5578063df2ab5bb146102c857610196565b8063c04b8d591461025a578063c2e3140a1461026d578063c45a015514610280578063d804d7a71461029557610196565b80634aa4a4fc116100e15780634aa4a4fc146101f25780639b2c0a3714610214578063a4a78f0c14610227578063ac9650d81461023a57610196565b806312210e8a1461019b578063414bf389146101a35780634659a494146101cc57806349404b7c146101df57610196565b3661019657336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610194576040805162461bcd60e51b815260206004820152600960248201527f4e6f742057455448390000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b610194610314565b6101b66101b1366004612241565b61031e565b6040516101c391906125c4565b60405180910390f35b6101946101da366004611fbf565b610404565b6101946101ed366004612348565b61049e565b3480156101fe57600080fd5b50610207610623565b6040516101c3919061244f565b610194610222366004612377565b610647565b610194610235366004611fbf565b61081e565b61024d61024836600461201f565b6108af565b6040516101c391906124a8565b6101b6610268366004612196565b6109ef565b61019461027b366004611fbf565b610ac2565b34801561028c57600080fd5b50610207610b51565b3480156102a157600080fd5b506101946102b03660046120b1565b610b75565b6101b66102c3366004612241565b610c88565b6101946102d6366004611f20565b610d66565b6101946102e9366004611f61565b610e4f565b6101b66102fc36600461225d565b610f81565b61019461030f366004611fbf565b61102e565b61031c6110a0565b565b6000816080013561032e816110b0565b6103c760a08401356103466080860160608701611efd565b610357610100870160e08801611efd565b604080518082019091528061036f60208a018a611efd565b61037f60608b0160408c01612325565b61038f60408c0160208d01611efd565b6040516020016103a1939291906123ec565b6040516020818303038152906040528152602001336001600160a01b0316815250611108565b91508260c001358210156103f65760405162461bcd60e51b81526004016103ed90612552565b60405180910390fd5b6103fe6110a0565b50919050565b604080516323f2ebc360e21b815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b50505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561050d57600080fd5b505afa158015610521573d6000803e3d6000fd5b505050506040513d602081101561053757600080fd5b5051905082811015610590576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b801561061e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b5050505061061e828261125a565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082118015610658575060648211155b61066157600080fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156106d057600080fd5b505afa1580156106e4573d6000803e3d6000fd5b505050506040513d60208110156106fa57600080fd5b5051905084811015610753576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b8015610817577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156107bf57600080fd5b505af11580156107d3573d6000803e3d6000fd5b5050505060006127106107ef858461134990919063ffffffff16565b816107f657fe5b049050801561080957610809838261125a565b6108158582840361125a565b505b5050505050565b60408051636eb1769f60e11b81523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b15801561086f57600080fd5b505afa158015610883573d6000803e3d6000fd5b505050506040513d602081101561089957600080fd5b5051101561081557610815868686868686610404565b60608167ffffffffffffffff811180156108c857600080fd5b506040519080825280602002602001820160405280156108fc57816020015b60608152602001906001900390816108e75790505b50905060005b828110156109e8576000803086868581811061091a57fe5b905060200281019061092c91906125cd565b60405161093a92919061243f565b600060405180830381855af49150503d8060008114610975576040519150601f19603f3d011682016040523d82523d6000602084013e61097a565b606091505b5091509150816109c65760448151101561099357600080fd5b600481019050808060200190518101906109ad919061212c565b60405162461bcd60e51b81526004016103ed9190612508565b808484815181106109d357fe5b60209081029190910101525050600101610902565b5092915050565b600081604001516109ff816110b0565b335b6000610a108560000151611373565b9050610a5c856060015182610a29578660200151610a2b565b305b60006040518060400160405280610a458b6000015161137f565b8152602001876001600160a01b0316815250611108565b60608601528015610a7c578451309250610a759061138e565b8552610a89565b8460600151935050610a8f565b50610a01565b8360800151831015610ab35760405162461bcd60e51b81526004016103ed90612552565b610abb6110a0565b5050919050565b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b158015610b1157600080fd5b505afa158015610b25573d6000803e3d6000fd5b505050506040513d6020811015610b3b57600080fd5b505110156108155761081586868686868661102e565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000841380610b845750600083135b610b8d57600080fd5b6000610b9b82840184612295565b90506000806000610baf84600001516113a5565b925092509250610be17f00000000000000000000000000000000000000000000000000000000000000008484846113d6565b5060008060008a13610c0857846001600160a01b0316846001600160a01b03161089610c1f565b836001600160a01b0316856001600160a01b0316108a5b915091508115610c3e57610c3985876020015133846113f5565b610492565b8551610c4990611373565b15610c6e578551610c599061138e565b8652610c688133600089611585565b50610492565b8060008190555083945061049285876020015133846113f5565b60008160800135610c98816110b0565b610d3460a0840135610cb06080860160608701611efd565b610cc1610100870160e08801611efd565b6040518060400160405280886020016020810190610cdf9190611efd565b610cef60608b0160408c01612325565b610cfc60208c018c611efd565b604051602001610d0e939291906123ec565b6040516020818303038152906040528152602001336001600160a01b0316815250611585565b91508260c00135821115610d5a5760405162461bcd60e51b81526004016103ed9061251b565b50600019600055919050565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610db557600080fd5b505afa158015610dc9573d6000803e3d6000fd5b505050506040513d6020811015610ddf57600080fd5b5051905082811015610e38576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b8015610e4957610e49848383611700565b50505050565b600082118015610e60575060648211155b610e6957600080fd5b6000856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610eb857600080fd5b505afa158015610ecc573d6000803e3d6000fd5b505050506040513d6020811015610ee257600080fd5b5051905084811015610f3b576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b8015610815576000612710610f508386611349565b81610f5757fe5b0490508015610f6b57610f6b878483611700565b610f788786838503611700565b50505050505050565b60008160400135610f91816110b0565b6110046060840135610fa96040860160208701611efd565b6040805180820190915260009080610fc189806125cd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525033602090910152611585565b5060005491508260800135821115610d5a5760405162461bcd60e51b81526004016103ed9061251b565b6040805163d505accf60e01b8152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b15801561047e57600080fd5b471561031c5761031c334761125a565b80421115611105576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b50565b60006001600160a01b03841661111c573093505b600080600061112e85600001516113a5565b919450925090506001600160a01b038083169084161060008061115286868661185c565b6001600160a01b031663128acb088b8561116b8f61189a565b6001600160a01b038e1615611180578d6111a6565b8761119f5773fffd8963efd1fc6a506488495d951d5263988d256111a6565b6401000276a45b8d6040516020016111b79190612589565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016111e6959493929190612463565b6040805180830381600087803b1580156111ff57600080fd5b505af1158015611213573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611237919061208e565b91509150826112465781611248565b805b6000039b9a5050505050505050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106112a65780518252601f199092019160209182019101611287565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611308576040519150601f19603f3d011682016040523d82523d6000602084013e61130d565b606091505b505090508061061e576040805162461bcd60e51b815260206004820152600360248201526253544560e81b604482015290519081900360640190fd5b60008215806113645750508181028183828161136157fe5b04145b61136d57600080fd5b92915050565b8051604211155b919050565b606061136d826000602b6118b0565b805160609061136d908390601790601619016118b0565b600080806113b38482611a0d565b92506113c0846014611ad9565b90506113cd846017611a0d565b91509193909250565b60006113ec856113e7868686611b95565b611beb565b95945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156114365750804710155b15611558577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561149657600080fd5b505af11580156114aa573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561152657600080fd5b505af115801561153a573d6000803e3d6000fd5b505050506040513d602081101561155057600080fd5b50610e499050565b6001600160a01b03831630141561157957611574848383611700565b610e49565b610e4984848484611c0e565b60006001600160a01b038416611599573093505b60008060006115ab85600001516113a5565b919450925090506001600160a01b03808416908316106000806115cf85878661185c565b6001600160a01b031663128acb088b856115e88f61189a565b6000036001600160a01b038e1615611600578d611626565b8761161f5773fffd8963efd1fc6a506488495d951d5263988d25611626565b6401000276a45b8d6040516020016116379190612589565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401611666959493929190612463565b6040805180830381600087803b15801561167f57600080fd5b505af1158015611693573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b7919061208e565b915091506000836116cc5781836000036116d2565b82826000035b90985090506001600160a01b038a166116f1578b81146116f157600080fd5b50505050505050949350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106117915780518252601f199092019160209182019101611772565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146117f3576040519150601f19603f3d011682016040523d82523d6000602084013e6117f8565b606091505b5091509150818015611826575080511580611826575080806020019051602081101561182357600080fd5b50515b610817576040805162461bcd60e51b815260206004820152600260248201526114d560f21b604482015290519081900360640190fd5b60006118927f000000000000000000000000000000000000000000000000000000000000000061188d868686611b95565b611d73565b949350505050565b6000600160ff1b82106118ac57600080fd5b5090565b60608182601f0110156118fb576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015611943576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b8183018451101561199b576040805162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b6060821580156119ba5760405191506000825260208201604052611a04565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156119f35780518352602092830192016119db565b5050858452601f01601f1916604052505b50949350505050565b600081826014011015611a67576040805162461bcd60e51b815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015611ac0576040805162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015611b33576040805162461bcd60e51b815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015611b8c576040805162461bcd60e51b815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b611b9d611e6f565b826001600160a01b0316846001600160a01b03161115611bbb579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b6000611bf78383611d73565b9050336001600160a01b0382161461136d57600080fd5b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b178152925182516000948594938a169392918291908083835b60208310611ca75780518252601f199092019160209182019101611c88565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611d09576040519150601f19603f3d011682016040523d82523d6000602084013e611d0e565b606091505b5091509150818015611d3c575080511580611d3c5750808060200190516020811015611d3957600080fd5b50515b610815576040805162461bcd60e51b815260206004820152600360248201526229aa2360e91b604482015290519081900360640190fd5b600081602001516001600160a01b031682600001516001600160a01b031610611d9b57600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f5909101909152805191012090565b604080516060810182526000808252602082018190529181019190915290565b803561137a8161268b565b600082601f830112611eaa578081fd5b8135611ebd611eb88261263d565b612619565b818152846020838601011115611ed1578283fd5b816020850160208301379081016020019190915292915050565b600061010082840312156103fe578081fd5b600060208284031215611f0e578081fd5b8135611f198161268b565b9392505050565b600080600060608486031215611f34578182fd5b8335611f3f8161268b565b9250602084013591506040840135611f568161268b565b809150509250925092565b600080600080600060a08688031215611f78578081fd5b8535611f838161268b565b9450602086013593506040860135611f9a8161268b565b9250606086013591506080860135611fb18161268b565b809150509295509295909350565b60008060008060008060c08789031215611fd7578081fd5b8635611fe28161268b565b95506020870135945060408701359350606087013560ff81168114612005578182fd5b9598949750929560808101359460a0909101359350915050565b60008060208385031215612031578182fd5b823567ffffffffffffffff80821115612048578384fd5b818501915085601f83011261205b578384fd5b813581811115612069578485fd5b866020808302850101111561207c578485fd5b60209290920196919550909350505050565b600080604083850312156120a0578182fd5b505080516020909101519092909150565b600080600080606085870312156120c6578182fd5b8435935060208501359250604085013567ffffffffffffffff808211156120eb578384fd5b818701915087601f8301126120fe578384fd5b81358181111561210c578485fd5b88602082850101111561211d578485fd5b95989497505060200194505050565b60006020828403121561213d578081fd5b815167ffffffffffffffff811115612153578182fd5b8201601f81018413612163578182fd5b8051612171611eb88261263d565b818152856020838501011115612185578384fd5b6113ec82602083016020860161265f565b6000602082840312156121a7578081fd5b813567ffffffffffffffff808211156121be578283fd5b9083019060a082860312156121d1578283fd5b60405160a0810181811083821117156121e657fe5b6040528235828111156121f7578485fd5b61220387828601611e9a565b82525061221260208401611e8f565b602082015260408301356040820152606083013560608201526080830135608082015280935050505092915050565b60006101008284031215612253578081fd5b611f198383611eeb565b60006020828403121561226e578081fd5b813567ffffffffffffffff811115612284578182fd5b820160a08185031215611f19578182fd5b6000602082840312156122a6578081fd5b813567ffffffffffffffff808211156122bd578283fd5b90830190604082860312156122d0578283fd5b6040516040810181811083821117156122e557fe5b6040528235828111156122f6578485fd5b61230287828601611e9a565b825250602083013592506123158361268b565b6020810192909252509392505050565b600060208284031215612336578081fd5b813562ffffff81168114611f19578182fd5b6000806040838503121561235a578182fd5b82359150602083013561236c8161268b565b809150509250929050565b6000806000806080858703121561238c578182fd5b84359350602085013561239e8161268b565b92506040850135915060608501356123b58161268b565b939692955090935050565b600081518084526123d881602086016020860161265f565b601f01601f19169290920160200192915050565b606093841b6bffffffffffffffffffffffff19908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b60006001600160a01b038088168352861515602084015285604084015280851660608401525060a0608083015261249d60a08301846123c0565b979650505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156124fb57603f198886030184526124e98583516123c0565b945092850192908501906001016124cd565b5092979650505050505050565b600060208252611f1960208301846123c0565b60208082526012908201527f546f6f206d756368207265717565737465640000000000000000000000000000604082015260600190565b60208082526013908201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604082015260600190565b6000602082528251604060208401526125a560608401826123c0565b90506001600160a01b0360208501511660408401528091505092915050565b90815260200190565b6000808335601e198436030181126125e3578283fd5b83018035915067ffffffffffffffff8211156125fd578283fd5b60200191503681900382131561261257600080fd5b9250929050565b60405181810167ffffffffffffffff8111828210171561263557fe5b604052919050565b600067ffffffffffffffff82111561265157fe5b50601f01601f191660200190565b60005b8381101561267a578181015183820152602001612662565b83811115610e495750506000910152565b6001600160a01b038116811461110557600080fdfea2646970667358221220ec84789d9c1a39359d7c1faf092d42099441efa4511916e1f9a1c8daebc9b3fd64736f6c63430007060033","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 0x2DB JUMPI DUP1 PUSH4 0xF28C0498 EQ PUSH2 0x2EE JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x301 JUMPI PUSH2 0x196 JUMP JUMPDEST DUP1 PUSH4 0xDB3E2198 EQ PUSH2 0x2B5 JUMPI DUP1 PUSH4 0xDF2AB5BB EQ PUSH2 0x2C8 JUMPI PUSH2 0x196 JUMP JUMPDEST DUP1 PUSH4 0xC04B8D59 EQ PUSH2 0x25A JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0xD804D7A7 EQ PUSH2 0x295 JUMPI PUSH2 0x196 JUMP JUMPDEST DUP1 PUSH4 0x4AA4A4FC GT PUSH2 0xE1 JUMPI DUP1 PUSH4 0x4AA4A4FC EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0x9B2C0A37 EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x23A JUMPI PUSH2 0x196 JUMP JUMPDEST DUP1 PUSH4 0x12210E8A EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x414BF389 EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0x4659A494 EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x49404B7C EQ PUSH2 0x1DF JUMPI PUSH2 0x196 JUMP JUMPDEST CALLDATASIZE PUSH2 0x196 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x194 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F742057455448390000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x194 PUSH2 0x314 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x1B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2241 JUMP JUMPDEST PUSH2 0x31E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C3 SWAP2 SWAP1 PUSH2 0x25C4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x194 PUSH2 0x1DA CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBF JUMP JUMPDEST PUSH2 0x404 JUMP JUMPDEST PUSH2 0x194 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x2348 JUMP JUMPDEST PUSH2 0x49E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x207 PUSH2 0x623 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C3 SWAP2 SWAP1 PUSH2 0x244F JUMP JUMPDEST PUSH2 0x194 PUSH2 0x222 CALLDATASIZE PUSH1 0x4 PUSH2 0x2377 JUMP JUMPDEST PUSH2 0x647 JUMP JUMPDEST PUSH2 0x194 PUSH2 0x235 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBF JUMP JUMPDEST PUSH2 0x81E JUMP JUMPDEST PUSH2 0x24D PUSH2 0x248 CALLDATASIZE PUSH1 0x4 PUSH2 0x201F JUMP JUMPDEST PUSH2 0x8AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C3 SWAP2 SWAP1 PUSH2 0x24A8 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x268 CALLDATASIZE PUSH1 0x4 PUSH2 0x2196 JUMP JUMPDEST PUSH2 0x9EF JUMP JUMPDEST PUSH2 0x194 PUSH2 0x27B CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBF JUMP JUMPDEST PUSH2 0xAC2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x207 PUSH2 0xB51 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x194 PUSH2 0x2B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x20B1 JUMP JUMPDEST PUSH2 0xB75 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x2C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2241 JUMP JUMPDEST PUSH2 0xC88 JUMP JUMPDEST PUSH2 0x194 PUSH2 0x2D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F20 JUMP JUMPDEST PUSH2 0xD66 JUMP JUMPDEST PUSH2 0x194 PUSH2 0x2E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F61 JUMP JUMPDEST PUSH2 0xE4F JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x2FC CALLDATASIZE PUSH1 0x4 PUSH2 0x225D JUMP JUMPDEST PUSH2 0xF81 JUMP JUMPDEST PUSH2 0x194 PUSH2 0x30F CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBF JUMP JUMPDEST PUSH2 0x102E JUMP JUMPDEST PUSH2 0x31C PUSH2 0x10A0 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x32E DUP2 PUSH2 0x10B0 JUMP JUMPDEST PUSH2 0x3C7 PUSH1 0xA0 DUP5 ADD CALLDATALOAD PUSH2 0x346 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x1EFD JUMP JUMPDEST PUSH2 0x357 PUSH2 0x100 DUP8 ADD PUSH1 0xE0 DUP9 ADD PUSH2 0x1EFD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH2 0x36F PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x1EFD JUMP JUMPDEST PUSH2 0x37F PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x2325 JUMP JUMPDEST PUSH2 0x38F PUSH1 0x40 DUP13 ADD PUSH1 0x20 DUP14 ADD PUSH2 0x1EFD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3A1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x23EC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH2 0x1108 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0xC0 ADD CALLDATALOAD DUP3 LT ISZERO PUSH2 0x3F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3ED SWAP1 PUSH2 0x2552 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3FE PUSH2 0x10A0 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23F2EBC3 PUSH1 0xE2 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x47E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x492 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x50D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x521 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 0x537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x590 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742057455448390000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x61E JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x610 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x61E DUP3 DUP3 PUSH2 0x125A JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x658 JUMPI POP PUSH1 0x64 DUP3 GT ISZERO JUMPDEST PUSH2 0x661 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x6D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6E4 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 0x6FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP5 DUP2 LT ISZERO PUSH2 0x753 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742057455448390000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x817 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x2710 PUSH2 0x7EF DUP6 DUP5 PUSH2 0x1349 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x7F6 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x809 JUMPI PUSH2 0x809 DUP4 DUP3 PUSH2 0x125A JUMP JUMPDEST PUSH2 0x815 DUP6 DUP3 DUP5 SUB PUSH2 0x125A JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 NOT SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x86F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x883 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 0x899 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x815 JUMPI PUSH2 0x815 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x404 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x8C8 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 0x8FC JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x8E7 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x91A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x92C SWAP2 SWAP1 PUSH2 0x25CD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x93A SWAP3 SWAP2 SWAP1 PUSH2 0x243F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x975 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 0x97A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x9C6 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x993 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x9AD SWAP2 SWAP1 PUSH2 0x212C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3ED SWAP2 SWAP1 PUSH2 0x2508 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x9D3 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x902 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD PUSH2 0x9FF DUP2 PUSH2 0x10B0 JUMP JUMPDEST CALLER JUMPDEST PUSH1 0x0 PUSH2 0xA10 DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x1373 JUMP JUMPDEST SWAP1 POP PUSH2 0xA5C DUP6 PUSH1 0x60 ADD MLOAD DUP3 PUSH2 0xA29 JUMPI DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0xA2B JUMP JUMPDEST ADDRESS JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xA45 DUP12 PUSH1 0x0 ADD MLOAD PUSH2 0x137F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH2 0x1108 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE DUP1 ISZERO PUSH2 0xA7C JUMPI DUP5 MLOAD ADDRESS SWAP3 POP PUSH2 0xA75 SWAP1 PUSH2 0x138E JUMP JUMPDEST DUP6 MSTORE PUSH2 0xA89 JUMP JUMPDEST DUP5 PUSH1 0x60 ADD MLOAD SWAP4 POP POP PUSH2 0xA8F JUMP JUMPDEST POP PUSH2 0xA01 JUMP JUMPDEST DUP4 PUSH1 0x80 ADD MLOAD DUP4 LT ISZERO PUSH2 0xAB3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3ED SWAP1 PUSH2 0x2552 JUMP JUMPDEST PUSH2 0xABB PUSH2 0x10A0 JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xB11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB25 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 0xB3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x815 JUMPI PUSH2 0x815 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x102E JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP5 SGT DUP1 PUSH2 0xB84 JUMPI POP PUSH1 0x0 DUP4 SGT JUMPDEST PUSH2 0xB8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB9B DUP3 DUP5 ADD DUP5 PUSH2 0x2295 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xBAF DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x13A5 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0xBE1 PUSH32 0x0 DUP5 DUP5 DUP5 PUSH2 0x13D6 JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP11 SGT PUSH2 0xC08 JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP10 PUSH2 0xC1F JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP11 JUMPDEST SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0xC3E JUMPI PUSH2 0xC39 DUP6 DUP8 PUSH1 0x20 ADD MLOAD CALLER DUP5 PUSH2 0x13F5 JUMP JUMPDEST PUSH2 0x492 JUMP JUMPDEST DUP6 MLOAD PUSH2 0xC49 SWAP1 PUSH2 0x1373 JUMP JUMPDEST ISZERO PUSH2 0xC6E JUMPI DUP6 MLOAD PUSH2 0xC59 SWAP1 PUSH2 0x138E JUMP JUMPDEST DUP7 MSTORE PUSH2 0xC68 DUP2 CALLER PUSH1 0x0 DUP10 PUSH2 0x1585 JUMP JUMPDEST POP PUSH2 0x492 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP DUP4 SWAP5 POP PUSH2 0x492 DUP6 DUP8 PUSH1 0x20 ADD MLOAD CALLER DUP5 PUSH2 0x13F5 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0xC98 DUP2 PUSH2 0x10B0 JUMP JUMPDEST PUSH2 0xD34 PUSH1 0xA0 DUP5 ADD CALLDATALOAD PUSH2 0xCB0 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x1EFD JUMP JUMPDEST PUSH2 0xCC1 PUSH2 0x100 DUP8 ADD PUSH1 0xE0 DUP9 ADD PUSH2 0x1EFD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xCDF SWAP2 SWAP1 PUSH2 0x1EFD JUMP JUMPDEST PUSH2 0xCEF PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x2325 JUMP JUMPDEST PUSH2 0xCFC PUSH1 0x20 DUP13 ADD DUP13 PUSH2 0x1EFD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD0E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x23EC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH2 0x1585 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0xC0 ADD CALLDATALOAD DUP3 GT ISZERO PUSH2 0xD5A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3ED SWAP1 PUSH2 0x251B JUMP JUMPDEST POP PUSH1 0x0 NOT PUSH1 0x0 SSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xDB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDC9 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 0xDDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0xE38 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0xE49 JUMPI PUSH2 0xE49 DUP5 DUP4 DUP4 PUSH2 0x1700 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0xE60 JUMPI POP PUSH1 0x64 DUP3 GT ISZERO JUMPDEST PUSH2 0xE69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xEB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xECC 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 0xEE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP5 DUP2 LT ISZERO PUSH2 0xF3B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x815 JUMPI PUSH1 0x0 PUSH2 0x2710 PUSH2 0xF50 DUP4 DUP7 PUSH2 0x1349 JUMP JUMPDEST DUP2 PUSH2 0xF57 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0xF6B JUMPI PUSH2 0xF6B DUP8 DUP5 DUP4 PUSH2 0x1700 JUMP JUMPDEST PUSH2 0xF78 DUP8 DUP7 DUP4 DUP6 SUB PUSH2 0x1700 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF91 DUP2 PUSH2 0x10B0 JUMP JUMPDEST PUSH2 0x1004 PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH2 0xFA9 PUSH1 0x40 DUP7 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EFD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 DUP1 PUSH2 0xFC1 DUP10 DUP1 PUSH2 0x25CD 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 0x1585 JUMP JUMPDEST POP PUSH1 0x0 SLOAD SWAP2 POP DUP3 PUSH1 0x80 ADD CALLDATALOAD DUP3 GT ISZERO PUSH2 0xD5A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3ED SWAP1 PUSH2 0x251B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x47E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SELFBALANCE ISZERO PUSH2 0x31C JUMPI PUSH2 0x31C CALLER SELFBALANCE PUSH2 0x125A JUMP JUMPDEST DUP1 TIMESTAMP GT ISZERO PUSH2 0x1105 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x111C JUMPI ADDRESS SWAP4 POP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x112E DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x13A5 JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP1 DUP5 AND LT PUSH1 0x0 DUP1 PUSH2 0x1152 DUP7 DUP7 DUP7 PUSH2 0x185C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP12 DUP6 PUSH2 0x116B DUP16 PUSH2 0x189A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND ISZERO PUSH2 0x1180 JUMPI DUP14 PUSH2 0x11A6 JUMP JUMPDEST DUP8 PUSH2 0x119F JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x11A6 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x11B7 SWAP2 SWAP1 PUSH2 0x2589 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 0x11E6 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2463 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1213 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 0x1237 SWAP2 SWAP1 PUSH2 0x208E JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 PUSH2 0x1246 JUMPI DUP2 PUSH2 0x1248 JUMP JUMPDEST DUP1 JUMPDEST PUSH1 0x0 SUB SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x12A6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1287 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 0x1308 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 0x130D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x61E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x535445 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x1364 JUMPI POP POP DUP2 DUP2 MUL DUP2 DUP4 DUP3 DUP2 PUSH2 0x1361 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x136D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x42 GT ISZERO JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x136D DUP3 PUSH1 0x0 PUSH1 0x2B PUSH2 0x18B0 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x136D SWAP1 DUP4 SWAP1 PUSH1 0x17 SWAP1 PUSH1 0x16 NOT ADD PUSH2 0x18B0 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x13B3 DUP5 DUP3 PUSH2 0x1A0D JUMP JUMPDEST SWAP3 POP PUSH2 0x13C0 DUP5 PUSH1 0x14 PUSH2 0x1AD9 JUMP JUMPDEST SWAP1 POP PUSH2 0x13CD DUP5 PUSH1 0x17 PUSH2 0x1A0D JUMP JUMPDEST SWAP2 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13EC DUP6 PUSH2 0x13E7 DUP7 DUP7 DUP7 PUSH2 0x1B95 JUMP JUMPDEST PUSH2 0x1BEB JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x1436 JUMPI POP DUP1 SELFBALANCE LT ISZERO JUMPDEST ISZERO PUSH2 0x1558 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x153A 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 0x1550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE49 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ ISZERO PUSH2 0x1579 JUMPI PUSH2 0x1574 DUP5 DUP4 DUP4 PUSH2 0x1700 JUMP JUMPDEST PUSH2 0xE49 JUMP JUMPDEST PUSH2 0xE49 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1C0E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1599 JUMPI ADDRESS SWAP4 POP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x15AB DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x13A5 JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP1 DUP4 AND LT PUSH1 0x0 DUP1 PUSH2 0x15CF DUP6 DUP8 DUP7 PUSH2 0x185C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP12 DUP6 PUSH2 0x15E8 DUP16 PUSH2 0x189A JUMP JUMPDEST PUSH1 0x0 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND ISZERO PUSH2 0x1600 JUMPI DUP14 PUSH2 0x1626 JUMP JUMPDEST DUP8 PUSH2 0x161F JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x1626 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1637 SWAP2 SWAP1 PUSH2 0x2589 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 0x1666 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2463 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x167F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1693 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 0x16B7 SWAP2 SWAP1 PUSH2 0x208E JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP4 PUSH2 0x16CC JUMPI DUP2 DUP4 PUSH1 0x0 SUB PUSH2 0x16D2 JUMP JUMPDEST DUP3 DUP3 PUSH1 0x0 SUB JUMPDEST SWAP1 SWAP9 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH2 0x16F1 JUMPI DUP12 DUP2 EQ PUSH2 0x16F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH4 0xA9059CBB PUSH1 0xE0 SHL 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 0x1791 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1772 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 0x17F3 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 0x17F8 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1826 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1826 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1823 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x817 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x14D5 PUSH1 0xF2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1892 PUSH32 0x0 PUSH2 0x188D DUP7 DUP7 DUP7 PUSH2 0x1B95 JUMP JUMPDEST PUSH2 0x1D73 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 LT PUSH2 0x18AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP3 PUSH1 0x1F ADD LT ISZERO PUSH2 0x18FB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x736C6963655F6F766572666C6F77 PUSH1 0x90 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 DUP5 ADD LT ISZERO PUSH2 0x1943 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x736C6963655F6F766572666C6F77 PUSH1 0x90 SHL 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 0x199B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x19BA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x0 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1A04 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 0x19F3 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x19DB JUMP JUMPDEST POP POP DUP6 DUP5 MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT 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 0x1A67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x1AC0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x1B33 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x1B8C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x1B9D PUSH2 0x1E6F JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x1BBB JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1BF7 DUP4 DUP4 PUSH2 0x1D73 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x136D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH4 0x23B872DD PUSH1 0xE0 SHL 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 0x1CA7 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1C88 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 0x1D09 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 0x1D0E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1D3C JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1D3C JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x815 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x29AA23 PUSH1 0xE9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x1D9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x41A723F9E6457830B1B7A44DF4435FAB88581D073226894B33131815DD674C22 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 0x137A DUP2 PUSH2 0x268B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1EAA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1EBD PUSH2 0x1EB8 DUP3 PUSH2 0x263D JUMP JUMPDEST PUSH2 0x2619 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1ED1 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 0x3FE JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F0E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1F19 DUP2 PUSH2 0x268B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1F34 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1F3F DUP2 PUSH2 0x268B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1F56 DUP2 PUSH2 0x268B 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 0x1F78 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x1F83 DUP2 PUSH2 0x268B JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x1F9A DUP2 PUSH2 0x268B JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x1FB1 DUP2 PUSH2 0x268B 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 0x1FD7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x1FE2 DUP2 PUSH2 0x268B 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 0x2005 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 0x2031 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2048 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x205B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2069 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x207C 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 0x20A0 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 0x20C6 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 0x20EB JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x20FE JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x210C JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x211D 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 0x213D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2153 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x2163 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x2171 PUSH2 0x1EB8 DUP3 PUSH2 0x263D JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x2185 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x13EC DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x265F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21A7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x21BE JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0xA0 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x21D1 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x21E6 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x21F7 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2203 DUP8 DUP3 DUP7 ADD PUSH2 0x1E9A JUMP JUMPDEST DUP3 MSTORE POP PUSH2 0x2212 PUSH1 0x20 DUP5 ADD PUSH2 0x1E8F 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 0x2253 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1F19 DUP4 DUP4 PUSH2 0x1EEB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x226E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2284 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0xA0 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x1F19 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22A6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x22BD JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x40 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x22D0 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x22E5 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x22F6 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2302 DUP8 DUP3 DUP7 ADD PUSH2 0x1E9A JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP3 POP PUSH2 0x2315 DUP4 PUSH2 0x268B 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 0x2336 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1F19 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x235A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x236C DUP2 PUSH2 0x268B 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 0x238C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x239E DUP2 PUSH2 0x268B JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x23B5 DUP2 PUSH2 0x268B JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x23D8 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x265F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SWAP4 DUP5 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x249D PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x23C0 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 0x24FB JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x24E9 DUP6 DUP4 MLOAD PUSH2 0x23C0 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x24CD JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1F19 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x23C0 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 0x25A5 PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0x23C0 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x25E3 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x25FD JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2612 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 0x2635 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2651 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x267A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2662 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xE49 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1105 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEC DUP5 PUSH25 0x9D9C1A39359D7C1FAF092D42099441EFA4511916E1F9A1C8DA 0xEB 0xC9 0xB3 REVERT PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"749:8596:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;461:10:65;-1:-1:-1;;;;;475:5:65;461:19;;453:41;;;;;-1:-1:-1;;;453:41:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;749:8596:60;;;;;1457:78:65;;;:::i;4355:584:60:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1380:298:69;;;;;;:::i;:::-;;:::i;550:405:65:-;;;;;;:::i;:::-;;:::i;431:39:64:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;568:715:66:-;;;;;;:::i;:::-;;:::i;1719:358:69:-;;;;;;:::i;:::-;;:::i;318:669:63:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4980:1332:60:-;;;;;;:::i;:::-;;:::i;1016:323:69:-;;;;;;:::i;:::-;;:::i;337:41:64:-;;;;;;;;;;;;;:::i;1980:1318:60:-;;;;;;;;;;-1:-1:-1;1980:1318:60;;;;;:::i;:::-;;:::i;7776:750::-;;;;;;:::i;:::-;;:::i;1003:406:65:-;;;;;;:::i;:::-;;:::i;1338:695:66:-;;;;;;:::i;:::-;;:::i;8567:775:60:-;;;;;;:::i;:::-;;:::i;693:282:69:-;;;;;;:::i;:::-;;:::i;1457:78:65:-;1515:12;:10;:12::i;:::-;1457:78::o;4355:584:60:-;4532:17;4497:6;:15;;;170:24:67;185:8;170:14;:24::i;:::-;4579:250:60::1;4612:15;::::0;::::1;;4642:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;4673:24;::::0;;;::::1;::::0;::::1;;:::i;:::-;4712:106;::::0;;;;::::1;::::0;;;;4753:14:::1;;::::0;::::1;:6:::0;:14:::1;:::i;:::-;4769:10;::::0;;;::::1;::::0;::::1;;:::i;:::-;4781:15;::::0;;;::::1;::::0;::::1;;:::i;:::-;4736:61;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4712:106;;;;4806:10;-1:-1:-1::0;;;;;4712:106:60::1;;;::::0;4579:18:::1;:250::i;:::-;4567:262;;4861:6;:23;;;4848:9;:36;;4840:68;;;;-1:-1:-1::0;;;4840:68:60::1;;;;;;;:::i;:::-;;;;;;;;;4919:12;:10;:12::i;:::-;4355:584:::0;;;;:::o;1380:298:69:-;1580:90;;;-1:-1:-1;;;1580:90:69;;1614:10;1580:90;;;;1634:4;1580:90;;;;;;;;;;;;;;;;1656:4;1580:90;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1580:33:69;;;;;:90;;;;;-1:-1:-1;;1580:90:69;;;;;;;-1:-1:-1;1580:33:69;:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1380:298;;;;;;:::o;550:405:65:-;648:20;678:5;-1:-1:-1;;;;;671:23:65;;703:4;671:38;;;;;;;;;;;;;-1:-1:-1;;;;;671:38:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;671:38:65;;-1:-1:-1;728:29:65;;;;720:60;;;;;-1:-1:-1;;;720:60:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;797:16;;793:155;;837:5;-1:-1:-1;;;;;830:22:65;;853:12;830:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;881:55;912:9;923:12;881:30;:55::i;:::-;550:405;;;:::o;431:39:64:-;;;:::o;568:715:66:-;773:1;763:7;:11;:29;;;;;789:3;778:7;:14;;763:29;755:38;;;;;;806:20;836:5;-1:-1:-1;;;;;829:23:66;;861:4;829:38;;;;;;;;;;;;;-1:-1:-1;;;;;829:38:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;829:38:66;;-1:-1:-1;886:29:66;;;;878:60;;;;;-1:-1:-1;;;878:60:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;955:16;;951:325;;995:5;-1:-1:-1;;;;;988:22:66;;1011:12;988:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1039:17;1087:6;1059:25;1076:7;1059:12;:16;;:25;;;;:::i;:::-;:34;;;;;;;-1:-1:-1;1112:13:66;;1108:74;;1127:55;1158:12;1172:9;1127:30;:55::i;:::-;1197:67;1228:9;1254;1239:12;:24;1197:30;:67::i;:::-;951:325;;568:715;;;;;:::o;1719:358:69:-;1936:50;;;-1:-1:-1;;;1936:50:69;;1960:10;1936:50;;;;1980:4;1936:50;;;;;;-1:-1:-1;;1989:17:69;-1:-1:-1;;;;;1936:23:69;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1936:50:69;:70;1932:137;;;2021:48;2039:5;2046;2053:6;2061:1;2064;2067;2021:17;:48::i;318:669:63:-;393:22;450:4;438:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;428:34;;478:9;473:507;493:15;;;473:507;;;531:12;;576:4;595;;600:1;595:7;;;;;;;;;;;;;;;;;;:::i;:::-;568:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;530:73;;;;625:7;620:313;;754:2;738:6;:13;:18;734:32;;;758:8;;;734:32;839:4;831:6;827:17;817:27;;899:6;888:28;;;;;;;;;;;;:::i;:::-;881:36;;-1:-1:-1;;;881:36:63;;;;;;;;:::i;620:313::-;962:6;949:7;957:1;949:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;510:3:63;;473:507;;;;318:669;;;;:::o;4980:1332:60:-;5143:17;5108:6;:15;;;170:24:67;185:8;170:14;:24::i;:::-;5194:10:60::1;5254:947;5282:21;5306:30;:6;:11;;;:28;:30::i;:::-;5282:54;;5451:402;5488:6;:15;;;5522:16;:51;;5557:6;:16;;;5522:51;;;5549:4;5522:51;5643:1;5663:175;;;;;;;;5709:26;:6;:11;;;:24;:26::i;:::-;5663:175;;;;5813:5;-1:-1:-1::0;;;;;5663:175:60::1;;;::::0;5451:18:::1;:402::i;:::-;5433:15;::::0;::::1;:420:::0;5926:264;::::1;;;6059:11:::0;;5983:4:::1;::::0;-1:-1:-1;6059:23:60::1;::::0;:21:::1;:23::i;:::-;6045:37:::0;;5926:264:::1;;;6135:6;:15;;;6123:27;;6169:5;;;5926:264;5254:947;;;;6234:6;:23;;;6221:9;:36;;6213:68;;;;-1:-1:-1::0;;;6213:68:60::1;;;;;;;:::i;:::-;6292:12;:10;:12::i;:::-;205:1:67;4980:1332:60::0;;;;:::o;1016:323:69:-;1228:50;;;-1:-1:-1;;;1228:50:69;;1252:10;1228:50;;;;1272:4;1228:50;;;;;;1281:5;;-1:-1:-1;;;;;1228:23:69;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1228:50:69;:58;1224:107;;;1288:43;1299:5;1306;1313:8;1323:1;1326;1329;1288:10;:43::i;337:41:64:-;;;:::o;1980:1318:60:-;2158:1;2143:12;:16;:36;;;;2178:1;2163:12;:16;2143:36;2135:45;;;;;;2254:28;2285:37;;;;2296:5;2285:37;:::i;:::-;2254:68;;2334:15;2351:16;2369:10;2383:27;:4;:9;;;:25;:27::i;:::-;2333:77;;;;;;2421:66;2455:7;2464;2473:8;2483:3;2421:33;:66::i;:::-;;2501:17;2520:19;2571:1;2556:12;:16;:142;;2667:7;-1:-1:-1;;;;;2656:18:60;:8;-1:-1:-1;;;;;2656:18:60;;2684:12;2556:142;;;2603:8;-1:-1:-1;;;;;2593:18:60;:7;-1:-1:-1;;;;;2593:18:60;;2621:12;2556:142;2500:198;;;;2713:12;2709:582;;;2742:49;2746:7;2755:4;:10;;;2767;2779:11;2742:3;:49::i;:::-;2709:582;;;2881:9;;:28;;:26;:28::i;:::-;2877:403;;;2942:9;;:21;;:19;:21::i;:::-;2930:33;;2982:53;3002:11;3015:10;2930:9;:4;2982:19;:53::i;:::-;;2877:403;;;3093:11;3076:14;:28;;;;3133:8;3123:18;;3215:49;3219:7;3228:4;:10;;;3240;3252:11;3215:3;:49::i;7776:750::-;7955:16;7920:6;:15;;;170:24:67;185:8;170:14;:24::i;:::-;8057:252:60::1;8091:16;::::0;::::1;;8122;::::0;;;::::1;::::0;::::1;;:::i;:::-;8153:24;::::0;;;::::1;::::0;::::1;;:::i;:::-;8192:106;;;;;;;;8233:6;:15;;;;;;;;;;:::i;:::-;8250:10;::::0;;;::::1;::::0;::::1;;:::i;:::-;8262:14;;::::0;::::1;:6:::0;:14:::1;:::i;:::-;8216:61;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8192:106;;;;8286:10;-1:-1:-1::0;;;;;8192:106:60::1;;;::::0;8057:19:::1;:252::i;:::-;8046:263;;8342:6;:22;;;8330:8;:34;;8322:65;;;;-1:-1:-1::0;;;8322:65:60::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;8477:14:60::1;:41:::0;7776:750;;-1:-1:-1;7776:750:60:o;1003:406:65:-;1149:20;1179:5;-1:-1:-1;;;;;1172:23:65;;1204:4;1172:38;;;;;;;;;;;;;-1:-1:-1;;;;;1172:38:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1172:38:65;;-1:-1:-1;1229:29:65;;;;1221:60;;;;;-1:-1:-1;;;1221:60:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;1298:16;;1294:108;;1331:59;1359:5;1366:9;1377:12;1331:27;:59::i;:::-;1003:406;;;;:::o;1338:695:66:-;1566:1;1556:7;:11;:29;;;;;1582:3;1571:7;:14;;1556:29;1548:38;;;;;;1599:20;1629:5;-1:-1:-1;;;;;1622:23:66;;1654:4;1622:38;;;;;;;;;;;;;-1:-1:-1;;;;;1622:38:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1622:38:66;;-1:-1:-1;1679:29:66;;;;1671:60;;;;;-1:-1:-1;;;1671:60:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;1748:16;;1744:282;;1781:17;1829:6;1801:25;:12;1818:7;1801:16;:25::i;:::-;:34;;;;;;;-1:-1:-1;1854:13:66;;1850:78;;1869:59;1897:5;1904:12;1918:9;1869:27;:59::i;:::-;1943:71;1971:5;1978:9;2004;1989:12;:24;1943:27;:71::i;:::-;1744:282;1338:695;;;;;;:::o;8567:775:60:-;8734:16;8699:6;:15;;;170:24:67;185:8;170:14;:24::i;:::-;8989:179:60::1;9023:16;::::0;::::1;;9054;::::0;;;::::1;::::0;::::1;;:::i;:::-;9101:56;::::0;;;;::::1;::::0;;;9085:1:::1;::::0;9101:56;9125:11:::1;:6:::0;;:11:::1;:::i;:::-;9101:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;9101:56:60;;;-1:-1:-1;9145:10:60::1;9101:56;::::0;;::::1;::::0;8989:19:::1;:179::i;:::-;;9192:14;;9181:25;;9237:6;:22;;;9225:8;:34;;9217:65;;;;-1:-1:-1::0;;;9217:65:60::1;;;;;;;:::i;693:282:69:-:0;888:79;;;-1:-1:-1;;;888:79:69;;915:10;888:79;;;;935:4;888:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;888:26:69;;;;;:79;;;;;-1:-1:-1;;888:79:69;;;;;;;-1:-1:-1;888:26:69;:79;;;;;;;;;;1543:146:65;1589:21;:25;1585:96;;1616:65;1647:10;1659:21;1616:30;:65::i;222:133:67:-;315:8;296:15;:27;;288:59;;;;;-1:-1:-1;;;288:59:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;222:133;:::o;3355:959:60:-;3537:17;-1:-1:-1;;;;;3635:23:60;;3631:54;;3680:4;3660:25;;3631:54;3699:15;3716:16;3734:10;3748:27;:4;:9;;;:25;:27::i;:::-;3698:77;;-1:-1:-1;3698:77:60;-1:-1:-1;3698:77:60;-1:-1:-1;;;;;;3806:18:60;;;;;;;3788:15;;3885:31;3698:77;;;3885:7;:31::i;:::-;-1:-1:-1;;;;;3885:36:60;;3940:9;3968:10;3997:19;:8;:17;:19::i;:::-;-1:-1:-1;;;;;4035:22:60;;;:159;;4177:17;4035:159;;;4082:10;:70;;4125:27;4082:70;;;4095:27;4082:70;4224:4;4213:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;3885:359;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3837:407;;;;4274:10;:30;;4297:7;4274:30;;;4287:7;4274:30;4272:33;;;3355:959;-1:-1:-1;;;;;;;;;;;3355:959:60:o;2433:168:103:-;2546:12;;;2506;2546;;;;;;;;;-1:-1:-1;;;;;2524:7:103;;;2539:5;;2524:35;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2524:35:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2505:54;;;2578:7;2570:23;;;;;-1:-1:-1;;;2570:23:103;;;;;;;;;;;;-1:-1:-1;;;2570:23:103;;;;;;;;;;;;;;1012:127:20;1070:9;1100:6;;;:30;;-1:-1:-1;;1115:5:20;;;1129:1;1124;1115:5;1124:1;1110:15;;;;;:20;1100:30;1092:39;;;;;;1012:127;;;;:::o;1016:140:96:-;1108:11;;796:24;-1:-1:-1;1108:40:96;1016:140;;;;:::o;2377:129::-;2441:12;2473:25;:4;2484:1;635:23;2473:10;:25::i;2700:151::-;2817:11;;2761:12;;2793:50;;2817:4;;522:20;;-1:-1:-1;;2817:25:96;2793:10;:50::i;1820:326::-;1928:14;;;2033:17;:4;1928:14;2033;:17::i;:::-;2024:26;-1:-1:-1;2067:24:96;:4;314:2;2067:13;:24::i;:::-;2061:30;-1:-1:-1;2111:27:96;:4;522:20;2111:14;:27::i;:::-;2102:36;;1820:326;;;;;:::o;677:263:90:-;828:16;864:68;879:7;888:43;911:6;919;927:3;888:22;:43::i;:::-;864:14;:68::i;:::-;857:75;677:263;-1:-1:-1;;;;;677:263:90:o;1886:716:65:-;2039:5;-1:-1:-1;;;;;2030:14:65;:5;-1:-1:-1;;;;;2030:14:65;;:48;;;;;2073:5;2048:21;:30;;2030:48;2026:569;;;2133:5;-1:-1:-1;;;;;2126:21:65;;2155:5;2126:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2220:5;-1:-1:-1;;;;;2213:22:65;;2236:9;2247:5;2213:40;;;;;;;;;;;;;-1:-1:-1;;;;;2213:40:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2026:569:65;;-1:-1:-1;2026:569:65;;-1:-1:-1;;;;;2275:22:65;;2292:4;2275:22;2271:324;;;2406:52;2434:5;2441:9;2452:5;2406:27;:52::i;:::-;2271:324;;;2520:63;2552:5;2559;2566:9;2577:5;2520:31;:63::i;6370:1365:60:-;6554:16;-1:-1:-1;;;;;6651:23:60;;6647:54;;6696:4;6676:25;;6647:54;6715:16;6733:15;6750:10;6764:27;:4;:9;;;:25;:27::i;:::-;6714:77;;-1:-1:-1;6714:77:60;-1:-1:-1;6714:77:60;-1:-1:-1;;;;;;6822:18:60;;;;;;;6804:15;;6911:31;6714:77;;;6911:7;:31::i;:::-;-1:-1:-1;;;;;6911:36:60;;6966:9;6994:10;7024:20;:9;:18;:20::i;:::-;7023:21;;-1:-1:-1;;;;;7063:22:60;;;:159;;7205:17;7063:159;;;7110:10;:70;;7153:27;7110:70;;;7123:27;7110:70;7252:4;7241:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;6911:361;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6853:419;;;;7285:25;7353:10;:136;;7451:12;7475;7474:13;;7353:136;;;7388:12;7412;7411:13;;7353:136;7321:168;;-1:-1:-1;7321:168:60;-1:-1:-1;;;;;;7664:22:60;;7660:67;;7717:9;7696:17;:30;7688:39;;;;;;6370:1365;;;;;;;;;;;;;:::o;1247:316:103:-;1412:59;;;-1:-1:-1;;;;;1412:59:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1412:59:103;;;1401:71;;;;1366:12;;;;1401:10;;;;1412:59;1401:71;;;1412:59;1401:71;;1412:59;1401:71;;;;;;;;;;-1:-1:-1;;1401:71:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1365:107;;;;1491:7;:57;;;;-1:-1:-1;1503:11:103;;:16;;:44;;;1534:4;1523:24;;;;;;;;;;;;;;;-1:-1:-1;1523:24:103;1503:44;1483:72;;;;;-1:-1:-1;;;1483:72:103;;;;;;;;;;;;-1:-1:-1;;;1483:72:103;;;;;;;;;;;;;;1597:249:60;1714:11;1757:80;1784:7;1793:43;1816:6;1824;1832:3;1793:22;:43::i;:::-;1757:26;:80::i;:::-;1738:100;1597:249;-1:-1:-1;;;;1597:249:60:o;947:124:23:-;999:8;-1:-1:-1;;;1028:1:23;:10;1020:19;;;;;;-1:-1:-1;1061:1:23;947:124::o;410:3071:89:-;536:12;585:7;569;579:2;569:12;:23;;561:50;;;;;-1:-1:-1;;;561:50:89;;;;;;;;;;;;-1:-1:-1;;;561:50:89;;;;;;;;;;;;;;;650:6;639:7;630:6;:16;:26;;622:53;;;;;-1:-1:-1;;;622:53:89;;;;;;;;;;;;-1:-1:-1;;;622:53:89;;;;;;;;;;;;;;;720:7;711:6;:16;694:6;:13;:33;;686:63;;;;;-1:-1:-1;;;686:63:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;762:22;828:15;;861:2137;;;;3154:4;3148:11;3135:24;;3355:1;3344:9;3337:20;3409:4;3398:9;3394:20;3388:4;3381:34;821:2613;;861:2137;1058:4;1052:11;1039:24;;1763:2;1754:7;1750:16;2171:9;2164:17;2158:4;2154:28;2142:9;2131;2127:25;2123:60;2224:7;2220:2;2216:16;2497:6;2483:9;2476:17;2470:4;2466:28;2454:9;2446:6;2442:22;2438:57;2434:70;2256:470;2535:3;2531:2;2528:11;2256:470;;;2693:9;;2682:21;;2581:4;2573:13;;;;2618;2256:470;;;-1:-1:-1;;2750:26:89;;;2974:2;2957:11;-1:-1:-1;;2953:25:89;2947:4;2940:39;-1:-1:-1;821:2613:89;-1:-1:-1;3464:9:89;410:3071;-1:-1:-1;;;;410:3071:89:o;3489:426::-;3568:7;3611:6;3596;3605:2;3596:11;:21;;3588:52;;;;;-1:-1:-1;;;3588:52:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;3676:6;3685:2;3676:11;3659:6;:13;:28;;3651:62;;;;;-1:-1:-1;;;3651:62:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3805:30:89;3821:4;3805:30;3799:37;3838:27;3795:71;;;3489:426::o;3923:375::-;4001:6;4042;4028;4037:1;4028:10;:20;;4020:50;;;;;-1:-1:-1;;;4020:50:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;4106:6;4115:1;4106:10;4089:6;:13;:27;;4081:60;;;;;-1:-1:-1;;;4081:60:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4222:29:89;4238:3;4222:29;4216:36;;3923:375::o;1215:281:97:-;1336:14;;:::i;:::-;1376:6;-1:-1:-1;;;;;1367:15:97;:6;-1:-1:-1;;;;;1367:15:97;;1363:56;;;1404:6;;1412;1363:56;-1:-1:-1;1437:51:97;;;;;;;;-1:-1:-1;;;;;1437:51:97;;;;;;;;;;;;;;;;;;;;;;;1215:281::o;1193:280:90:-;1320:16;1373:44;1400:7;1409;1373:26;:44::i;:::-;1354:64;-1:-1:-1;1437:10:90;-1:-1:-1;;;;;1437:27:90;;;1429:36;;;;;581:367:103;786:69;;;-1:-1:-1;;;;;786:69:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;786:69:103;;;775:81;;;;727:12;;;;775:10;;;;786:69;775:81;;;786:69;775:81;;786:69;775:81;;;;;;;;;;-1:-1:-1;;775:81:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;726:130;;;;875:7;:57;;;;-1:-1:-1;887:11:103;;:16;;:44;;;918:4;907:24;;;;;;;;;;;;;;;-1:-1:-1;907:24:103;887:44;867:73;;;;;-1:-1:-1;;;867:73:103;;;;;;;;;;;;-1:-1:-1;;;867:73:103;;;;;;;;;;;;;;1749:526:97;1833:12;1879:3;:10;;;-1:-1:-1;;;;;1866:23:97;:3;:10;;;-1:-1:-1;;;;;1866:23:97;;1858:32;;;;;;-1:-1:-1;2120:10:97;;2132;;;;;2144:7;;;;;2109:43;;-1:-1:-1;;;;;2109:43:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:54;;;;;;1988:234;;;;;;;;-1:-1:-1;;1988:234:97;;;;;;;;;;;;658:66;1988:234;;;;;;;;;;;;;;;;;;;;;;;;;1956:285;;;;;;1749:526::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:138:178:-;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:178: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:178: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:178;1417:18;;1404:32;;-1:-1:-1;1488:2:178;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:178;1927:18;;1914:32;;-1:-1:-1;1998:2:178;1983:18;;1970:32;2011:35;1970:32;2011:35;:::i;:::-;2065:7;-1:-1:-1;2119:2:178;2104:18;;2091:32;;-1:-1:-1;2175:3:178;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:178;2630:18;;2617:32;;-1:-1:-1;2696:2:178;2681:18;;2668:32;;-1:-1:-1;2752:2:178;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:178;;2907:3;2892:19;;2879:33;;2959:3;2944:19;;;2931:33;;-1:-1:-1;2414:556:178;-1:-1:-1;;2414:556:178: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:178;;-1:-1:-1;;;;3091:561:178: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:178;;3900:2;3885:18;;;3879:25;3844:16;;3879:25;;-1:-1:-1;3753:157:178: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:178;4648:11;;-1:-1:-1;;;4036:654:178: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:178;;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:929;;7581:2;7569:9;7560:7;7556:23;7552:32;7549:2;;;7602:6;7594;7587:22;7549:2;7647:9;7634:23;7676:18;7717:2;7709:6;7706:14;7703:2;;;7738:6;7730;7723:22;7703:2;7766:22;;;;7822:4;7804:16;;;7800:27;7797:2;;;7845:6;7837;7830:22;7797:2;7883:4;7877:11;7927:4;7919:6;7915:17;7982:6;7970:10;7967:22;7962:2;7950:10;7947:18;7944:46;7941:2;;;7993:9;7941:2;8020:4;8013:24;8062:16;;8090;;;8087:2;;;8124:6;8116;8109:22;8087:2;8157:46;8195:7;8184:8;8180:2;8176:17;8157:46;:::i;:::-;8149:6;8142:62;;8247:2;8243;8239:11;8226:25;8213:38;;8260:33;8287:5;8260:33;:::i;:::-;8321:2;8309:15;;8302:30;;;;-1:-1:-1;8313:6:178;7539:824;-1:-1:-1;;;7539:824:178:o;8632:294::-;;8743:2;8731:9;8722:7;8718:23;8714:32;8711:2;;;8764:6;8756;8749:22;8711:2;8808:9;8795:23;8858:8;8851:5;8847:20;8840:5;8837:31;8827:2;;8887:6;8879;8872:22;8931:327;;;9060:2;9048:9;9039:7;9035:23;9031:32;9028:2;;;9081:6;9073;9066:22;9028:2;9122:9;9109:23;9099:33;;9182:2;9171:9;9167:18;9154:32;9195:33;9222:5;9195:33;:::i;:::-;9247:5;9237:15;;;9018:240;;;;;:::o;9263:539::-;;;;;9426:3;9414:9;9405:7;9401:23;9397:33;9394:2;;;9448:6;9440;9433:22;9394:2;9489:9;9476:23;9466:33;;9549:2;9538:9;9534:18;9521:32;9562:33;9589:5;9562:33;:::i;:::-;9614:5;-1:-1:-1;9666:2:178;9651:18;;9638:32;;-1:-1:-1;9722:2:178;9707:18;;9694:32;9735:35;9694:32;9735:35;:::i;:::-;9384:418;;;;-1:-1:-1;9384:418:178;;-1:-1:-1;;9384:418:178:o;9807:259::-;;9888:5;9882:12;9915:6;9910:3;9903:19;9931:63;9987:6;9980:4;9975:3;9971:14;9964:4;9957:5;9953:16;9931:63;:::i;:::-;10048:2;10027:15;-1:-1:-1;;10023:29:178;10014:39;;;;10055:4;10010:50;;9858:208;-1:-1:-1;;9858:208:178:o;10071:431::-;10324:2;10320:15;;;-1:-1:-1;;10316:24:178;;;10304:37;;10397:3;10375:16;;;;10393:18;10371:41;10366:2;10357:12;;10350:63;10447:15;;10443:24;10438:2;10429:12;;10422:46;10493:2;10484:12;;10244:258::o;10507:273::-;;10690:6;10682;10677:3;10664:33;10716:16;;10741:15;;;10716:16;10654:126;-1:-1:-1;10654:126:178:o;10785:226::-;-1:-1:-1;;;;;10949:55:178;;;;10931:74;;10919:2;10904:18;;10886:125::o;11016:593::-;;-1:-1:-1;;;;;11340:2:178;11332:6;11328:15;11317:9;11310:34;11394:6;11387:14;11380:22;11375:2;11364:9;11360:18;11353:50;11439:6;11434:2;11423:9;11419:18;11412:34;11494:2;11486:6;11482:15;11477:2;11466:9;11462:18;11455:43;;11535:3;11529;11518:9;11514:19;11507:32;11556:47;11598:3;11587:9;11583:19;11575:6;11556:47;:::i;:::-;11548:55;11239:370;-1:-1:-1;;;;;;;11239:370:178:o;11614:806::-;;11803:2;11843;11832:9;11828:18;11873:2;11862:9;11855:21;11896:6;11931;11925:13;11962:6;11954;11947:22;12000:2;11989:9;11985:18;11978:25;;12063:2;12057;12049:6;12045:15;12034:9;12030:31;12026:40;12012:54;;12101:2;12093:6;12089:15;12122:4;12135:256;12149:6;12146:1;12143:13;12135:256;;;12242:2;12238:7;12226:9;12218:6;12214:22;12210:36;12205:3;12198:49;12270:41;12304:6;12295;12289:13;12270:41;:::i;:::-;12260:51;-1:-1:-1;12369:12:178;;;;12334:15;;;;12171:1;12164:9;12135:256;;;-1:-1:-1;12408:6:178;;11783:637;-1:-1:-1;;;;;;;11783:637:178:o;12425:221::-;;12574:2;12563:9;12556:21;12594:46;12636:2;12625:9;12621:18;12613:6;12594:46;:::i;12651:342::-;12853:2;12835:21;;;12892:2;12872:18;;;12865:30;12931:20;12926:2;12911:18;;12904:48;12984:2;12969:18;;12825:168::o;12998:343::-;13200:2;13182:21;;;13239:2;13219:18;;;13212:30;13278:21;13273:2;13258:18;;13251:49;13332:2;13317:18;;13172:169::o;13346:499::-;;13545:2;13534:9;13527:21;13583:6;13577:13;13626:4;13621:2;13610:9;13606:18;13599:32;13654:52;13702:2;13691:9;13687:18;13673:12;13654:52;:::i;:::-;13640:66;;-1:-1:-1;;;;;13766:2:178;13758:6;13754:15;13748:22;13744:71;13737:4;13726:9;13722:20;13715:101;13833:6;13825:14;;;13517:328;;;;:::o;13850:177::-;13996:25;;;13984:2;13969:18;;13951:76::o;14032:533::-;;;14175:11;14162:25;14269:2;14265:7;14254:8;14238:14;14234:29;14230:43;14210:18;14206:68;14196:2;;14291:4;14285;14278:18;14196:2;14321:33;;14373:20;;;-1:-1:-1;14416:18:178;14405:30;;14402:2;;;14451:4;14445;14438:18;14402:2;14487:4;14475:17;;-1:-1:-1;14518:14:178;14514:27;;;14504:38;;14501:2;;;14555:1;14552;14545:12;14501:2;14126:439;;;;;:::o;14570:242::-;14640:2;14634:9;14670:17;;;14717:18;14702:34;;14738:22;;;14699:62;14696:2;;;14764:9;14696:2;14791;14784:22;14614:198;;-1:-1:-1;14614:198:178:o;14817:181::-;;14900:18;14892:6;14889:30;14886:2;;;14922:9;14886:2;-1:-1:-1;14981:2:178;14958:17;-1:-1:-1;;14954:31:178;14987:4;14950:42;;14876:122::o;15003:258::-;15075:1;15085:113;15099:6;15096:1;15093:13;15085:113;;;15175:11;;;15169:18;15156:11;;;15149:39;15121:2;15114:10;15085:113;;;15216:6;15213:1;15210:13;15207:2;;;-1:-1:-1;;15251:1:178;15233:16;;15226:27;15056:205::o;15266:156::-;-1:-1:-1;;;;;15347:5:178;15343:54;15336:5;15333:65;15323:2;;15412:1;15409;15402:12"},"methodIdentifiers":{"WETH9()":"4aa4a4fc","elixirSwapCallback(int256,int256,bytes)":"d804d7a7","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","refundETH()":"12210e8a","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","unwrapWETH9(uint256,address)":"49404b7c","unwrapWETH9WithFee(uint256,address,uint256,address)":"9b2c0a37"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_WETH9\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"WETH9\",\"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\":\"elixirSwapCallback\",\"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\":\"refundETH\",\"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\":\"unwrapWETH9\",\"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\":\"unwrapWETH9WithFee\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"elixirSwapCallback(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 ElixirPool deployed by the canonical ElixirFactory. 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 IElixirPoolActions#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\"}},\"refundETH()\":{\"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\"},\"unwrapWETH9(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of WETH9 to unwrap\",\"recipient\":\"The address receiving ETH\"}},\"unwrapWETH9WithFee(uint256,address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing WETH9 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\":\"Elixir Swap Router\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"elixirSwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IElixirPool#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\"},\"refundETH()\":{\"notice\":\"Refunds any ETH 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\"},\"unwrapWETH9(uint256,address)\":{\"notice\":\"Unwraps the contract's WETH9 balance and sends it to recipient as ETH.\"},\"unwrapWETH9WithFee(uint256,address,uint256,address)\":{\"notice\":\"Unwraps the contract's WETH9 balance and sends it to recipient as ETH, with a percentage between 0 (exclusive), and 1 (inclusive) going to feeRecipient\"}},\"notice\":\"Router for stateless execution of swaps against Elixir\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/SwapRouter.sol\":\"SwapRouter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol\":{\"keccak256\":\"0xc9fbc830c4c6b20c2e87b16569730bce747f3c9cde95efee554f1c6f07cc60b0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b94f129f0ad86cbc99ff550c65bc0ab2b9e754b7f3c2734f09f51ffb908864d\",\"dweb:/ipfs/QmUuJ7zyX1vWC7SfpsDhBqXGCKMS24pvSzirPVMU3sSkK8\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]},\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-periphery/SwapRouter.sol\":{\"keccak256\":\"0x0ac62db88c756033de196bb9956607fad480ef0b295b777e84b1fd6d41806024\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://838d092793303bd1a8fefc3916e337907280e3686b4f99f53ef222ecbe388f4f\",\"dweb:/ipfs/QmRxdq3UsUfg72vmhHsc1gVDuVkNGnmJZCktGrh5CUiG3A\"]},\"contracts/elixir-periphery/base/Multicall.sol\":{\"keccak256\":\"0x3acc1acf20b9f218e68706d90f71b28d63fbca91b8a6b5445613e12d5c98aac6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c4414bcad1d2971596866d1dc95790954fac1ca9e772d9864785496348083839\",\"dweb:/ipfs/QmXeTSwz3446DddKoZSaY1vZ4mNsMvdF4zAeX4ANoMxhjT\"]},\"contracts/elixir-periphery/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x1d0175136fda60c5e1b6aab6dfa4a35856717413d754d0750eb75866f3f5e43f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8e19496cd2a7239e9e869bafbfb9f762691a9ab52f169b579f11d752d7df79a5\",\"dweb:/ipfs/QmTaLVPUVMGp4ZywHwpFupnz2873NPyqYs3EzbJTHpVNSA\"]},\"contracts/elixir-periphery/base/PeripheryPayments.sol\":{\"keccak256\":\"0x2fbe56fb8efa036258fb1eb651b1aa426c03e6483ec271f2fa1291d7d6030724\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0f5c8e95ec1e7ed22f7bbc35e18905ced294231e3c34b010448b1a841d466ba9\",\"dweb:/ipfs/QmZHnDNLBcMY8CFoa8dvrkdCHTXNNMsX6RcT1y1vHNEWzc\"]},\"contracts/elixir-periphery/base/PeripheryPaymentsWithFee.sol\":{\"keccak256\":\"0xdba77a2ccc0d510df720c667b59b0d3c5ee4b6656c731afd7a34effd643a59e4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7a3f9d2bc6dee42d50626bfa4a3e33bf85c3085050ef989d870932af2caaaea8\",\"dweb:/ipfs/QmSQJHrGecUpihnDPYViMArbJgBRQ13DQALeXEUtVH7Lpt\"]},\"contracts/elixir-periphery/base/PeripheryValidation.sol\":{\"keccak256\":\"0x439687955aa8549b51cabaeba892a28730e3f7756317dbc48fa562cd945fee5a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bc8a557487299a2b451f3e19d5d60f025898b7e302307af2a4fe4e3db3865b7a\",\"dweb:/ipfs/Qmb4WLpfFqguv1Jou3TfLNzErcZuLDnaqCWxnbuWjPewqJ\"]},\"contracts/elixir-periphery/base/SelfPermit.sol\":{\"keccak256\":\"0x93b6b25fba6b55918c18fd5d55ddb8a85336dcbb4773c3d7ab6d486960c9a665\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://fd2a053076cdd2a7fbd4ba498c9a493cd173cba860ead6139eb9e5c3fe60f067\",\"dweb:/ipfs/QmQwpbEx5aMbJAXeKGeA43qNGcCAYMz8ng1vwG5z4SCqv1\"]},\"contracts/elixir-periphery/interfaces/IMulticall.sol\":{\"keccak256\":\"0x76aeef8a8cd237f1bd8fb67f21e1734ba5c294b522c1932ce336f72fe41e5355\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b577b8f8e1b2767f218d0a1d78f7cc4d7b24ccd01ed7422a7129f9ae465edff\",\"dweb:/ipfs/QmVUzqSeAXf9Urwc1tseh1sW3pNz6z36vEYYYAGTNAnDWf\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x8e0cdb6280728619c44a8220996512b81e85f6fa7bc5373db742ea953a81eda8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0748123e32874d0e1e405a463fafcf98f686fac0055da2e13bfdaa0db917766\",\"dweb:/ipfs/QmRZPF69X1e6T3yT2z8HTgzEtXHTVScqzoEMbfvp5Niggq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPaymentsWithFee.sol\":{\"keccak256\":\"0x55bddad9998fa9ac8feace5b1f2e43b31c63bb51e5fbcbf4382584e8725bb307\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5292794b4e3817769c19db8067db4766397d857090c65caf2b8cbf4ee3e9e04e\",\"dweb:/ipfs/QmZvwFxW24eravpmBVRoZ33giLyJURnv76rJ1Nj3QubpdS\"]},\"contracts/elixir-periphery/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0xb442ad31c8fef5c47ebb82b3b3f906d0a5dbca8eb26db90b287a4825bf53d595\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6e36e6e894083ad07e2ba62977a06db0874b8ed1f6eac705f4c9d89a410f54ea\",\"dweb:/ipfs/QmWLWTuKrcCzxZeedLpUG3c8jjFLs5gLmvt35Ysp2uc9c6\"]},\"contracts/elixir-periphery/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x3cb7ef4c1c9bd18d8f1cd9cd03b3dfdb369174bc5706759d4c2fd298d9ca41f8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f8260f4ab3203a1917c32651994ec7c4c3c15859c339b293323a2259be74d084\",\"dweb:/ipfs/QmQRaMPMTDZ67Ya9cccRzCcDtxrSdvYFdvLhYkmc9twd3P\"]},\"contracts/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x1495f5068f2b892668447889f379d87decb18c9369f4506df9d23edba9ccb4b7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6f322bead944abc1da0e75aba72c9e02b22f02c15712f49b212bb65869b406ca\",\"dweb:/ipfs/QmTZAqfg4EwuFAX61ZW4nA55sUbn3o2Qy3W55C3ghPUAWM\"]},\"contracts/elixir-periphery/interfaces/external/IWETH9.sol\":{\"keccak256\":\"0xa992da106a4a4ee9aca70fd30222480366e153411592c23defb169176f1aaf09\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://95eeaee1cae3d1fabaad9bd9f06d8310415e8d04951c44b019adcb47f428e833\",\"dweb:/ipfs/QmYnaMUiuMvikcuC92HWhWruuiMkvEx2eR7g7Y44PzHHKu\"]},\"contracts/elixir-periphery/libraries/BytesLib.sol\":{\"keccak256\":\"0xbf23f73b0ec504e799b3e8ea71063eaeec08d6e688c56951fc645afaf5c1e7fd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://863b16fdc6f8b9a22622fe4f9b991b4b7039db2beec8095134ed18ec4843683f\",\"dweb:/ipfs/QmatVX7apv6drzj8WvDjQs8sREGApz1U4pvhPnk6MCyPFT\"]},\"contracts/elixir-periphery/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xb2c39ec43afd1140b765a183017c52d02763f6ad1732cc8bd15b424cf60addf3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4991a734b128dee4821aaaca11279e2caa458128a436ee4b64ddd2483962223a\",\"dweb:/ipfs/QmbLtcN47cGXxbAua61GDp9PGz9bqru7UQPH2CJSgF1cjC\"]},\"contracts/elixir-periphery/libraries/Path.sol\":{\"keccak256\":\"0x13c1302a21dbc2bbac527052506140eb3ed342c3b83054e07d0040d22c3dd284\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed3ce8db752fabe37b23d6fd1205a35102f2f6e91ad14f42536538b6ea71ae08\",\"dweb:/ipfs/QmSpSmvuTcavQW3HixkdAcFhCyzLwSkHKNUa7RrEM47jet\"]},\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]},\"contracts/elixir-periphery/libraries/TransferHelper.sol\":{\"keccak256\":\"0xc7727a37285f7b260c7b6a1f42655da9b6a1765dcb7f57bcba31627d9c2ec978\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://22a8e896dbac834f895395fc5cac70e8f2bab8045b9e34fe479ed0e92dbd99a9\",\"dweb:/ipfs/QmZYbeZxEvD1nfoeozEkrWzLYTKuS5618fsEgoKTnDuM2L\"]},\"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]},\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}"}},"contracts/elixir-periphery/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/elixir-periphery/base/ERC721Permit.sol\":\"ERC721Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/base/ERC721Permit.sol\":{\"keccak256\":\"0xaf4d570ce580f104608e58a43b875f011de40bd7f4b96b14c420a6c8fb7e340c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://44cffafcac087f802d1cb9dc7e8489204e6ac6427ef2c68a543a1814d020a50a\",\"dweb:/ipfs/QmY4yqhsoinSAnRz116Mf6DEZuy74MsADmTkEDYehe1GUC\"]},\"contracts/elixir-periphery/base/PeripheryValidation.sol\":{\"keccak256\":\"0x439687955aa8549b51cabaeba892a28730e3f7756317dbc48fa562cd945fee5a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bc8a557487299a2b451f3e19d5d60f025898b7e302307af2a4fe4e3db3865b7a\",\"dweb:/ipfs/Qmb4WLpfFqguv1Jou3TfLNzErcZuLDnaqCWxnbuWjPewqJ\"]},\"contracts/elixir-periphery/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x1731f38308b9364d3d18a34a4da72afe434ad49f99939d81300dab93a940c458\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1cf9728098907ca0140ddf5398b7cebb2e6b8a0487bb1cf8338a4da603989be7\",\"dweb:/ipfs/QmPt5nvaLrdbXLxzJNhX4fM8s2akbdUPTmxZQaN2ierJPA\"]},\"contracts/elixir-periphery/interfaces/external/IERC1271.sol\":{\"keccak256\":\"0xd9b5ac195482b3cd25c2b1d2bf7f8be6f69b8352df17e23111556fc436590bb8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://dfd4975c3a69938f6fa6189fe5e4428260bd8aaa3e1f202c934edafe09d3d5d2\",\"dweb:/ipfs/QmaW1ZYYhnozmccckXLcg99ZoJCwoURdhaEPd26LmYvSZV\"]},\"contracts/elixir-periphery/libraries/ChainId.sol\":{\"keccak256\":\"0x6de0c960e4f3f024d7473c9e08ab84d3f2c7317117661eabd2ea0e9fdad3dfb2\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e591724e2d5b0ca7c95e5e54ecf520487556a4045e770c4da9ee5930f48fd215\",\"dweb:/ipfs/QmW1HCuhWaBckYz8Kx1XmaPRn1nSuCMZLdGmaR6UJdQsLH\"]},\"openzeppelin-contracts-solc-0.7/introspection/ERC165.sol\":{\"keccak256\":\"0x234cdf2c3efd5f0dc17d32fe65d33c21674ca17de1e945eb60ac1076d7152d96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd196df6ec4549923b4581fcb4be3d05237b5221067410d0bc34cb76d4174441\",\"dweb:/ipfs/Qmf2vFVgbfpD4FvAhQXkprg9sKSX3TXKRdbQTSjJVEmzWj\"]},\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x93e4f65a89c3c888afbaa3ee18c3fa4f51c422419bbcd9cca47676a0f8e507ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a9c54b2935c810e14b17d6b5d7adeb0e1733d172823f02c30e1be8729715841\",\"dweb:/ipfs/QmZGveXLQpqJQRjfeNws7mGSjxKpnfZCnKaXyH4soxDSkR\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x05604ffcf69e416b8a42728bb0e4fd75170d8fac70bf1a284afeb4752a9bc52f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8a7fd1043372336ecccdbcbcf4962c6df8958dc9c7c7f8361fc2b3dd23570cc\",\"dweb:/ipfs/QmYHKgZxnanBfu7Q8ZicVhDDuB7XRGxuwvmCjfQQ1E5j39\"]},\"openzeppelin-contracts-solc-0.7/utils/Address.sol\":{\"keccak256\":\"0xf89f005a3d98f7768cdee2583707db0ac725cf567d455751af32ee68132f3db3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f963d438177764b5f43f637c02311c951c0f0025d12fe1ac7e62e295bf416c41\",\"dweb:/ipfs/QmcfVb9JsWrYeTwFUJsKVHpKB7EaWBKydAH9S4sKg2pzcK\"]},\"openzeppelin-contracts-solc-0.7/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"openzeppelin-contracts-solc-0.7/utils/EnumerableMap.sol\":{\"keccak256\":\"0x2114555153edb5f273008b3d34205f511db9af06b88f752e4c280dd612c4c549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8779df50f4f716c6adaa5f61880c572abb2b37197d690d6aad32e52a32d5f382\",\"dweb:/ipfs/QmVuZMGNFEo4gm1QB55gnCwCTc7XC5npkmgdfeJUgHbMiL\"]},\"openzeppelin-contracts-solc-0.7/utils/EnumerableSet.sol\":{\"keccak256\":\"0x9a2c1eebb65250f0e11882237038600f22a62376f0547db4acc0dfe0a3d8d34f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccafc1afbcbf54559beea9c029d0b7656c56a185813c5fa74c4ea3eb4b608419\",\"dweb:/ipfs/QmTKwdbenDfNwmwRVh8VKtA6mhFK2AyTFRoJF3BqLB81KM\"]},\"openzeppelin-contracts-solc-0.7/utils/Strings.sol\":{\"keccak256\":\"0x08e38e034333372aea8cb1b8846085b7fbab42c6b77a0af464d2c6827827c4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22746e9348187309fb4fbd3f79f6ad88787103eac10f24bd18f67257fafdd8ad\",\"dweb:/ipfs/QmSLXfXg8b27Xstq58DFGvCpqgtTqpfrGbLMq19PtEKQJS\"]}},\"version\":1}"}},"contracts/elixir-periphery/base/LiquidityManagement.sol":{"LiquidityManagement":{"abi":[{"inputs":[],"name":"WETH9","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":"elixirMintCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refundETH","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":"unwrapWETH9","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"WETH9()":"4aa4a4fc","elixirMintCallback(uint256,uint256,bytes)":"1507a8f4","factory()":"c45a0155","refundETH()":"12210e8a","sweepToken(address,uint256,address)":"df2ab5bb","unwrapWETH9(uint256,address)":"49404b7c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WETH9\",\"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\":\"elixirMintCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"refundETH\",\"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\":\"unwrapWETH9\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"elixirMintCallback(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 ElixirPool deployed by the canonical ElixirFactory.\",\"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 IElixirPoolActions#mint call\"}},\"refundETH()\":{\"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`\"}},\"unwrapWETH9(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of WETH9 to unwrap\",\"recipient\":\"The address receiving ETH\"}}},\"title\":\"Liquidity management functions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"elixirMintCallback(uint256,uint256,bytes)\":{\"notice\":\"Called to `msg.sender` after minting liquidity to a position from IElixirPool#mint.\"},\"refundETH()\":{\"notice\":\"Refunds any ETH 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\"},\"unwrapWETH9(uint256,address)\":{\"notice\":\"Unwraps the contract's WETH9 balance and sends it to recipient as ETH.\"}},\"notice\":\"Internal functions for safely managing liquidity in Elixir\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/base/LiquidityManagement.sol\":\"LiquidityManagement\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirFactory.sol\":{\"keccak256\":\"0xeed23ad43ddda20bfb439f677f8f768460e46e6b2624381ea45c6dc59e56c1ea\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9bbded0c2ed0d252b28a26f18603b6c1dc6d49e761621e057d112de0cb00ead\",\"dweb:/ipfs/QmaWXq8nuhisTR5j2DfWfqYVbEJ1wWxZA6LyAdoHmiM83G\"]},\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/callback/IElixirMintCallback.sol\":{\"keccak256\":\"0xc15f6629fbba11617680a3df47f3a590dcc8360b731788b2783c827c0ba3667a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5ca98b55c62541f6685c762569b82b7c7a774398f406554520f874221153250f\",\"dweb:/ipfs/QmVCL8LwVC1LuarhTUVDYijd7W4cmaU5HjVJr5KgqLEdTe\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-periphery/base/LiquidityManagement.sol\":{\"keccak256\":\"0x25c325c22e4159295dcb237e07a343329d97b81cb1bebe8db09c5b75ca532604\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://838f93eacbaac6e37426a13c38a79046e5ec00d05f96e2d5da0910c3c6a583fe\",\"dweb:/ipfs/QmRBANsyLN8UUrqpe1ZbhmjXchuUDRmcYiBpb5nTFae2LJ\"]},\"contracts/elixir-periphery/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x1d0175136fda60c5e1b6aab6dfa4a35856717413d754d0750eb75866f3f5e43f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8e19496cd2a7239e9e869bafbfb9f762691a9ab52f169b579f11d752d7df79a5\",\"dweb:/ipfs/QmTaLVPUVMGp4ZywHwpFupnz2873NPyqYs3EzbJTHpVNSA\"]},\"contracts/elixir-periphery/base/PeripheryPayments.sol\":{\"keccak256\":\"0x2fbe56fb8efa036258fb1eb651b1aa426c03e6483ec271f2fa1291d7d6030724\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0f5c8e95ec1e7ed22f7bbc35e18905ced294231e3c34b010448b1a841d466ba9\",\"dweb:/ipfs/QmZHnDNLBcMY8CFoa8dvrkdCHTXNNMsX6RcT1y1vHNEWzc\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x8e0cdb6280728619c44a8220996512b81e85f6fa7bc5373db742ea953a81eda8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0748123e32874d0e1e405a463fafcf98f686fac0055da2e13bfdaa0db917766\",\"dweb:/ipfs/QmRZPF69X1e6T3yT2z8HTgzEtXHTVScqzoEMbfvp5Niggq\"]},\"contracts/elixir-periphery/interfaces/external/IWETH9.sol\":{\"keccak256\":\"0xa992da106a4a4ee9aca70fd30222480366e153411592c23defb169176f1aaf09\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://95eeaee1cae3d1fabaad9bd9f06d8310415e8d04951c44b019adcb47f428e833\",\"dweb:/ipfs/QmYnaMUiuMvikcuC92HWhWruuiMkvEx2eR7g7Y44PzHHKu\"]},\"contracts/elixir-periphery/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xb2c39ec43afd1140b765a183017c52d02763f6ad1732cc8bd15b424cf60addf3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4991a734b128dee4821aaaca11279e2caa458128a436ee4b64ddd2483962223a\",\"dweb:/ipfs/QmbLtcN47cGXxbAua61GDp9PGz9bqru7UQPH2CJSgF1cjC\"]},\"contracts/elixir-periphery/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x8ed6cb25c14c41756086367d76eba826250da3a8621ace0c8657fce32e68fad7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06d92752a75efdd197ef39740e3e266bda1fbd0361c40bb9c014a608ade17b31\",\"dweb:/ipfs/QmRPhnmoNz9s2ZvJDomKtKMrYJXPvD6J6LGDtTQ8KeTDMY\"]},\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]},\"contracts/elixir-periphery/libraries/TransferHelper.sol\":{\"keccak256\":\"0xc7727a37285f7b260c7b6a1f42655da9b6a1765dcb7f57bcba31627d9c2ec978\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://22a8e896dbac834f895395fc5cac70e8f2bab8045b9e34fe479ed0e92dbd99a9\",\"dweb:/ipfs/QmZYbeZxEvD1nfoeozEkrWzLYTKuS5618fsEgoKTnDuM2L\"]},\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}"}},"contracts/elixir-periphery/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/elixir-periphery/base/Multicall.sol\":\"Multicall\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/base/Multicall.sol\":{\"keccak256\":\"0x3acc1acf20b9f218e68706d90f71b28d63fbca91b8a6b5445613e12d5c98aac6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c4414bcad1d2971596866d1dc95790954fac1ca9e772d9864785496348083839\",\"dweb:/ipfs/QmXeTSwz3446DddKoZSaY1vZ4mNsMvdF4zAeX4ANoMxhjT\"]},\"contracts/elixir-periphery/interfaces/IMulticall.sol\":{\"keccak256\":\"0x76aeef8a8cd237f1bd8fb67f21e1734ba5c294b522c1932ce336f72fe41e5355\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b577b8f8e1b2767f218d0a1d78f7cc4d7b24ccd01ed7422a7129f9ae465edff\",\"dweb:/ipfs/QmVUzqSeAXf9Urwc1tseh1sW3pNz6z36vEYYYAGTNAnDWf\"]}},\"version\":1}"}},"contracts/elixir-periphery/base/PeripheryImmutableState.sol":{"PeripheryImmutableState":{"abi":[{"inputs":[],"name":"WETH9","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":{"WETH9()":"4aa4a4fc","factory()":"c45a0155"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WETH9\",\"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\":{\"WETH9\":{\"return\":\"Returns the address of WETH9\"},\"factory\":{\"return\":\"Returns the address of the Pangolin V2 factory\"}},\"title\":\"Immutable state\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Immutable state used by periphery contracts\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/base/PeripheryImmutableState.sol\":\"PeripheryImmutableState\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x1d0175136fda60c5e1b6aab6dfa4a35856717413d754d0750eb75866f3f5e43f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8e19496cd2a7239e9e869bafbfb9f762691a9ab52f169b579f11d752d7df79a5\",\"dweb:/ipfs/QmTaLVPUVMGp4ZywHwpFupnz2873NPyqYs3EzbJTHpVNSA\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]}},\"version\":1}"}},"contracts/elixir-periphery/base/PeripheryPayments.sol":{"PeripheryPayments":{"abi":[{"inputs":[],"name":"WETH9","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":"refundETH","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":"unwrapWETH9","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"WETH9()":"4aa4a4fc","factory()":"c45a0155","refundETH()":"12210e8a","sweepToken(address,uint256,address)":"df2ab5bb","unwrapWETH9(uint256,address)":"49404b7c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WETH9\",\"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\":\"refundETH\",\"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\":\"unwrapWETH9\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"refundETH()\":{\"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`\"}},\"unwrapWETH9(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of WETH9 to unwrap\",\"recipient\":\"The address receiving ETH\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"refundETH()\":{\"notice\":\"Refunds any ETH 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\"},\"unwrapWETH9(uint256,address)\":{\"notice\":\"Unwraps the contract's WETH9 balance and sends it to recipient as ETH.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/base/PeripheryPayments.sol\":\"PeripheryPayments\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x1d0175136fda60c5e1b6aab6dfa4a35856717413d754d0750eb75866f3f5e43f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8e19496cd2a7239e9e869bafbfb9f762691a9ab52f169b579f11d752d7df79a5\",\"dweb:/ipfs/QmTaLVPUVMGp4ZywHwpFupnz2873NPyqYs3EzbJTHpVNSA\"]},\"contracts/elixir-periphery/base/PeripheryPayments.sol\":{\"keccak256\":\"0x2fbe56fb8efa036258fb1eb651b1aa426c03e6483ec271f2fa1291d7d6030724\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0f5c8e95ec1e7ed22f7bbc35e18905ced294231e3c34b010448b1a841d466ba9\",\"dweb:/ipfs/QmZHnDNLBcMY8CFoa8dvrkdCHTXNNMsX6RcT1y1vHNEWzc\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x8e0cdb6280728619c44a8220996512b81e85f6fa7bc5373db742ea953a81eda8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0748123e32874d0e1e405a463fafcf98f686fac0055da2e13bfdaa0db917766\",\"dweb:/ipfs/QmRZPF69X1e6T3yT2z8HTgzEtXHTVScqzoEMbfvp5Niggq\"]},\"contracts/elixir-periphery/interfaces/external/IWETH9.sol\":{\"keccak256\":\"0xa992da106a4a4ee9aca70fd30222480366e153411592c23defb169176f1aaf09\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://95eeaee1cae3d1fabaad9bd9f06d8310415e8d04951c44b019adcb47f428e833\",\"dweb:/ipfs/QmYnaMUiuMvikcuC92HWhWruuiMkvEx2eR7g7Y44PzHHKu\"]},\"contracts/elixir-periphery/libraries/TransferHelper.sol\":{\"keccak256\":\"0xc7727a37285f7b260c7b6a1f42655da9b6a1765dcb7f57bcba31627d9c2ec978\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://22a8e896dbac834f895395fc5cac70e8f2bab8045b9e34fe479ed0e92dbd99a9\",\"dweb:/ipfs/QmZYbeZxEvD1nfoeozEkrWzLYTKuS5618fsEgoKTnDuM2L\"]},\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}"}},"contracts/elixir-periphery/base/PeripheryPaymentsWithFee.sol":{"PeripheryPaymentsWithFee":{"abi":[{"inputs":[],"name":"WETH9","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":"refundETH","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":"unwrapWETH9","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":"unwrapWETH9WithFee","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"WETH9()":"4aa4a4fc","factory()":"c45a0155","refundETH()":"12210e8a","sweepToken(address,uint256,address)":"df2ab5bb","sweepTokenWithFee(address,uint256,address,uint256,address)":"e0e189a0","unwrapWETH9(uint256,address)":"49404b7c","unwrapWETH9WithFee(uint256,address,uint256,address)":"9b2c0a37"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WETH9\",\"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\":\"refundETH\",\"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\":\"unwrapWETH9\",\"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\":\"unwrapWETH9WithFee\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"refundETH()\":{\"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\"},\"unwrapWETH9(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of WETH9 to unwrap\",\"recipient\":\"The address receiving ETH\"}},\"unwrapWETH9WithFee(uint256,address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"refundETH()\":{\"notice\":\"Refunds any ETH 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\"},\"unwrapWETH9(uint256,address)\":{\"notice\":\"Unwraps the contract's WETH9 balance and sends it to recipient as ETH.\"},\"unwrapWETH9WithFee(uint256,address,uint256,address)\":{\"notice\":\"Unwraps the contract's WETH9 balance and sends it to recipient as ETH, with a percentage between 0 (exclusive), and 1 (inclusive) going to feeRecipient\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/base/PeripheryPaymentsWithFee.sol\":\"PeripheryPaymentsWithFee\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]},\"contracts/elixir-periphery/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x1d0175136fda60c5e1b6aab6dfa4a35856717413d754d0750eb75866f3f5e43f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8e19496cd2a7239e9e869bafbfb9f762691a9ab52f169b579f11d752d7df79a5\",\"dweb:/ipfs/QmTaLVPUVMGp4ZywHwpFupnz2873NPyqYs3EzbJTHpVNSA\"]},\"contracts/elixir-periphery/base/PeripheryPayments.sol\":{\"keccak256\":\"0x2fbe56fb8efa036258fb1eb651b1aa426c03e6483ec271f2fa1291d7d6030724\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0f5c8e95ec1e7ed22f7bbc35e18905ced294231e3c34b010448b1a841d466ba9\",\"dweb:/ipfs/QmZHnDNLBcMY8CFoa8dvrkdCHTXNNMsX6RcT1y1vHNEWzc\"]},\"contracts/elixir-periphery/base/PeripheryPaymentsWithFee.sol\":{\"keccak256\":\"0xdba77a2ccc0d510df720c667b59b0d3c5ee4b6656c731afd7a34effd643a59e4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7a3f9d2bc6dee42d50626bfa4a3e33bf85c3085050ef989d870932af2caaaea8\",\"dweb:/ipfs/QmSQJHrGecUpihnDPYViMArbJgBRQ13DQALeXEUtVH7Lpt\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x8e0cdb6280728619c44a8220996512b81e85f6fa7bc5373db742ea953a81eda8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0748123e32874d0e1e405a463fafcf98f686fac0055da2e13bfdaa0db917766\",\"dweb:/ipfs/QmRZPF69X1e6T3yT2z8HTgzEtXHTVScqzoEMbfvp5Niggq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPaymentsWithFee.sol\":{\"keccak256\":\"0x55bddad9998fa9ac8feace5b1f2e43b31c63bb51e5fbcbf4382584e8725bb307\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5292794b4e3817769c19db8067db4766397d857090c65caf2b8cbf4ee3e9e04e\",\"dweb:/ipfs/QmZvwFxW24eravpmBVRoZ33giLyJURnv76rJ1Nj3QubpdS\"]},\"contracts/elixir-periphery/interfaces/external/IWETH9.sol\":{\"keccak256\":\"0xa992da106a4a4ee9aca70fd30222480366e153411592c23defb169176f1aaf09\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://95eeaee1cae3d1fabaad9bd9f06d8310415e8d04951c44b019adcb47f428e833\",\"dweb:/ipfs/QmYnaMUiuMvikcuC92HWhWruuiMkvEx2eR7g7Y44PzHHKu\"]},\"contracts/elixir-periphery/libraries/TransferHelper.sol\":{\"keccak256\":\"0xc7727a37285f7b260c7b6a1f42655da9b6a1765dcb7f57bcba31627d9c2ec978\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://22a8e896dbac834f895395fc5cac70e8f2bab8045b9e34fe479ed0e92dbd99a9\",\"dweb:/ipfs/QmZYbeZxEvD1nfoeozEkrWzLYTKuS5618fsEgoKTnDuM2L\"]},\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}"}},"contracts/elixir-periphery/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/elixir-periphery/base/PeripheryValidation.sol\":\"PeripheryValidation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/base/PeripheryValidation.sol\":{\"keccak256\":\"0x439687955aa8549b51cabaeba892a28730e3f7756317dbc48fa562cd945fee5a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bc8a557487299a2b451f3e19d5d60f025898b7e302307af2a4fe4e3db3865b7a\",\"dweb:/ipfs/Qmb4WLpfFqguv1Jou3TfLNzErcZuLDnaqCWxnbuWjPewqJ\"]}},\"version\":1}"}},"contracts/elixir-periphery/base/PoolInitializer.sol":{"PoolInitializer":{"abi":[{"inputs":[],"name":"WETH9","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":{"WETH9()":"4aa4a4fc","createAndInitializePoolIfNecessary(address,address,uint24,uint160)":"13ead562","factory()":"c45a0155"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WETH9\",\"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 elixir 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 V3 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/elixir-periphery/base/PoolInitializer.sol\":\"PoolInitializer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirFactory.sol\":{\"keccak256\":\"0xeed23ad43ddda20bfb439f677f8f768460e46e6b2624381ea45c6dc59e56c1ea\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9bbded0c2ed0d252b28a26f18603b6c1dc6d49e761621e057d112de0cb00ead\",\"dweb:/ipfs/QmaWXq8nuhisTR5j2DfWfqYVbEJ1wWxZA6LyAdoHmiM83G\"]},\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-periphery/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x1d0175136fda60c5e1b6aab6dfa4a35856717413d754d0750eb75866f3f5e43f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8e19496cd2a7239e9e869bafbfb9f762691a9ab52f169b579f11d752d7df79a5\",\"dweb:/ipfs/QmTaLVPUVMGp4ZywHwpFupnz2873NPyqYs3EzbJTHpVNSA\"]},\"contracts/elixir-periphery/base/PoolInitializer.sol\":{\"keccak256\":\"0x8fddad649086f0cb0dcd2fb7b03af5ee61c795efb358fbf70aad3a2ff5cb054a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f63312d984b53b27c8d8bb7753c8351415bea1ca55f0a2206f0f7fb43106c74e\",\"dweb:/ipfs/QmPbmpP9d1fXiCmztfvFBRuSxHbs93Aaq8MwrD7tPPHzqK\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x0d3371b28c765f2ad1231c212ce395c91c925738f54e2280298bfd08b50a2c97\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://18a3777dc86b84fb192cf54fbefd444058f5a5adc13b1080f393ada3ee0a5a08\",\"dweb:/ipfs/QmabPex6ctJszwwNGGnS9Va6xqsN6MpcQC3M869rbwcGCo\"]}},\"version\":1}"}},"contracts/elixir-periphery/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/elixir-periphery/base/SelfPermit.sol\":\"SelfPermit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/base/SelfPermit.sol\":{\"keccak256\":\"0x93b6b25fba6b55918c18fd5d55ddb8a85336dcbb4773c3d7ab6d486960c9a665\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://fd2a053076cdd2a7fbd4ba498c9a493cd173cba860ead6139eb9e5c3fe60f067\",\"dweb:/ipfs/QmQwpbEx5aMbJAXeKGeA43qNGcCAYMz8ng1vwG5z4SCqv1\"]},\"contracts/elixir-periphery/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0xb442ad31c8fef5c47ebb82b3b3f906d0a5dbca8eb26db90b287a4825bf53d595\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6e36e6e894083ad07e2ba62977a06db0874b8ed1f6eac705f4c9d89a410f54ea\",\"dweb:/ipfs/QmWLWTuKrcCzxZeedLpUG3c8jjFLs5gLmvt35Ysp2uc9c6\"]},\"contracts/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x1495f5068f2b892668447889f379d87decb18c9369f4506df9d23edba9ccb4b7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6f322bead944abc1da0e75aba72c9e02b22f02c15712f49b212bb65869b406ca\",\"dweb:/ipfs/QmTZAqfg4EwuFAX61ZW4nA55sUbn3o2Qy3W55C3ghPUAWM\"]},\"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]},\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}"}},"contracts/elixir-periphery/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/elixir-periphery/interfaces/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/IERC20Metadata.sol\":{\"keccak256\":\"0x2de0467a19ddee2ca71a61fba65b92c571638c99351593fa6730c42170263c1a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b77da3fa18ed1f3e503df9b02564bab8d421507c7e0a62255cd021f04e762a6b\",\"dweb:/ipfs/QmWjFq62YskZySU1XjVCtQS9p6V53CWbxC4coTjqKbVKwq\"]},\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}"}},"contracts/elixir-periphery/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/elixir-periphery/interfaces/IERC721Permit.sol\":\"IERC721Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x1731f38308b9364d3d18a34a4da72afe434ad49f99939d81300dab93a940c458\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1cf9728098907ca0140ddf5398b7cebb2e6b8a0487bb1cf8338a4da603989be7\",\"dweb:/ipfs/QmPt5nvaLrdbXLxzJNhX4fM8s2akbdUPTmxZQaN2ierJPA\"]},\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]}},\"version\":1}"}},"contracts/elixir-periphery/interfaces/IElixirMigrator.sol":{"IElixirMigrator":{"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":"refundAsETH","type":"bool"}],"internalType":"struct IElixirMigrator.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\":\"refundAsETH\",\"type\":\"bool\"}],\"internalType\":\"struct IElixirMigrator.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 elixir 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 elixir liquidity that the v1 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 v1 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\":\"Elixir 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 elxir by burning v1 liquidity and minting a new position for elixir\"},\"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 Pangolin v1-compatible pairs into Elixir pools\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/interfaces/IElixirMigrator.sol\":\"IElixirMigrator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/IElixirMigrator.sol\":{\"keccak256\":\"0x6f07edeb83c503371d8c89e61abec22b307c236792f68ffccbf54b836cbc709f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ab0bdcd163263bd58ea535e8c370cfd52550a2a40f3786a1c8d4254296201e6f\",\"dweb:/ipfs/QmYvohZL1fjwXyoANYETRcE5aRhP3ALnonnZCrmu3s123s\"]},\"contracts/elixir-periphery/interfaces/IMulticall.sol\":{\"keccak256\":\"0x76aeef8a8cd237f1bd8fb67f21e1734ba5c294b522c1932ce336f72fe41e5355\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b577b8f8e1b2767f218d0a1d78f7cc4d7b24ccd01ed7422a7129f9ae465edff\",\"dweb:/ipfs/QmVUzqSeAXf9Urwc1tseh1sW3pNz6z36vEYYYAGTNAnDWf\"]},\"contracts/elixir-periphery/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x0d3371b28c765f2ad1231c212ce395c91c925738f54e2280298bfd08b50a2c97\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://18a3777dc86b84fb192cf54fbefd444058f5a5adc13b1080f393ada3ee0a5a08\",\"dweb:/ipfs/QmabPex6ctJszwwNGGnS9Va6xqsN6MpcQC3M869rbwcGCo\"]},\"contracts/elixir-periphery/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0xb442ad31c8fef5c47ebb82b3b3f906d0a5dbca8eb26db90b287a4825bf53d595\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6e36e6e894083ad07e2ba62977a06db0874b8ed1f6eac705f4c9d89a410f54ea\",\"dweb:/ipfs/QmWLWTuKrcCzxZeedLpUG3c8jjFLs5gLmvt35Ysp2uc9c6\"]}},\"version\":1}"}},"contracts/elixir-periphery/interfaces/IElixirQuoter.sol":{"IElixirQuoter":{"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 IElixirQuoter.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 IElixirQuoter.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 IElixirQuoter.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 IElixirQuoter.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\":\"Elixir 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,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/elixir-periphery/interfaces/IElixirQuoter.sol\":\"IElixirQuoter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/IElixirQuoter.sol\":{\"keccak256\":\"0x1bc37f9a8c8ad3ad0dfc268f4b1badc0c347daed48c0710dd525bce51ba5234b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://17ba4007823d6aab904c4a35c5c7174f0de8c1b53a9b612c9aebbd782125fd8b\",\"dweb:/ipfs/QmVoHogxiuSz3xMV9kABKsqrHo1TwuxTaf84cbBn9pfWv6\"]}},\"version\":1}"}},"contracts/elixir-periphery/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/elixir-periphery/interfaces/IMulticall.sol\":\"IMulticall\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/IMulticall.sol\":{\"keccak256\":\"0x76aeef8a8cd237f1bd8fb67f21e1734ba5c294b522c1932ce336f72fe41e5355\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b577b8f8e1b2767f218d0a1d78f7cc4d7b24ccd01ed7422a7129f9ae465edff\",\"dweb:/ipfs/QmVUzqSeAXf9Urwc1tseh1sW3pNz6z36vEYYYAGTNAnDWf\"]}},\"version\":1}"}},"contracts/elixir-periphery/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"}],"name":"ClaimReward","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":"WETH9","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":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"claimReward","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":"forgoReward","outputs":[],"stateMutability":"payable","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":"positionReward","outputs":[{"internalType":"uint192","name":"rewardPerLiquidityInsideLastX64","type":"uint192"},{"internalType":"uint32","name":"rewardLastUpdated","type":"uint32"},{"internalType":"uint32","name":"rewardLastCollected","type":"uint32"},{"internalType":"uint256","name":"rewardOwed","type":"uint256"}],"stateMutability":"view","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":"refundETH","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":"unwrapWETH9","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardManager_","type":"address"}],"name":"updateRewardManager","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenDescriptor_","type":"address"}],"name":"updateTokenDescriptor","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","WETH9()":"4aa4a4fc","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","claimReward(uint256,address)":"e70eb392","collect((uint256,address,uint128,uint128))":"fc6f7865","createAndInitializePoolIfNecessary(address,address,uint24,uint160)":"13ead562","decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))":"0c49ccbe","factory()":"c45a0155","forgoReward(uint256)":"29048e7b","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","positionReward(uint256)":"75e39cec","positions(uint256)":"99fbab88","refundETH()":"12210e8a","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","unwrapWETH9(uint256,address)":"49404b7c","updateRewardManager(address)":"050eb2eb","updateTokenDescriptor(address)":"97f12a83"}},"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\"}],\"name\":\"ClaimReward\",\"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\":\"WETH9\",\"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\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"claimReward\",\"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\":\"forgoReward\",\"outputs\":[],\"stateMutability\":\"payable\",\"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\":\"positionReward\",\"outputs\":[{\"internalType\":\"uint192\",\"name\":\"rewardPerLiquidityInsideLastX64\",\"type\":\"uint192\"},{\"internalType\":\"uint32\",\"name\":\"rewardLastUpdated\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"rewardLastCollected\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"rewardOwed\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"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\":\"refundETH\",\"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\":\"unwrapWETH9\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardManager_\",\"type\":\"address\"}],\"name\":\"updateRewardManager\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenDescriptor_\",\"type\":\"address\"}],\"name\":\"updateTokenDescriptor\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"ClaimReward(uint256,address)\":{\"details\":\"This only notifies that the Elixir Rewarder is called. Except some edge cases (which will be documented in Elixir Rewarder), this event is a good indicator of the rewards being claimed. However, it is not certain as it depends on Elixir Rewarder implementation to decide whether to send the rewards.\",\"params\":{\"recipient\":\"The address of the account that received the reward\",\"tokenId\":\"The ID of the token for which the reward is being claimed\"}},\"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\"}},\"WETH9()\":{\"returns\":{\"_0\":\"Returns the address of WETH9\"}},\"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\"}},\"claimReward(uint256,address)\":{\"params\":{\"tokenId\":\"The ID of the NFT for which reward is being collected, recipient The account that should receive the reward tokens\"}},\"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 elixir 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 Pangolin V2 factory\"}},\"forgoReward(uint256)\":{\"details\":\"Because of (1) `burn` prevents burning the tokenId if there is any reward debt and (2) `claimReward` can be DOSed by an improper reward manager implementation or a reward token, we have this separate function to forgo rewards if user really needs to burn the tokenId and does not care about the rewards\",\"params\":{\"tokenId\":\"The ID of the NFT to forgo the rewards\"}},\"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`\"}},\"positionReward(uint256)\":{\"details\":\"Throws if the token ID is not valid.\",\"params\":{\"tokenId\":\"The ID of the token that represents the position\"},\"returns\":{\"rewardLastCollected\":\"The timestamp of the last time user claimed the rewards of the position\",\"rewardLastUpdated\":\"The timestamp of the last operation that updated rewardPerLiquidityInsideLastX64\",\"rewardOwed\":\"The uncollected amount of reward token owed to the position as of the last computation\",\"rewardPerLiquidityInsideLastX64\":\"The snapshot of liquidity inside the ticks at last operation\"}},\"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\"}},\"refundETH()\":{\"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.\"},\"unwrapWETH9(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of WETH9 to unwrap\",\"recipient\":\"The address receiving ETH\"}},\"updateRewardManager(address)\":{\"params\":{\"rewardManager_\":\"The contract that will distribute rewards during `claimReward`\"}},\"updateTokenDescriptor(address)\":{\"params\":{\"tokenDescriptor_\":\"The address of the new token descriptor\"}}},\"title\":\"Non-fungible token for positions\",\"version\":1},\"userdoc\":{\"events\":{\"ClaimReward(uint256,address)\":{\"notice\":\"Emitted when Elixir Rewarder is called and notified of the reward amount\"},\"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.\"},\"claimReward(uint256,address)\":{\"notice\":\"Notifies rewards manager contract the amount of unclaimed rewards and then deletes the reward debt\"},\"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\"},\"forgoReward(uint256)\":{\"notice\":\"Deletes reward debt of the token\"},\"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\"},\"positionReward(uint256)\":{\"notice\":\"Returns the position reward information associated with a given token ID.\"},\"positions(uint256)\":{\"notice\":\"Returns the position information associated with a given token ID.\"},\"refundETH()\":{\"notice\":\"Refunds any ETH 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\"},\"unwrapWETH9(uint256,address)\":{\"notice\":\"Unwraps the contract's WETH9 balance and sends it to recipient as ETH.\"},\"updateRewardManager(address)\":{\"notice\":\"Restricted function to update the reward manager contract address\"},\"updateTokenDescriptor(address)\":{\"notice\":\"Restricted function to update address that generates tokenURI\"}},\"notice\":\"Wraps Elixir positions in a non-fungible token interface which allows for them to be transferred and authorized.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol\":\"INonfungiblePositionManager\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x1731f38308b9364d3d18a34a4da72afe434ad49f99939d81300dab93a940c458\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1cf9728098907ca0140ddf5398b7cebb2e6b8a0487bb1cf8338a4da603989be7\",\"dweb:/ipfs/QmPt5nvaLrdbXLxzJNhX4fM8s2akbdUPTmxZQaN2ierJPA\"]},\"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0xf968ea5f5b29c4407b3337051b0fb2ea786b8a6e3f476d40cdde1cb9415b1735\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c92f629ddeb1a6bcec8b154e6619a492053a375db3a28b37bbcd49b35d4b171\",\"dweb:/ipfs/QmYRNQmFQ8gD3dkTQz85cEHwEkBuXW4F64HQB9MUUHHYse\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x8e0cdb6280728619c44a8220996512b81e85f6fa7bc5373db742ea953a81eda8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0748123e32874d0e1e405a463fafcf98f686fac0055da2e13bfdaa0db917766\",\"dweb:/ipfs/QmRZPF69X1e6T3yT2z8HTgzEtXHTVScqzoEMbfvp5Niggq\"]},\"contracts/elixir-periphery/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x0d3371b28c765f2ad1231c212ce395c91c925738f54e2280298bfd08b50a2c97\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://18a3777dc86b84fb192cf54fbefd444058f5a5adc13b1080f393ada3ee0a5a08\",\"dweb:/ipfs/QmabPex6ctJszwwNGGnS9Va6xqsN6MpcQC3M869rbwcGCo\"]},\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]},\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]}},\"version\":1}"}},"contracts/elixir-periphery/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/elixir-periphery/interfaces/INonfungibleTokenPositionDescriptor.sol\":\"INonfungibleTokenPositionDescriptor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x1731f38308b9364d3d18a34a4da72afe434ad49f99939d81300dab93a940c458\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1cf9728098907ca0140ddf5398b7cebb2e6b8a0487bb1cf8338a4da603989be7\",\"dweb:/ipfs/QmPt5nvaLrdbXLxzJNhX4fM8s2akbdUPTmxZQaN2ierJPA\"]},\"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0xf968ea5f5b29c4407b3337051b0fb2ea786b8a6e3f476d40cdde1cb9415b1735\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c92f629ddeb1a6bcec8b154e6619a492053a375db3a28b37bbcd49b35d4b171\",\"dweb:/ipfs/QmYRNQmFQ8gD3dkTQz85cEHwEkBuXW4F64HQB9MUUHHYse\"]},\"contracts/elixir-periphery/interfaces/INonfungibleTokenPositionDescriptor.sol\":{\"keccak256\":\"0xad5664d7c455da6e2d56dc0d53b7d40354d83aac9312d367481b3428394ec8a3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3fa455da4a61b8b084edd5b27bfb1fd739eae48e1d1e72399841774a41d3163d\",\"dweb:/ipfs/QmXmeyfQXP4NPbZNanqquiaD9WZHUwvQThbezmCEFWnAQn\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x8e0cdb6280728619c44a8220996512b81e85f6fa7bc5373db742ea953a81eda8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0748123e32874d0e1e405a463fafcf98f686fac0055da2e13bfdaa0db917766\",\"dweb:/ipfs/QmRZPF69X1e6T3yT2z8HTgzEtXHTVScqzoEMbfvp5Niggq\"]},\"contracts/elixir-periphery/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x0d3371b28c765f2ad1231c212ce395c91c925738f54e2280298bfd08b50a2c97\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://18a3777dc86b84fb192cf54fbefd444058f5a5adc13b1080f393ada3ee0a5a08\",\"dweb:/ipfs/QmabPex6ctJszwwNGGnS9Va6xqsN6MpcQC3M869rbwcGCo\"]},\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]},\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]}},\"version\":1}"}},"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol":{"IPeripheryImmutableState":{"abi":[{"inputs":[],"name":"WETH9","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":{"WETH9()":"4aa4a4fc","factory()":"c45a0155"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WETH9\",\"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\":{\"WETH9()\":{\"returns\":{\"_0\":\"Returns the address of WETH9\"}},\"factory()\":{\"returns\":{\"_0\":\"Returns the address of the Pangolin V2 factory\"}}},\"title\":\"Immutable state\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Functions that return immutable state of the router\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":\"IPeripheryImmutableState\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]}},\"version\":1}"}},"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol":{"IPeripheryPayments":{"abi":[{"inputs":[],"name":"refundETH","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":"unwrapWETH9","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"refundETH()":"12210e8a","sweepToken(address,uint256,address)":"df2ab5bb","unwrapWETH9(uint256,address)":"49404b7c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"refundETH\",\"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\":\"unwrapWETH9\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"refundETH()\":{\"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`\"}},\"unwrapWETH9(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of WETH9 to unwrap\",\"recipient\":\"The address receiving ETH\"}}},\"title\":\"Periphery Payments\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"refundETH()\":{\"notice\":\"Refunds any ETH 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\"},\"unwrapWETH9(uint256,address)\":{\"notice\":\"Unwraps the contract's WETH9 balance and sends it to recipient as ETH.\"}},\"notice\":\"Functions to ease deposits and withdrawals of ETH\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":\"IPeripheryPayments\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x8e0cdb6280728619c44a8220996512b81e85f6fa7bc5373db742ea953a81eda8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0748123e32874d0e1e405a463fafcf98f686fac0055da2e13bfdaa0db917766\",\"dweb:/ipfs/QmRZPF69X1e6T3yT2z8HTgzEtXHTVScqzoEMbfvp5Niggq\"]}},\"version\":1}"}},"contracts/elixir-periphery/interfaces/IPeripheryPaymentsWithFee.sol":{"IPeripheryPaymentsWithFee":{"abi":[{"inputs":[],"name":"refundETH","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":"unwrapWETH9","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":"unwrapWETH9WithFee","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"refundETH()":"12210e8a","sweepToken(address,uint256,address)":"df2ab5bb","sweepTokenWithFee(address,uint256,address,uint256,address)":"e0e189a0","unwrapWETH9(uint256,address)":"49404b7c","unwrapWETH9WithFee(uint256,address,uint256,address)":"9b2c0a37"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"refundETH\",\"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\":\"unwrapWETH9\",\"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\":\"unwrapWETH9WithFee\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"refundETH()\":{\"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\"},\"unwrapWETH9(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of WETH9 to unwrap\",\"recipient\":\"The address receiving ETH\"}},\"unwrapWETH9WithFee(uint256,address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\"}},\"title\":\"Periphery Payments\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"refundETH()\":{\"notice\":\"Refunds any ETH 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\"},\"unwrapWETH9(uint256,address)\":{\"notice\":\"Unwraps the contract's WETH9 balance and sends it to recipient as ETH.\"},\"unwrapWETH9WithFee(uint256,address,uint256,address)\":{\"notice\":\"Unwraps the contract's WETH9 balance and sends it to recipient as ETH, with a percentage between 0 (exclusive), and 1 (inclusive) going to feeRecipient\"}},\"notice\":\"Functions to ease deposits and withdrawals of ETH\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/interfaces/IPeripheryPaymentsWithFee.sol\":\"IPeripheryPaymentsWithFee\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x8e0cdb6280728619c44a8220996512b81e85f6fa7bc5373db742ea953a81eda8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0748123e32874d0e1e405a463fafcf98f686fac0055da2e13bfdaa0db917766\",\"dweb:/ipfs/QmRZPF69X1e6T3yT2z8HTgzEtXHTVScqzoEMbfvp5Niggq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPaymentsWithFee.sol\":{\"keccak256\":\"0x55bddad9998fa9ac8feace5b1f2e43b31c63bb51e5fbcbf4382584e8725bb307\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5292794b4e3817769c19db8067db4766397d857090c65caf2b8cbf4ee3e9e04e\",\"dweb:/ipfs/QmZvwFxW24eravpmBVRoZ33giLyJURnv76rJ1Nj3QubpdS\"]}},\"version\":1}"}},"contracts/elixir-periphery/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 elixir 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 Elixir 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/elixir-periphery/interfaces/IPoolInitializer.sol\":\"IPoolInitializer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x0d3371b28c765f2ad1231c212ce395c91c925738f54e2280298bfd08b50a2c97\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://18a3777dc86b84fb192cf54fbefd444058f5a5adc13b1080f393ada3ee0a5a08\",\"dweb:/ipfs/QmabPex6ctJszwwNGGnS9Va6xqsN6MpcQC3M869rbwcGCo\"]}},\"version\":1}"}},"contracts/elixir-periphery/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/elixir-periphery/interfaces/ISelfPermit.sol\":\"ISelfPermit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0xb442ad31c8fef5c47ebb82b3b3f906d0a5dbca8eb26db90b287a4825bf53d595\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6e36e6e894083ad07e2ba62977a06db0874b8ed1f6eac705f4c9d89a410f54ea\",\"dweb:/ipfs/QmWLWTuKrcCzxZeedLpUG3c8jjFLs5gLmvt35Ysp2uc9c6\"]}},\"version\":1}"}},"contracts/elixir-periphery/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":"elixirSwapCallback","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":{"elixirSwapCallback(int256,int256,bytes)":"d804d7a7","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\":\"elixirSwapCallback\",\"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\":{\"elixirSwapCallback(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 ElixirPool deployed by the canonical ElixirFactory. 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 IElixirPoolActions#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\":{\"elixirSwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IElixirPool#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 Elixir\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/interfaces/ISwapRouter.sol\":\"ISwapRouter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol\":{\"keccak256\":\"0xc9fbc830c4c6b20c2e87b16569730bce747f3c9cde95efee554f1c6f07cc60b0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b94f129f0ad86cbc99ff550c65bc0ab2b9e754b7f3c2734f09f51ffb908864d\",\"dweb:/ipfs/QmUuJ7zyX1vWC7SfpsDhBqXGCKMS24pvSzirPVMU3sSkK8\"]},\"contracts/elixir-periphery/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x3cb7ef4c1c9bd18d8f1cd9cd03b3dfdb369174bc5706759d4c2fd298d9ca41f8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f8260f4ab3203a1917c32651994ec7c4c3c15859c339b293323a2259be74d084\",\"dweb:/ipfs/QmQRaMPMTDZ67Ya9cccRzCcDtxrSdvYFdvLhYkmc9twd3P\"]}},\"version\":1}"}},"contracts/elixir-periphery/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/elixir-periphery/interfaces/ITickLens.sol\":\"ITickLens\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/ITickLens.sol\":{\"keccak256\":\"0x67c0150c097762d0f4dcd07e63425d96016aabcef4765119247c738d0727657b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://04c33ba992e14fefb5642f1b679d249105cd1e8a1c2ee54506692dbbe334a35c\",\"dweb:/ipfs/QmdUugSiLbXrGSJesH4SuDBtknM2evR5NSqisPQEmjPCfi\"]}},\"version\":1}"}},"contracts/elixir-periphery/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/elixir-periphery/interfaces/external/IERC1271.sol\":\"IERC1271\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/external/IERC1271.sol\":{\"keccak256\":\"0xd9b5ac195482b3cd25c2b1d2bf7f8be6f69b8352df17e23111556fc436590bb8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://dfd4975c3a69938f6fa6189fe5e4428260bd8aaa3e1f202c934edafe09d3d5d2\",\"dweb:/ipfs/QmaW1ZYYhnozmccckXLcg99ZoJCwoURdhaEPd26LmYvSZV\"]}},\"version\":1}"}},"contracts/elixir-periphery/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/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol\":\"IERC20PermitAllowed\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x1495f5068f2b892668447889f379d87decb18c9369f4506df9d23edba9ccb4b7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6f322bead944abc1da0e75aba72c9e02b22f02c15712f49b212bb65869b406ca\",\"dweb:/ipfs/QmTZAqfg4EwuFAX61ZW4nA55sUbn3o2Qy3W55C3ghPUAWM\"]}},\"version\":1}"}},"contracts/elixir-periphery/interfaces/external/IWETH9.sol":{"IWETH9":{"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 WETH9\",\"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/elixir-periphery/interfaces/external/IWETH9.sol\":\"IWETH9\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/external/IWETH9.sol\":{\"keccak256\":\"0xa992da106a4a4ee9aca70fd30222480366e153411592c23defb169176f1aaf09\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://95eeaee1cae3d1fabaad9bd9f06d8310415e8d04951c44b019adcb47f428e833\",\"dweb:/ipfs/QmYnaMUiuMvikcuC92HWhWruuiMkvEx2eR7g7Y44PzHHKu\"]},\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}"}},"contracts/elixir-periphery/lens/ElixirQuoter.sol":{"ElixirQuoter":{"abi":[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH9","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH9","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":"elixirSwapCallback","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"contract IElixirPool","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 IElixirQuoter.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 IElixirQuoter.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:178","statements":[{"nodeType":"YulBlock","src":"6:3:178","statements":[]},{"body":{"nodeType":"YulBlock","src":"76:117:178","statements":[{"nodeType":"YulAssignment","src":"86:22:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"101:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"95:5:178"},"nodeType":"YulFunctionCall","src":"95:13:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"86:5:178"}]},{"body":{"nodeType":"YulBlock","src":"171:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"180:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"183:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"173:6:178"},"nodeType":"YulFunctionCall","src":"173:12:178"},"nodeType":"YulExpressionStatement","src":"173:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"130:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"141:5:178"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"156:3:178","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"161:1:178","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"152:3:178"},"nodeType":"YulFunctionCall","src":"152:11:178"},{"kind":"number","nodeType":"YulLiteral","src":"165:1:178","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"148:3:178"},"nodeType":"YulFunctionCall","src":"148:19:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"137:3:178"},"nodeType":"YulFunctionCall","src":"137:31:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"127:2:178"},"nodeType":"YulFunctionCall","src":"127:42:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"120:6:178"},"nodeType":"YulFunctionCall","src":"120:50:178"},"nodeType":"YulIf","src":"117:2:178"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"55:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"66:5:178","type":""}],"src":"14:179:178"},{"body":{"nodeType":"YulBlock","src":"296:209:178","statements":[{"body":{"nodeType":"YulBlock","src":"342:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"351:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"359:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"344:6:178"},"nodeType":"YulFunctionCall","src":"344:22:178"},"nodeType":"YulExpressionStatement","src":"344:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"317:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"326:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"313:3:178"},"nodeType":"YulFunctionCall","src":"313:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"338:2:178","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"309:3:178"},"nodeType":"YulFunctionCall","src":"309:32:178"},"nodeType":"YulIf","src":"306:2:178"},{"nodeType":"YulAssignment","src":"377:52:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"419:9:178"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"387:31:178"},"nodeType":"YulFunctionCall","src":"387:42:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"377:6:178"}]},{"nodeType":"YulAssignment","src":"438:61:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"484:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"495:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"480:3:178"},"nodeType":"YulFunctionCall","src":"480:18:178"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"448:31:178"},"nodeType":"YulFunctionCall","src":"448:51:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"438:6:178"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"254:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"265:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"277:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"285:6:178","type":""}],"src":"198:307:178"}]},"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":178,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60c06040523480156200001157600080fd5b5060405162001cc738038062001cc7833981016040819052620000349162000070565b6001600160601b0319606092831b8116608052911b1660a052620000a7565b80516001600160a01b03811681146200006b57600080fd5b919050565b6000806040838503121562000083578182fd5b6200008e8362000053565b91506200009e6020840162000053565b90509250929050565b60805160601c60a05160601c611bec620000db6000398061033c52508061014e528061053352806108935250611bec6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063c45a01551161005b578063c45a015514610104578063c6a5026a1461010c578063cdca17531461011f578063d804d7a71461013257610088565b80631698ee821461008d5780632f80bb1d146100b65780634aa4a4fc146100d9578063bd21704a146100e1575b600080fd5b6100a061009b3660046116f0565b610147565b6040516100ad91906119c0565b60405180910390f35b6100c96100c4366004611736565b610185565b6040516100ad9493929190611a63565b6100a061033a565b6100f46100ef366004611854565b61035e565b6040516100ad9493929190611afe565b6100a0610531565b6100f461011a366004611854565b610555565b6100c961012d366004611736565b6106cb565b61014561014036600461179c565b610862565b005b600061017d7f00000000000000000000000000000000000000000000000000000000000000006101788686866109dd565b610a33565b949350505050565b6000606080600061019586610b2f565b67ffffffffffffffff811180156101ab57600080fd5b506040519080825280602002602001820160405280156101d5578160200160208202803683370190505b5092506101e186610b2f565b67ffffffffffffffff811180156101f757600080fd5b50604051908082528060200260200182016040528015610221578160200160208202803683370190505b50915060005b60008060006102358a610b40565b9250925092506000806000806102916040518060a00160405280886001600160a01b03168152602001896001600160a01b031681526020018f81526020018762ffffff16815260200160006001600160a01b031681525061035e565b9350935093509350828b89815181106102a657fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818a89815181106102d357fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b926103008e610b71565b156103155761030e8e610b79565b9d50610325565b8c9b505050505050505050610331565b50505050505050610227565b92959194509250565b7f000000000000000000000000000000000000000000000000000000000000000081565b6020810151815160608301516000928392839283926001600160a01b038082169084161092849261038f9290610147565b905086608001516001600160a01b0316600014156103b05760408701516000555b60005a9050816001600160a01b031663128acb0830856103d38c60400151610b96565b6000038c608001516001600160a01b03166000146103f5578c6080015161041b565b876104145773fffd8963efd1fc6a506488495d951d5263988d2561041b565b6401000276a45b8d602001518e606001518f6000015160405160200161043c9392919061196d565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161046b9594939291906119d4565b6040805180830381600087803b15801561048457600080fd5b505af19250505080156104b4575060408051601f3d908101601f191682019092526104b191810190611779565b60015b610524573d8080156104e2576040519150601f19603f3d011682016040523d82523d6000602084013e6104e7565b606091505b505a8203945088608001516001600160a01b03166000141561050857600080555b610513818487610bac565b97509750975097505050505061052a565b50505050505b9193509193565b7f000000000000000000000000000000000000000000000000000000000000000081565b6020810151815160608301516000928392839283926001600160a01b03808216908416109284926105869290610147565b905060005a9050816001600160a01b031663128acb0830856105ab8c60400151610b96565b60808d01516001600160a01b0316156105c8578c608001516105ee565b876105e75773fffd8963efd1fc6a506488495d951d5263988d256105ee565b6401000276a45b8d600001518e606001518f6020015160405160200161060f9392919061196d565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161063e9594939291906119d4565b6040805180830381600087803b15801561065757600080fd5b505af1925050508015610687575060408051601f3d908101601f1916820190925261068491810190611779565b60015b610524573d8080156106b5576040519150601f19603f3d011682016040523d82523d6000602084013e6106ba565b606091505b505a82039450610513818487610bac565b600060608060006106db86610b2f565b67ffffffffffffffff811180156106f157600080fd5b5060405190808252806020026020018201604052801561071b578160200160208202803683370190505b50925061072786610b2f565b67ffffffffffffffff8111801561073d57600080fd5b50604051908082528060200260200182016040528015610767578160200160208202803683370190505b50915060005b600080600061077b8a610b40565b9250925092506000806000806107d76040518060a00160405280896001600160a01b03168152602001886001600160a01b031681526020018f81526020018762ffffff16815260200160006001600160a01b0316815250610555565b9350935093509350828b89815181106107ec57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818a898151811061081957fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b926108468e610b71565b15610315576108548e610b79565b9d505050505050505061076d565b60008313806108715750600082135b61087a57600080fd5b600080600061088884610b40565b9250925092506108ba7f0000000000000000000000000000000000000000000000000000000000000000848484610c66565b5060008060008089136108e657856001600160a01b0316856001600160a01b031610888a600003610901565b846001600160a01b0316866001600160a01b03161089896000035b9250925092506000610914878787610147565b9050600080826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561095257600080fd5b505afa158015610966573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098a9190611876565b50505050509150915085156109b057604051848152826020820152816040820152606081fd5b600054156109c65760005484146109c657600080fd5b604051858152826020820152816040820152606081fd5b6109e56115be565b826001600160a01b0316846001600160a01b03161115610a03579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b600081602001516001600160a01b031682600001516001600160a01b031610610a5b57600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f5909101909152805191012090565b80516017601319909101045b919050565b60008080610b4e8482610c85565b9250610b5b846014610d51565b9050610b68846017610c85565b91509193909250565b516042111590565b8051606090610b9090839060179060161901610e0d565b92915050565b6000600160ff1b8210610ba857600080fd5b5090565b600080600080600080876001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610bee57600080fd5b505afa158015610c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c269190611876565b50939650610c3b94508d9350610f6a92505050565b91975095509050610c566001600160a01b0389168383610ff7565b9350869250505093509350935093565b6000610c7c85610c778686866109dd565b611580565b95945050505050565b600081826014011015610cdf576040805162461bcd60e51b815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015610d38576040805162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015610dab576040805162461bcd60e51b815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015610e04576040805162461bcd60e51b815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b60608182601f011015610e58576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015610ea0576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b81830184511015610ef8576040805162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b606082158015610f175760405191506000825260208201604052610f61565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610f50578051835260209283019201610f38565b5050858452601f01601f1916604052505b50949350505050565b60008060008351606014610fd657604484511015610fa35760405162461bcd60e51b8152600401610f9a90611a2c565b60405180910390fd5b60048401935083806020019051810190610fbd91906117ea565b60405162461bcd60e51b8152600401610f9a9190611a19565b83806020019051810190610fea919061190d565b9250925092509193909250565b60008060008060008060008060088b6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561103e57600080fd5b505afa158015611052573d6000803e3d6000fd5b505050506040513d602081101561106857600080fd5b5051600290810b908c900b8161107a57fe5b0560020b901d905060006101008c6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110c057600080fd5b505afa1580156110d4573d6000803e3d6000fd5b505050506040513d60208110156110ea57600080fd5b5051600290810b908d900b816110fc57fe5b0560020b8161110757fe5b079050600060088d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561114757600080fd5b505afa15801561115b573d6000803e3d6000fd5b505050506040513d602081101561117157600080fd5b5051600290810b908d900b8161118357fe5b0560020b901d905060006101008e6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111c957600080fd5b505afa1580156111dd573d6000803e3d6000fd5b505050506040513d60208110156111f357600080fd5b5051600290810b908e900b8161120557fe5b0560020b8161121057fe5b07905060008160ff166001901b8f6001600160a01b0316635339c296856040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561126457600080fd5b505afa158015611278573d6000803e3d6000fd5b505050506040513d602081101561128e57600080fd5b50511611801561131457508d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112d257600080fd5b505afa1580156112e6573d6000803e3d6000fd5b505050506040513d60208110156112fc57600080fd5b5051600290810b908d900b8161130e57fe5b0760020b155b801561132557508b60020b8d60020b135b945060008360ff166001901b8f6001600160a01b0316635339c296876040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561137857600080fd5b505afa15801561138c573d6000803e3d6000fd5b505050506040513d60208110156113a257600080fd5b50511611801561142857508d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113e657600080fd5b505afa1580156113fa573d6000803e3d6000fd5b505050506040513d602081101561141057600080fd5b5051600290810b908e900b8161142257fe5b0760020b155b801561143957508b60020b8d60020b125b95508160010b8460010b128061146557508160010b8460010b14801561146557508060ff168360ff1611155b1561147b57839950829750819850809650611488565b8199508097508398508296505b505060001960ff87161b9150505b8560010b8760010b13611558578560010b8760010b14156114bd5760001960ff858103161c165b6000818c6001600160a01b0316635339c2968a6040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561150757600080fd5b505afa15801561151b573d6000803e3d6000fd5b505050506040513d602081101561153157600080fd5b505116905061153f816115a3565b61ffff1698909801975050600190950194600019611496565b8115611565576001880397505b8215611572576001880397505b505050505050509392505050565b600061158c8383610a33565b9050336001600160a01b03821614610b9057600080fd5b6000805b8215610b90576000198301909216916001016115a7565b604080516060810182526000808252602082018190529181019190915290565b600082601f8301126115ee578081fd5b81356116016115fc82611b4c565b611b28565b818152846020838601011115611615578283fd5b816020850160208301379081016020019190915292915050565b8051600281900b8114610b3b57600080fd5b600060a08284031215611652578081fd5b60405160a0810181811067ffffffffffffffff8211171561166f57fe5b604052905080823561168081611b9e565b8152602083013561169081611b9e565b6020820152604083810135908201526116ab606084016116dd565b606082015260808301356116be81611b9e565b6080919091015292915050565b805161ffff81168114610b3b57600080fd5b803562ffffff81168114610b3b57600080fd5b600080600060608486031215611704578283fd5b833561170f81611b9e565b9250602084013561171f81611b9e565b915061172d604085016116dd565b90509250925092565b60008060408385031215611748578182fd5b823567ffffffffffffffff81111561175e578283fd5b61176a858286016115de565b95602094909401359450505050565b6000806040838503121561178b578182fd5b505080516020909101519092909150565b6000806000606084860312156117b0578283fd5b8335925060208401359150604084013567ffffffffffffffff8111156117d4578182fd5b6117e0868287016115de565b9150509250925092565b6000602082840312156117fb578081fd5b815167ffffffffffffffff811115611811578182fd5b8201601f81018413611821578182fd5b805161182f6115fc82611b4c565b818152856020838501011115611843578384fd5b610c7c826020830160208601611b6e565b600060a08284031215611865578081fd5b61186f8383611641565b9392505050565b600080600080600080600060e0888a031215611890578485fd5b875161189b81611b9e565b96506118a96020890161162f565b95506118b7604089016116cb565b94506118c5606089016116cb565b93506118d3608089016116cb565b925060a088015160ff811681146118e8578283fd5b60c089015190925080151581146118fd578182fd5b8091505092959891949750929550565b600080600060608486031215611921578081fd5b83519250602084015161193381611b9e565b915061172d6040850161162f565b60008151808452611959816020860160208601611b6e565b601f01601f19169290920160200192915050565b606093841b6bffffffffffffffffffffffff19908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6001600160a01b0391909116815260200190565b60006001600160a01b038088168352861515602084015285604084015280851660608401525060a06080830152611a0e60a0830184611941565b979650505050505050565b60006020825261186f6020830184611941565b60208082526010908201527f556e6578706563746564206572726f7200000000000000000000000000000000604082015260600190565b600060808201868352602060808185015281875180845260a0860191508289019350845b81811015611aac5784516001600160a01b031683529383019391830191600101611a87565b505084810360408601528651808252908201925081870190845b81811015611ae857825163ffffffff1685529383019391830191600101611ac6565b5050505060609290920192909252949350505050565b9384526001600160a01b0392909216602084015263ffffffff166040830152606082015260800190565b60405181810167ffffffffffffffff81118282101715611b4457fe5b604052919050565b600067ffffffffffffffff821115611b6057fe5b50601f01601f191660200190565b60005b83811015611b89578181015183820152602001611b71565b83811115611b98576000848401525b50505050565b6001600160a01b0381168114611bb357600080fd5b5056fea264697066735822122024fda544cd6acfc18f8c2e5abdde87380f19bc6e00aa6a2845247440717f7cde64736f6c63430007060033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1CC7 CODESIZE SUB DUP1 PUSH3 0x1CC7 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 0x1BEC PUSH3 0xDB PUSH1 0x0 CODECOPY DUP1 PUSH2 0x33C MSTORE POP DUP1 PUSH2 0x14E MSTORE DUP1 PUSH2 0x533 MSTORE DUP1 PUSH2 0x893 MSTORE POP PUSH2 0x1BEC 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 0xC45A0155 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0xC6A5026A EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0xCDCA1753 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0xD804D7A7 EQ PUSH2 0x132 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x1698EE82 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x2F80BB1D EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x4AA4A4FC EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0xBD21704A EQ PUSH2 0xE1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x16F0 JUMP JUMPDEST PUSH2 0x147 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x19C0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC9 PUSH2 0xC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1736 JUMP JUMPDEST PUSH2 0x185 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1A63 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x33A JUMP JUMPDEST PUSH2 0xF4 PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0x1854 JUMP JUMPDEST PUSH2 0x35E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1AFE JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x531 JUMP JUMPDEST PUSH2 0xF4 PUSH2 0x11A CALLDATASIZE PUSH1 0x4 PUSH2 0x1854 JUMP JUMPDEST PUSH2 0x555 JUMP JUMPDEST PUSH2 0xC9 PUSH2 0x12D CALLDATASIZE PUSH1 0x4 PUSH2 0x1736 JUMP JUMPDEST PUSH2 0x6CB JUMP JUMPDEST PUSH2 0x145 PUSH2 0x140 CALLDATASIZE PUSH1 0x4 PUSH2 0x179C JUMP JUMPDEST PUSH2 0x862 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH2 0x17D PUSH32 0x0 PUSH2 0x178 DUP7 DUP7 DUP7 PUSH2 0x9DD JUMP JUMPDEST PUSH2 0xA33 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x195 DUP7 PUSH2 0xB2F JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1AB 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 0x1D5 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP PUSH2 0x1E1 DUP7 PUSH2 0xB2F JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1F7 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 0x221 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 0x235 DUP11 PUSH2 0xB40 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x291 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP16 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH2 0x35E JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP3 DUP12 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x2A6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP2 DUP11 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x2D3 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 0x300 DUP15 PUSH2 0xB71 JUMP JUMPDEST ISZERO PUSH2 0x315 JUMPI PUSH2 0x30E DUP15 PUSH2 0xB79 JUMP JUMPDEST SWAP14 POP PUSH2 0x325 JUMP JUMPDEST DUP13 SWAP12 POP POP POP POP POP POP POP POP POP PUSH2 0x331 JUMP JUMPDEST POP POP POP POP POP POP POP PUSH2 0x227 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND SWAP1 DUP5 AND LT SWAP3 DUP5 SWAP3 PUSH2 0x38F SWAP3 SWAP1 PUSH2 0x147 JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 EQ ISZERO PUSH2 0x3B0 JUMPI PUSH1 0x40 DUP8 ADD MLOAD PUSH1 0x0 SSTORE JUMPDEST PUSH1 0x0 GAS SWAP1 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 ADDRESS DUP6 PUSH2 0x3D3 DUP13 PUSH1 0x40 ADD MLOAD PUSH2 0xB96 JUMP JUMPDEST PUSH1 0x0 SUB DUP13 PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 EQ PUSH2 0x3F5 JUMPI DUP13 PUSH1 0x80 ADD MLOAD PUSH2 0x41B JUMP JUMPDEST DUP8 PUSH2 0x414 JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x41B 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 0x43C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x196D 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 0x46B SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x19D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x4B4 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x4B1 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1779 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x524 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x4E2 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 0x4E7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP GAS DUP3 SUB SWAP5 POP DUP9 PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 EQ ISZERO PUSH2 0x508 JUMPI PUSH1 0x0 DUP1 SSTORE JUMPDEST PUSH2 0x513 DUP2 DUP5 DUP8 PUSH2 0xBAC JUMP JUMPDEST SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP POP POP POP POP PUSH2 0x52A 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND SWAP1 DUP5 AND LT SWAP3 DUP5 SWAP3 PUSH2 0x586 SWAP3 SWAP1 PUSH2 0x147 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 GAS SWAP1 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 ADDRESS DUP6 PUSH2 0x5AB DUP13 PUSH1 0x40 ADD MLOAD PUSH2 0xB96 JUMP JUMPDEST PUSH1 0x80 DUP14 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x5C8 JUMPI DUP13 PUSH1 0x80 ADD MLOAD PUSH2 0x5EE JUMP JUMPDEST DUP8 PUSH2 0x5E7 JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x5EE 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 0x60F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x196D 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 0x63E SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x19D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x657 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x687 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x684 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1779 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x524 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x6B5 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 0x6BA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP GAS DUP3 SUB SWAP5 POP PUSH2 0x513 DUP2 DUP5 DUP8 PUSH2 0xBAC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x6DB DUP7 PUSH2 0xB2F JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x6F1 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 0x71B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP PUSH2 0x727 DUP7 PUSH2 0xB2F JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x73D 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 0x767 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 0x77B DUP11 PUSH2 0xB40 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x7D7 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP16 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH2 0x555 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP3 DUP12 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x7EC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP2 DUP11 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x819 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 0x846 DUP15 PUSH2 0xB71 JUMP JUMPDEST ISZERO PUSH2 0x315 JUMPI PUSH2 0x854 DUP15 PUSH2 0xB79 JUMP JUMPDEST SWAP14 POP POP POP POP POP POP POP POP PUSH2 0x76D JUMP JUMPDEST PUSH1 0x0 DUP4 SGT DUP1 PUSH2 0x871 JUMPI POP PUSH1 0x0 DUP3 SGT JUMPDEST PUSH2 0x87A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x888 DUP5 PUSH2 0xB40 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x8BA PUSH32 0x0 DUP5 DUP5 DUP5 PUSH2 0xC66 JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP10 SGT PUSH2 0x8E6 JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP9 DUP11 PUSH1 0x0 SUB PUSH2 0x901 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP10 DUP10 PUSH1 0x0 SUB JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 PUSH2 0x914 DUP8 DUP8 DUP8 PUSH2 0x147 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x952 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x966 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 0x98A SWAP2 SWAP1 PUSH2 0x1876 JUMP JUMPDEST POP POP POP POP POP SWAP2 POP SWAP2 POP DUP6 ISZERO PUSH2 0x9B0 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 0x9C6 JUMPI PUSH1 0x0 SLOAD DUP5 EQ PUSH2 0x9C6 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 PUSH2 0x9E5 PUSH2 0x15BE JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0xA03 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0xA5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x41A723F9E6457830B1B7A44DF4435FAB88581D073226894B33131815DD674C22 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 DUP1 MLOAD PUSH1 0x17 PUSH1 0x13 NOT SWAP1 SWAP2 ADD DIV JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0xB4E DUP5 DUP3 PUSH2 0xC85 JUMP JUMPDEST SWAP3 POP PUSH2 0xB5B DUP5 PUSH1 0x14 PUSH2 0xD51 JUMP JUMPDEST SWAP1 POP PUSH2 0xB68 DUP5 PUSH1 0x17 PUSH2 0xC85 JUMP JUMPDEST SWAP2 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST MLOAD PUSH1 0x42 GT ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH2 0xB90 SWAP1 DUP4 SWAP1 PUSH1 0x17 SWAP1 PUSH1 0x16 NOT ADD PUSH2 0xE0D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 LT PUSH2 0xBA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xBEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC02 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 0xC26 SWAP2 SWAP1 PUSH2 0x1876 JUMP JUMPDEST POP SWAP4 SWAP7 POP PUSH2 0xC3B SWAP5 POP DUP14 SWAP4 POP PUSH2 0xF6A SWAP3 POP POP POP JUMP JUMPDEST SWAP2 SWAP8 POP SWAP6 POP SWAP1 POP PUSH2 0xC56 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP4 DUP4 PUSH2 0xFF7 JUMP JUMPDEST SWAP4 POP DUP7 SWAP3 POP POP POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC7C DUP6 PUSH2 0xC77 DUP7 DUP7 DUP7 PUSH2 0x9DD JUMP JUMPDEST PUSH2 0x1580 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x14 ADD LT ISZERO PUSH2 0xCDF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0xD38 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0xDAB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0xE04 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 PUSH1 0x60 DUP2 DUP3 PUSH1 0x1F ADD LT ISZERO PUSH2 0xE58 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x736C6963655F6F766572666C6F77 PUSH1 0x90 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 DUP5 ADD LT ISZERO PUSH2 0xEA0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x736C6963655F6F766572666C6F77 PUSH1 0x90 SHL 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 0xEF8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0xF17 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x0 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xF61 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 0xF50 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0xF38 JUMP JUMPDEST POP POP DUP6 DUP5 MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT 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 0xFD6 JUMPI PUSH1 0x44 DUP5 MLOAD LT ISZERO PUSH2 0xFA3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF9A SWAP1 PUSH2 0x1A2C 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 0xFBD SWAP2 SWAP1 PUSH2 0x17EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF9A SWAP2 SWAP1 PUSH2 0x1A19 JUMP JUMPDEST DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xFEA SWAP2 SWAP1 PUSH2 0x190D 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 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 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP13 SWAP1 SIGNEXTEND DUP2 PUSH2 0x107A JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND SWAP1 SAR SWAP1 POP PUSH1 0x0 PUSH2 0x100 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x10C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10D4 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 0x10EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x10FC JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x1107 JUMPI INVALID JUMPDEST SMOD SWAP1 POP PUSH1 0x0 PUSH1 0x8 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x115B 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 0x1171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x1183 JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND SWAP1 SAR SWAP1 POP PUSH1 0x0 PUSH2 0x100 DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x11C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11DD 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 0x11F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP15 SWAP1 SIGNEXTEND DUP2 PUSH2 0x1205 JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x1210 JUMPI INVALID JUMPDEST SMOD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL DUP16 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1278 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 0x128E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND GT DUP1 ISZERO PUSH2 0x1314 JUMPI POP DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x12D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12E6 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 0x12FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x130E JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1325 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x138C 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 0x13A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND GT DUP1 ISZERO PUSH2 0x1428 JUMPI POP DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x13E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13FA 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 0x1410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP15 SWAP1 SIGNEXTEND DUP2 PUSH2 0x1422 JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1439 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 0x1465 JUMPI POP DUP2 PUSH1 0x1 SIGNEXTEND DUP5 PUSH1 0x1 SIGNEXTEND EQ DUP1 ISZERO PUSH2 0x1465 JUMPI POP DUP1 PUSH1 0xFF AND DUP4 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO PUSH2 0x147B JUMPI DUP4 SWAP10 POP DUP3 SWAP8 POP DUP2 SWAP9 POP DUP1 SWAP7 POP PUSH2 0x1488 JUMP JUMPDEST DUP2 SWAP10 POP DUP1 SWAP8 POP DUP4 SWAP9 POP DUP3 SWAP7 POP JUMPDEST POP POP PUSH1 0x0 NOT PUSH1 0xFF DUP8 AND SHL SWAP2 POP POP JUMPDEST DUP6 PUSH1 0x1 SIGNEXTEND DUP8 PUSH1 0x1 SIGNEXTEND SGT PUSH2 0x1558 JUMPI DUP6 PUSH1 0x1 SIGNEXTEND DUP8 PUSH1 0x1 SIGNEXTEND EQ ISZERO PUSH2 0x14BD JUMPI PUSH1 0x0 NOT PUSH1 0xFF DUP6 DUP2 SUB AND SHR AND JUMPDEST PUSH1 0x0 DUP2 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1507 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x151B 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 0x1531 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND SWAP1 POP PUSH2 0x153F DUP2 PUSH2 0x15A3 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP9 SWAP1 SWAP9 ADD SWAP8 POP POP PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 PUSH1 0x0 NOT PUSH2 0x1496 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1565 JUMPI PUSH1 0x1 DUP9 SUB SWAP8 POP JUMPDEST DUP3 ISZERO PUSH2 0x1572 JUMPI PUSH1 0x1 DUP9 SUB SWAP8 POP JUMPDEST POP POP POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x158C DUP4 DUP4 PUSH2 0xA33 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0xB90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 ISZERO PUSH2 0xB90 JUMPI PUSH1 0x0 NOT DUP4 ADD SWAP1 SWAP3 AND SWAP2 PUSH1 0x1 ADD PUSH2 0x15A7 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 0x15EE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1601 PUSH2 0x15FC DUP3 PUSH2 0x1B4C JUMP JUMPDEST PUSH2 0x1B28 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1615 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 0xB3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1652 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x166F JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP1 POP DUP1 DUP3 CALLDATALOAD PUSH2 0x1680 DUP2 PUSH2 0x1B9E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1690 DUP2 PUSH2 0x1B9E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x16AB PUSH1 0x60 DUP5 ADD PUSH2 0x16DD JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH2 0x16BE DUP2 PUSH2 0x1B9E JUMP JUMPDEST PUSH1 0x80 SWAP2 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xB3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1704 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x170F DUP2 PUSH2 0x1B9E JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x171F DUP2 PUSH2 0x1B9E JUMP JUMPDEST SWAP2 POP PUSH2 0x172D PUSH1 0x40 DUP6 ADD PUSH2 0x16DD JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1748 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x175E JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x176A DUP6 DUP3 DUP7 ADD PUSH2 0x15DE 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 0x178B 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 0x17B0 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 0x17D4 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x17E0 DUP7 DUP3 DUP8 ADD PUSH2 0x15DE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17FB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1811 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x1821 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x182F PUSH2 0x15FC DUP3 PUSH2 0x1B4C JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x1843 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0xC7C DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1B6E JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1865 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x186F DUP4 DUP4 PUSH2 0x1641 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 0x1890 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 MLOAD PUSH2 0x189B DUP2 PUSH2 0x1B9E JUMP JUMPDEST SWAP7 POP PUSH2 0x18A9 PUSH1 0x20 DUP10 ADD PUSH2 0x162F JUMP JUMPDEST SWAP6 POP PUSH2 0x18B7 PUSH1 0x40 DUP10 ADD PUSH2 0x16CB JUMP JUMPDEST SWAP5 POP PUSH2 0x18C5 PUSH1 0x60 DUP10 ADD PUSH2 0x16CB JUMP JUMPDEST SWAP4 POP PUSH2 0x18D3 PUSH1 0x80 DUP10 ADD PUSH2 0x16CB JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x18E8 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x18FD 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 0x1921 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x1933 DUP2 PUSH2 0x1B9E JUMP JUMPDEST SWAP2 POP PUSH2 0x172D PUSH1 0x40 DUP6 ADD PUSH2 0x162F JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1959 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1B6E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SWAP4 DUP5 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT 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 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1A0E PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1941 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x186F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1941 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 0x1AAC JUMPI DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1A87 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 0x1AE8 JUMPI DUP3 MLOAD PUSH4 0xFFFFFFFF AND DUP6 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1AC6 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1B44 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1B60 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1B89 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1B71 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1B98 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1BB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x24 REVERT 0xA5 DIFFICULTY 0xCD PUSH11 0xCFC18F8C2E5ABDDE87380F NOT 0xBC PUSH15 0xAA6A2845247440717F7CDE64736F PUSH13 0x63430007060033000000000000 ","sourceMap":"957:9561:87:-:0;;;1293:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;536:18:64;;;;;;;;565:14;;;;;957:9561:87;;14:179:178;95:13;;-1:-1:-1;;;;;137:31:178;;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;:::-;957:9561:87;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:11232:178","statements":[{"nodeType":"YulBlock","src":"6:3:178","statements":[]},{"body":{"nodeType":"YulBlock","src":"68:431:178","statements":[{"body":{"nodeType":"YulBlock","src":"117:24:178","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"126:5:178"},{"name":"array","nodeType":"YulIdentifier","src":"133:5:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"119:6:178"},"nodeType":"YulFunctionCall","src":"119:20:178"},"nodeType":"YulExpressionStatement","src":"119:20:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"96:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"104:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"92:3:178"},"nodeType":"YulFunctionCall","src":"92:17:178"},{"name":"end","nodeType":"YulIdentifier","src":"111:3:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"88:3:178"},"nodeType":"YulFunctionCall","src":"88:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"81:6:178"},"nodeType":"YulFunctionCall","src":"81:35:178"},"nodeType":"YulIf","src":"78:2:178"},{"nodeType":"YulVariableDeclaration","src":"150:30:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"173:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"160:12:178"},"nodeType":"YulFunctionCall","src":"160:20:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"154:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"189:64:178","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"249:2:178"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"219:29:178"},"nodeType":"YulFunctionCall","src":"219:33:178"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"204:14:178"},"nodeType":"YulFunctionCall","src":"204:49:178"},"variables":[{"name":"array_1","nodeType":"YulTypedName","src":"193:7:178","type":""}]},{"expression":{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"269:7:178"},{"name":"_1","nodeType":"YulIdentifier","src":"278:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"262:6:178"},"nodeType":"YulFunctionCall","src":"262:19:178"},"nodeType":"YulExpressionStatement","src":"262:19:178"},{"body":{"nodeType":"YulBlock","src":"329:24:178","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"338:5:178"},{"name":"array","nodeType":"YulIdentifier","src":"345:5:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"331:6:178"},"nodeType":"YulFunctionCall","src":"331:20:178"},"nodeType":"YulExpressionStatement","src":"331:20:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"304:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"312:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"300:3:178"},"nodeType":"YulFunctionCall","src":"300:15:178"},{"kind":"number","nodeType":"YulLiteral","src":"317:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"296:3:178"},"nodeType":"YulFunctionCall","src":"296:26:178"},{"name":"end","nodeType":"YulIdentifier","src":"324:3:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"293:2:178"},"nodeType":"YulFunctionCall","src":"293:35:178"},"nodeType":"YulIf","src":"290:2:178"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"379:7:178"},{"kind":"number","nodeType":"YulLiteral","src":"388:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"375:3:178"},"nodeType":"YulFunctionCall","src":"375:18:178"},{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"399:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"407:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"395:3:178"},"nodeType":"YulFunctionCall","src":"395:17:178"},{"name":"_1","nodeType":"YulIdentifier","src":"414:2:178"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"362:12:178"},"nodeType":"YulFunctionCall","src":"362:55:178"},"nodeType":"YulExpressionStatement","src":"362:55:178"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"441:7:178"},{"name":"_1","nodeType":"YulIdentifier","src":"450:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"437:3:178"},"nodeType":"YulFunctionCall","src":"437:16:178"},{"kind":"number","nodeType":"YulLiteral","src":"455:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"433:3:178"},"nodeType":"YulFunctionCall","src":"433:27:178"},{"name":"array","nodeType":"YulIdentifier","src":"462:5:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"426:6:178"},"nodeType":"YulFunctionCall","src":"426:42:178"},"nodeType":"YulExpressionStatement","src":"426:42:178"},{"nodeType":"YulAssignment","src":"477:16:178","value":{"name":"array_1","nodeType":"YulIdentifier","src":"486:7:178"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"477:5:178"}]}]},"name":"abi_decode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"42:6:178","type":""},{"name":"end","nodeType":"YulTypedName","src":"50:3:178","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"58:5:178","type":""}],"src":"14:485:178"},{"body":{"nodeType":"YulBlock","src":"564:106:178","statements":[{"nodeType":"YulAssignment","src":"574:22:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"589:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"583:5:178"},"nodeType":"YulFunctionCall","src":"583:13:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"574:5:178"}]},{"body":{"nodeType":"YulBlock","src":"648:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"657:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"660:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"650:6:178"},"nodeType":"YulFunctionCall","src":"650:12:178"},"nodeType":"YulExpressionStatement","src":"650:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"618:5:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"636:1:178","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"639:5:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"625:10:178"},"nodeType":"YulFunctionCall","src":"625:20:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"615:2:178"},"nodeType":"YulFunctionCall","src":"615:31:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"608:6:178"},"nodeType":"YulFunctionCall","src":"608:39:178"},"nodeType":"YulIf","src":"605:2:178"}]},"name":"abi_decode_t_int24_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"543:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"554:5:178","type":""}],"src":"504:166:178"},{"body":{"nodeType":"YulBlock","src":"762:839:178","statements":[{"body":{"nodeType":"YulBlock","src":"806:24:178","statements":[{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"815:5:178"},{"name":"value","nodeType":"YulIdentifier","src":"822:5:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"808:6:178"},"nodeType":"YulFunctionCall","src":"808:20:178"},"nodeType":"YulExpressionStatement","src":"808:20:178"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"783:3:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"788:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"779:3:178"},"nodeType":"YulFunctionCall","src":"779:19:178"},{"kind":"number","nodeType":"YulLiteral","src":"800:4:178","type":"","value":"0xa0"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"775:3:178"},"nodeType":"YulFunctionCall","src":"775:30:178"},"nodeType":"YulIf","src":"772:2:178"},{"nodeType":"YulVariableDeclaration","src":"839:23:178","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"859:2:178","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"853:5:178"},"nodeType":"YulFunctionCall","src":"853:9:178"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"843:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"871:35:178","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"893:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"901:4:178","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"889:3:178"},"nodeType":"YulFunctionCall","src":"889:17:178"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"875:10:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"981:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"983:7:178"},"nodeType":"YulFunctionCall","src":"983:9:178"},"nodeType":"YulExpressionStatement","src":"983:9:178"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"924:10:178"},{"kind":"number","nodeType":"YulLiteral","src":"936:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"921:2:178"},"nodeType":"YulFunctionCall","src":"921:34:178"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"960:10:178"},{"name":"memPtr","nodeType":"YulIdentifier","src":"972:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"957:2:178"},"nodeType":"YulFunctionCall","src":"957:22:178"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"918:2:178"},"nodeType":"YulFunctionCall","src":"918:62:178"},"nodeType":"YulIf","src":"915:2:178"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1010:2:178","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1014:10:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1003:6:178"},"nodeType":"YulFunctionCall","src":"1003:22:178"},"nodeType":"YulExpressionStatement","src":"1003:22:178"},{"nodeType":"YulAssignment","src":"1034:15:178","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1043:6:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1034:5:178"}]},{"nodeType":"YulVariableDeclaration","src":"1058:38:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1086:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1073:12:178"},"nodeType":"YulFunctionCall","src":"1073:23:178"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1062:7:178","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1132:7:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1105:26:178"},"nodeType":"YulFunctionCall","src":"1105:35:178"},"nodeType":"YulExpressionStatement","src":"1105:35:178"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1156:6:178"},{"name":"value_1","nodeType":"YulIdentifier","src":"1164:7:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:178"},"nodeType":"YulFunctionCall","src":"1149:23:178"},"nodeType":"YulExpressionStatement","src":"1149:23:178"},{"nodeType":"YulVariableDeclaration","src":"1181:47:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1213:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1224:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1209:3:178"},"nodeType":"YulFunctionCall","src":"1209:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1196:12:178"},"nodeType":"YulFunctionCall","src":"1196:32:178"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"1185:7:178","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"1264:7:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1237:26:178"},"nodeType":"YulFunctionCall","src":"1237:35:178"},"nodeType":"YulExpressionStatement","src":"1237:35:178"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1292:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"1300:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1288:3:178"},"nodeType":"YulFunctionCall","src":"1288:15:178"},{"name":"value_2","nodeType":"YulIdentifier","src":"1305:7:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1281:6:178"},"nodeType":"YulFunctionCall","src":"1281:32:178"},"nodeType":"YulExpressionStatement","src":"1281:32:178"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1333:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"1341:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1329:3:178"},"nodeType":"YulFunctionCall","src":"1329:15:178"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1363:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1374:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1359:3:178"},"nodeType":"YulFunctionCall","src":"1359:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1346:12:178"},"nodeType":"YulFunctionCall","src":"1346:32:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1322:6:178"},"nodeType":"YulFunctionCall","src":"1322:57:178"},"nodeType":"YulExpressionStatement","src":"1322:57:178"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1399:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"1407:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1395:3:178"},"nodeType":"YulFunctionCall","src":"1395:15:178"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1436:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1447:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1432:3:178"},"nodeType":"YulFunctionCall","src":"1432:18:178"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"1412:19:178"},"nodeType":"YulFunctionCall","src":"1412:39:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1388:6:178"},"nodeType":"YulFunctionCall","src":"1388:64:178"},"nodeType":"YulExpressionStatement","src":"1388:64:178"},{"nodeType":"YulVariableDeclaration","src":"1461:48:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1493:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1504:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1489:3:178"},"nodeType":"YulFunctionCall","src":"1489:19:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1476:12:178"},"nodeType":"YulFunctionCall","src":"1476:33:178"},"variables":[{"name":"value_3","nodeType":"YulTypedName","src":"1465:7:178","type":""}]},{"expression":{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"1545:7:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1518:26:178"},"nodeType":"YulFunctionCall","src":"1518:35:178"},"nodeType":"YulExpressionStatement","src":"1518:35:178"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1573:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"1581:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1569:3:178"},"nodeType":"YulFunctionCall","src":"1569:16:178"},{"name":"value_3","nodeType":"YulIdentifier","src":"1587:7:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1562:6:178"},"nodeType":"YulFunctionCall","src":"1562:33:178"},"nodeType":"YulExpressionStatement","src":"1562:33:178"}]},"name":"abi_decode_t_struct$_QuoteExactInputSingleParams","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"733:9:178","type":""},{"name":"end","nodeType":"YulTypedName","src":"744:3:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"752:5:178","type":""}],"src":"675:926:178"},{"body":{"nodeType":"YulBlock","src":"1667:104:178","statements":[{"nodeType":"YulAssignment","src":"1677:22:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1692:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1686:5:178"},"nodeType":"YulFunctionCall","src":"1686:13:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1677:5:178"}]},{"body":{"nodeType":"YulBlock","src":"1749:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1758:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1761:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1751:6:178"},"nodeType":"YulFunctionCall","src":"1751:12:178"},"nodeType":"YulExpressionStatement","src":"1751:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1721:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1732:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"1739:6:178","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1728:3:178"},"nodeType":"YulFunctionCall","src":"1728:18:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1718:2:178"},"nodeType":"YulFunctionCall","src":"1718:29:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1711:6:178"},"nodeType":"YulFunctionCall","src":"1711:37:178"},"nodeType":"YulIf","src":"1708:2:178"}]},"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1646:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1657:5:178","type":""}],"src":"1606:165:178"},{"body":{"nodeType":"YulBlock","src":"1826:113:178","statements":[{"nodeType":"YulAssignment","src":"1836:29:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1858:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1845:12:178"},"nodeType":"YulFunctionCall","src":"1845:20:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1836:5:178"}]},{"body":{"nodeType":"YulBlock","src":"1917:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1926:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1929:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1919:6:178"},"nodeType":"YulFunctionCall","src":"1919:12:178"},"nodeType":"YulExpressionStatement","src":"1919:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1887:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1898:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"1905:8:178","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1894:3:178"},"nodeType":"YulFunctionCall","src":"1894:20:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1884:2:178"},"nodeType":"YulFunctionCall","src":"1884:31:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1877:6:178"},"nodeType":"YulFunctionCall","src":"1877:39:178"},"nodeType":"YulIf","src":"1874:2:178"}]},"name":"abi_decode_t_uint24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1805:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1816:5:178","type":""}],"src":"1776:163:178"},{"body":{"nodeType":"YulBlock","src":"2047:373:178","statements":[{"body":{"nodeType":"YulBlock","src":"2093:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2102:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2110:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2095:6:178"},"nodeType":"YulFunctionCall","src":"2095:22:178"},"nodeType":"YulExpressionStatement","src":"2095:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2068:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"2077:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2064:3:178"},"nodeType":"YulFunctionCall","src":"2064:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"2089:2:178","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2060:3:178"},"nodeType":"YulFunctionCall","src":"2060:32:178"},"nodeType":"YulIf","src":"2057:2:178"},{"nodeType":"YulVariableDeclaration","src":"2128:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2154:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2141:12:178"},"nodeType":"YulFunctionCall","src":"2141:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2132:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2200:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2173:26:178"},"nodeType":"YulFunctionCall","src":"2173:33:178"},"nodeType":"YulExpressionStatement","src":"2173:33:178"},{"nodeType":"YulAssignment","src":"2215:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"2225:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2215:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"2239:47:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2271:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2282:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2267:3:178"},"nodeType":"YulFunctionCall","src":"2267:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2254:12:178"},"nodeType":"YulFunctionCall","src":"2254:32:178"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"2243:7:178","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2322:7:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2295:26:178"},"nodeType":"YulFunctionCall","src":"2295:35:178"},"nodeType":"YulExpressionStatement","src":"2295:35:178"},{"nodeType":"YulAssignment","src":"2339:17:178","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2349:7:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2339:6:178"}]},{"nodeType":"YulAssignment","src":"2365:49:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2399:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2410:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2395:3:178"},"nodeType":"YulFunctionCall","src":"2395:18:178"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"2375:19:178"},"nodeType":"YulFunctionCall","src":"2375:39:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2365:6:178"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1997:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2008:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2020:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2028:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2036:6:178","type":""}],"src":"1944:476:178"},{"body":{"nodeType":"YulBlock","src":"2521:314:178","statements":[{"body":{"nodeType":"YulBlock","src":"2567:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2576:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2584:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2569:6:178"},"nodeType":"YulFunctionCall","src":"2569:22:178"},"nodeType":"YulExpressionStatement","src":"2569:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2542:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"2551:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2538:3:178"},"nodeType":"YulFunctionCall","src":"2538:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"2563:2:178","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2534:3:178"},"nodeType":"YulFunctionCall","src":"2534:32:178"},"nodeType":"YulIf","src":"2531:2:178"},{"nodeType":"YulVariableDeclaration","src":"2602:37:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2629:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2616:12:178"},"nodeType":"YulFunctionCall","src":"2616:23:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2606:6:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2682:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2691:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2699:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2684:6:178"},"nodeType":"YulFunctionCall","src":"2684:22:178"},"nodeType":"YulExpressionStatement","src":"2684:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2654:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"2662:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2651:2:178"},"nodeType":"YulFunctionCall","src":"2651:30:178"},"nodeType":"YulIf","src":"2648:2:178"},{"nodeType":"YulAssignment","src":"2717:61:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2750:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"2761:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2746:3:178"},"nodeType":"YulFunctionCall","src":"2746:22:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2770:7:178"}],"functionName":{"name":"abi_decode_t_bytes","nodeType":"YulIdentifier","src":"2727:18:178"},"nodeType":"YulFunctionCall","src":"2727:51:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2717:6:178"}]},{"nodeType":"YulAssignment","src":"2787:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2814:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2825:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2810:3:178"},"nodeType":"YulFunctionCall","src":"2810:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2797:12:178"},"nodeType":"YulFunctionCall","src":"2797:32:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2787:6:178"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptrt_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2479:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2490:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2502:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2510:6:178","type":""}],"src":"2425:410:178"},{"body":{"nodeType":"YulBlock","src":"2936:157:178","statements":[{"body":{"nodeType":"YulBlock","src":"2982:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2991:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2999:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2984:6:178"},"nodeType":"YulFunctionCall","src":"2984:22:178"},"nodeType":"YulExpressionStatement","src":"2984:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2957:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"2966:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2953:3:178"},"nodeType":"YulFunctionCall","src":"2953:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"2978:2:178","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2949:3:178"},"nodeType":"YulFunctionCall","src":"2949:32:178"},"nodeType":"YulIf","src":"2946:2:178"},{"nodeType":"YulAssignment","src":"3017:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3033:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3027:5:178"},"nodeType":"YulFunctionCall","src":"3027:16:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3017:6:178"}]},{"nodeType":"YulAssignment","src":"3052:35:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3072:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3083:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3068:3:178"},"nodeType":"YulFunctionCall","src":"3068:18:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3062:5:178"},"nodeType":"YulFunctionCall","src":"3062:25:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3052:6:178"}]}]},"name":"abi_decode_tuple_t_int256t_int256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2894:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2905:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2917:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2925:6:178","type":""}],"src":"2840:253:178"},{"body":{"nodeType":"YulBlock","src":"3209:365:178","statements":[{"body":{"nodeType":"YulBlock","src":"3255:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3264:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3272:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3257:6:178"},"nodeType":"YulFunctionCall","src":"3257:22:178"},"nodeType":"YulExpressionStatement","src":"3257:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3230:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"3239:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3226:3:178"},"nodeType":"YulFunctionCall","src":"3226:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"3251:2:178","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3222:3:178"},"nodeType":"YulFunctionCall","src":"3222:32:178"},"nodeType":"YulIf","src":"3219:2:178"},{"nodeType":"YulAssignment","src":"3290:33:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3313:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3300:12:178"},"nodeType":"YulFunctionCall","src":"3300:23:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3290:6:178"}]},{"nodeType":"YulAssignment","src":"3332:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3359:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3370:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3355:3:178"},"nodeType":"YulFunctionCall","src":"3355:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3342:12:178"},"nodeType":"YulFunctionCall","src":"3342:32:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3332:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"3383:46:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3414:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3425:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3410:3:178"},"nodeType":"YulFunctionCall","src":"3410:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3397:12:178"},"nodeType":"YulFunctionCall","src":"3397:32:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3387:6:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3472:26:178","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"3481:6:178"},{"name":"value2","nodeType":"YulIdentifier","src":"3489:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3474:6:178"},"nodeType":"YulFunctionCall","src":"3474:22:178"},"nodeType":"YulExpressionStatement","src":"3474:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3444:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"3452:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3441:2:178"},"nodeType":"YulFunctionCall","src":"3441:30:178"},"nodeType":"YulIf","src":"3438:2:178"},{"nodeType":"YulAssignment","src":"3507:61:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3540:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"3551:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3536:3:178"},"nodeType":"YulFunctionCall","src":"3536:22:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3560:7:178"}],"functionName":{"name":"abi_decode_t_bytes","nodeType":"YulIdentifier","src":"3517:18:178"},"nodeType":"YulFunctionCall","src":"3517:51:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3507:6:178"}]}]},"name":"abi_decode_tuple_t_int256t_int256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3159:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3170:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3182:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3190:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3198:6:178","type":""}],"src":"3098:476:178"},{"body":{"nodeType":"YulBlock","src":"3670:585:178","statements":[{"body":{"nodeType":"YulBlock","src":"3716:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3725:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3733:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3718:6:178"},"nodeType":"YulFunctionCall","src":"3718:22:178"},"nodeType":"YulExpressionStatement","src":"3718:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3691:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"3700:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3687:3:178"},"nodeType":"YulFunctionCall","src":"3687:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"3712:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3683:3:178"},"nodeType":"YulFunctionCall","src":"3683:32:178"},"nodeType":"YulIf","src":"3680:2:178"},{"nodeType":"YulVariableDeclaration","src":"3751:30:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3771:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3765:5:178"},"nodeType":"YulFunctionCall","src":"3765:16:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3755:6:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3824:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3833:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3841:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3826:6:178"},"nodeType":"YulFunctionCall","src":"3826:22:178"},"nodeType":"YulExpressionStatement","src":"3826:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3796:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"3804:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3793:2:178"},"nodeType":"YulFunctionCall","src":"3793:30:178"},"nodeType":"YulIf","src":"3790:2:178"},{"nodeType":"YulVariableDeclaration","src":"3859:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3873:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"3884:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3869:3:178"},"nodeType":"YulFunctionCall","src":"3869:22:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3863:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3939:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3948:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3956:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3941:6:178"},"nodeType":"YulFunctionCall","src":"3941:22:178"},"nodeType":"YulExpressionStatement","src":"3941:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3918:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"3922:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3914:3:178"},"nodeType":"YulFunctionCall","src":"3914:13:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3929:7:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3910:3:178"},"nodeType":"YulFunctionCall","src":"3910:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3903:6:178"},"nodeType":"YulFunctionCall","src":"3903:35:178"},"nodeType":"YulIf","src":"3900:2:178"},{"nodeType":"YulVariableDeclaration","src":"3974:19:178","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3990:2:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3984:5:178"},"nodeType":"YulFunctionCall","src":"3984:9:178"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3978:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4002:62:178","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4060:2:178"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"4030:29:178"},"nodeType":"YulFunctionCall","src":"4030:33:178"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"4015:14:178"},"nodeType":"YulFunctionCall","src":"4015:49:178"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"4006:5:178","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"4080:5:178"},{"name":"_2","nodeType":"YulIdentifier","src":"4087:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4073:6:178"},"nodeType":"YulFunctionCall","src":"4073:17:178"},"nodeType":"YulExpressionStatement","src":"4073:17:178"},{"body":{"nodeType":"YulBlock","src":"4136:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4145:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"4153:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4138:6:178"},"nodeType":"YulFunctionCall","src":"4138:22:178"},"nodeType":"YulExpressionStatement","src":"4138:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"4113:2:178"},{"name":"_2","nodeType":"YulIdentifier","src":"4117:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4109:3:178"},"nodeType":"YulFunctionCall","src":"4109:11:178"},{"kind":"number","nodeType":"YulLiteral","src":"4122:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4105:3:178"},"nodeType":"YulFunctionCall","src":"4105:20:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4127:7:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4102:2:178"},"nodeType":"YulFunctionCall","src":"4102:33:178"},"nodeType":"YulIf","src":"4099:2:178"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"4197:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"4201:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4193:3:178"},"nodeType":"YulFunctionCall","src":"4193:11:178"},{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"4210:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"4217:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4206:3:178"},"nodeType":"YulFunctionCall","src":"4206:14:178"},{"name":"_2","nodeType":"YulIdentifier","src":"4222:2:178"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"4171:21:178"},"nodeType":"YulFunctionCall","src":"4171:54:178"},"nodeType":"YulExpressionStatement","src":"4171:54:178"},{"nodeType":"YulAssignment","src":"4234:15:178","value":{"name":"array","nodeType":"YulIdentifier","src":"4244:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4234:6:178"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3636:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3647:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3659:6:178","type":""}],"src":"3579:676:178"},{"body":{"nodeType":"YulBlock","src":"4376:166:178","statements":[{"body":{"nodeType":"YulBlock","src":"4423:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4432:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"4440:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4425:6:178"},"nodeType":"YulFunctionCall","src":"4425:22:178"},"nodeType":"YulExpressionStatement","src":"4425:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4397:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"4406:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4393:3:178"},"nodeType":"YulFunctionCall","src":"4393:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"4418:3:178","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4389:3:178"},"nodeType":"YulFunctionCall","src":"4389:33:178"},"nodeType":"YulIf","src":"4386:2:178"},{"nodeType":"YulAssignment","src":"4458:78:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4517:9:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4528:7:178"}],"functionName":{"name":"abi_decode_t_struct$_QuoteExactInputSingleParams","nodeType":"YulIdentifier","src":"4468:48:178"},"nodeType":"YulFunctionCall","src":"4468:68:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4458:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_QuoteExactInputSingleParams_$15779_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4342:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4353:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4365:6:178","type":""}],"src":"4260:282:178"},{"body":{"nodeType":"YulBlock","src":"4664:166:178","statements":[{"body":{"nodeType":"YulBlock","src":"4711:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4720:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"4728:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4713:6:178"},"nodeType":"YulFunctionCall","src":"4713:22:178"},"nodeType":"YulExpressionStatement","src":"4713:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4685:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"4694:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4681:3:178"},"nodeType":"YulFunctionCall","src":"4681:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"4706:3:178","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4677:3:178"},"nodeType":"YulFunctionCall","src":"4677:33:178"},"nodeType":"YulIf","src":"4674:2:178"},{"nodeType":"YulAssignment","src":"4746:78:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4805:9:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4816:7:178"}],"functionName":{"name":"abi_decode_t_struct$_QuoteExactInputSingleParams","nodeType":"YulIdentifier","src":"4756:48:178"},"nodeType":"YulFunctionCall","src":"4756:68:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4746:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_QuoteExactOutputSingleParams_$15822_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4630:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4641:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4653:6:178","type":""}],"src":"4547:283:178"},{"body":{"nodeType":"YulBlock","src":"5008:772:178","statements":[{"body":{"nodeType":"YulBlock","src":"5055:26:178","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"5064:6:178"},{"name":"value2","nodeType":"YulIdentifier","src":"5072:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5057:6:178"},"nodeType":"YulFunctionCall","src":"5057:22:178"},"nodeType":"YulExpressionStatement","src":"5057:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5029:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"5038:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5025:3:178"},"nodeType":"YulFunctionCall","src":"5025:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"5050:3:178","type":"","value":"224"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5021:3:178"},"nodeType":"YulFunctionCall","src":"5021:33:178"},"nodeType":"YulIf","src":"5018:2:178"},{"nodeType":"YulVariableDeclaration","src":"5090:29:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5109:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5103:5:178"},"nodeType":"YulFunctionCall","src":"5103:16:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"5094:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5155:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"5128:26:178"},"nodeType":"YulFunctionCall","src":"5128:33:178"},"nodeType":"YulExpressionStatement","src":"5128:33:178"},{"nodeType":"YulAssignment","src":"5170:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"5180:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5170:6:178"}]},{"nodeType":"YulAssignment","src":"5194:59:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5238:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5249:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5234:3:178"},"nodeType":"YulFunctionCall","src":"5234:18:178"}],"functionName":{"name":"abi_decode_t_int24_fromMemory","nodeType":"YulIdentifier","src":"5204:29:178"},"nodeType":"YulFunctionCall","src":"5204:49:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5194:6:178"}]},{"nodeType":"YulAssignment","src":"5262:60:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5307:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5318:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5303:3:178"},"nodeType":"YulFunctionCall","src":"5303:18:178"}],"functionName":{"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulIdentifier","src":"5272:30:178"},"nodeType":"YulFunctionCall","src":"5272:50:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5262:6:178"}]},{"nodeType":"YulAssignment","src":"5331:60:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5376:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5387:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5372:3:178"},"nodeType":"YulFunctionCall","src":"5372:18:178"}],"functionName":{"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulIdentifier","src":"5341:30:178"},"nodeType":"YulFunctionCall","src":"5341:50:178"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"5331:6:178"}]},{"nodeType":"YulAssignment","src":"5400:61:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5445:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5456:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5441:3:178"},"nodeType":"YulFunctionCall","src":"5441:19:178"}],"functionName":{"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulIdentifier","src":"5410:30:178"},"nodeType":"YulFunctionCall","src":"5410:51:178"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"5400:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"5470:41:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5495:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5506:3:178","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5491:3:178"},"nodeType":"YulFunctionCall","src":"5491:19:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5485:5:178"},"nodeType":"YulFunctionCall","src":"5485:26:178"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"5474:7:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"5563:26:178","statements":[{"expression":{"arguments":[{"name":"value5","nodeType":"YulIdentifier","src":"5572:6:178"},{"name":"value5","nodeType":"YulIdentifier","src":"5580:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5565:6:178"},"nodeType":"YulFunctionCall","src":"5565:22:178"},"nodeType":"YulExpressionStatement","src":"5565:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"5533:7:178"},{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"5546:7:178"},{"kind":"number","nodeType":"YulLiteral","src":"5555:4:178","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5542:3:178"},"nodeType":"YulFunctionCall","src":"5542:18:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5530:2:178"},"nodeType":"YulFunctionCall","src":"5530:31:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5523:6:178"},"nodeType":"YulFunctionCall","src":"5523:39:178"},"nodeType":"YulIf","src":"5520:2:178"},{"nodeType":"YulAssignment","src":"5598:17:178","value":{"name":"value_1","nodeType":"YulIdentifier","src":"5608:7:178"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"5598:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"5624:41:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5649:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5660:3:178","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5645:3:178"},"nodeType":"YulFunctionCall","src":"5645:19:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5639:5:178"},"nodeType":"YulFunctionCall","src":"5639:26:178"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"5628:7:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"5722:26:178","statements":[{"expression":{"arguments":[{"name":"value6","nodeType":"YulIdentifier","src":"5731:6:178"},{"name":"value6","nodeType":"YulIdentifier","src":"5739:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5724:6:178"},"nodeType":"YulFunctionCall","src":"5724:22:178"},"nodeType":"YulExpressionStatement","src":"5724:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"5687:7:178"},{"arguments":[{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"5710:7:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5703:6:178"},"nodeType":"YulFunctionCall","src":"5703:15:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5696:6:178"},"nodeType":"YulFunctionCall","src":"5696:23:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5684:2:178"},"nodeType":"YulFunctionCall","src":"5684:36:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5677:6:178"},"nodeType":"YulFunctionCall","src":"5677:44:178"},"nodeType":"YulIf","src":"5674:2:178"},{"nodeType":"YulAssignment","src":"5757:17:178","value":{"name":"value_2","nodeType":"YulIdentifier","src":"5767:7:178"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"5757:6:178"}]}]},"name":"abi_decode_tuple_t_uint160t_int24t_uint16t_uint16t_uint16t_uint8t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4926:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4937:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4949:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4957:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4965:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4973:6:178","type":""},{"name":"value4","nodeType":"YulTypedName","src":"4981:6:178","type":""},{"name":"value5","nodeType":"YulTypedName","src":"4989:6:178","type":""},{"name":"value6","nodeType":"YulTypedName","src":"4997:6:178","type":""}],"src":"4835:945:178"},{"body":{"nodeType":"YulBlock","src":"5898:294:178","statements":[{"body":{"nodeType":"YulBlock","src":"5944:26:178","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"5953:6:178"},{"name":"value2","nodeType":"YulIdentifier","src":"5961:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5946:6:178"},"nodeType":"YulFunctionCall","src":"5946:22:178"},"nodeType":"YulExpressionStatement","src":"5946:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5919:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"5928:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5915:3:178"},"nodeType":"YulFunctionCall","src":"5915:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"5940:2:178","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5911:3:178"},"nodeType":"YulFunctionCall","src":"5911:32:178"},"nodeType":"YulIf","src":"5908:2:178"},{"nodeType":"YulAssignment","src":"5979:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5995:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5989:5:178"},"nodeType":"YulFunctionCall","src":"5989:16:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5979:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"6014:38:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6037:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"6048:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6033:3:178"},"nodeType":"YulFunctionCall","src":"6033:18:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6027:5:178"},"nodeType":"YulFunctionCall","src":"6027:25:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6018:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6088:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"6061:26:178"},"nodeType":"YulFunctionCall","src":"6061:33:178"},"nodeType":"YulExpressionStatement","src":"6061:33:178"},{"nodeType":"YulAssignment","src":"6103:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"6113:5:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6103:6:178"}]},{"nodeType":"YulAssignment","src":"6127:59:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6171:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"6182:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6167:3:178"},"nodeType":"YulFunctionCall","src":"6167:18:178"}],"functionName":{"name":"abi_decode_t_int24_fromMemory","nodeType":"YulIdentifier","src":"6137:29:178"},"nodeType":"YulFunctionCall","src":"6137:49:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"6127:6:178"}]}]},"name":"abi_decode_tuple_t_uint256t_uint160t_int24_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5848:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5859:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5871:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5879:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5887:6:178","type":""}],"src":"5785:407:178"},{"body":{"nodeType":"YulBlock","src":"6248:208:178","statements":[{"nodeType":"YulVariableDeclaration","src":"6258:26:178","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6278:5:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6272:5:178"},"nodeType":"YulFunctionCall","src":"6272:12:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6262:6:178","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6300:3:178"},{"name":"length","nodeType":"YulIdentifier","src":"6305:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6293:6:178"},"nodeType":"YulFunctionCall","src":"6293:19:178"},"nodeType":"YulExpressionStatement","src":"6293:19:178"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6347:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"6354:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6343:3:178"},"nodeType":"YulFunctionCall","src":"6343:16:178"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6365:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"6370:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6361:3:178"},"nodeType":"YulFunctionCall","src":"6361:14:178"},{"name":"length","nodeType":"YulIdentifier","src":"6377:6:178"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"6321:21:178"},"nodeType":"YulFunctionCall","src":"6321:63:178"},"nodeType":"YulExpressionStatement","src":"6321:63:178"},{"nodeType":"YulAssignment","src":"6393:57:178","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6408:3:178"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6421:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6429:2:178","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6417:3:178"},"nodeType":"YulFunctionCall","src":"6417:15:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6438:2:178","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6434:3:178"},"nodeType":"YulFunctionCall","src":"6434:7:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6413:3:178"},"nodeType":"YulFunctionCall","src":"6413:29:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6404:3:178"},"nodeType":"YulFunctionCall","src":"6404:39:178"},{"kind":"number","nodeType":"YulLiteral","src":"6445:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6400:3:178"},"nodeType":"YulFunctionCall","src":"6400:50:178"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6393:3:178"}]}]},"name":"abi_encode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6225:5:178","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6232:3:178","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6240:3:178","type":""}],"src":"6197:259:178"},{"body":{"nodeType":"YulBlock","src":"6634:258:178","statements":[{"nodeType":"YulVariableDeclaration","src":"6644:41:178","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6658:26:178","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6654:3:178"},"nodeType":"YulFunctionCall","src":"6654:31:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6648:2:178","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6701:3:178"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6714:2:178","type":"","value":"96"},{"name":"value0","nodeType":"YulIdentifier","src":"6718:6:178"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6710:3:178"},"nodeType":"YulFunctionCall","src":"6710:15:178"},{"name":"_1","nodeType":"YulIdentifier","src":"6727:2:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6706:3:178"},"nodeType":"YulFunctionCall","src":"6706:24:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6694:6:178"},"nodeType":"YulFunctionCall","src":"6694:37:178"},"nodeType":"YulExpressionStatement","src":"6694:37:178"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6751:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"6756:2:178","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6747:3:178"},"nodeType":"YulFunctionCall","src":"6747:12:178"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6769:3:178","type":"","value":"232"},{"name":"value1","nodeType":"YulIdentifier","src":"6774:6:178"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6765:3:178"},"nodeType":"YulFunctionCall","src":"6765:16:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6787:3:178","type":"","value":"232"},{"kind":"number","nodeType":"YulLiteral","src":"6792:8:178","type":"","value":"16777215"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6783:3:178"},"nodeType":"YulFunctionCall","src":"6783:18:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6761:3:178"},"nodeType":"YulFunctionCall","src":"6761:41:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6740:6:178"},"nodeType":"YulFunctionCall","src":"6740:63:178"},"nodeType":"YulExpressionStatement","src":"6740:63:178"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6823:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"6828:2:178","type":"","value":"23"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6819:3:178"},"nodeType":"YulFunctionCall","src":"6819:12:178"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6841:2:178","type":"","value":"96"},{"name":"value2","nodeType":"YulIdentifier","src":"6845:6:178"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6837:3:178"},"nodeType":"YulFunctionCall","src":"6837:15:178"},{"name":"_1","nodeType":"YulIdentifier","src":"6854:2:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6833:3:178"},"nodeType":"YulFunctionCall","src":"6833:24:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6812:6:178"},"nodeType":"YulFunctionCall","src":"6812:46:178"},"nodeType":"YulExpressionStatement","src":"6812:46:178"},{"nodeType":"YulAssignment","src":"6867:19:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6878:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"6883:2:178","type":"","value":"43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6874:3:178"},"nodeType":"YulFunctionCall","src":"6874:12:178"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6867:3:178"}]}]},"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":"6594:3:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6599:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6607:6:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6615:6:178","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6626:3:178","type":""}],"src":"6461:431:178"},{"body":{"nodeType":"YulBlock","src":"6998:125:178","statements":[{"nodeType":"YulAssignment","src":"7008:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7020:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"7031:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7016:3:178"},"nodeType":"YulFunctionCall","src":"7016:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7008:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7050:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7065:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"7073:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7061:3:178"},"nodeType":"YulFunctionCall","src":"7061:55:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7043:6:178"},"nodeType":"YulFunctionCall","src":"7043:74:178"},"nodeType":"YulExpressionStatement","src":"7043:74:178"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6967:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6978:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6989:4:178","type":""}],"src":"6897:226:178"},{"body":{"nodeType":"YulBlock","src":"7351:370:178","statements":[{"nodeType":"YulVariableDeclaration","src":"7361:52:178","value":{"kind":"number","nodeType":"YulLiteral","src":"7371:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7365:2:178","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7429:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7444:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"7452:2:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7440:3:178"},"nodeType":"YulFunctionCall","src":"7440:15:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7422:6:178"},"nodeType":"YulFunctionCall","src":"7422:34:178"},"nodeType":"YulExpressionStatement","src":"7422:34:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7476:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"7487:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7472:3:178"},"nodeType":"YulFunctionCall","src":"7472:18:178"},{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7506:6:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7499:6:178"},"nodeType":"YulFunctionCall","src":"7499:14:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7492:6:178"},"nodeType":"YulFunctionCall","src":"7492:22:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7465:6:178"},"nodeType":"YulFunctionCall","src":"7465:50:178"},"nodeType":"YulExpressionStatement","src":"7465:50:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7535:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"7546:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7531:3:178"},"nodeType":"YulFunctionCall","src":"7531:18:178"},{"name":"value2","nodeType":"YulIdentifier","src":"7551:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7524:6:178"},"nodeType":"YulFunctionCall","src":"7524:34:178"},"nodeType":"YulExpressionStatement","src":"7524:34:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7578:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"7589:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7574:3:178"},"nodeType":"YulFunctionCall","src":"7574:18:178"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"7598:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"7606:2:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7594:3:178"},"nodeType":"YulFunctionCall","src":"7594:15:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7567:6:178"},"nodeType":"YulFunctionCall","src":"7567:43:178"},"nodeType":"YulExpressionStatement","src":"7567:43:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7630:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"7641:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7626:3:178"},"nodeType":"YulFunctionCall","src":"7626:19:178"},{"kind":"number","nodeType":"YulLiteral","src":"7647:3:178","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7619:6:178"},"nodeType":"YulFunctionCall","src":"7619:32:178"},"nodeType":"YulExpressionStatement","src":"7619:32:178"},{"nodeType":"YulAssignment","src":"7660:55:178","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"7687:6:178"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7699:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"7710:3:178","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7695:3:178"},"nodeType":"YulFunctionCall","src":"7695:19:178"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"7668:18:178"},"nodeType":"YulFunctionCall","src":"7668:47:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7660:4:178"}]}]},"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":"7288:9:178","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7299:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7307:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7315:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7323:6:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7331:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7342:4:178","type":""}],"src":"7128:593:178"},{"body":{"nodeType":"YulBlock","src":"7847:125:178","statements":[{"nodeType":"YulAssignment","src":"7857:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7869:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"7880:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7865:3:178"},"nodeType":"YulFunctionCall","src":"7865:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7857:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7899:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7914:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"7922:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7910:3:178"},"nodeType":"YulFunctionCall","src":"7910:55:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7892:6:178"},"nodeType":"YulFunctionCall","src":"7892:74:178"},"nodeType":"YulExpressionStatement","src":"7892:74:178"}]},"name":"abi_encode_tuple_t_contract$_IElixirPool_$3273__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7816:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7827:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7838:4:178","type":""}],"src":"7726:246:178"},{"body":{"nodeType":"YulBlock","src":"8098:100:178","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8115:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"8126:2:178","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8108:6:178"},"nodeType":"YulFunctionCall","src":"8108:21:178"},"nodeType":"YulExpressionStatement","src":"8108:21:178"},{"nodeType":"YulAssignment","src":"8138:54:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8165:6:178"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8177:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"8188:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8173:3:178"},"nodeType":"YulFunctionCall","src":"8173:18:178"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"8146:18:178"},"nodeType":"YulFunctionCall","src":"8146:46:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8138:4:178"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8067:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8078:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8089:4:178","type":""}],"src":"7977:221:178"},{"body":{"nodeType":"YulBlock","src":"8377:166:178","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8394:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"8405:2:178","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8387:6:178"},"nodeType":"YulFunctionCall","src":"8387:21:178"},"nodeType":"YulExpressionStatement","src":"8387:21:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8428:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"8439:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8424:3:178"},"nodeType":"YulFunctionCall","src":"8424:18:178"},{"kind":"number","nodeType":"YulLiteral","src":"8444:2:178","type":"","value":"16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8417:6:178"},"nodeType":"YulFunctionCall","src":"8417:30:178"},"nodeType":"YulExpressionStatement","src":"8417:30:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8467:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"8478:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8463:3:178"},"nodeType":"YulFunctionCall","src":"8463:18:178"},{"kind":"string","nodeType":"YulLiteral","src":"8483:18:178","type":"","value":"Unexpected error"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8456:6:178"},"nodeType":"YulFunctionCall","src":"8456:46:178"},"nodeType":"YulExpressionStatement","src":"8456:46:178"},{"nodeType":"YulAssignment","src":"8511:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8523:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"8534:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8519:3:178"},"nodeType":"YulFunctionCall","src":"8519:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8511:4:178"}]}]},"name":"abi_encode_tuple_t_stringliteral_9b951eb3fb3742579e39d15610bb1800acf108358e69a1cabf56fc48cbe86cff__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8354:9:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8368:4:178","type":""}],"src":"8203:340:178"},{"body":{"nodeType":"YulBlock","src":"8831:1082:178","statements":[{"nodeType":"YulVariableDeclaration","src":"8841:33:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8859:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"8870:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8855:3:178"},"nodeType":"YulFunctionCall","src":"8855:19:178"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"8845:6:178","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8890:9:178"},{"name":"value0","nodeType":"YulIdentifier","src":"8901:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8883:6:178"},"nodeType":"YulFunctionCall","src":"8883:25:178"},"nodeType":"YulExpressionStatement","src":"8883:25:178"},{"nodeType":"YulVariableDeclaration","src":"8917:12:178","value":{"kind":"number","nodeType":"YulLiteral","src":"8927:2:178","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8921:2:178","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8949:9:178"},{"name":"_1","nodeType":"YulIdentifier","src":"8960:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8945:3:178"},"nodeType":"YulFunctionCall","src":"8945:18:178"},{"kind":"number","nodeType":"YulLiteral","src":"8965:3:178","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8938:6:178"},"nodeType":"YulFunctionCall","src":"8938:31:178"},"nodeType":"YulExpressionStatement","src":"8938:31:178"},{"nodeType":"YulVariableDeclaration","src":"8978:17:178","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"8989:6:178"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"8982:3:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9004:27:178","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9024:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9018:5:178"},"nodeType":"YulFunctionCall","src":"9018:13:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9008:6:178","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"9047:6:178"},{"name":"length","nodeType":"YulIdentifier","src":"9055:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9040:6:178"},"nodeType":"YulFunctionCall","src":"9040:22:178"},"nodeType":"YulExpressionStatement","src":"9040:22:178"},{"nodeType":"YulAssignment","src":"9071:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9082:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"9093:3:178","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9078:3:178"},"nodeType":"YulFunctionCall","src":"9078:19:178"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9071:3:178"}]},{"nodeType":"YulVariableDeclaration","src":"9106:29:178","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9124:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"9132:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9120:3:178"},"nodeType":"YulFunctionCall","src":"9120:15:178"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"9110:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9144:13:178","value":{"name":"tail","nodeType":"YulIdentifier","src":"9153:4:178"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"9148:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"9215:169:178","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9236:3:178"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"9251:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9245:5:178"},"nodeType":"YulFunctionCall","src":"9245:13:178"},{"kind":"number","nodeType":"YulLiteral","src":"9260:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9241:3:178"},"nodeType":"YulFunctionCall","src":"9241:62:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9229:6:178"},"nodeType":"YulFunctionCall","src":"9229:75:178"},"nodeType":"YulExpressionStatement","src":"9229:75:178"},{"nodeType":"YulAssignment","src":"9317:19:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9328:3:178"},{"name":"_1","nodeType":"YulIdentifier","src":"9333:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9324:3:178"},"nodeType":"YulFunctionCall","src":"9324:12:178"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9317:3:178"}]},{"nodeType":"YulAssignment","src":"9349:25:178","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"9363:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"9371:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9359:3:178"},"nodeType":"YulFunctionCall","src":"9359:15:178"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"9349:6:178"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9177:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"9180:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9174:2:178"},"nodeType":"YulFunctionCall","src":"9174:13:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9188:18:178","statements":[{"nodeType":"YulAssignment","src":"9190:14:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9199:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"9202:1:178","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9195:3:178"},"nodeType":"YulFunctionCall","src":"9195:9:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"9190:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"9170:3:178","statements":[]},"src":"9166:218:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9404:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"9415:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9400:3:178"},"nodeType":"YulFunctionCall","src":"9400:18:178"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9424:3:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"9429:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9420:3:178"},"nodeType":"YulFunctionCall","src":"9420:19:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9393:6:178"},"nodeType":"YulFunctionCall","src":"9393:47:178"},"nodeType":"YulExpressionStatement","src":"9393:47:178"},{"nodeType":"YulVariableDeclaration","src":"9449:16:178","value":{"name":"pos","nodeType":"YulIdentifier","src":"9462:3:178"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"9453:5:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9474:29:178","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"9496:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9490:5:178"},"nodeType":"YulFunctionCall","src":"9490:13:178"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"9478:8:178","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9519:3:178"},{"name":"length_1","nodeType":"YulIdentifier","src":"9524:8:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9512:6:178"},"nodeType":"YulFunctionCall","src":"9512:21:178"},"nodeType":"YulExpressionStatement","src":"9512:21:178"},{"nodeType":"YulAssignment","src":"9542:21:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9555:3:178"},{"name":"_1","nodeType":"YulIdentifier","src":"9560:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9551:3:178"},"nodeType":"YulFunctionCall","src":"9551:12:178"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"9542:5:178"}]},{"nodeType":"YulVariableDeclaration","src":"9572:31:178","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"9592:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"9600:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9588:3:178"},"nodeType":"YulFunctionCall","src":"9588:15:178"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"9576:8:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9612:15:178","value":{"name":"tail","nodeType":"YulIdentifier","src":"9623:4:178"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"9616:3:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"9693:149:178","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"9714:5:178"},{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"9731:8:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9725:5:178"},"nodeType":"YulFunctionCall","src":"9725:15:178"},{"kind":"number","nodeType":"YulLiteral","src":"9742:10:178","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9721:3:178"},"nodeType":"YulFunctionCall","src":"9721:32:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9707:6:178"},"nodeType":"YulFunctionCall","src":"9707:47:178"},"nodeType":"YulExpressionStatement","src":"9707:47:178"},{"nodeType":"YulAssignment","src":"9767:23:178","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"9780:5:178"},{"name":"_1","nodeType":"YulIdentifier","src":"9787:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9776:3:178"},"nodeType":"YulFunctionCall","src":"9776:14:178"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"9767:5:178"}]},{"nodeType":"YulAssignment","src":"9803:29:178","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"9819:8:178"},{"name":"_1","nodeType":"YulIdentifier","src":"9829:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9815:3:178"},"nodeType":"YulFunctionCall","src":"9815:17:178"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"9803:8:178"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"9647:3:178"},{"name":"length_1","nodeType":"YulIdentifier","src":"9652:8:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9644:2:178"},"nodeType":"YulFunctionCall","src":"9644:17:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9662:22:178","statements":[{"nodeType":"YulAssignment","src":"9664:18:178","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"9675:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"9680:1:178","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9671:3:178"},"nodeType":"YulFunctionCall","src":"9671:11:178"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"9664:3:178"}]}]},"pre":{"nodeType":"YulBlock","src":"9640:3:178","statements":[]},"src":"9636:206:178"},{"nodeType":"YulAssignment","src":"9851:13:178","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"9859:5:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9851:4:178"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9884:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"9895:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9880:3:178"},"nodeType":"YulFunctionCall","src":"9880:18:178"},{"name":"value3","nodeType":"YulIdentifier","src":"9900:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9873:6:178"},"nodeType":"YulFunctionCall","src":"9873:34:178"},"nodeType":"YulExpressionStatement","src":"9873:34:178"}]},"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":"8776:9:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8787:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8795:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8803:6:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8811:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8822:4:178","type":""}],"src":"8548:1365:178"},{"body":{"nodeType":"YulBlock","src":"10101:272:178","statements":[{"nodeType":"YulAssignment","src":"10111:27:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10123:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"10134:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10119:3:178"},"nodeType":"YulFunctionCall","src":"10119:19:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10111:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10154:9:178"},{"name":"value0","nodeType":"YulIdentifier","src":"10165:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10147:6:178"},"nodeType":"YulFunctionCall","src":"10147:25:178"},"nodeType":"YulExpressionStatement","src":"10147:25:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10192:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"10203:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10188:3:178"},"nodeType":"YulFunctionCall","src":"10188:18:178"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"10212:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"10220:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10208:3:178"},"nodeType":"YulFunctionCall","src":"10208:55:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10181:6:178"},"nodeType":"YulFunctionCall","src":"10181:83:178"},"nodeType":"YulExpressionStatement","src":"10181:83:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10284:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"10295:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10280:3:178"},"nodeType":"YulFunctionCall","src":"10280:18:178"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"10304:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"10312:10:178","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10300:3:178"},"nodeType":"YulFunctionCall","src":"10300:23:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10273:6:178"},"nodeType":"YulFunctionCall","src":"10273:51:178"},"nodeType":"YulExpressionStatement","src":"10273:51:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10344:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"10355:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10340:3:178"},"nodeType":"YulFunctionCall","src":"10340:18:178"},{"name":"value3","nodeType":"YulIdentifier","src":"10360:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10333:6:178"},"nodeType":"YulFunctionCall","src":"10333:34:178"},"nodeType":"YulExpressionStatement","src":"10333:34:178"}]},"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":"10046:9:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"10057:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10065:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10073:6:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10081:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10092:4:178","type":""}],"src":"9918:455:178"},{"body":{"nodeType":"YulBlock","src":"10422:198:178","statements":[{"nodeType":"YulAssignment","src":"10432:19:178","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10448:2:178","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10442:5:178"},"nodeType":"YulFunctionCall","src":"10442:9:178"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"10432:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"10460:35:178","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"10482:6:178"},{"name":"size","nodeType":"YulIdentifier","src":"10490:4:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10478:3:178"},"nodeType":"YulFunctionCall","src":"10478:17:178"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"10464:10:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"10570:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"10572:7:178"},"nodeType":"YulFunctionCall","src":"10572:9:178"},"nodeType":"YulExpressionStatement","src":"10572:9:178"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"10513:10:178"},{"kind":"number","nodeType":"YulLiteral","src":"10525:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10510:2:178"},"nodeType":"YulFunctionCall","src":"10510:34:178"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"10549:10:178"},{"name":"memPtr","nodeType":"YulIdentifier","src":"10561:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10546:2:178"},"nodeType":"YulFunctionCall","src":"10546:22:178"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"10507:2:178"},"nodeType":"YulFunctionCall","src":"10507:62:178"},"nodeType":"YulIf","src":"10504:2:178"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10599:2:178","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"10603:10:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10592:6:178"},"nodeType":"YulFunctionCall","src":"10592:22:178"},"nodeType":"YulExpressionStatement","src":"10592:22:178"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"10402:4:178","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"10411:6:178","type":""}],"src":"10378:242:178"},{"body":{"nodeType":"YulBlock","src":"10684:122:178","statements":[{"body":{"nodeType":"YulBlock","src":"10728:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"10730:7:178"},"nodeType":"YulFunctionCall","src":"10730:9:178"},"nodeType":"YulExpressionStatement","src":"10730:9:178"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10700:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"10708:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10697:2:178"},"nodeType":"YulFunctionCall","src":"10697:30:178"},"nodeType":"YulIf","src":"10694:2:178"},{"nodeType":"YulAssignment","src":"10750:50:178","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10770:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"10778:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10766:3:178"},"nodeType":"YulFunctionCall","src":"10766:17:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10789:2:178","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10785:3:178"},"nodeType":"YulFunctionCall","src":"10785:7:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10762:3:178"},"nodeType":"YulFunctionCall","src":"10762:31:178"},{"kind":"number","nodeType":"YulLiteral","src":"10795:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10758:3:178"},"nodeType":"YulFunctionCall","src":"10758:42:178"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"10750:4:178"}]}]},"name":"array_allocation_size_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"10664:6:178","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"10675:4:178","type":""}],"src":"10625:181:178"},{"body":{"nodeType":"YulBlock","src":"10864:205:178","statements":[{"nodeType":"YulVariableDeclaration","src":"10874:10:178","value":{"kind":"number","nodeType":"YulLiteral","src":"10883:1:178","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"10878:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"10943:63:178","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10968:3:178"},{"name":"i","nodeType":"YulIdentifier","src":"10973:1:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10964:3:178"},"nodeType":"YulFunctionCall","src":"10964:11:178"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"10987:3:178"},{"name":"i","nodeType":"YulIdentifier","src":"10992:1:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10983:3:178"},"nodeType":"YulFunctionCall","src":"10983:11:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10977:5:178"},"nodeType":"YulFunctionCall","src":"10977:18:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10957:6:178"},"nodeType":"YulFunctionCall","src":"10957:39:178"},"nodeType":"YulExpressionStatement","src":"10957:39:178"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"10904:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"10907:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10901:2:178"},"nodeType":"YulFunctionCall","src":"10901:13:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"10915:19:178","statements":[{"nodeType":"YulAssignment","src":"10917:15:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"10926:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"10929:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10922:3:178"},"nodeType":"YulFunctionCall","src":"10922:10:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"10917:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"10897:3:178","statements":[]},"src":"10893:113:178"},{"body":{"nodeType":"YulBlock","src":"11032:31:178","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"11045:3:178"},{"name":"length","nodeType":"YulIdentifier","src":"11050:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11041:3:178"},"nodeType":"YulFunctionCall","src":"11041:16:178"},{"kind":"number","nodeType":"YulLiteral","src":"11059:1:178","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11034:6:178"},"nodeType":"YulFunctionCall","src":"11034:27:178"},"nodeType":"YulExpressionStatement","src":"11034:27:178"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11021:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"11024:6:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11018:2:178"},"nodeType":"YulFunctionCall","src":"11018:13:178"},"nodeType":"YulIf","src":"11015:2:178"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"10842:3:178","type":""},{"name":"dst","nodeType":"YulTypedName","src":"10847:3:178","type":""},{"name":"length","nodeType":"YulTypedName","src":"10852:6:178","type":""}],"src":"10811:258:178"},{"body":{"nodeType":"YulBlock","src":"11121:109:178","statements":[{"body":{"nodeType":"YulBlock","src":"11208:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11217:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11220:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11210:6:178"},"nodeType":"YulFunctionCall","src":"11210:12:178"},"nodeType":"YulExpressionStatement","src":"11210:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11144:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11155:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"11162:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11151:3:178"},"nodeType":"YulFunctionCall","src":"11151:54:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"11141:2:178"},"nodeType":"YulFunctionCall","src":"11141:65:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11134:6:178"},"nodeType":"YulFunctionCall","src":"11134:73:178"},"nodeType":"YulIf","src":"11131:2:178"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11110:5:178","type":""}],"src":"11074:156:178"}]},"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        mstore(add(memPtr, 96), abi_decode_t_uint24(add(headStart, 96)))\n        let value_3 := calldataload(add(headStart, 128))\n        validator_revert_t_address(value_3)\n        mstore(add(memPtr, 128), value_3)\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_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_addresst_uint24(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { 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        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := abi_decode_t_uint24(add(headStart, 64))\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_struct$_QuoteExactInputSingleParams_$15779_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_$15822_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(value2, value2) }\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), not(31))), 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 := not(0xffffffffffffffffffffffff)\n        mstore(pos, and(shl(96, value0), _1))\n        mstore(add(pos, 20), and(shl(232, value1), shl(232, 16777215)))\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_contract$_IElixirPool_$3273__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_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), not(31)), 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":178,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"14934":[{"length":32,"start":334},{"length":32,"start":1331},{"length":32,"start":2195}],"14938":[{"length":32,"start":828}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c8063c45a01551161005b578063c45a015514610104578063c6a5026a1461010c578063cdca17531461011f578063d804d7a71461013257610088565b80631698ee821461008d5780632f80bb1d146100b65780634aa4a4fc146100d9578063bd21704a146100e1575b600080fd5b6100a061009b3660046116f0565b610147565b6040516100ad91906119c0565b60405180910390f35b6100c96100c4366004611736565b610185565b6040516100ad9493929190611a63565b6100a061033a565b6100f46100ef366004611854565b61035e565b6040516100ad9493929190611afe565b6100a0610531565b6100f461011a366004611854565b610555565b6100c961012d366004611736565b6106cb565b61014561014036600461179c565b610862565b005b600061017d7f00000000000000000000000000000000000000000000000000000000000000006101788686866109dd565b610a33565b949350505050565b6000606080600061019586610b2f565b67ffffffffffffffff811180156101ab57600080fd5b506040519080825280602002602001820160405280156101d5578160200160208202803683370190505b5092506101e186610b2f565b67ffffffffffffffff811180156101f757600080fd5b50604051908082528060200260200182016040528015610221578160200160208202803683370190505b50915060005b60008060006102358a610b40565b9250925092506000806000806102916040518060a00160405280886001600160a01b03168152602001896001600160a01b031681526020018f81526020018762ffffff16815260200160006001600160a01b031681525061035e565b9350935093509350828b89815181106102a657fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818a89815181106102d357fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b926103008e610b71565b156103155761030e8e610b79565b9d50610325565b8c9b505050505050505050610331565b50505050505050610227565b92959194509250565b7f000000000000000000000000000000000000000000000000000000000000000081565b6020810151815160608301516000928392839283926001600160a01b038082169084161092849261038f9290610147565b905086608001516001600160a01b0316600014156103b05760408701516000555b60005a9050816001600160a01b031663128acb0830856103d38c60400151610b96565b6000038c608001516001600160a01b03166000146103f5578c6080015161041b565b876104145773fffd8963efd1fc6a506488495d951d5263988d2561041b565b6401000276a45b8d602001518e606001518f6000015160405160200161043c9392919061196d565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161046b9594939291906119d4565b6040805180830381600087803b15801561048457600080fd5b505af19250505080156104b4575060408051601f3d908101601f191682019092526104b191810190611779565b60015b610524573d8080156104e2576040519150601f19603f3d011682016040523d82523d6000602084013e6104e7565b606091505b505a8203945088608001516001600160a01b03166000141561050857600080555b610513818487610bac565b97509750975097505050505061052a565b50505050505b9193509193565b7f000000000000000000000000000000000000000000000000000000000000000081565b6020810151815160608301516000928392839283926001600160a01b03808216908416109284926105869290610147565b905060005a9050816001600160a01b031663128acb0830856105ab8c60400151610b96565b60808d01516001600160a01b0316156105c8578c608001516105ee565b876105e75773fffd8963efd1fc6a506488495d951d5263988d256105ee565b6401000276a45b8d600001518e606001518f6020015160405160200161060f9392919061196d565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161063e9594939291906119d4565b6040805180830381600087803b15801561065757600080fd5b505af1925050508015610687575060408051601f3d908101601f1916820190925261068491810190611779565b60015b610524573d8080156106b5576040519150601f19603f3d011682016040523d82523d6000602084013e6106ba565b606091505b505a82039450610513818487610bac565b600060608060006106db86610b2f565b67ffffffffffffffff811180156106f157600080fd5b5060405190808252806020026020018201604052801561071b578160200160208202803683370190505b50925061072786610b2f565b67ffffffffffffffff8111801561073d57600080fd5b50604051908082528060200260200182016040528015610767578160200160208202803683370190505b50915060005b600080600061077b8a610b40565b9250925092506000806000806107d76040518060a00160405280896001600160a01b03168152602001886001600160a01b031681526020018f81526020018762ffffff16815260200160006001600160a01b0316815250610555565b9350935093509350828b89815181106107ec57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818a898151811061081957fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b926108468e610b71565b15610315576108548e610b79565b9d505050505050505061076d565b60008313806108715750600082135b61087a57600080fd5b600080600061088884610b40565b9250925092506108ba7f0000000000000000000000000000000000000000000000000000000000000000848484610c66565b5060008060008089136108e657856001600160a01b0316856001600160a01b031610888a600003610901565b846001600160a01b0316866001600160a01b03161089896000035b9250925092506000610914878787610147565b9050600080826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561095257600080fd5b505afa158015610966573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098a9190611876565b50505050509150915085156109b057604051848152826020820152816040820152606081fd5b600054156109c65760005484146109c657600080fd5b604051858152826020820152816040820152606081fd5b6109e56115be565b826001600160a01b0316846001600160a01b03161115610a03579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b600081602001516001600160a01b031682600001516001600160a01b031610610a5b57600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f5909101909152805191012090565b80516017601319909101045b919050565b60008080610b4e8482610c85565b9250610b5b846014610d51565b9050610b68846017610c85565b91509193909250565b516042111590565b8051606090610b9090839060179060161901610e0d565b92915050565b6000600160ff1b8210610ba857600080fd5b5090565b600080600080600080876001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610bee57600080fd5b505afa158015610c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c269190611876565b50939650610c3b94508d9350610f6a92505050565b91975095509050610c566001600160a01b0389168383610ff7565b9350869250505093509350935093565b6000610c7c85610c778686866109dd565b611580565b95945050505050565b600081826014011015610cdf576040805162461bcd60e51b815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015610d38576040805162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015610dab576040805162461bcd60e51b815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015610e04576040805162461bcd60e51b815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b60608182601f011015610e58576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015610ea0576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b81830184511015610ef8576040805162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b606082158015610f175760405191506000825260208201604052610f61565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610f50578051835260209283019201610f38565b5050858452601f01601f1916604052505b50949350505050565b60008060008351606014610fd657604484511015610fa35760405162461bcd60e51b8152600401610f9a90611a2c565b60405180910390fd5b60048401935083806020019051810190610fbd91906117ea565b60405162461bcd60e51b8152600401610f9a9190611a19565b83806020019051810190610fea919061190d565b9250925092509193909250565b60008060008060008060008060088b6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561103e57600080fd5b505afa158015611052573d6000803e3d6000fd5b505050506040513d602081101561106857600080fd5b5051600290810b908c900b8161107a57fe5b0560020b901d905060006101008c6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110c057600080fd5b505afa1580156110d4573d6000803e3d6000fd5b505050506040513d60208110156110ea57600080fd5b5051600290810b908d900b816110fc57fe5b0560020b8161110757fe5b079050600060088d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561114757600080fd5b505afa15801561115b573d6000803e3d6000fd5b505050506040513d602081101561117157600080fd5b5051600290810b908d900b8161118357fe5b0560020b901d905060006101008e6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111c957600080fd5b505afa1580156111dd573d6000803e3d6000fd5b505050506040513d60208110156111f357600080fd5b5051600290810b908e900b8161120557fe5b0560020b8161121057fe5b07905060008160ff166001901b8f6001600160a01b0316635339c296856040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561126457600080fd5b505afa158015611278573d6000803e3d6000fd5b505050506040513d602081101561128e57600080fd5b50511611801561131457508d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112d257600080fd5b505afa1580156112e6573d6000803e3d6000fd5b505050506040513d60208110156112fc57600080fd5b5051600290810b908d900b8161130e57fe5b0760020b155b801561132557508b60020b8d60020b135b945060008360ff166001901b8f6001600160a01b0316635339c296876040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561137857600080fd5b505afa15801561138c573d6000803e3d6000fd5b505050506040513d60208110156113a257600080fd5b50511611801561142857508d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113e657600080fd5b505afa1580156113fa573d6000803e3d6000fd5b505050506040513d602081101561141057600080fd5b5051600290810b908e900b8161142257fe5b0760020b155b801561143957508b60020b8d60020b125b95508160010b8460010b128061146557508160010b8460010b14801561146557508060ff168360ff1611155b1561147b57839950829750819850809650611488565b8199508097508398508296505b505060001960ff87161b9150505b8560010b8760010b13611558578560010b8760010b14156114bd5760001960ff858103161c165b6000818c6001600160a01b0316635339c2968a6040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561150757600080fd5b505afa15801561151b573d6000803e3d6000fd5b505050506040513d602081101561153157600080fd5b505116905061153f816115a3565b61ffff1698909801975050600190950194600019611496565b8115611565576001880397505b8215611572576001880397505b505050505050509392505050565b600061158c8383610a33565b9050336001600160a01b03821614610b9057600080fd5b6000805b8215610b90576000198301909216916001016115a7565b604080516060810182526000808252602082018190529181019190915290565b600082601f8301126115ee578081fd5b81356116016115fc82611b4c565b611b28565b818152846020838601011115611615578283fd5b816020850160208301379081016020019190915292915050565b8051600281900b8114610b3b57600080fd5b600060a08284031215611652578081fd5b60405160a0810181811067ffffffffffffffff8211171561166f57fe5b604052905080823561168081611b9e565b8152602083013561169081611b9e565b6020820152604083810135908201526116ab606084016116dd565b606082015260808301356116be81611b9e565b6080919091015292915050565b805161ffff81168114610b3b57600080fd5b803562ffffff81168114610b3b57600080fd5b600080600060608486031215611704578283fd5b833561170f81611b9e565b9250602084013561171f81611b9e565b915061172d604085016116dd565b90509250925092565b60008060408385031215611748578182fd5b823567ffffffffffffffff81111561175e578283fd5b61176a858286016115de565b95602094909401359450505050565b6000806040838503121561178b578182fd5b505080516020909101519092909150565b6000806000606084860312156117b0578283fd5b8335925060208401359150604084013567ffffffffffffffff8111156117d4578182fd5b6117e0868287016115de565b9150509250925092565b6000602082840312156117fb578081fd5b815167ffffffffffffffff811115611811578182fd5b8201601f81018413611821578182fd5b805161182f6115fc82611b4c565b818152856020838501011115611843578384fd5b610c7c826020830160208601611b6e565b600060a08284031215611865578081fd5b61186f8383611641565b9392505050565b600080600080600080600060e0888a031215611890578485fd5b875161189b81611b9e565b96506118a96020890161162f565b95506118b7604089016116cb565b94506118c5606089016116cb565b93506118d3608089016116cb565b925060a088015160ff811681146118e8578283fd5b60c089015190925080151581146118fd578182fd5b8091505092959891949750929550565b600080600060608486031215611921578081fd5b83519250602084015161193381611b9e565b915061172d6040850161162f565b60008151808452611959816020860160208601611b6e565b601f01601f19169290920160200192915050565b606093841b6bffffffffffffffffffffffff19908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6001600160a01b0391909116815260200190565b60006001600160a01b038088168352861515602084015285604084015280851660608401525060a06080830152611a0e60a0830184611941565b979650505050505050565b60006020825261186f6020830184611941565b60208082526010908201527f556e6578706563746564206572726f7200000000000000000000000000000000604082015260600190565b600060808201868352602060808185015281875180845260a0860191508289019350845b81811015611aac5784516001600160a01b031683529383019391830191600101611a87565b505084810360408601528651808252908201925081870190845b81811015611ae857825163ffffffff1685529383019391830191600101611ac6565b5050505060609290920192909252949350505050565b9384526001600160a01b0392909216602084015263ffffffff166040830152606082015260800190565b60405181810167ffffffffffffffff81118282101715611b4457fe5b604052919050565b600067ffffffffffffffff821115611b6057fe5b50601f01601f191660200190565b60005b83811015611b89578181015183820152602001611b71565b83811115611b98576000848401525b50505050565b6001600160a01b0381168114611bb357600080fd5b5056fea264697066735822122024fda544cd6acfc18f8c2e5abdde87380f19bc6e00aa6a2845247440717f7cde64736f6c63430007060033","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 0xC45A0155 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0xC6A5026A EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0xCDCA1753 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0xD804D7A7 EQ PUSH2 0x132 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x1698EE82 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x2F80BB1D EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x4AA4A4FC EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0xBD21704A EQ PUSH2 0xE1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x16F0 JUMP JUMPDEST PUSH2 0x147 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x19C0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC9 PUSH2 0xC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1736 JUMP JUMPDEST PUSH2 0x185 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1A63 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x33A JUMP JUMPDEST PUSH2 0xF4 PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0x1854 JUMP JUMPDEST PUSH2 0x35E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1AFE JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x531 JUMP JUMPDEST PUSH2 0xF4 PUSH2 0x11A CALLDATASIZE PUSH1 0x4 PUSH2 0x1854 JUMP JUMPDEST PUSH2 0x555 JUMP JUMPDEST PUSH2 0xC9 PUSH2 0x12D CALLDATASIZE PUSH1 0x4 PUSH2 0x1736 JUMP JUMPDEST PUSH2 0x6CB JUMP JUMPDEST PUSH2 0x145 PUSH2 0x140 CALLDATASIZE PUSH1 0x4 PUSH2 0x179C JUMP JUMPDEST PUSH2 0x862 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH2 0x17D PUSH32 0x0 PUSH2 0x178 DUP7 DUP7 DUP7 PUSH2 0x9DD JUMP JUMPDEST PUSH2 0xA33 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x195 DUP7 PUSH2 0xB2F JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1AB 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 0x1D5 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP PUSH2 0x1E1 DUP7 PUSH2 0xB2F JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1F7 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 0x221 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 0x235 DUP11 PUSH2 0xB40 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x291 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP16 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH2 0x35E JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP3 DUP12 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x2A6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP2 DUP11 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x2D3 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 0x300 DUP15 PUSH2 0xB71 JUMP JUMPDEST ISZERO PUSH2 0x315 JUMPI PUSH2 0x30E DUP15 PUSH2 0xB79 JUMP JUMPDEST SWAP14 POP PUSH2 0x325 JUMP JUMPDEST DUP13 SWAP12 POP POP POP POP POP POP POP POP POP PUSH2 0x331 JUMP JUMPDEST POP POP POP POP POP POP POP PUSH2 0x227 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND SWAP1 DUP5 AND LT SWAP3 DUP5 SWAP3 PUSH2 0x38F SWAP3 SWAP1 PUSH2 0x147 JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 EQ ISZERO PUSH2 0x3B0 JUMPI PUSH1 0x40 DUP8 ADD MLOAD PUSH1 0x0 SSTORE JUMPDEST PUSH1 0x0 GAS SWAP1 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 ADDRESS DUP6 PUSH2 0x3D3 DUP13 PUSH1 0x40 ADD MLOAD PUSH2 0xB96 JUMP JUMPDEST PUSH1 0x0 SUB DUP13 PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 EQ PUSH2 0x3F5 JUMPI DUP13 PUSH1 0x80 ADD MLOAD PUSH2 0x41B JUMP JUMPDEST DUP8 PUSH2 0x414 JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x41B 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 0x43C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x196D 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 0x46B SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x19D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x4B4 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x4B1 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1779 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x524 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x4E2 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 0x4E7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP GAS DUP3 SUB SWAP5 POP DUP9 PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 EQ ISZERO PUSH2 0x508 JUMPI PUSH1 0x0 DUP1 SSTORE JUMPDEST PUSH2 0x513 DUP2 DUP5 DUP8 PUSH2 0xBAC JUMP JUMPDEST SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP POP POP POP POP PUSH2 0x52A 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND SWAP1 DUP5 AND LT SWAP3 DUP5 SWAP3 PUSH2 0x586 SWAP3 SWAP1 PUSH2 0x147 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 GAS SWAP1 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 ADDRESS DUP6 PUSH2 0x5AB DUP13 PUSH1 0x40 ADD MLOAD PUSH2 0xB96 JUMP JUMPDEST PUSH1 0x80 DUP14 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x5C8 JUMPI DUP13 PUSH1 0x80 ADD MLOAD PUSH2 0x5EE JUMP JUMPDEST DUP8 PUSH2 0x5E7 JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x5EE 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 0x60F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x196D 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 0x63E SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x19D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x657 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x687 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x684 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1779 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x524 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x6B5 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 0x6BA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP GAS DUP3 SUB SWAP5 POP PUSH2 0x513 DUP2 DUP5 DUP8 PUSH2 0xBAC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x6DB DUP7 PUSH2 0xB2F JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x6F1 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 0x71B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP PUSH2 0x727 DUP7 PUSH2 0xB2F JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x73D 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 0x767 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 0x77B DUP11 PUSH2 0xB40 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x7D7 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP16 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH2 0x555 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP3 DUP12 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x7EC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP2 DUP11 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x819 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 0x846 DUP15 PUSH2 0xB71 JUMP JUMPDEST ISZERO PUSH2 0x315 JUMPI PUSH2 0x854 DUP15 PUSH2 0xB79 JUMP JUMPDEST SWAP14 POP POP POP POP POP POP POP POP PUSH2 0x76D JUMP JUMPDEST PUSH1 0x0 DUP4 SGT DUP1 PUSH2 0x871 JUMPI POP PUSH1 0x0 DUP3 SGT JUMPDEST PUSH2 0x87A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x888 DUP5 PUSH2 0xB40 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x8BA PUSH32 0x0 DUP5 DUP5 DUP5 PUSH2 0xC66 JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP10 SGT PUSH2 0x8E6 JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP9 DUP11 PUSH1 0x0 SUB PUSH2 0x901 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP10 DUP10 PUSH1 0x0 SUB JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 PUSH2 0x914 DUP8 DUP8 DUP8 PUSH2 0x147 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x952 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x966 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 0x98A SWAP2 SWAP1 PUSH2 0x1876 JUMP JUMPDEST POP POP POP POP POP SWAP2 POP SWAP2 POP DUP6 ISZERO PUSH2 0x9B0 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 0x9C6 JUMPI PUSH1 0x0 SLOAD DUP5 EQ PUSH2 0x9C6 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 PUSH2 0x9E5 PUSH2 0x15BE JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0xA03 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0xA5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x41A723F9E6457830B1B7A44DF4435FAB88581D073226894B33131815DD674C22 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 DUP1 MLOAD PUSH1 0x17 PUSH1 0x13 NOT SWAP1 SWAP2 ADD DIV JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0xB4E DUP5 DUP3 PUSH2 0xC85 JUMP JUMPDEST SWAP3 POP PUSH2 0xB5B DUP5 PUSH1 0x14 PUSH2 0xD51 JUMP JUMPDEST SWAP1 POP PUSH2 0xB68 DUP5 PUSH1 0x17 PUSH2 0xC85 JUMP JUMPDEST SWAP2 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST MLOAD PUSH1 0x42 GT ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH2 0xB90 SWAP1 DUP4 SWAP1 PUSH1 0x17 SWAP1 PUSH1 0x16 NOT ADD PUSH2 0xE0D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 LT PUSH2 0xBA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xBEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC02 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 0xC26 SWAP2 SWAP1 PUSH2 0x1876 JUMP JUMPDEST POP SWAP4 SWAP7 POP PUSH2 0xC3B SWAP5 POP DUP14 SWAP4 POP PUSH2 0xF6A SWAP3 POP POP POP JUMP JUMPDEST SWAP2 SWAP8 POP SWAP6 POP SWAP1 POP PUSH2 0xC56 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP4 DUP4 PUSH2 0xFF7 JUMP JUMPDEST SWAP4 POP DUP7 SWAP3 POP POP POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC7C DUP6 PUSH2 0xC77 DUP7 DUP7 DUP7 PUSH2 0x9DD JUMP JUMPDEST PUSH2 0x1580 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x14 ADD LT ISZERO PUSH2 0xCDF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0xD38 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0xDAB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0xE04 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 PUSH1 0x60 DUP2 DUP3 PUSH1 0x1F ADD LT ISZERO PUSH2 0xE58 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x736C6963655F6F766572666C6F77 PUSH1 0x90 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 DUP5 ADD LT ISZERO PUSH2 0xEA0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x736C6963655F6F766572666C6F77 PUSH1 0x90 SHL 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 0xEF8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0xF17 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x0 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xF61 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 0xF50 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0xF38 JUMP JUMPDEST POP POP DUP6 DUP5 MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT 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 0xFD6 JUMPI PUSH1 0x44 DUP5 MLOAD LT ISZERO PUSH2 0xFA3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF9A SWAP1 PUSH2 0x1A2C 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 0xFBD SWAP2 SWAP1 PUSH2 0x17EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF9A SWAP2 SWAP1 PUSH2 0x1A19 JUMP JUMPDEST DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xFEA SWAP2 SWAP1 PUSH2 0x190D 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 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 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP13 SWAP1 SIGNEXTEND DUP2 PUSH2 0x107A JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND SWAP1 SAR SWAP1 POP PUSH1 0x0 PUSH2 0x100 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x10C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10D4 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 0x10EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x10FC JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x1107 JUMPI INVALID JUMPDEST SMOD SWAP1 POP PUSH1 0x0 PUSH1 0x8 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x115B 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 0x1171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x1183 JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND SWAP1 SAR SWAP1 POP PUSH1 0x0 PUSH2 0x100 DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x11C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11DD 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 0x11F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP15 SWAP1 SIGNEXTEND DUP2 PUSH2 0x1205 JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x1210 JUMPI INVALID JUMPDEST SMOD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL DUP16 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1278 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 0x128E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND GT DUP1 ISZERO PUSH2 0x1314 JUMPI POP DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x12D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12E6 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 0x12FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x130E JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1325 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x138C 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 0x13A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND GT DUP1 ISZERO PUSH2 0x1428 JUMPI POP DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x13E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13FA 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 0x1410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP15 SWAP1 SIGNEXTEND DUP2 PUSH2 0x1422 JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1439 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 0x1465 JUMPI POP DUP2 PUSH1 0x1 SIGNEXTEND DUP5 PUSH1 0x1 SIGNEXTEND EQ DUP1 ISZERO PUSH2 0x1465 JUMPI POP DUP1 PUSH1 0xFF AND DUP4 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO PUSH2 0x147B JUMPI DUP4 SWAP10 POP DUP3 SWAP8 POP DUP2 SWAP9 POP DUP1 SWAP7 POP PUSH2 0x1488 JUMP JUMPDEST DUP2 SWAP10 POP DUP1 SWAP8 POP DUP4 SWAP9 POP DUP3 SWAP7 POP JUMPDEST POP POP PUSH1 0x0 NOT PUSH1 0xFF DUP8 AND SHL SWAP2 POP POP JUMPDEST DUP6 PUSH1 0x1 SIGNEXTEND DUP8 PUSH1 0x1 SIGNEXTEND SGT PUSH2 0x1558 JUMPI DUP6 PUSH1 0x1 SIGNEXTEND DUP8 PUSH1 0x1 SIGNEXTEND EQ ISZERO PUSH2 0x14BD JUMPI PUSH1 0x0 NOT PUSH1 0xFF DUP6 DUP2 SUB AND SHR AND JUMPDEST PUSH1 0x0 DUP2 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1507 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x151B 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 0x1531 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND SWAP1 POP PUSH2 0x153F DUP2 PUSH2 0x15A3 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP9 SWAP1 SWAP9 ADD SWAP8 POP POP PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 PUSH1 0x0 NOT PUSH2 0x1496 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1565 JUMPI PUSH1 0x1 DUP9 SUB SWAP8 POP JUMPDEST DUP3 ISZERO PUSH2 0x1572 JUMPI PUSH1 0x1 DUP9 SUB SWAP8 POP JUMPDEST POP POP POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x158C DUP4 DUP4 PUSH2 0xA33 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0xB90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 ISZERO PUSH2 0xB90 JUMPI PUSH1 0x0 NOT DUP4 ADD SWAP1 SWAP3 AND SWAP2 PUSH1 0x1 ADD PUSH2 0x15A7 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 0x15EE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1601 PUSH2 0x15FC DUP3 PUSH2 0x1B4C JUMP JUMPDEST PUSH2 0x1B28 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1615 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 0xB3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1652 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x166F JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP1 POP DUP1 DUP3 CALLDATALOAD PUSH2 0x1680 DUP2 PUSH2 0x1B9E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1690 DUP2 PUSH2 0x1B9E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x16AB PUSH1 0x60 DUP5 ADD PUSH2 0x16DD JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH2 0x16BE DUP2 PUSH2 0x1B9E JUMP JUMPDEST PUSH1 0x80 SWAP2 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xB3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1704 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x170F DUP2 PUSH2 0x1B9E JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x171F DUP2 PUSH2 0x1B9E JUMP JUMPDEST SWAP2 POP PUSH2 0x172D PUSH1 0x40 DUP6 ADD PUSH2 0x16DD JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1748 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x175E JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x176A DUP6 DUP3 DUP7 ADD PUSH2 0x15DE 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 0x178B 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 0x17B0 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 0x17D4 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x17E0 DUP7 DUP3 DUP8 ADD PUSH2 0x15DE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17FB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1811 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x1821 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x182F PUSH2 0x15FC DUP3 PUSH2 0x1B4C JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x1843 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0xC7C DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1B6E JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1865 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x186F DUP4 DUP4 PUSH2 0x1641 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 0x1890 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 MLOAD PUSH2 0x189B DUP2 PUSH2 0x1B9E JUMP JUMPDEST SWAP7 POP PUSH2 0x18A9 PUSH1 0x20 DUP10 ADD PUSH2 0x162F JUMP JUMPDEST SWAP6 POP PUSH2 0x18B7 PUSH1 0x40 DUP10 ADD PUSH2 0x16CB JUMP JUMPDEST SWAP5 POP PUSH2 0x18C5 PUSH1 0x60 DUP10 ADD PUSH2 0x16CB JUMP JUMPDEST SWAP4 POP PUSH2 0x18D3 PUSH1 0x80 DUP10 ADD PUSH2 0x16CB JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x18E8 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x18FD 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 0x1921 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x1933 DUP2 PUSH2 0x1B9E JUMP JUMPDEST SWAP2 POP PUSH2 0x172D PUSH1 0x40 DUP6 ADD PUSH2 0x162F JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1959 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1B6E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SWAP4 DUP5 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT 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 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1A0E PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1941 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x186F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1941 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 0x1AAC JUMPI DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1A87 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 0x1AE8 JUMPI DUP3 MLOAD PUSH4 0xFFFFFFFF AND DUP6 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1AC6 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1B44 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1B60 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1B89 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1B71 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1B98 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1BB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x24 REVERT 0xA5 DIFFICULTY 0xCD PUSH11 0xCFC18F8C2E5ABDDE87380F NOT 0xBC PUSH15 0xAA6A2845247440717F7CDE64736F PUSH13 0x63430007060033000000000000 ","sourceMap":"957:9561:87:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1391:248;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8853:1662;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;431:39:64:-;;;:::i;7442:1403:87:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;337:41:64:-;;;:::i;4637:1129:87:-;;;;;;:::i;:::-;;:::i;5774:1660::-;;;;;;:::i;:::-;;:::i;1688:1635::-;;;;;;:::i;:::-;;:::i;:::-;;1391:248;1507:11;1550:80;1577:7;1586:43;1609:6;1617;1625:3;1586:22;:43::i;:::-;1550:26;:80::i;:::-;1531:100;1391:248;-1:-1:-1;;;;1391:248:87:o;8853:1662::-;8983:16;9014:38;9067:43;9125:19;9210:15;:4;:13;:15::i;:::-;9196:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9196:30:87;;9172:54;;9280:15;:4;:13;:15::i;:::-;9267:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9267:29:87;;9237:59;;9309:9;9333:1175;9362:16;9380:15;9397:10;9411:22;:4;:20;:22::i;:::-;9361:72;;;;;;9531:17;9550:26;9578:31;9611:20;9652:331;9697:267;;;;;;;;9762:7;-1:-1:-1;;;;;9697:267:87;;;;;9806:8;-1:-1:-1;;;;;9697:267:87;;;;;9849:9;9697:267;;;;9890:3;9697:267;;;;;;9939:1;-1:-1:-1;;;;;9697:267:87;;;;9652:22;:331::i;:::-;9530:453;;;;;;;;10027:18;10000:21;10022:1;10000:24;;;;;;;;;;;;;:45;-1:-1:-1;;;;;10000:45:87;;;-1:-1:-1;;;;;10000:45:87;;;;;10093:24;10060:27;10088:1;10060:30;;;;;;;;:57;;;;:30;;;;;;;;;;;:57;10144:9;;-1:-1:-1;10168:27:87;;;;10210:3;;;;;10144:9;;10290:23;:4;:21;:23::i;:::-;10286:211;;;10341:16;:4;:14;:16::i;:::-;10334:23;;10286:211;;;10406:9;10398:83;;;;;;;;;;;;10286:211;9333:1175;;;;;;;;;8853:1662;;;;;;;;:::o;431:39:64:-;;;:::o;7442:1403:87:-;7782:15;;;;7765:14;;7868:10;;;;7584:16;;;;;;;;-1:-1:-1;;;;;7765:32:87;;;;;;;;7584:16;;7827:52;;7782:15;7827:7;:52::i;:::-;7808:71;;8006:6;:24;;;-1:-1:-1;;;;;8006:29:87;8034:1;8006:29;8002:66;;;8055:13;;;;8037:15;:31;8002:66;8079:17;8099:9;8079:29;;8136:4;-1:-1:-1;;;;;8136:9:87;;8172:4;8246:10;8276:24;:6;:13;;;:22;:24::i;:::-;8275:25;;8319:6;:24;;;-1:-1:-1;;;;;8319:29:87;8347:1;8319:29;:173;;8468:6;:24;;;8319:173;;;8373:10;:70;;8416:27;8373:70;;;8386:27;8373:70;8528:6;:15;;;8545:6;:10;;;8557:6;:14;;;8511:61;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8136:451;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8136:451:87;;;;;;;;-1:-1:-1;;8136:451:87;;;;;;;;;;;;:::i;:::-;;;8119:719;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8669:9;8657;:21;8643:35;;8697:6;:24;;;-1:-1:-1;;;;;8697:29:87;8725:1;8697:29;8693:57;;;8735:15;8728:22;;8693:57;8787:39;8800:6;8808:4;8814:11;8787:12;:39::i;:::-;8780:46;;;;;;;;;;;;;;8119:719;;;7442:1403;;;;;;;;;:::o;337:41:64:-;;;:::o;4637:1129:87:-;4976:15;;;;4959:14;;5062:10;;;;4777:17;;;;;;;;-1:-1:-1;;;;;4959:32:87;;;;;;;;4777:17;;5021:52;;4976:15;5021:7;:52::i;:::-;5002:71;;5086:17;5106:9;5086:29;;5143:4;-1:-1:-1;;;;;5143:9:87;;5179:4;5253:10;5282:26;:6;:15;;;:24;:26::i;:::-;5327:24;;;;-1:-1:-1;;;;;5327:29:87;;:173;;5476:6;:24;;;5327:173;;;5381:10;:70;;5424:27;5381:70;;;5394:27;5381:70;5536:6;:14;;;5552:6;:10;;;5564:6;:15;;;5519:61;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5143:452;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5143:452:87;;;;;;;;-1:-1:-1;;5143:452:87;;;;;;;;;;;;:::i;:::-;;;5126:633;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5677:9;5665;:21;5651:35;;5708:39;5721:6;5729:4;5735:11;5708:12;:39::i;5774:1660::-;5902:17;5934:38;5987:43;6045:19;6130:15;:4;:13;:15::i;:::-;6116:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6116:30:87;;6092:54;;6200:15;:4;:13;:15::i;:::-;6187:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6187:29:87;;6157:59;;6229:9;6253:1174;6282:15;6299:16;6317:10;6331:22;:4;:20;:22::i;:::-;6281:72;;;;;;6451:18;6471:26;6499:31;6532:20;6573:330;6617:267;;;;;;;;6681:7;-1:-1:-1;;;;;6617:267:87;;;;;6725:8;-1:-1:-1;;;;;6617:267:87;;;;;6805:8;6617:267;;;;6765:3;6617:267;;;;;;6859:1;-1:-1:-1;;;;;6617:267:87;;;;6573:21;:330::i;:::-;6450:453;;;;;;;;6947:18;6920:21;6942:1;6920:24;;;;;;;;;;;;;:45;-1:-1:-1;;;;;6920:45:87;;;-1:-1:-1;;;;;6920:45:87;;;;;7013:24;6980:27;7008:1;6980:30;;;;;;;;:57;;;;:30;;;;;;;;;;;:57;7063:10;;-1:-1:-1;7088:27:87;;;;7130:3;;;;;7063:10;;7210:23;:4;:21;:23::i;:::-;7206:210;;;7261:16;:4;:14;:16::i;:::-;7254:23;;6253:1174;;;;;;;;;1688:1635;1868:1;1853:12;:16;:36;;;;1888:1;1873:12;:16;1853:36;1845:45;;;;;;1965:15;1982:16;2000:10;2014:22;:4;:20;:22::i;:::-;1964:72;;;;;;2047:66;2081:7;2090;2099:8;2109:3;2047:33;:66::i;:::-;;2127:17;2146:19;2167:22;2221:1;2206:12;:16;:190;;2341:7;-1:-1:-1;;;;;2330:18:87;:8;-1:-1:-1;;;;;2330:18:87;;2358:12;2382;2381:13;;2206:190;;;2253:8;-1:-1:-1;;;;;2243:18:87;:7;-1:-1:-1;;;;;2243:18:87;;2271:12;2295;2294:13;;2206:190;2126:270;;;;;;2409:16;2428:31;2436:7;2445:8;2455:3;2428:7;:31::i;:::-;2409:50;;2471:25;2498:15;2527:4;-1:-1:-1;;;;;2527:10:87;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2470:69;;;;;;;;;2556:12;2552:764;;;2630:4;2624:11;2665:14;2660:3;2653:27;2721:17;2714:4;2709:3;2705:14;2698:41;2780:9;2773:4;2768:3;2764:14;2757:33;2820:2;2815:3;2808:15;2594:244;2976:15;;:20;2972:68;;3024:15;;3006:14;:33;2998:42;;;;;;3100:4;3094:11;3135;3130:3;3123:24;3188:17;3181:4;3176:3;3172:14;3165:41;3247:9;3240:4;3235:3;3231:14;3224:33;3287:2;3282:3;3275:15;1215:281:97;1336:14;;:::i;:::-;1376:6;-1:-1:-1;;;;;1367:15:97;:6;-1:-1:-1;;;;;1367:15:97;;1363:56;;;1404:6;;1412;1363:56;-1:-1:-1;1437:51:97;;;;;;;;-1:-1:-1;;;;;1437:51:97;;;;;;;;;;;;;;;;;;;;;;;1215:281::o;1749:526::-;1833:12;1879:3;:10;;;-1:-1:-1;;;;;1866:23:97;:3;:10;;;-1:-1:-1;;;;;1866:23:97;;1858:32;;;;;;-1:-1:-1;2120:10:97;;2132;;;;;2144:7;;;;;2109:43;;-1:-1:-1;;;;;2109:43:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:54;;;;;;1988:234;;;;;;;;-1:-1:-1;;1988:234:97;;;;;;;;;;;;658:66;1988:234;;;;;;;;;;;;;;;;;;;;;;;;;1956:285;;;;;;1749:526::o;1313:238:96:-;1504:11;;522:20;-1:-1:-1;;1504:23:96;;;1503:39;1313:238;;;;:::o;1820:326::-;1928:14;;;2033:17;:4;1928:14;2033;:17::i;:::-;2024:26;-1:-1:-1;2067:24:96;:4;314:2;2067:13;:24::i;:::-;2061:30;-1:-1:-1;2111:27:96;:4;522:20;2111:14;:27::i;:::-;2102:36;;1820:326;;;;;:::o;1016:140::-;1108:11;796:24;-1:-1:-1;1108:40:96;;1016:140::o;2700:151::-;2817:11;;2761:12;;2793:50;;2817:4;;522:20;;-1:-1:-1;;2817:25:96;2793:10;:50::i;:::-;2786:57;2700:151;-1:-1:-1;;2700:151:96:o;947:124:23:-;999:8;-1:-1:-1;;;1028:1:23;:10;1020:19;;;;;;-1:-1:-1;1061:1:23;947:124::o;3944:685:87:-;4123:14;4152:25;4192:30;4237:7;4272:16;4299:15;4352:4;-1:-1:-1;;;;;4352:10:87;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4325:39:87;;-1:-1:-1;4416:25:87;;-1:-1:-1;4434:6:87;;-1:-1:-1;4416:17:87;;-1:-1:-1;;;4416:25:87:i;:::-;4375:66;;-1:-1:-1;4375:66:87;-1:-1:-1;4375:66:87;-1:-1:-1;4480:56:87;-1:-1:-1;;;;;4480:33:87;;4514:10;4375:66;4480:33;:56::i;:::-;4454:82;-1:-1:-1;4609:11:87;;-1:-1:-1;;;3944:685:87;;;;;;;:::o;677:263:90:-;828:16;864:68;879:7;888:43;911:6;919;927:3;888:22;:43::i;:::-;864:14;:68::i;:::-;857:75;677:263;-1:-1:-1;;;;;677:263:90:o;3489:426:89:-;3568:7;3611:6;3596;3605:2;3596:11;:21;;3588:52;;;;;-1:-1:-1;;;3588:52:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;3676:6;3685:2;3676:11;3659:6;:13;:28;;3651:62;;;;;-1:-1:-1;;;3651:62:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3805:30:89;3821:4;3805:30;3799:37;3838:27;3795:71;;;3489:426::o;3923:375::-;4001:6;4042;4028;4037:1;4028:10;:20;;4020:50;;;;;-1:-1:-1;;;4020:50:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;4106:6;4115:1;4106:10;4089:6;:13;:27;;4081:60;;;;;-1:-1:-1;;;4081:60:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4222:29:89;4238:3;4222:29;4216:36;;3923:375::o;410:3071::-;536:12;585:7;569;579:2;569:12;:23;;561:50;;;;;-1:-1:-1;;;561:50:89;;;;;;;;;;;;-1:-1:-1;;;561:50:89;;;;;;;;;;;;;;;650:6;639:7;630:6;:16;:26;;622:53;;;;;-1:-1:-1;;;622:53:89;;;;;;;;;;;;-1:-1:-1;;;622:53:89;;;;;;;;;;;;;;;720:7;711:6;:16;694:6;:13;:33;;686:63;;;;;-1:-1:-1;;;686:63:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;762:22;828:15;;861:2137;;;;3154:4;3148:11;3135:24;;3355:1;3344:9;3337:20;3409:4;3398:9;3394:20;3388:4;3381:34;821:2613;;861:2137;1058:4;1052:11;1039:24;;1763:2;1754:7;1750:16;2171:9;2164:17;2158:4;2154:28;2142:9;2131;2127:25;2123:60;2224:7;2220:2;2216:16;2497:6;2483:9;2476:17;2470:4;2466:28;2454:9;2446:6;2442:22;2438:57;2434:70;2256:470;2535:3;2531:2;2528:11;2256:470;;;2693:9;;2682:21;;2581:4;2573:13;;;;2618;2256:470;;;-1:-1:-1;;2750:26:89;;;2974:2;2957:11;-1:-1:-1;;2953:25:89;2947:4;2940:39;-1:-1:-1;821:2613:89;-1:-1:-1;3464:9:89;410:3071;-1:-1:-1;;;;410:3071:89:o;3406:530:87:-;3517:14;3546:25;3586:15;3633:6;:13;3650:2;3633:19;3629:237;;3689:2;3673:6;:13;:18;3669:50;;;3693:26;;-1:-1:-1;;;3693:26:87;;;;;;;:::i;:::-;;;;;;;;3669:50;3784:4;3776:6;3772:17;3762:27;;3836:6;3825:28;;;;;;;;;;;;:::i;:::-;3818:36;;-1:-1:-1;;;3818:36:87;;;;;;;;:::i;3629:237::-;3894:6;3883:45;;;;;;;;;;;;:::i;:::-;3876:52;;;;;;3406:530;;;;;:::o;642:3377:98:-;790:30;833:18;862:19;892:17;920:18;949:26;986:25;1143:13;1202:1;1179:4;-1:-1:-1;;;;;1179:16:98;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1179:18:98;1166:31;;;;;;;;;;;;;;1165:38;;;;1143:61;;1219:12;1276:3;1254:4;-1:-1:-1;;;;;1254:16:98;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1254:18:98;1241:31;;;;;;;;;;;;;;1240:39;;;;;;;;1219:61;;1297:18;1360:1;1337:4;-1:-1:-1;;;;;1337:16:98;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1337:18:98;1325:30;;;;;;;;;;;;;;1324:37;;;;1297:65;;1377:17;1438:3;1416:4;-1:-1:-1;;;;;1416:16:98;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1416:18:98;1404:30;;;;;;;;;;;;;;1403:38;;;;;;;;1377:65;;1924:1;1908:11;1903:16;;:1;:16;;1870:4;-1:-1:-1;;;;;1870:15:98;;1886:12;1870:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1870:29:98;:50;1869:56;1868:118;;;;;1961:4;-1:-1:-1;;;;;1961:16:98;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1961:18:98;1949:30;;;;;;;;;;;;;;1948:37;;;1868:118;:163;;;;;2021:9;2008:22;;:10;:22;;;1868:163;1828:203;;2346:1;2335:6;2330:11;;:1;:11;;2302:4;-1:-1:-1;;;;;2302:15:98;;2318:7;2302:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2302:24:98;:40;2301:46;2300:109;;;;;2384:4;-1:-1:-1;;;;;2384:16:98;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2384:18:98;2371:31;;;;;;;;;;;;;;2370:38;;;2300:109;:154;;;;;2444:9;2431:22;;:10;:22;;;2300:154;2259:195;;2485:12;2475:22;;:7;:22;;;:76;;;;2513:12;2502:23;;:7;:23;;;:48;;;;;2539:11;2529:21;;:6;:21;;;;2502:48;2471:464;;;2587:7;2572:22;;2627:6;2613:20;;2668:12;2652:28;;2714:11;2699:26;;2471:464;;;2781:12;2766:27;;2826:11;2812:25;;2872:7;2856:23;;2913:6;2898:21;;2471:464;-1:-1:-1;;;;3154:32:98;;;;;-1:-1:-1;;3197:585:98;3220:13;3204:29;;:12;:29;;;3197:585;;3386:13;3370:29;;:12;:29;;;3366:127;;;-1:-1:-1;;3457:3:98;:18;;;3435:41;;3427:50;3366:127;3509:14;3558:4;3526;-1:-1:-1;;;;;3526:15:98;;3542:12;3526:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3526:29:98;:36;;-1:-1:-1;3604:20:98;3526:36;3604:12;:20::i;:::-;3577:47;;;;;;;-1:-1:-1;;3639:14:98;;;;;-1:-1:-1;;3197:585:98;;;3798:20;3794:81;;;3862:1;3835:28;;;;3794:81;3891:21;3887:82;;;3956:1;3929:28;;;;3887:82;3981:30;;;;;;;642:3377;;;;;:::o;1193:280:90:-;1320:16;1373:44;1400:7;1409;1373:26;:44::i;:::-;1354:64;-1:-1:-1;1437:10:90;-1:-1:-1;;;;;1437:27:90;;;1429:36;;;;;4027:204:98;4082:6;;4127:75;4134:6;;4127:75;;-1:-1:-1;;4184:5:98;;4178:12;;;;4157:6;;4127:75;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:485:178:-;;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:178:o;504:166::-;583:13;;636:1;625:20;;;615:31;;605:2;;660:1;657;650:12;675:926;;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:178;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;1412:39;1447:2;1432:18;;1412:39;:::i;:::-;1407:2;1399:6;1395:15;1388:64;1504:3;1493:9;1489:19;1476:33;1518:35;1545:7;1518:35;:::i;:::-;1581:3;1569:16;;;;1562:33;762:839;;-1:-1:-1;;762:839:178:o;1606:165::-;1686:13;;1739:6;1728:18;;1718:29;;1708:2;;1761:1;1758;1751:12;1776:163;1845:20;;1905:8;1894:20;;1884:31;;1874:2;;1929:1;1926;1919:12;1944:476;;;;2089:2;2077:9;2068:7;2064:23;2060:32;2057:2;;;2110:6;2102;2095:22;2057:2;2154:9;2141:23;2173:33;2200:5;2173:33;:::i;:::-;2225:5;-1:-1:-1;2282:2:178;2267:18;;2254:32;2295:35;2254:32;2295:35;:::i;:::-;2349:7;-1:-1:-1;2375:39:178;2410:2;2395:18;;2375:39;:::i;:::-;2365:49;;2047:373;;;;;:::o;2425:410::-;;;2563:2;2551:9;2542:7;2538:23;2534:32;2531:2;;;2584:6;2576;2569:22;2531:2;2629:9;2616:23;2662:18;2654:6;2651:30;2648:2;;;2699:6;2691;2684:22;2648:2;2727:51;2770:7;2761:6;2750:9;2746:22;2727:51;:::i;:::-;2717:61;2825:2;2810:18;;;;2797:32;;-1:-1:-1;;;;2521:314:178:o;2840:253::-;;;2978:2;2966:9;2957:7;2953:23;2949:32;2946:2;;;2999:6;2991;2984:22;2946:2;-1:-1:-1;;3027:16:178;;3083:2;3068:18;;;3062:25;3027:16;;3062:25;;-1:-1:-1;2936:157:178:o;3098:476::-;;;;3251:2;3239:9;3230:7;3226:23;3222:32;3219:2;;;3272:6;3264;3257:22;3219:2;3313:9;3300:23;3290:33;;3370:2;3359:9;3355:18;3342:32;3332:42;;3425:2;3414:9;3410:18;3397:32;3452:18;3444:6;3441:30;3438:2;;;3489:6;3481;3474:22;3438:2;3517:51;3560:7;3551:6;3540:9;3536:22;3517:51;:::i;:::-;3507:61;;;3209:365;;;;;:::o;3579:676::-;;3712:2;3700:9;3691:7;3687:23;3683:32;3680:2;;;3733:6;3725;3718:22;3680:2;3771:9;3765:16;3804:18;3796:6;3793:30;3790:2;;;3841:6;3833;3826:22;3790:2;3869:22;;3922:4;3914:13;;3910:27;-1:-1:-1;3900:2:178;;3956:6;3948;3941:22;3900:2;3990;3984:9;4015:49;4030:33;4060:2;4030:33;:::i;4015:49::-;4087:2;4080:5;4073:17;4127:7;4122:2;4117;4113;4109:11;4105:20;4102:33;4099:2;;;4153:6;4145;4138:22;4099:2;4171:54;4222:2;4217;4210:5;4206:14;4201:2;4197;4193:11;4171:54;:::i;4260:282::-;;4418:3;4406:9;4397:7;4393:23;4389:33;4386:2;;;4440:6;4432;4425:22;4386:2;4468:68;4528:7;4517:9;4468:68;:::i;:::-;4458:78;4376:166;-1:-1:-1;;;4376:166:178:o;4835:945::-;;;;;;;;5050:3;5038:9;5029:7;5025:23;5021:33;5018:2;;;5072:6;5064;5057:22;5018:2;5109:9;5103:16;5128:33;5155:5;5128:33;:::i;:::-;5180:5;-1:-1:-1;5204:49:178;5249:2;5234:18;;5204:49;:::i;:::-;5194:59;;5272:50;5318:2;5307:9;5303:18;5272:50;:::i;:::-;5262:60;;5341:50;5387:2;5376:9;5372:18;5341:50;:::i;:::-;5331:60;;5410:51;5456:3;5445:9;5441:19;5410:51;:::i;:::-;5400:61;;5506:3;5495:9;5491:19;5485:26;5555:4;5546:7;5542:18;5533:7;5530:31;5520:2;;5580:6;5572;5565:22;5520:2;5660:3;5645:19;;5639:26;5608:7;;-1:-1:-1;5703:15:178;;5696:23;5684:36;;5674:2;;5739:6;5731;5724:22;5674:2;5767:7;5757:17;;;5008:772;;;;;;;;;;:::o;5785:407::-;;;;5940:2;5928:9;5919:7;5915:23;5911:32;5908:2;;;5961:6;5953;5946:22;5908:2;5995:9;5989:16;5979:26;;6048:2;6037:9;6033:18;6027:25;6061:33;6088:5;6061:33;:::i;:::-;6113:5;-1:-1:-1;6137:49:178;6182:2;6167:18;;6137:49;:::i;6197:259::-;;6278:5;6272:12;6305:6;6300:3;6293:19;6321:63;6377:6;6370:4;6365:3;6361:14;6354:4;6347:5;6343:16;6321:63;:::i;:::-;6438:2;6417:15;-1:-1:-1;;6413:29:178;6404:39;;;;6445:4;6400:50;;6248:208;-1:-1:-1;;6248:208:178:o;6461:431::-;6714:2;6710:15;;;-1:-1:-1;;6706:24:178;;;6694:37;;6787:3;6765:16;;;;6783:18;6761:41;6756:2;6747:12;;6740:63;6837:15;;6833:24;6828:2;6819:12;;6812:46;6883:2;6874:12;;6634:258::o;6897:226::-;-1:-1:-1;;;;;7061:55:178;;;;7043:74;;7031:2;7016:18;;6998:125::o;7128:593::-;;-1:-1:-1;;;;;7452:2:178;7444:6;7440:15;7429:9;7422:34;7506:6;7499:14;7492:22;7487:2;7476:9;7472:18;7465:50;7551:6;7546:2;7535:9;7531:18;7524:34;7606:2;7598:6;7594:15;7589:2;7578:9;7574:18;7567:43;;7647:3;7641;7630:9;7626:19;7619:32;7668:47;7710:3;7699:9;7695:19;7687:6;7668:47;:::i;:::-;7660:55;7351:370;-1:-1:-1;;;;;;;7351:370:178:o;7977:221::-;;8126:2;8115:9;8108:21;8146:46;8188:2;8177:9;8173:18;8165:6;8146:46;:::i;8203:340::-;8405:2;8387:21;;;8444:2;8424:18;;;8417:30;8483:18;8478:2;8463:18;;8456:46;8534:2;8519:18;;8377:166::o;8548:1365::-;;8870:3;8859:9;8855:19;8901:6;8890:9;8883:25;8927:2;8965:3;8960:2;8949:9;8945:18;8938:31;8989:6;9024;9018:13;9055:6;9047;9040:22;9093:3;9082:9;9078:19;9071:26;;9132:2;9124:6;9120:15;9106:29;;9153:4;9166:218;9180:6;9177:1;9174:13;9166:218;;;9245:13;;-1:-1:-1;;;;;9241:62:178;9229:75;;9359:15;;;;9324:12;;;;9202:1;9195:9;9166:218;;;-1:-1:-1;;9420:19:178;;;9415:2;9400:18;;9393:47;9490:13;;9512:21;;;9551:12;;;;-1:-1:-1;9588:15:178;;;;9623:4;9636:206;9652:8;9647:3;9644:17;9636:206;;;9725:15;;9742:10;9721:32;9707:47;;9776:14;;;;9815:17;;;;9680:1;9671:11;9636:206;;;-1:-1:-1;;;;9895:2:178;9880:18;;;;9873:34;;;;9859:5;8831:1082;-1:-1:-1;;;;8831:1082:178:o;9918:455::-;10147:25;;;-1:-1:-1;;;;;10208:55:178;;;;10203:2;10188:18;;10181:83;10312:10;10300:23;10295:2;10280:18;;10273:51;10355:2;10340:18;;10333:34;10134:3;10119:19;;10101:272::o;10378:242::-;10448:2;10442:9;10478:17;;;10525:18;10510:34;;10546:22;;;10507:62;10504:2;;;10572:9;10504:2;10599;10592:22;10422:198;;-1:-1:-1;10422:198:178:o;10625:181::-;;10708:18;10700:6;10697:30;10694:2;;;10730:9;10694:2;-1:-1:-1;10789:2:178;10766:17;-1:-1:-1;;10762:31:178;10795:4;10758:42;;10684:122::o;10811:258::-;10883:1;10893:113;10907:6;10904:1;10901:13;10893:113;;;10983:11;;;10977:18;10964:11;;;10957:39;10929:2;10922:10;10893:113;;;11024:6;11021:1;11018:13;11015:2;;;11059:1;11050:6;11045:3;11041:16;11034:27;11015:2;;10864:205;;;:::o;11074:156::-;-1:-1:-1;;;;;11155:5:178;11151:54;11144:5;11141:65;11131:2;;11220:1;11217;11210:12;11131:2;11121:109;:::o"},"methodIdentifiers":{"WETH9()":"4aa4a4fc","elixirSwapCallback(int256,int256,bytes)":"d804d7a7","factory()":"c45a0155","getPool(address,address,uint24)":"1698ee82","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\":\"_WETH9\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"WETH9\",\"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\":\"elixirSwapCallback\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"contract IElixirPool\",\"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 IElixirQuoter.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 IElixirQuoter.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\":{\"elixirSwapCallback(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 ElixirPool deployed by the canonical ElixirFactory. 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 IElixirPoolActions#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\":{\"elixirSwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IElixirPool#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/elixir-periphery/lens/ElixirQuoter.sol\":\"ElixirQuoter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol\":{\"keccak256\":\"0xc9fbc830c4c6b20c2e87b16569730bce747f3c9cde95efee554f1c6f07cc60b0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b94f129f0ad86cbc99ff550c65bc0ab2b9e754b7f3c2734f09f51ffb908864d\",\"dweb:/ipfs/QmUuJ7zyX1vWC7SfpsDhBqXGCKMS24pvSzirPVMU3sSkK8\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-core/libraries/BitMath.sol\":{\"keccak256\":\"0x14c52bf69e189d123dc9fa84ebdca0d879cb020b7df4953678345a8e567aaf7f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aba03531acefeef92920d5208618ae8dfa9f9a918e2c5bfbf5798110ba8f60de\",\"dweb:/ipfs/QmUSm4Js5hMFvhBW4DvMhBPhhXTbwZ8ix9beZUNEppvAhv\"]},\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]},\"contracts/elixir-core/libraries/TickBitmap.sol\":{\"keccak256\":\"0x90bb71c25bffebc89c0f234a1c806f081ebb19f8ba7bc4cab693f03d4363a863\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3527c33112d6cb3f8349f0783ffcdfabb52dbfe7c2d214cba03ed25b834b0352\",\"dweb:/ipfs/QmXyJ9MrtwGEQunhyyrBnCFAEVpFqRUf8oWMfJBv3fdC3q\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-periphery/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x1d0175136fda60c5e1b6aab6dfa4a35856717413d754d0750eb75866f3f5e43f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8e19496cd2a7239e9e869bafbfb9f762691a9ab52f169b579f11d752d7df79a5\",\"dweb:/ipfs/QmTaLVPUVMGp4ZywHwpFupnz2873NPyqYs3EzbJTHpVNSA\"]},\"contracts/elixir-periphery/interfaces/IElixirQuoter.sol\":{\"keccak256\":\"0x1bc37f9a8c8ad3ad0dfc268f4b1badc0c347daed48c0710dd525bce51ba5234b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://17ba4007823d6aab904c4a35c5c7174f0de8c1b53a9b612c9aebbd782125fd8b\",\"dweb:/ipfs/QmVoHogxiuSz3xMV9kABKsqrHo1TwuxTaf84cbBn9pfWv6\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/lens/ElixirQuoter.sol\":{\"keccak256\":\"0xce0d52cbce2f388e42d54bb1f686ef0d05dc7140c82729c1cb6c37163745414f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e30ca217d6a4b109f1555b54179032418aafab9e7feb7fa79d2cb62098744650\",\"dweb:/ipfs/Qmbg6Qu93ApprpuWaGbXiKwofKpUPXQgT1sUwbeDf4kPhq\"]},\"contracts/elixir-periphery/libraries/BytesLib.sol\":{\"keccak256\":\"0xbf23f73b0ec504e799b3e8ea71063eaeec08d6e688c56951fc645afaf5c1e7fd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://863b16fdc6f8b9a22622fe4f9b991b4b7039db2beec8095134ed18ec4843683f\",\"dweb:/ipfs/QmatVX7apv6drzj8WvDjQs8sREGApz1U4pvhPnk6MCyPFT\"]},\"contracts/elixir-periphery/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xb2c39ec43afd1140b765a183017c52d02763f6ad1732cc8bd15b424cf60addf3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4991a734b128dee4821aaaca11279e2caa458128a436ee4b64ddd2483962223a\",\"dweb:/ipfs/QmbLtcN47cGXxbAua61GDp9PGz9bqru7UQPH2CJSgF1cjC\"]},\"contracts/elixir-periphery/libraries/Path.sol\":{\"keccak256\":\"0x13c1302a21dbc2bbac527052506140eb3ed342c3b83054e07d0040d22c3dd284\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed3ce8db752fabe37b23d6fd1205a35102f2f6e91ad14f42536538b6ea71ae08\",\"dweb:/ipfs/QmSpSmvuTcavQW3HixkdAcFhCyzLwSkHKNUa7RrEM47jet\"]},\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]},\"contracts/elixir-periphery/libraries/PoolTicksCounter.sol\":{\"keccak256\":\"0x456f3dbcf2c93f5ee21722ebde8ff82158e8f3eaa77b0c2c6e41cabe6670773f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ee4ff5211dad34f51f33d0928fcd3e91d6114af9c2702df48f2e71276bc31d1c\",\"dweb:/ipfs/QmVcFSQpJANGigQm77xr7UWKr32rXzVNwPx3XVWxbEb6vH\"]}},\"version\":1}"}},"contracts/elixir-periphery/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":"608060405234801561001057600080fd5b5061057f806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063351fb47814610030575b600080fd5b61004361003e366004610365565b610059565b60405161005091906104a4565b60405180910390f35b60606000836001600160a01b0316635339c296846040518263ffffffff1660e01b81526004016100899190610515565b60206040518083038186803b1580156100a157600080fd5b505afa1580156100b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d9919061048c565b90506000805b610100811015610103576001811b8316156100fb576001909101905b6001016100df565b506000856001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561013f57600080fd5b505afa158015610153573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017791906103a3565b90508167ffffffffffffffff8111801561019057600080fd5b506040519080825280602002602001820160405280156101ca57816020015b6101b76102e9565b8152602001906001900390816101af5790505b50935060005b6101008110156102df576001811b8416156102d75760405163f30dba9360e01b8152600187900b60020b60081b820183029060009081906001600160a01b038b169063f30dba9390610226908690600401610523565b6101206040518083038186803b15801561023f57600080fd5b505afa158015610253573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027791906103cb565b505050505050509150915060405180606001604052808460020b815260200182600f0b8152602001836fffffffffffffffffffffffffffffffff16815250888760019003975087815181106102c857fe5b60200260200101819052505050505b6001016101d0565b5050505092915050565b604080516060810182526000808252602082018190529181019190915290565b8051801515811461031957600080fd5b919050565b805161031981610531565b805177ffffffffffffffffffffffffffffffffffffffffffffffff8116811461031957600080fd5b805163ffffffff8116811461031957600080fd5b60008060408385031215610377578182fd5b823561038281610531565b91506020830135600181900b8114610398578182fd5b809150509250929050565b6000602082840312156103b4578081fd5b81518060020b81146103c4578182fd5b9392505050565b60008060008060008060008060006101208a8c0312156103e9578485fd5b89516fffffffffffffffffffffffffffffffff81168114610408578586fd5b8099505060208a015180600f0b811461041f578586fd5b8098505060408a0151965060608a0151955060808a01518060060b8114610444578586fd5b945061045260a08b0161031e565b935061046060c08b01610351565b925061046e60e08b01610309565b915061047d6101008b01610329565b90509295985092959850929598565b60006020828403121561049d578081fd5b5051919050565b602080825282518282018190526000919060409081850190868401855b82811015610508578151805160020b855286810151600f0b878601528501516fffffffffffffffffffffffffffffffff1685850152606090930192908501906001016104c1565b5091979650505050505050565b60019190910b815260200190565b60029190910b815260200190565b6001600160a01b038116811461054657600080fd5b5056fea2646970667358221220b33656f8e2dad9a3383161cf4ff28367601bd584bff0d20d5a545bd3592de6fc64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x57F 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 0x365 JUMP JUMPDEST PUSH2 0x59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50 SWAP2 SWAP1 PUSH2 0x4A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5339C296 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x89 SWAP2 SWAP1 PUSH2 0x515 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB5 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 0xD9 SWAP2 SWAP1 PUSH2 0x48C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x103 JUMPI PUSH1 0x1 DUP2 SHL DUP4 AND ISZERO PUSH2 0xFB JUMPI PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x1 ADD PUSH2 0xDF JUMP JUMPDEST POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x153 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 0x177 SWAP2 SWAP1 PUSH2 0x3A3 JUMP JUMPDEST SWAP1 POP DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x190 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 0x1CA JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1B7 PUSH2 0x2E9 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1AF JUMPI SWAP1 POP JUMPDEST POP SWAP4 POP PUSH1 0x0 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x2DF JUMPI PUSH1 0x1 DUP2 SHL DUP5 AND ISZERO PUSH2 0x2D7 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF30DBA93 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 DUP8 SWAP1 SIGNEXTEND PUSH1 0x2 SIGNEXTEND PUSH1 0x8 SHL DUP3 ADD DUP4 MUL SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP1 PUSH4 0xF30DBA93 SWAP1 PUSH2 0x226 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x523 JUMP JUMPDEST PUSH2 0x120 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x253 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 0x277 SWAP2 SWAP1 PUSH2 0x3CB JUMP JUMPDEST POP 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 0x2C8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1D0 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 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x319 DUP2 PUSH2 0x531 JUMP JUMPDEST DUP1 MLOAD PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x377 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x382 DUP2 PUSH2 0x531 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x398 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 0x3B4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x3C4 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x3E9 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP10 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x408 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP1 SWAP10 POP POP PUSH1 0x20 DUP11 ADD MLOAD DUP1 PUSH1 0xF SIGNEXTEND DUP2 EQ PUSH2 0x41F JUMPI DUP6 DUP7 REVERT JUMPDEST DUP1 SWAP9 POP POP PUSH1 0x40 DUP11 ADD MLOAD SWAP7 POP PUSH1 0x60 DUP11 ADD MLOAD SWAP6 POP PUSH1 0x80 DUP11 ADD MLOAD DUP1 PUSH1 0x6 SIGNEXTEND DUP2 EQ PUSH2 0x444 JUMPI DUP6 DUP7 REVERT JUMPDEST SWAP5 POP PUSH2 0x452 PUSH1 0xA0 DUP12 ADD PUSH2 0x31E JUMP JUMPDEST SWAP4 POP PUSH2 0x460 PUSH1 0xC0 DUP12 ADD PUSH2 0x351 JUMP JUMPDEST SWAP3 POP PUSH2 0x46E PUSH1 0xE0 DUP12 ADD PUSH2 0x309 JUMP JUMPDEST SWAP2 POP PUSH2 0x47D PUSH2 0x100 DUP12 ADD PUSH2 0x329 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x49D 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 0x508 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 0x4C1 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x546 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB3 CALLDATASIZE JUMP 0xF8 0xE2 0xDA 0xD9 LOG3 CODESIZE BALANCE PUSH2 0xCF4F CALLCODE DUP4 PUSH8 0x601BD584BFF0D20D GAS SLOAD JUMPDEST 0xD3 MSIZE 0x2D 0xE6 0xFC PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"232:1317:88:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4290:178","statements":[{"nodeType":"YulBlock","src":"6:3:178","statements":[]},{"body":{"nodeType":"YulBlock","src":"73:107:178","statements":[{"nodeType":"YulAssignment","src":"83:22:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"98:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"92:5:178"},"nodeType":"YulFunctionCall","src":"92:13:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"83:5:178"}]},{"body":{"nodeType":"YulBlock","src":"158:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"167:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"170:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"160:6:178"},"nodeType":"YulFunctionCall","src":"160:12:178"},"nodeType":"YulExpressionStatement","src":"160:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"127:5:178"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"148:5:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"141:6:178"},"nodeType":"YulFunctionCall","src":"141:13:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"134:6:178"},"nodeType":"YulFunctionCall","src":"134:21:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"124:2:178"},"nodeType":"YulFunctionCall","src":"124:32:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"117:6:178"},"nodeType":"YulFunctionCall","src":"117:40:178"},"nodeType":"YulIf","src":"114:2:178"}]},"name":"abi_decode_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"52:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"63:5:178","type":""}],"src":"14:166:178"},{"body":{"nodeType":"YulBlock","src":"247:80:178","statements":[{"nodeType":"YulAssignment","src":"257:22:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"272:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"266:5:178"},"nodeType":"YulFunctionCall","src":"266:13:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"257:5:178"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"315:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"288:26:178"},"nodeType":"YulFunctionCall","src":"288:33:178"},"nodeType":"YulExpressionStatement","src":"288:33:178"}]},"name":"abi_decode_t_uint160_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"226:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"237:5:178","type":""}],"src":"185:142:178"},{"body":{"nodeType":"YulBlock","src":"394:148:178","statements":[{"nodeType":"YulAssignment","src":"404:22:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"419:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"413:5:178"},"nodeType":"YulFunctionCall","src":"413:13:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"404:5:178"}]},{"body":{"nodeType":"YulBlock","src":"520:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"529:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"532:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"522:6:178"},"nodeType":"YulFunctionCall","src":"522:12:178"},"nodeType":"YulExpressionStatement","src":"522:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"448:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"459:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"466:50:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"455:3:178"},"nodeType":"YulFunctionCall","src":"455:62:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"445:2:178"},"nodeType":"YulFunctionCall","src":"445:73:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"438:6:178"},"nodeType":"YulFunctionCall","src":"438:81:178"},"nodeType":"YulIf","src":"435:2:178"}]},"name":"abi_decode_t_uint192_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"373:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"384:5:178","type":""}],"src":"332:210:178"},{"body":{"nodeType":"YulBlock","src":"608:108:178","statements":[{"nodeType":"YulAssignment","src":"618:22:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"633:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"627:5:178"},"nodeType":"YulFunctionCall","src":"627:13:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"618:5:178"}]},{"body":{"nodeType":"YulBlock","src":"694:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"703:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"706:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"696:6:178"},"nodeType":"YulFunctionCall","src":"696:12:178"},"nodeType":"YulExpressionStatement","src":"696:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"662:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"673:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"680:10:178","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"669:3:178"},"nodeType":"YulFunctionCall","src":"669:22:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"659:2:178"},"nodeType":"YulFunctionCall","src":"659:33:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"652:6:178"},"nodeType":"YulFunctionCall","src":"652:41:178"},"nodeType":"YulIf","src":"649:2:178"}]},"name":"abi_decode_t_uint32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"587:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"598:5:178","type":""}],"src":"547:169:178"},{"body":{"nodeType":"YulBlock","src":"806:353:178","statements":[{"body":{"nodeType":"YulBlock","src":"852:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"861:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"869:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"854:6:178"},"nodeType":"YulFunctionCall","src":"854:22:178"},"nodeType":"YulExpressionStatement","src":"854:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"827:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"836:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"823:3:178"},"nodeType":"YulFunctionCall","src":"823:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"848:2:178","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"819:3:178"},"nodeType":"YulFunctionCall","src":"819:32:178"},"nodeType":"YulIf","src":"816:2:178"},{"nodeType":"YulVariableDeclaration","src":"887:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"913:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"900:12:178"},"nodeType":"YulFunctionCall","src":"900:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"891:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"959:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"932:26:178"},"nodeType":"YulFunctionCall","src":"932:33:178"},"nodeType":"YulExpressionStatement","src":"932:33:178"},{"nodeType":"YulAssignment","src":"974:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"984:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"974:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"998:47:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1030:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1041:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1026:3:178"},"nodeType":"YulFunctionCall","src":"1026:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1013:12:178"},"nodeType":"YulFunctionCall","src":"1013:32:178"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1002:7:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"1101:26:178","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1110:6:178"},{"name":"value1","nodeType":"YulIdentifier","src":"1118:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1103:6:178"},"nodeType":"YulFunctionCall","src":"1103:22:178"},"nodeType":"YulExpressionStatement","src":"1103:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1067:7:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1087:1:178","type":"","value":"1"},{"name":"value_1","nodeType":"YulIdentifier","src":"1090:7:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"1076:10:178"},"nodeType":"YulFunctionCall","src":"1076:22:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1064:2:178"},"nodeType":"YulFunctionCall","src":"1064:35:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1057:6:178"},"nodeType":"YulFunctionCall","src":"1057:43:178"},"nodeType":"YulIf","src":"1054:2:178"},{"nodeType":"YulAssignment","src":"1136:17:178","value":{"name":"value_1","nodeType":"YulIdentifier","src":"1146:7:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1136:6:178"}]}]},"name":"abi_decode_tuple_t_addresst_int16","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"764:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"775:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"787:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"795:6:178","type":""}],"src":"721:438:178"},{"body":{"nodeType":"YulBlock","src":"1243:218:178","statements":[{"body":{"nodeType":"YulBlock","src":"1289:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1298:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1306:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1291:6:178"},"nodeType":"YulFunctionCall","src":"1291:22:178"},"nodeType":"YulExpressionStatement","src":"1291:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1264:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"1273:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1260:3:178"},"nodeType":"YulFunctionCall","src":"1260:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"1285:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1256:3:178"},"nodeType":"YulFunctionCall","src":"1256:32:178"},"nodeType":"YulIf","src":"1253:2:178"},{"nodeType":"YulVariableDeclaration","src":"1324:29:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1343:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1337:5:178"},"nodeType":"YulFunctionCall","src":"1337:16:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1328:5:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"1405:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1414:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1422:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1407:6:178"},"nodeType":"YulFunctionCall","src":"1407:22:178"},"nodeType":"YulExpressionStatement","src":"1407:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1375:5:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1393:1:178","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"1396:5:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"1382:10:178"},"nodeType":"YulFunctionCall","src":"1382:20:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1372:2:178"},"nodeType":"YulFunctionCall","src":"1372:31:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1365:6:178"},"nodeType":"YulFunctionCall","src":"1365:39:178"},"nodeType":"YulIf","src":"1362:2:178"},{"nodeType":"YulAssignment","src":"1440:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"1450:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1440:6:178"}]}]},"name":"abi_decode_tuple_t_int24_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1209:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1220:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1232:6:178","type":""}],"src":"1164:297:178"},{"body":{"nodeType":"YulBlock","src":"1676:929:178","statements":[{"body":{"nodeType":"YulBlock","src":"1723:26:178","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1732:6:178"},{"name":"value4","nodeType":"YulIdentifier","src":"1740:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1725:6:178"},"nodeType":"YulFunctionCall","src":"1725:22:178"},"nodeType":"YulExpressionStatement","src":"1725:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1697:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"1706:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1693:3:178"},"nodeType":"YulFunctionCall","src":"1693:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"1718:3:178","type":"","value":"288"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1689:3:178"},"nodeType":"YulFunctionCall","src":"1689:33:178"},"nodeType":"YulIf","src":"1686:2:178"},{"nodeType":"YulVariableDeclaration","src":"1758:29:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1777:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1771:5:178"},"nodeType":"YulFunctionCall","src":"1771:16:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1762:5:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"1865:26:178","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1874:6:178"},{"name":"value4","nodeType":"YulIdentifier","src":"1882:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1867:6:178"},"nodeType":"YulFunctionCall","src":"1867:22:178"},"nodeType":"YulExpressionStatement","src":"1867:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1809:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1820:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"1827:34:178","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1816:3:178"},"nodeType":"YulFunctionCall","src":"1816:46:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1806:2:178"},"nodeType":"YulFunctionCall","src":"1806:57:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1799:6:178"},"nodeType":"YulFunctionCall","src":"1799:65:178"},"nodeType":"YulIf","src":"1796:2:178"},{"nodeType":"YulAssignment","src":"1900:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"1910:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1900:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"1924:40:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1949:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1960:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1945:3:178"},"nodeType":"YulFunctionCall","src":"1945:18:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1939:5:178"},"nodeType":"YulFunctionCall","src":"1939:25:178"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1928:7:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2021:26:178","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"2030:6:178"},{"name":"value4","nodeType":"YulIdentifier","src":"2038:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2023:6:178"},"nodeType":"YulFunctionCall","src":"2023:22:178"},"nodeType":"YulExpressionStatement","src":"2023:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1986:7:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2006:2:178","type":"","value":"15"},{"name":"value_1","nodeType":"YulIdentifier","src":"2010:7:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"1995:10:178"},"nodeType":"YulFunctionCall","src":"1995:23:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1983:2:178"},"nodeType":"YulFunctionCall","src":"1983:36:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1976:6:178"},"nodeType":"YulFunctionCall","src":"1976:44:178"},"nodeType":"YulIf","src":"1973:2:178"},{"nodeType":"YulAssignment","src":"2056:17:178","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2066:7:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2056:6:178"}]},{"nodeType":"YulAssignment","src":"2082:35:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2102:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2113:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2098:3:178"},"nodeType":"YulFunctionCall","src":"2098:18:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2092:5:178"},"nodeType":"YulFunctionCall","src":"2092:25:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2082:6:178"}]},{"nodeType":"YulAssignment","src":"2126:35:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2146:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2157:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2142:3:178"},"nodeType":"YulFunctionCall","src":"2142:18:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2136:5:178"},"nodeType":"YulFunctionCall","src":"2136:25:178"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"2126:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"2170:41:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2195:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2206:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2191:3:178"},"nodeType":"YulFunctionCall","src":"2191:19:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2185:5:178"},"nodeType":"YulFunctionCall","src":"2185:26:178"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"2174:7:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2267:26:178","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"2276:6:178"},{"name":"value4","nodeType":"YulIdentifier","src":"2284:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2269:6:178"},"nodeType":"YulFunctionCall","src":"2269:22:178"},"nodeType":"YulExpressionStatement","src":"2269:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"2233:7:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2253:1:178","type":"","value":"6"},{"name":"value_2","nodeType":"YulIdentifier","src":"2256:7:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"2242:10:178"},"nodeType":"YulFunctionCall","src":"2242:22:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2230:2:178"},"nodeType":"YulFunctionCall","src":"2230:35:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2223:6:178"},"nodeType":"YulFunctionCall","src":"2223:43:178"},"nodeType":"YulIf","src":"2220:2:178"},{"nodeType":"YulAssignment","src":"2302:17:178","value":{"name":"value_2","nodeType":"YulIdentifier","src":"2312:7:178"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"2302:6:178"}]},{"nodeType":"YulAssignment","src":"2328:62:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2374:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2385:3:178","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2370:3:178"},"nodeType":"YulFunctionCall","src":"2370:19:178"}],"functionName":{"name":"abi_decode_t_uint160_fromMemory","nodeType":"YulIdentifier","src":"2338:31:178"},"nodeType":"YulFunctionCall","src":"2338:52:178"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"2328:6:178"}]},{"nodeType":"YulAssignment","src":"2399:61:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2444:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2455:3:178","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2440:3:178"},"nodeType":"YulFunctionCall","src":"2440:19:178"}],"functionName":{"name":"abi_decode_t_uint32_fromMemory","nodeType":"YulIdentifier","src":"2409:30:178"},"nodeType":"YulFunctionCall","src":"2409:51:178"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"2399:6:178"}]},{"nodeType":"YulAssignment","src":"2469:59:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2512:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2523:3:178","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2508:3:178"},"nodeType":"YulFunctionCall","src":"2508:19:178"}],"functionName":{"name":"abi_decode_t_bool_fromMemory","nodeType":"YulIdentifier","src":"2479:28:178"},"nodeType":"YulFunctionCall","src":"2479:49:178"},"variableNames":[{"name":"value7","nodeType":"YulIdentifier","src":"2469:6:178"}]},{"nodeType":"YulAssignment","src":"2537:62:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2583:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2594:3:178","type":"","value":"256"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2579:3:178"},"nodeType":"YulFunctionCall","src":"2579:19:178"}],"functionName":{"name":"abi_decode_t_uint192_fromMemory","nodeType":"YulIdentifier","src":"2547:31:178"},"nodeType":"YulFunctionCall","src":"2547:52:178"},"variableNames":[{"name":"value8","nodeType":"YulIdentifier","src":"2537:6:178"}]}]},"name":"abi_decode_tuple_t_uint128t_int128t_uint256t_uint256t_int56t_uint160t_uint32t_boolt_uint192_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1578:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1589:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1601:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1609:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1617:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1625:6:178","type":""},{"name":"value4","nodeType":"YulTypedName","src":"1633:6:178","type":""},{"name":"value5","nodeType":"YulTypedName","src":"1641:6:178","type":""},{"name":"value6","nodeType":"YulTypedName","src":"1649:6:178","type":""},{"name":"value7","nodeType":"YulTypedName","src":"1657:6:178","type":""},{"name":"value8","nodeType":"YulTypedName","src":"1665:6:178","type":""}],"src":"1466:1139:178"},{"body":{"nodeType":"YulBlock","src":"2691:113:178","statements":[{"body":{"nodeType":"YulBlock","src":"2737:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2746:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2754:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2739:6:178"},"nodeType":"YulFunctionCall","src":"2739:22:178"},"nodeType":"YulExpressionStatement","src":"2739:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2712:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"2721:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2708:3:178"},"nodeType":"YulFunctionCall","src":"2708:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"2733:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2704:3:178"},"nodeType":"YulFunctionCall","src":"2704:32:178"},"nodeType":"YulIf","src":"2701:2:178"},{"nodeType":"YulAssignment","src":"2772:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2788:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2782:5:178"},"nodeType":"YulFunctionCall","src":"2782:16:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2772:6:178"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2657:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2668:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2680:6:178","type":""}],"src":"2610:194:178"},{"body":{"nodeType":"YulBlock","src":"3024:717:178","statements":[{"nodeType":"YulVariableDeclaration","src":"3034:12:178","value":{"kind":"number","nodeType":"YulLiteral","src":"3044:2:178","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3038:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3055:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3073:9:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3084:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3069:3:178"},"nodeType":"YulFunctionCall","src":"3069:18:178"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3059:6:178","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3103:9:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3114:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3096:6:178"},"nodeType":"YulFunctionCall","src":"3096:21:178"},"nodeType":"YulExpressionStatement","src":"3096:21:178"},{"nodeType":"YulVariableDeclaration","src":"3126:17:178","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3137:6:178"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3130:3:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3152:27:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3172:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3166:5:178"},"nodeType":"YulFunctionCall","src":"3166:13:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3156:6:178","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3195:6:178"},{"name":"length","nodeType":"YulIdentifier","src":"3203:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3188:6:178"},"nodeType":"YulFunctionCall","src":"3188:22:178"},"nodeType":"YulExpressionStatement","src":"3188:22:178"},{"nodeType":"YulVariableDeclaration","src":"3219:12:178","value":{"kind":"number","nodeType":"YulLiteral","src":"3229:2:178","type":"","value":"64"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3223:2:178","type":""}]},{"nodeType":"YulAssignment","src":"3240:25:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3251:9:178"},{"name":"_2","nodeType":"YulIdentifier","src":"3262:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3247:3:178"},"nodeType":"YulFunctionCall","src":"3247:18:178"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3240:3:178"}]},{"nodeType":"YulVariableDeclaration","src":"3274:29:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3292:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3300:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3288:3:178"},"nodeType":"YulFunctionCall","src":"3288:15:178"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3278:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3312:13:178","value":{"name":"tail","nodeType":"YulIdentifier","src":"3321:4:178"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3316:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3383:332:178","statements":[{"nodeType":"YulVariableDeclaration","src":"3397:23:178","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3413:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3407:5:178"},"nodeType":"YulFunctionCall","src":"3407:13:178"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"3401:2:178","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3440:3:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3456:1:178","type":"","value":"2"},{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3465:2:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3459:5:178"},"nodeType":"YulFunctionCall","src":"3459:9:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"3445:10:178"},"nodeType":"YulFunctionCall","src":"3445:24:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3433:6:178"},"nodeType":"YulFunctionCall","src":"3433:37:178"},"nodeType":"YulExpressionStatement","src":"3433:37:178"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3494:3:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3499:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3490:3:178"},"nodeType":"YulFunctionCall","src":"3490:12:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3515:2:178","type":"","value":"15"},{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3529:2:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3533:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3525:3:178"},"nodeType":"YulFunctionCall","src":"3525:11:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3519:5:178"},"nodeType":"YulFunctionCall","src":"3519:18:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"3504:10:178"},"nodeType":"YulFunctionCall","src":"3504:34:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3483:6:178"},"nodeType":"YulFunctionCall","src":"3483:56:178"},"nodeType":"YulExpressionStatement","src":"3483:56:178"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3563:3:178"},{"name":"_2","nodeType":"YulIdentifier","src":"3568:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3559:3:178"},"nodeType":"YulFunctionCall","src":"3559:12:178"},{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3587:2:178"},{"name":"_2","nodeType":"YulIdentifier","src":"3591:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3583:3:178"},"nodeType":"YulFunctionCall","src":"3583:11:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3577:5:178"},"nodeType":"YulFunctionCall","src":"3577:18:178"},{"kind":"number","nodeType":"YulLiteral","src":"3597:34:178","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3573:3:178"},"nodeType":"YulFunctionCall","src":"3573:59:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3552:6:178"},"nodeType":"YulFunctionCall","src":"3552:81:178"},"nodeType":"YulExpressionStatement","src":"3552:81:178"},{"nodeType":"YulAssignment","src":"3646:21:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3657:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"3662:4:178","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3653:3:178"},"nodeType":"YulFunctionCall","src":"3653:14:178"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3646:3:178"}]},{"nodeType":"YulAssignment","src":"3680:25:178","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3694:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3702:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3690:3:178"},"nodeType":"YulFunctionCall","src":"3690:15:178"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3680:6:178"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3345:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"3348:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3342:2:178"},"nodeType":"YulFunctionCall","src":"3342:13:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3356:18:178","statements":[{"nodeType":"YulAssignment","src":"3358:14:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3367:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"3370:1:178","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3363:3:178"},"nodeType":"YulFunctionCall","src":"3363:9:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3358:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"3338:3:178","statements":[]},"src":"3334:381:178"},{"nodeType":"YulAssignment","src":"3724:11:178","value":{"name":"pos","nodeType":"YulIdentifier","src":"3732:3:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3724:4:178"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_PopulatedTick_$16378_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_PopulatedTick_$16378_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2993:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3004:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3015:4:178","type":""}],"src":"2809:932:178"},{"body":{"nodeType":"YulBlock","src":"3843:91:178","statements":[{"nodeType":"YulAssignment","src":"3853:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3865:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3876:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3861:3:178"},"nodeType":"YulFunctionCall","src":"3861:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3853:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3895:9:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3917:1:178","type":"","value":"1"},{"name":"value0","nodeType":"YulIdentifier","src":"3920:6:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"3906:10:178"},"nodeType":"YulFunctionCall","src":"3906:21:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3888:6:178"},"nodeType":"YulFunctionCall","src":"3888:40:178"},"nodeType":"YulExpressionStatement","src":"3888:40:178"}]},"name":"abi_encode_tuple_t_int16__to_t_int16__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3812:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3823:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3834:4:178","type":""}],"src":"3746:188:178"},{"body":{"nodeType":"YulBlock","src":"4036:91:178","statements":[{"nodeType":"YulAssignment","src":"4046:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4058:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4069:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4054:3:178"},"nodeType":"YulFunctionCall","src":"4054:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4046:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4088:9:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4110:1:178","type":"","value":"2"},{"name":"value0","nodeType":"YulIdentifier","src":"4113:6:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"4099:10:178"},"nodeType":"YulFunctionCall","src":"4099:21:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4081:6:178"},"nodeType":"YulFunctionCall","src":"4081:40:178"},"nodeType":"YulExpressionStatement","src":"4081:40:178"}]},"name":"abi_encode_tuple_t_int24__to_t_int24__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4005:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4016:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4027:4:178","type":""}],"src":"3939:188:178"},{"body":{"nodeType":"YulBlock","src":"4179:109:178","statements":[{"body":{"nodeType":"YulBlock","src":"4266:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4275:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4278:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4268:6:178"},"nodeType":"YulFunctionCall","src":"4268:12:178"},"nodeType":"YulExpressionStatement","src":"4268:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4202:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4213:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"4220:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4209:3:178"},"nodeType":"YulFunctionCall","src":"4209:54:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4199:2:178"},"nodeType":"YulFunctionCall","src":"4199:65:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4192:6:178"},"nodeType":"YulFunctionCall","src":"4192:73:178"},"nodeType":"YulIf","src":"4189:2:178"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4168:5:178","type":""}],"src":"4132:156:178"}]},"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_uint192_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\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_boolt_uint192_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8\n    {\n        if slt(sub(dataEnd, headStart), 288) { 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        value8 := abi_decode_t_uint192_fromMemory(add(headStart, 256))\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_$16378_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_PopulatedTick_$16378_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":178,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061002b5760003560e01c8063351fb47814610030575b600080fd5b61004361003e366004610365565b610059565b60405161005091906104a4565b60405180910390f35b60606000836001600160a01b0316635339c296846040518263ffffffff1660e01b81526004016100899190610515565b60206040518083038186803b1580156100a157600080fd5b505afa1580156100b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d9919061048c565b90506000805b610100811015610103576001811b8316156100fb576001909101905b6001016100df565b506000856001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561013f57600080fd5b505afa158015610153573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017791906103a3565b90508167ffffffffffffffff8111801561019057600080fd5b506040519080825280602002602001820160405280156101ca57816020015b6101b76102e9565b8152602001906001900390816101af5790505b50935060005b6101008110156102df576001811b8416156102d75760405163f30dba9360e01b8152600187900b60020b60081b820183029060009081906001600160a01b038b169063f30dba9390610226908690600401610523565b6101206040518083038186803b15801561023f57600080fd5b505afa158015610253573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027791906103cb565b505050505050509150915060405180606001604052808460020b815260200182600f0b8152602001836fffffffffffffffffffffffffffffffff16815250888760019003975087815181106102c857fe5b60200260200101819052505050505b6001016101d0565b5050505092915050565b604080516060810182526000808252602082018190529181019190915290565b8051801515811461031957600080fd5b919050565b805161031981610531565b805177ffffffffffffffffffffffffffffffffffffffffffffffff8116811461031957600080fd5b805163ffffffff8116811461031957600080fd5b60008060408385031215610377578182fd5b823561038281610531565b91506020830135600181900b8114610398578182fd5b809150509250929050565b6000602082840312156103b4578081fd5b81518060020b81146103c4578182fd5b9392505050565b60008060008060008060008060006101208a8c0312156103e9578485fd5b89516fffffffffffffffffffffffffffffffff81168114610408578586fd5b8099505060208a015180600f0b811461041f578586fd5b8098505060408a0151965060608a0151955060808a01518060060b8114610444578586fd5b945061045260a08b0161031e565b935061046060c08b01610351565b925061046e60e08b01610309565b915061047d6101008b01610329565b90509295985092959850929598565b60006020828403121561049d578081fd5b5051919050565b602080825282518282018190526000919060409081850190868401855b82811015610508578151805160020b855286810151600f0b878601528501516fffffffffffffffffffffffffffffffff1685850152606090930192908501906001016104c1565b5091979650505050505050565b60019190910b815260200190565b60029190910b815260200190565b6001600160a01b038116811461054657600080fd5b5056fea2646970667358221220b33656f8e2dad9a3383161cf4ff28367601bd584bff0d20d5a545bd3592de6fc64736f6c63430007060033","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 0x365 JUMP JUMPDEST PUSH2 0x59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50 SWAP2 SWAP1 PUSH2 0x4A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5339C296 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x89 SWAP2 SWAP1 PUSH2 0x515 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB5 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 0xD9 SWAP2 SWAP1 PUSH2 0x48C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x103 JUMPI PUSH1 0x1 DUP2 SHL DUP4 AND ISZERO PUSH2 0xFB JUMPI PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x1 ADD PUSH2 0xDF JUMP JUMPDEST POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x153 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 0x177 SWAP2 SWAP1 PUSH2 0x3A3 JUMP JUMPDEST SWAP1 POP DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x190 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 0x1CA JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1B7 PUSH2 0x2E9 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1AF JUMPI SWAP1 POP JUMPDEST POP SWAP4 POP PUSH1 0x0 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x2DF JUMPI PUSH1 0x1 DUP2 SHL DUP5 AND ISZERO PUSH2 0x2D7 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF30DBA93 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 DUP8 SWAP1 SIGNEXTEND PUSH1 0x2 SIGNEXTEND PUSH1 0x8 SHL DUP3 ADD DUP4 MUL SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP1 PUSH4 0xF30DBA93 SWAP1 PUSH2 0x226 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x523 JUMP JUMPDEST PUSH2 0x120 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x253 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 0x277 SWAP2 SWAP1 PUSH2 0x3CB JUMP JUMPDEST POP 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 0x2C8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1D0 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 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x319 DUP2 PUSH2 0x531 JUMP JUMPDEST DUP1 MLOAD PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x377 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x382 DUP2 PUSH2 0x531 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x398 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 0x3B4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x3C4 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x3E9 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP10 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x408 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP1 SWAP10 POP POP PUSH1 0x20 DUP11 ADD MLOAD DUP1 PUSH1 0xF SIGNEXTEND DUP2 EQ PUSH2 0x41F JUMPI DUP6 DUP7 REVERT JUMPDEST DUP1 SWAP9 POP POP PUSH1 0x40 DUP11 ADD MLOAD SWAP7 POP PUSH1 0x60 DUP11 ADD MLOAD SWAP6 POP PUSH1 0x80 DUP11 ADD MLOAD DUP1 PUSH1 0x6 SIGNEXTEND DUP2 EQ PUSH2 0x444 JUMPI DUP6 DUP7 REVERT JUMPDEST SWAP5 POP PUSH2 0x452 PUSH1 0xA0 DUP12 ADD PUSH2 0x31E JUMP JUMPDEST SWAP4 POP PUSH2 0x460 PUSH1 0xC0 DUP12 ADD PUSH2 0x351 JUMP JUMPDEST SWAP3 POP PUSH2 0x46E PUSH1 0xE0 DUP12 ADD PUSH2 0x309 JUMP JUMPDEST SWAP2 POP PUSH2 0x47D PUSH2 0x100 DUP12 ADD PUSH2 0x329 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x49D 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 0x508 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 0x4C1 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x546 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB3 CALLDATASIZE JUMP 0xF8 0xE2 0xDA 0xD9 LOG3 CODESIZE BALANCE PUSH2 0xCF4F CALLCODE DUP4 PUSH8 0x601BD584BFF0D20D GAS SLOAD JUMPDEST 0xD3 MSIZE 0x2D 0xE6 0xFC PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"232:1317:88:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;301:1245;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;437:37;517:14;546:4;-1:-1:-1;;;;;534:28:88;;563:15;534:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;517:62;-1:-1:-1;644:30:88;;685:112;709:3;705:1;:7;685:112;;;748:1;:6;;738:17;;:21;734:51;;761:24;;;;;734:51;714:3;;685:112;;;;847:17;879:4;-1:-1:-1;;;;;867:29:88;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;847:51;;946:22;926:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;909:60;;985:9;980:559;1004:3;1000:1;:7;980:559;;;1043:1;:6;;1033:17;;:21;1029:499;;1234:38;;-1:-1:-1;;;1234:38:88;;1099:22;;;;:27;;1125:1;1099:27;1098:40;;1097:56;;;1075:19;;;;-1:-1:-1;;;;;1234:23:88;;;;;:38;;1097:56;;1234:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1172:100;;;;;;;;;;;1334:178;;;;;;;;1377:13;1334:178;;;;;;1427:12;1334:178;;;;;;1478:14;1334:178;;;;;1291:14;1306:24;;;;;;;1291:40;;;;;;;;;;;;;:221;;;;1029:499;;;;1009:3;;980:559;;;;301:1245;;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:166:178:-;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:210::-;413:13;;466:50;455:62;;445:73;;435:2;;532:1;529;522:12;547:169;627:13;;680:10;669:22;;659:33;;649:2;;706:1;703;696:12;721:438;;;848:2;836:9;827:7;823:23;819:32;816:2;;;869:6;861;854:22;816:2;913:9;900:23;932:33;959:5;932:33;:::i;:::-;984:5;-1:-1:-1;1041:2:178;1026:18;;1013:32;1087:1;1076:22;;;1064:35;;1054:2;;1118:6;1110;1103:22;1054:2;1146:7;1136:17;;;806:353;;;;;:::o;1164:297::-;;1285:2;1273:9;1264:7;1260:23;1256:32;1253:2;;;1306:6;1298;1291:22;1253:2;1343:9;1337:16;1396:5;1393:1;1382:20;1375:5;1372:31;1362:2;;1422:6;1414;1407:22;1362:2;1450:5;1243:218;-1:-1:-1;;;1243:218:178:o;1466:1139::-;;;;;;;;;;1718:3;1706:9;1697:7;1693:23;1689:33;1686:2;;;1740:6;1732;1725:22;1686:2;1777:9;1771:16;1827:34;1820:5;1816:46;1809:5;1806:57;1796:2;;1882:6;1874;1867:22;1796:2;1910:5;1900:15;;;1960:2;1949:9;1945:18;1939:25;2010:7;2006:2;1995:23;1986:7;1983:36;1973:2;;2038:6;2030;2023:22;1973:2;2066:7;2056:17;;;2113:2;2102:9;2098:18;2092:25;2082:35;;2157:2;2146:9;2142:18;2136:25;2126:35;;2206:3;2195:9;2191:19;2185:26;2256:7;2253:1;2242:22;2233:7;2230:35;2220:2;;2284:6;2276;2269:22;2220:2;2312:7;-1:-1:-1;2338:52:178;2385:3;2370:19;;2338:52;:::i;:::-;2328:62;;2409:51;2455:3;2444:9;2440:19;2409:51;:::i;:::-;2399:61;;2479:49;2523:3;2512:9;2508:19;2479:49;:::i;:::-;2469:59;;2547:52;2594:3;2583:9;2579:19;2547:52;:::i;:::-;2537:62;;1676:929;;;;;;;;;;;:::o;2610:194::-;;2733:2;2721:9;2712:7;2708:23;2704:32;2701:2;;;2754:6;2746;2739:22;2701:2;-1:-1:-1;2782:16:178;;2691:113;-1:-1:-1;2691:113:178:o;2809:932::-;3044:2;3096:21;;;3166:13;;3069:18;;;3188:22;;;2809:932;;3044:2;3229;;3247:18;;;;3288:15;;;2809:932;3334:381;3348:6;3345:1;3342:13;3334:381;;;3407:13;;3459:9;;3456:1;3445:24;3433:37;;3525:11;;;3519:18;3515:2;3504:34;3490:12;;;3483:56;3583:11;;3577:18;3597:34;3573:59;3559:12;;;3552:81;3662:4;3653:14;;;;3690:15;;;;3370:1;3363:9;3334:381;;;-1:-1:-1;3732:3:178;;3024:717;-1:-1:-1;;;;;;;3024:717:178:o;3746:188::-;3917:1;3906:21;;;;3888:40;;3876:2;3861:18;;3843:91::o;3939:188::-;4110:1;4099:21;;;;4081:40;;4069:2;4054:18;;4036:91::o;4132:156::-;-1:-1:-1;;;;;4213:5:178;4209:54;4202:5;4199:65;4189:2;;4278:1;4275;4268:12;4189:2;4179: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/elixir-periphery/lens/TickLens.sol\":\"TickLens\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-periphery/interfaces/ITickLens.sol\":{\"keccak256\":\"0x67c0150c097762d0f4dcd07e63425d96016aabcef4765119247c738d0727657b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://04c33ba992e14fefb5642f1b679d249105cd1e8a1c2ee54506692dbbe334a35c\",\"dweb:/ipfs/QmdUugSiLbXrGSJesH4SuDBtknM2evR5NSqisPQEmjPCfi\"]},\"contracts/elixir-periphery/lens/TickLens.sol\":{\"keccak256\":\"0x45c39a12b33c33d6b4975cfcce8c6d99dcb8bb32ef27877d502dea518f4162ad\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://43828e8fd91b4c75bd3a74eb53c166b969cc44faa8f565fabbd2d602c044260a\",\"dweb:/ipfs/QmbKByzQXYMja9k1bCZSMLTMzULtsghw1vPCexfZDG4qsV\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/BytesLib.sol":{"BytesLib":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ea9038b62096bd62803f173886438a5166180b9c52b5f79cb6d485560951e7aa64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEA SWAP1 CODESIZE 0xB6 KECCAK256 SWAP7 0xBD PUSH3 0x803F17 CODESIZE DUP7 NUMBER DUP11 MLOAD PUSH7 0x180B9C52B5F79C 0xB6 0xD4 DUP6 JUMP MULMOD MLOAD 0xE7 0xAA PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"386:3915:89:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ea9038b62096bd62803f173886438a5166180b9c52b5f79cb6d485560951e7aa64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEA SWAP1 CODESIZE 0xB6 KECCAK256 SWAP7 0xBD PUSH3 0x803F17 CODESIZE DUP7 NUMBER DUP11 MLOAD PUSH7 0x180B9C52B5F79C 0xB6 0xD4 DUP6 JUMP MULMOD MLOAD 0xE7 0xAA PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"386:3915: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/elixir-periphery/libraries/BytesLib.sol\":\"BytesLib\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/libraries/BytesLib.sol\":{\"keccak256\":\"0xbf23f73b0ec504e799b3e8ea71063eaeec08d6e688c56951fc645afaf5c1e7fd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://863b16fdc6f8b9a22622fe4f9b991b4b7039db2beec8095134ed18ec4843683f\",\"dweb:/ipfs/QmatVX7apv6drzj8WvDjQs8sREGApz1U4pvhPnk6MCyPFT\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/CallbackValidation.sol":{"CallbackValidation":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204a407c2724cf37f575140e50a0b44313309cbe878b80b9114b9f6435765d49e564736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4A BLOCKHASH PUSH29 0x2724CF37F575140E50A0B44313309CBE878B80B9114B9F6435765D49E5 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"225:1251:90:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204a407c2724cf37f575140e50a0b44313309cbe878b80b9114b9f6435765d49e564736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4A BLOCKHASH PUSH29 0x2724CF37F575140E50A0B44313309CBE878B80B9114B9F6435765D49E5 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"225:1251: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\":{},\"notice\":\"Provides validation for callbacks from Elixir Pools\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/libraries/CallbackValidation.sol\":\"CallbackValidation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-periphery/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xb2c39ec43afd1140b765a183017c52d02763f6ad1732cc8bd15b424cf60addf3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4991a734b128dee4821aaaca11279e2caa458128a436ee4b64ddd2483962223a\",\"dweb:/ipfs/QmbLtcN47cGXxbAua61GDp9PGz9bqru7UQPH2CJSgF1cjC\"]},\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/ChainId.sol":{"ChainId":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209a672ad6ccda62fb430c569d812564e3509ec3b53f49e8901d3535577533a33d64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP11 PUSH8 0x2AD6CCDA62FB430C JUMP SWAP14 DUP2 0x25 PUSH5 0xE3509EC3B5 EXTCODEHASH 0x49 0xE8 SWAP1 SAR CALLDATALOAD CALLDATALOAD JUMPI PUSH22 0x33A33D64736F6C634300070600330000000000000000 ","sourceMap":"135:240:91:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209a672ad6ccda62fb430c569d812564e3509ec3b53f49e8901d3535577533a33d64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP11 PUSH8 0x2AD6CCDA62FB430C JUMP SWAP14 DUP2 0x25 PUSH5 0xE3509EC3B5 EXTCODEHASH 0x49 0xE8 SWAP1 SAR CALLDATALOAD CALLDATALOAD JUMPI PUSH22 0x33A33D64736F6C634300070600330000000000000000 ","sourceMap":"135:240:91:-: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/elixir-periphery/libraries/ChainId.sol\":\"ChainId\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/libraries/ChainId.sol\":{\"keccak256\":\"0x6de0c960e4f3f024d7473c9e08ab84d3f2c7317117661eabd2ea0e9fdad3dfb2\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e591724e2d5b0ca7c95e5e54ecf520487556a4045e770c4da9ee5930f48fd215\",\"dweb:/ipfs/QmW1HCuhWaBckYz8Kx1XmaPRn1nSuCMZLdGmaR6UJdQsLH\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/HexStrings.sol":{"HexStrings":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208b4b6f3590852ef8a20afdd25963cb702ed7506ff9df4a245f999681d03785f164736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP12 0x4B PUSH16 0x3590852EF8A20AFDD25963CB702ED750 PUSH16 0xF9DF4A245F999681D03785F164736F6C PUSH4 0x43000706 STOP CALLER ","sourceMap":"60:1179:92:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208b4b6f3590852ef8a20afdd25963cb702ed7506ff9df4a245f999681d03785f164736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP12 0x4B PUSH16 0x3590852EF8A20AFDD25963CB702ED750 PUSH16 0xF9DF4A245F999681D03785F164736F6C PUSH4 0x43000706 STOP CALLER ","sourceMap":"60:1179: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/elixir-periphery/libraries/HexStrings.sol\":\"HexStrings\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/libraries/HexStrings.sol\":{\"keccak256\":\"0x76ad8d62d4912de27afa5b98719c028f156fb921111ab712a2ec12fd1deff166\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77419729f3c36cc55d424833c971c46f751dd7b0c98e83da0955734f4d1398bd\",\"dweb:/ipfs/QmTWWqhAVabx3HYY6cme1G8Hr9M77bdwANoRaXDjX3K1oh\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/LiquidityAmounts.sol":{"LiquidityAmounts":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ab0a1647cce73ec052634dac2538d7aba1d6fb44b726705c1524525a05b88acf64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAB EXP AND SELFBALANCE 0xCC 0xE7 RETURNDATACOPY 0xC0 MSTORE PUSH4 0x4DAC2538 0xD7 0xAB LOG1 0xD6 0xFB DIFFICULTY 0xB7 0x26 PUSH17 0x5C1524525A05B88ACF64736F6C63430007 MOD STOP CALLER ","sourceMap":"317:6615:93:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ab0a1647cce73ec052634dac2538d7aba1d6fb44b726705c1524525a05b88acf64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAB EXP AND SELFBALANCE 0xCC 0xE7 RETURNDATACOPY 0xC0 MSTORE PUSH4 0x4DAC2538 0xD7 0xAB LOG1 0xD6 0xFB DIFFICULTY 0xB7 0x26 PUSH17 0x5C1524525A05B88ACF64736F6C63430007 MOD STOP CALLER ","sourceMap":"317:6615:93:-: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/elixir-periphery/libraries/LiquidityAmounts.sol\":\"LiquidityAmounts\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-periphery/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x8ed6cb25c14c41756086367d76eba826250da3a8621ace0c8657fce32e68fad7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06d92752a75efdd197ef39740e3e266bda1fbd0361c40bb9c014a608ade17b31\",\"dweb:/ipfs/QmRPhnmoNz9s2ZvJDomKtKMrYJXPvD6J6LGDtTQ8KeTDMY\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/NFTSVG.sol":{"NFTSVG":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209f79ca1c735470a11fd30acee25fc2e9a629da8dd78d673774cdb63438ec389464736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP16 PUSH26 0xCA1C735470A11FD30ACEE25FC2E9A629DA8DD78D673774CDB634 CODESIZE 0xEC CODESIZE SWAP5 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"324:19407:94:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209f79ca1c735470a11fd30acee25fc2e9a629da8dd78d673774cdb63438ec389464736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP16 PUSH26 0xCA1C735470A11FD30ACEE25FC2E9A629DA8DD78D673774CDB634 CODESIZE 0xEC CODESIZE SWAP5 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"324:19407:94:-: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 Elixir NFT\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/libraries/NFTSVG.sol\":\"NFTSVG\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"base64-sol/base64.sol\":{\"keccak256\":\"0xa73959e6ef0b693e4423a562e612370160b934a75e618361ddd8c9c4b8ddbaaf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17c12e16d8d66f3af15d8787920bd41ca6c1e7517a212a6b9cebd4b6d38f36fe\",\"dweb:/ipfs/QmcXMnZUXEz6LRKsm3CSvqdPboAzmezavi8bTg2dRxM2yE\"]},\"contracts/elixir-core/libraries/BitMath.sol\":{\"keccak256\":\"0x14c52bf69e189d123dc9fa84ebdca0d879cb020b7df4953678345a8e567aaf7f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aba03531acefeef92920d5208618ae8dfa9f9a918e2c5bfbf5798110ba8f60de\",\"dweb:/ipfs/QmUSm4Js5hMFvhBW4DvMhBPhhXTbwZ8ix9beZUNEppvAhv\"]},\"contracts/elixir-periphery/libraries/NFTSVG.sol\":{\"keccak256\":\"0x092c1b6ad7960378ea2c7a04fb678bb49e984f450ccef2c4158cc7734c08ae03\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8a270078a9caba4a224164a7b48e5ba578a93f80363cf85d9d8e1f4495fd86ea\",\"dweb:/ipfs/QmX35vX9YQdCJy2Biatxb7zzhZ3sEbmn7WW6RGid83oWXr\"]},\"openzeppelin-contracts-solc-0.7/utils/Strings.sol\":{\"keccak256\":\"0x08e38e034333372aea8cb1b8846085b7fbab42c6b77a0af464d2c6827827c4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22746e9348187309fb4fbd3f79f6ad88787103eac10f24bd18f67257fafdd8ad\",\"dweb:/ipfs/QmSLXfXg8b27Xstq58DFGvCpqgtTqpfrGbLMq19PtEKQJS\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/OracleLibrary.sol":{"OracleLibrary":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220770cc668842ea518e0843e0dae3305137238f6fbd5c813c1e1f16df089de1ebd64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH24 0xCC668842EA518E0843E0DAE3305137238F6FBD5C813C1E1 CALL PUSH14 0xF089DE1EBD64736F6C6343000706 STOP CALLER ","sourceMap":"339:9125:95:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220770cc668842ea518e0843e0dae3305137238f6fbd5c813c1e1f16df089de1ebd64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH24 0xCC668842EA518E0843E0DAE3305137238F6FBD5C813C1E1 CALL PUSH14 0xF089DE1EBD64736F6C6343000706 STOP CALLER ","sourceMap":"339:9125:95:-: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 elixir pool oracle\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/libraries/OracleLibrary.sol\":\"OracleLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-periphery/libraries/OracleLibrary.sol\":{\"keccak256\":\"0xecfbccc929ebb369764737fbf6a1641f598e08572d0143391726ab847f1c312b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3c89b1004e7e602ec60e7ec340085a0ec2e96f63475ef142921b6ba5f02ddd2c\",\"dweb:/ipfs/Qmd7BCnEAR9wFBSTKQ3ykyjW1LYEhGBQPHKDu5qBjSrwuy\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/Path.sol":{"Path":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f7ff18367350a00f652e04521c0f363ba129783a2167afd5ff33e4364fc9913b64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF7 SELFDESTRUCT XOR CALLDATASIZE PUSH20 0x50A00F652E04521C0F363BA129783A2167AFD5FF CALLER 0xE4 CALLDATASIZE 0x4F 0xC9 SWAP2 EXTCODESIZE PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"170:2684:96:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f7ff18367350a00f652e04521c0f363ba129783a2167afd5ff33e4364fc9913b64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF7 SELFDESTRUCT XOR CALLDATASIZE PUSH20 0x50A00F652E04521C0F363BA129783A2167AFD5FF CALLER 0xE4 CALLDATASIZE 0x4F 0xC9 SWAP2 EXTCODESIZE PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"170:2684:96:-: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/elixir-periphery/libraries/Path.sol\":\"Path\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/libraries/BytesLib.sol\":{\"keccak256\":\"0xbf23f73b0ec504e799b3e8ea71063eaeec08d6e688c56951fc645afaf5c1e7fd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://863b16fdc6f8b9a22622fe4f9b991b4b7039db2beec8095134ed18ec4843683f\",\"dweb:/ipfs/QmatVX7apv6drzj8WvDjQs8sREGApz1U4pvhPnk6MCyPFT\"]},\"contracts/elixir-periphery/libraries/Path.sol\":{\"keccak256\":\"0x13c1302a21dbc2bbac527052506140eb3ed342c3b83054e07d0040d22c3dd284\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed3ce8db752fabe37b23d6fd1205a35102f2f6e91ad14f42536538b6ea71ae08\",\"dweb:/ipfs/QmSpSmvuTcavQW3HixkdAcFhCyzLwSkHKNUa7RrEM47jet\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/PoolAddress.sol":{"PoolAddress":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220860ada4b162b5335739949accb32481cbb33c67fba2c3c83fa760e096a01523064736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP7 EXP 0xDA 0x4B AND 0x2B MSTORE8 CALLDATALOAD PUSH20 0x9949ACCB32481CBB33C67FBA2C3C83FA760E096A ADD MSTORE ADDRESS PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"178:2100:97:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220860ada4b162b5335739949accb32481cbb33c67fba2c3c83fa760e096a01523064736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP7 EXP 0xDA 0x4B AND 0x2B MSTORE8 CALLDATALOAD PUSH20 0x9949ACCB32481CBB33C67FBA2C3C83FA760E096A ADD MSTORE ADDRESS PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"178:2100:97:-: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/elixir-periphery/libraries/PoolAddress.sol\":\"PoolAddress\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/PoolTicksCounter.sol":{"PoolTicksCounter":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220457f51a189b86b15f762c148bc22b6f67618cf90892f84c05115a6e6a92d7b6864736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASLIMIT PUSH32 0x51A189B86B15F762C148BC22B6F67618CF90892F84C05115A6E6A92D7B686473 PUSH16 0x6C634300070600330000000000000000 ","sourceMap":"139:4095:98:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220457f51a189b86b15f762c148bc22b6f67618cf90892f84c05115a6e6a92d7b6864736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASLIMIT PUSH32 0x51A189B86B15F762C148BC22B6F67618CF90892F84C05115A6E6A92D7B686473 PUSH16 0x6C634300070600330000000000000000 ","sourceMap":"139:4095:98:-: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/elixir-periphery/libraries/PoolTicksCounter.sol\":\"PoolTicksCounter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-periphery/libraries/PoolTicksCounter.sol\":{\"keccak256\":\"0x456f3dbcf2c93f5ee21722ebde8ff82158e8f3eaa77b0c2c6e41cabe6670773f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ee4ff5211dad34f51f33d0928fcd3e91d6114af9c2702df48f2e71276bc31d1c\",\"dweb:/ipfs/QmVcFSQpJANGigQm77xr7UWKr32rXzVNwPx3XVWxbEb6vH\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/PositionKey.sol":{"PositionKey":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d5d2b629efdd50a9f11ae1b268c1c059df77fb7f3ccdf79ada0b65fa6783002d64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD5 0xD2 0xB6 0x29 0xEF 0xDD POP 0xA9 CALL BYTE 0xE1 0xB2 PUSH9 0xC1C059DF77FB7F3CCD 0xF7 SWAP11 0xDA SIGNEXTEND PUSH6 0xFA6783002D64 PUSH20 0x6F6C634300070600330000000000000000000000 ","sourceMap":"74:310:99:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d5d2b629efdd50a9f11ae1b268c1c059df77fb7f3ccdf79ada0b65fa6783002d64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD5 0xD2 0xB6 0x29 0xEF 0xDD POP 0xA9 CALL BYTE 0xE1 0xB2 PUSH9 0xC1C059DF77FB7F3CCD 0xF7 SWAP11 0xDA SIGNEXTEND PUSH6 0xFA6783002D64 PUSH20 0x6F6C634300070600330000000000000000000000 ","sourceMap":"74:310:99:-: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/elixir-periphery/libraries/PositionKey.sol\":\"PositionKey\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/libraries/PositionKey.sol\":{\"keccak256\":\"0x0a532dba371aed58c383f4e5b8d4ecc7de60eba8c14ef69e40b6e83401ccf74d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://992d7b2eb0bb01fdbd8169fea0f1c30938023267008cc8c7ab057487858a48b7\",\"dweb:/ipfs/QmZCxsgbiCsPmw4fk3ZRPcot9MSmWqndGP1TGMRsjztjcH\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/PositionValue.sol":{"PositionValue":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e70cf0ee22cb64829ba7502c8a94e89af958bee2bdf53f7efe51b782350bc2a364736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 0xC CREATE 0xEE 0x22 0xCB PUSH5 0x829BA7502C DUP11 SWAP5 0xE8 SWAP11 0xF9 PC 0xBE 0xE2 0xBD CREATE2 EXTCODEHASH PUSH31 0xFE51B782350BC2A364736F6C63430007060033000000000000000000000000 ","sourceMap":"520:6769:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e70cf0ee22cb64829ba7502c8a94e89af958bee2bdf53f7efe51b782350bc2a364736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 0xC CREATE 0xEE 0x22 0xCB PUSH5 0x829BA7502C DUP11 SWAP5 0xE8 SWAP11 0xF9 PC 0xBE 0xE2 0xBD CREATE2 EXTCODEHASH PUSH31 0xFE51B782350BC2A364736F6C63430007060033000000000000000000000000 ","sourceMap":"520:6769:100:-: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 Elixir NFT\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/libraries/PositionValue.sol\":\"PositionValue\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-core/libraries/FixedPoint128.sol\":{\"keccak256\":\"0x558d30194d1a7f76eb5e983633625efd87b13ac0862792a69a305ce69003ab14\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89bca54921a13c0c863c055f18b3108582491fcc091d7188b58e05786c7f2b55\",\"dweb:/ipfs/QmfS5jM1WxULWx4FNB3CJC7KAWDpMpzRgFSGV5dp8RaCJr\"]},\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x3ec938fd1b7cc8751df9e2ed90fd0abf32ffacc42cf4b6edbf7138629d747944\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a741475c8a3b5ae8eac7d328170c5a6811920dac22d3800197e39abe0ba42e01\",\"dweb:/ipfs/Qmc2fs5kxp437hWxtLZ6CB8g7vt3bkwKLxE7MMo9D5TAF9\"]},\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]},\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]},\"contracts/elixir-core/libraries/Tick.sol\":{\"keccak256\":\"0x20ddf3dd595491c899fde27706d0cd1d10ba2785589bd5e3d5f0830062254c3b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8d706f8b5bf653ac9cd4b5bbdfd6867eb072821b920141a283466c67f0fdf26\",\"dweb:/ipfs/QmfBZFTVNZhN4tNssH9en4Qz93tWovTijou5i6N8k9kZJM\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-periphery/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x1731f38308b9364d3d18a34a4da72afe434ad49f99939d81300dab93a940c458\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1cf9728098907ca0140ddf5398b7cebb2e6b8a0487bb1cf8338a4da603989be7\",\"dweb:/ipfs/QmPt5nvaLrdbXLxzJNhX4fM8s2akbdUPTmxZQaN2ierJPA\"]},\"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0xf968ea5f5b29c4407b3337051b0fb2ea786b8a6e3f476d40cdde1cb9415b1735\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c92f629ddeb1a6bcec8b154e6619a492053a375db3a28b37bbcd49b35d4b171\",\"dweb:/ipfs/QmYRNQmFQ8gD3dkTQz85cEHwEkBuXW4F64HQB9MUUHHYse\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x8e0cdb6280728619c44a8220996512b81e85f6fa7bc5373db742ea953a81eda8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0748123e32874d0e1e405a463fafcf98f686fac0055da2e13bfdaa0db917766\",\"dweb:/ipfs/QmRZPF69X1e6T3yT2z8HTgzEtXHTVScqzoEMbfvp5Niggq\"]},\"contracts/elixir-periphery/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x0d3371b28c765f2ad1231c212ce395c91c925738f54e2280298bfd08b50a2c97\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://18a3777dc86b84fb192cf54fbefd444058f5a5adc13b1080f393ada3ee0a5a08\",\"dweb:/ipfs/QmabPex6ctJszwwNGGnS9Va6xqsN6MpcQC3M869rbwcGCo\"]},\"contracts/elixir-periphery/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x8ed6cb25c14c41756086367d76eba826250da3a8621ace0c8657fce32e68fad7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06d92752a75efdd197ef39740e3e266bda1fbd0361c40bb9c014a608ade17b31\",\"dweb:/ipfs/QmRPhnmoNz9s2ZvJDomKtKMrYJXPvD6J6LGDtTQ8KeTDMY\"]},\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]},\"contracts/elixir-periphery/libraries/PositionKey.sol\":{\"keccak256\":\"0x0a532dba371aed58c383f4e5b8d4ecc7de60eba8c14ef69e40b6e83401ccf74d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://992d7b2eb0bb01fdbd8169fea0f1c30938023267008cc8c7ab057487858a48b7\",\"dweb:/ipfs/QmZCxsgbiCsPmw4fk3ZRPcot9MSmWqndGP1TGMRsjztjcH\"]},\"contracts/elixir-periphery/libraries/PositionValue.sol\":{\"keccak256\":\"0x250746fad75fa258a85dfc2a119bdaef87f9e03c1eb6d4dd7f0bda0dfaf1e8c1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://428744f1e5302b16489232969a45b141b62bfb02128ca22dd18dc0ca85afe1c9\",\"dweb:/ipfs/QmXW8iaaEZ8qyVv9JwYktLVCTT69rHSWgEJjbjgPTuU5w6\"]},\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/SqrtPriceMathPartial.sol":{"SqrtPriceMathPartial":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b747a52b706d7ddf84ccb3e4ee6c8c739153b03c16e4420f4b5b291fa285ae7d64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB7 SELFBALANCE 0xA5 0x2B PUSH17 0x6D7DDF84CCB3E4EE6C8C739153B03C16E4 TIMESTAMP 0xF 0x4B JUMPDEST 0x29 0x1F LOG2 DUP6 0xAE PUSH30 0x64736F6C6343000706003300000000000000000000000000000000000000 ","sourceMap":"446:2396:101:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b747a52b706d7ddf84ccb3e4ee6c8c739153b03c16e4420f4b5b291fa285ae7d64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB7 SELFBALANCE 0xA5 0x2B PUSH17 0x6D7DDF84CCB3E4EE6C8C739153B03C16E4 TIMESTAMP 0xF 0x4B JUMPDEST 0x29 0x1F LOG2 DUP6 0xAE PUSH30 0x64736F6C6343000706003300000000000000000000000000000000000000 ","sourceMap":"446:2396:101:-: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 elixir-core SqrtPriceMath that use square root of price as a Q64.96 and liquidity to compute deltas\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/libraries/SqrtPriceMathPartial.sol\":\"SqrtPriceMathPartial\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/libraries/UnsafeMath.sol\":{\"keccak256\":\"0x3c829e89e91323d9c3e0f15272baa9aa1d28291e7633ee4f1414774e6eca0a7d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f99f38de11092e98d43f1d14061fcfa7309a80ae93d2b7af99c9256c97312c23\",\"dweb:/ipfs/QmQXXUR1PhKUFVZXwwekW23YE9Zy7r3GvdtcDyc2nNTpSb\"]},\"contracts/elixir-periphery/libraries/SqrtPriceMathPartial.sol\":{\"keccak256\":\"0x606c9c25aa7bb6f800985b61f626e3fbb97d7d3e6a54b2bf397ae708100f740b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2e573d64f038f70932513adb418c479948f5b3b840a6e270c8da87edd78c77bc\",\"dweb:/ipfs/QmWuRAbuMzmA5Pz9dWUeQ9C6PBwZPdHvUt5vL7deedBzWG\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/TokenRatioSortOrder.sol":{"TokenRatioSortOrder":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220236f907f0a9295ce5fd34c845e36895f2b7219cd995ad187b604ac8b3bbecc7264736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x23 PUSH16 0x907F0A9295CE5FD34C845E36895F2B72 NOT 0xCD SWAP10 GAS 0xD1 DUP8 0xB6 DIV 0xAC DUP12 EXTCODESIZE 0xBE 0xCC PUSH19 0x64736F6C634300070600330000000000000000 ","sourceMap":"60:291:102:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220236f907f0a9295ce5fd34c845e36895f2b7219cd995ad187b604ac8b3bbecc7264736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x23 PUSH16 0x907F0A9295CE5FD34C845E36895F2B72 NOT 0xCD SWAP10 GAS 0xD1 DUP8 0xB6 DIV 0xAC DUP12 EXTCODESIZE 0xBE 0xCC PUSH19 0x64736F6C634300070600330000000000000000 ","sourceMap":"60:291:102:-: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/elixir-periphery/libraries/TokenRatioSortOrder.sol\":\"TokenRatioSortOrder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/libraries/TokenRatioSortOrder.sol\":{\"keccak256\":\"0x57fad7dfcebf3922eebc3e8606295cd7d9ff11e8b2a06b7d7d86db21019faf27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3073f4df8000b6f0e2a7eb04ac4fac859bc1e0587c13c0b82c099b7741876ac7\",\"dweb:/ipfs/QmVwnTrRegLBsU7r124C6ryMP3ubs59pnGTpPDe737A6Rg\"]}},\"version\":1}"}},"contracts/elixir-periphery/libraries/TransferHelper.sol":{"TransferHelper":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202ec2b53bee6f26d5359159b00ce5f3f1af07ab5c2591a028a647a8f736b00a1764736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2E 0xC2 0xB5 EXTCODESIZE 0xEE PUSH16 0x26D5359159B00CE5F3F1AF07AB5C2591 LOG0 0x28 0xA6 SELFBALANCE 0xA8 0xF7 CALLDATASIZE 0xB0 EXP OR PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"142:2462:103:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202ec2b53bee6f26d5359159b00ce5f3f1af07ab5c2591a028a647a8f736b00a1764736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2E 0xC2 0xB5 EXTCODESIZE 0xEE PUSH16 0x26D5359159B00CE5F3F1AF07AB5C2591 LOG0 0x28 0xA6 SELFBALANCE 0xA8 0xF7 CALLDATASIZE 0xB0 EXP OR PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"142:2462:103:-: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/elixir-periphery/libraries/TransferHelper.sol\":\"TransferHelper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/libraries/TransferHelper.sol\":{\"keccak256\":\"0xc7727a37285f7b260c7b6a1f42655da9b6a1765dcb7f57bcba31627d9c2ec978\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://22a8e896dbac834f895395fc5cac70e8f2bab8045b9e34fe479ed0e92dbd99a9\",\"dweb:/ipfs/QmZYbeZxEvD1nfoeozEkrWzLYTKuS5618fsEgoKTnDuM2L\"]},\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}"}},"contracts/elixir-periphery/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":"608060405234801561001057600080fd5b506103fc806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806312496a1b1461003b57806374b86d1e14610156575b600080fd5b6100e16004803603602081101561005157600080fd5b81019060208101813564010000000081111561006c57600080fd5b82018360208201111561007e57600080fd5b803590602001918460018302840111640100000000831117156100a057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061020e945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561011b578181015183820152602001610103565b50505050905090810190601f1680156101485780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fc6004803603602081101561016c57600080fd5b81019060208101813564010000000081111561018757600080fd5b82018360208201111561019957600080fd5b803590602001918460018302840111640100000000831117156101bb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610221945050505050565b60408051918252519081900360200190f35b60606102198261023a565b90505b919050565b6000805a90506102308361023a565b505a900392915050565b606081516000141561025b575060408051602081019091526000815261021c565b60006040518060600160405280604081526020016103876040913990506000600384516002018161028857fe5b04600402905060008160200167ffffffffffffffff811180156102aa57600080fd5b506040519080825280601f01601f1916602001820160405280156102d5576020820181803683370190505b509050818152600183018586518101602084015b81831015610341576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f81168501518253506001016102e9565b60038951066001811461035b576002811461036c57610378565b613d3d60f01b600119830152610378565b603d60f81b6000198301525b50939897505050505050505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220f066a9845aad35190a97c7537053429b6e2e5fcebf1421838348bc6d538e5ff964736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC 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 0x387 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 0x341 JUMPI PUSH1 0x3 DUP4 ADD SWAP3 POP DUP3 MLOAD PUSH1 0x3F DUP2 PUSH1 0x12 SHR AND DUP6 ADD MLOAD DUP3 MSTORE8 PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x3F DUP2 PUSH1 0xC SHR AND DUP6 ADD MLOAD DUP3 MSTORE8 PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x3F DUP2 PUSH1 0x6 SHR AND DUP6 ADD MLOAD DUP3 MSTORE8 PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x3F DUP2 AND DUP6 ADD MLOAD DUP3 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x2E9 JUMP JUMPDEST PUSH1 0x3 DUP10 MLOAD MOD PUSH1 0x1 DUP2 EQ PUSH2 0x35B JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x36C JUMPI PUSH2 0x378 JUMP JUMPDEST PUSH2 0x3D3D PUSH1 0xF0 SHL PUSH1 0x1 NOT DUP4 ADD MSTORE PUSH2 0x378 JUMP JUMPDEST PUSH1 0x3D PUSH1 0xF8 SHL PUSH1 0x0 NOT 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 0x7778797A303132333435363738392B2FA2646970667358 0x22 SLT KECCAK256 CREATE PUSH7 0xA9845AAD35190A SWAP8 0xC7 MSTORE8 PUSH17 0x53429B6E2E5FCEBF1421838348BC6D538E 0x5F 0xF9 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"102:352:104:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c806312496a1b1461003b57806374b86d1e14610156575b600080fd5b6100e16004803603602081101561005157600080fd5b81019060208101813564010000000081111561006c57600080fd5b82018360208201111561007e57600080fd5b803590602001918460018302840111640100000000831117156100a057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061020e945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561011b578181015183820152602001610103565b50505050905090810190601f1680156101485780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fc6004803603602081101561016c57600080fd5b81019060208101813564010000000081111561018757600080fd5b82018360208201111561019957600080fd5b803590602001918460018302840111640100000000831117156101bb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610221945050505050565b60408051918252519081900360200190f35b60606102198261023a565b90505b919050565b6000805a90506102308361023a565b505a900392915050565b606081516000141561025b575060408051602081019091526000815261021c565b60006040518060600160405280604081526020016103876040913990506000600384516002018161028857fe5b04600402905060008160200167ffffffffffffffff811180156102aa57600080fd5b506040519080825280601f01601f1916602001820160405280156102d5576020820181803683370190505b509050818152600183018586518101602084015b81831015610341576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f81168501518253506001016102e9565b60038951066001811461035b576002811461036c57610378565b613d3d60f01b600119830152610378565b603d60f81b6000198301525b50939897505050505050505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220f066a9845aad35190a97c7537053429b6e2e5fcebf1421838348bc6d538e5ff964736f6c63430007060033","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 0x387 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 0x341 JUMPI PUSH1 0x3 DUP4 ADD SWAP3 POP DUP3 MLOAD PUSH1 0x3F DUP2 PUSH1 0x12 SHR AND DUP6 ADD MLOAD DUP3 MSTORE8 PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x3F DUP2 PUSH1 0xC SHR AND DUP6 ADD MLOAD DUP3 MSTORE8 PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x3F DUP2 PUSH1 0x6 SHR AND DUP6 ADD MLOAD DUP3 MSTORE8 PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x3F DUP2 AND DUP6 ADD MLOAD DUP3 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x2E9 JUMP JUMPDEST PUSH1 0x3 DUP10 MLOAD MOD PUSH1 0x1 DUP2 EQ PUSH2 0x35B JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x36C JUMPI PUSH2 0x378 JUMP JUMPDEST PUSH2 0x3D3D PUSH1 0xF0 SHL PUSH1 0x1 NOT DUP4 ADD MSTORE PUSH2 0x378 JUMP JUMPDEST PUSH1 0x3D PUSH1 0xF8 SHL PUSH1 0x0 NOT 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 0x7778797A303132333435363738392B2FA2646970667358 0x22 SLT KECCAK256 CREATE PUSH7 0xA9845AAD35190A SWAP8 0xC7 MSTORE8 PUSH17 0x53429B6E2E5FCEBF1421838348BC6D538E 0x5F 0xF9 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"102:352:104:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;129:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;129:118:104;;-1:-1:-1;129:118:104;;-1:-1:-1;;;;;129:118:104:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;255:196;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;255:196:104;;-1:-1:-1;255:196:104;;-1:-1:-1;;;;;255:196:104:i;:::-;;;;;;;;;;;;;;;;129:118;187:13;220:19;234:4;220:13;:19::i;:::-;213:26;;129:118;;;;:::o;255:196::-;325:7;345:17;365:9;345:29;;385:19;399:4;385:13;:19::i;:::-;;434:9;422:21;;;255:196;-1:-1:-1;;255:196:104:o;777:1861:0:-;835:13;864:4;:11;879:1;864:16;860:31;;;-1:-1:-1;882:9:0;;;;;;;;;-1:-1:-1;882:9:0;;;;860:31;940:19;962:12;;;;;;;;;;;;;;;;;940:34;;1023:18;1069:1;1050:4;:11;1064:1;1050:15;1049:21;;;;;;1044:1;:27;1023:48;;1151:20;1185:10;1198:2;1185:15;1174:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1174:27:0;;1151:50;;1294:10;1286:6;1279:26;1386:1;1379:5;1375:13;1442:4;1492;1486:11;1477:7;1473:25;1585:2;1577:6;1573:15;1655:739;1674:6;1665:7;1662:19;1655:739;;;1771:1;1762:7;1758:15;1747:26;;1809:7;1803:14;1932:4;1924:5;1920:2;1916:14;1912:25;1902:8;1898:40;1892:47;1881:9;1873:67;1985:1;1974:9;1970:17;1957:30;;2063:4;2055:5;2051:2;2047:14;2043:25;2033:8;2029:40;2023:47;2012:9;2004:67;2116:1;2105:9;2101:17;2088:30;;2194:4;2186:5;2183:1;2178:14;2174:25;2164:8;2160:40;2154:47;2143:9;2135:67;2247:1;2236:9;2232:17;2219:30;;2325:4;2317:5;2305:25;2295:8;2291:40;2285:47;2274:9;2266:67;-1:-1:-1;2378:1:0;2363:17;1655:739;;;2464:1;2457:4;2451:11;2447:19;2484:1;2479:54;;;;2551:1;2546:52;;;;2440:158;;2479:54;-1:-1:-1;;;;;2495:17:0;;2488:43;2479:54;;2546:52;-1:-1:-1;;;;;2562:17:0;;2555:41;2440:158;-1:-1:-1;2625:6:0;;777:1861;-1:-1:-1;;;;;;;;777:1861:0: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/elixir-periphery/test/Base64Test.sol\":\"Base64Test\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"base64-sol/base64.sol\":{\"keccak256\":\"0xa73959e6ef0b693e4423a562e612370160b934a75e618361ddd8c9c4b8ddbaaf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17c12e16d8d66f3af15d8787920bd41ca6c1e7517a212a6b9cebd4b6d38f36fe\",\"dweb:/ipfs/QmcXMnZUXEz6LRKsm3CSvqdPboAzmezavi8bTg2dRxM2yE\"]},\"contracts/elixir-periphery/test/Base64Test.sol\":{\"keccak256\":\"0x24d39fa6a4f4b5874bb6f7dbe68458f2c989a0326dfd042cb2ad719dc6215f6e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ff2ea96017e6443217ea880eb488aeabee65c98fa27ee21d7c77f1d03836fd88\",\"dweb:/ipfs/QmbjVCvXQdyEj12QzfoiWozttfCPHMcdEfqRAet6EuGNuQ\"]}},\"version\":1}"}},"contracts/elixir-periphery/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":"608060405234801561001057600080fd5b506108b7806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c8063bf1d2c7111610081578063d22462091161005b578063d22462091461034a578063e26274bd14610380578063f7212103146103c6576100d4565b8063bf1d2c7114610275578063c72e160b146102b5578063cb1b949614610314576100d4565b80636098fd4a116100b25780636098fd4a146101bd57806367df6e89146101ff5780636ac69a8e14610235576100d4565b806308c0f795146100d9578063290984621461012b57806329e24cb71461017d575b600080fd5b61010f600480360360608110156100ef57600080fd5b506001600160a01b03813581169160208101359091169060400135610408565b604080516001600160801b039092168252519081900360200190f35b61016b6004803603606081101561014157600080fd5b5080356001600160a01b0390811691602081013590911690604001356001600160801b031661041f565b60408051918252519081900360200190f35b61016b6004803603606081101561019357600080fd5b5080356001600160a01b0390811691602081013590911690604001356001600160801b031661043c565b61010f600480360360a08110156101d357600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135610449565b61010f6004803603606081101561021557600080fd5b506001600160a01b03813581169160208101359091169060400135610464565b61016b6004803603606081101561024b57600080fd5b5080356001600160a01b0390811691602081013590911690604001356001600160801b0316610471565b61016b6004803603606081101561028b57600080fd5b5080356001600160a01b0390811691602081013590911690604001356001600160801b031661047e565b6102fb600480360360808110156102cb57600080fd5b5080356001600160a01b0390811691602081013582169160408201351690606001356001600160801b0316610498565b6040805192835260208301919091528051918290030190f35b61016b6004803603606081101561032a57600080fd5b506001600160a01b038135811691602081013590911690604001356104b5565b61016b6004803603606081101561036057600080fd5b506001600160a01b038135811691602081013590911690604001356104c6565b61016b6004803603608081101561039657600080fd5b5080356001600160a01b0390811691602081013582169160408201351690606001356001600160801b03166104d7565b61016b600480360360a08110156103dc57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001356104f7565b6000610415848484610518565b90505b9392505050565b6000805a905061043085858561055a565b505a9003949350505050565b60006104158484846105c3565b60006104588686868686610606565b90505b95945050505050565b60006104158484846106be565b600061041584848461055a565b6000805a90506104308585856001600160801b0316610518565b6000806104a78686868661071c565b915091505b94509492505050565b6000805a9050610430858585610518565b6000805a90506104308585856106be565b6000805a90506104e98686868661071c565b50505a900395945050505050565b6000805a905061050a8787878787610606565b505a90039695505050505050565b6000826001600160a01b0316846001600160a01b03161115610538579192915b61041561055583600160601b8787036001600160a01b03166107b7565b610866565b6000826001600160a01b0316846001600160a01b0316111561057a579192915b836001600160a01b03166105b3606060ff16846001600160801b0316901b8686036001600160a01b0316866001600160a01b03166107b7565b816105ba57fe5b04949350505050565b6000826001600160a01b0316846001600160a01b031611156105e3579192915b610415826001600160801b03168585036001600160a01b0316600160601b6107b7565b6000836001600160a01b0316856001600160a01b03161115610626579293925b846001600160a01b0316866001600160a01b0316116106515761064a8585856106be565b905061045b565b836001600160a01b0316866001600160a01b031610156106b35760006106788786866106be565b90506000610687878986610518565b9050806001600160801b0316826001600160801b0316106106a857806106aa565b815b9250505061045b565b610458858584610518565b6000826001600160a01b0316846001600160a01b031611156106de579192915b6000610701856001600160a01b0316856001600160a01b0316600160601b6107b7565b905061045b61055584838888036001600160a01b03166107b7565b600080836001600160a01b0316856001600160a01b0316111561073d579293925b846001600160a01b0316866001600160a01b0316116107685761076185858561055a565b91506104ac565b836001600160a01b0316866001600160a01b031610156107a15761078d86858561055a565b915061079a8587856105c3565b90506104ac565b6107ac8585856105c3565b905094509492505050565b60008080600019858709868602925082811090839003039050806107ed57600084116107e257600080fd5b508290049050610418565b8084116107f957600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b806001600160801b038116811461087c57600080fd5b91905056fea2646970667358221220ca20d68940d3d22ea73d5d0a10db56d7dbc5c974aef3e12b580efac8f0ff081664736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8B7 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 0x34A JUMPI DUP1 PUSH4 0xE26274BD EQ PUSH2 0x380 JUMPI DUP1 PUSH4 0xF7212103 EQ PUSH2 0x3C6 JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0xBF1D2C71 EQ PUSH2 0x275 JUMPI DUP1 PUSH4 0xC72E160B EQ PUSH2 0x2B5 JUMPI DUP1 PUSH4 0xCB1B9496 EQ PUSH2 0x314 JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x6098FD4A GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x6098FD4A EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x67DF6E89 EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0x6AC69A8E EQ PUSH2 0x235 JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x8C0F795 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x29098462 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0x29E24CB7 EQ PUSH2 0x17D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x408 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x41F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x43C JUMP JUMPDEST PUSH2 0x10F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x1D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x449 JUMP JUMPDEST PUSH2 0x10F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x464 JUMP JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x471 JUMP JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x47E JUMP JUMPDEST PUSH2 0x2FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x498 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 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4B5 JUMP JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4C6 JUMP JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x4D7 JUMP JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x4F7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x415 DUP5 DUP5 DUP5 PUSH2 0x518 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x430 DUP6 DUP6 DUP6 PUSH2 0x55A JUMP JUMPDEST POP GAS SWAP1 SUB SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x415 DUP5 DUP5 DUP5 PUSH2 0x5C3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x458 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x606 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x415 DUP5 DUP5 DUP5 PUSH2 0x6BE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x415 DUP5 DUP5 DUP5 PUSH2 0x55A JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x430 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x518 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4A7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x71C JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x430 DUP6 DUP6 DUP6 PUSH2 0x518 JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x430 DUP6 DUP6 DUP6 PUSH2 0x6BE JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x4E9 DUP7 DUP7 DUP7 DUP7 PUSH2 0x71C JUMP JUMPDEST POP POP GAS SWAP1 SUB SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x50A DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x606 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x538 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0x415 PUSH2 0x555 DUP4 PUSH1 0x1 PUSH1 0x60 SHL DUP8 DUP8 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7B7 JUMP JUMPDEST PUSH2 0x866 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x57A JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5B3 PUSH1 0x60 PUSH1 0xFF AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 SHL DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7B7 JUMP JUMPDEST DUP2 PUSH2 0x5BA JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x5E3 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0x415 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP6 DUP6 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x7B7 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x626 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x651 JUMPI PUSH2 0x64A DUP6 DUP6 DUP6 PUSH2 0x6BE JUMP JUMPDEST SWAP1 POP PUSH2 0x45B JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x6B3 JUMPI PUSH1 0x0 PUSH2 0x678 DUP8 DUP7 DUP7 PUSH2 0x6BE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x687 DUP8 DUP10 DUP7 PUSH2 0x518 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x6A8 JUMPI DUP1 PUSH2 0x6AA JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP PUSH2 0x45B JUMP JUMPDEST PUSH2 0x458 DUP6 DUP6 DUP5 PUSH2 0x518 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x6DE JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH1 0x0 PUSH2 0x701 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x7B7 JUMP JUMPDEST SWAP1 POP PUSH2 0x45B PUSH2 0x555 DUP5 DUP4 DUP9 DUP9 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7B7 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x73D JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x768 JUMPI PUSH2 0x761 DUP6 DUP6 DUP6 PUSH2 0x55A JUMP JUMPDEST SWAP2 POP PUSH2 0x4AC JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x7A1 JUMPI PUSH2 0x78D DUP7 DUP6 DUP6 PUSH2 0x55A JUMP JUMPDEST SWAP2 POP PUSH2 0x79A DUP6 DUP8 DUP6 PUSH2 0x5C3 JUMP JUMPDEST SWAP1 POP PUSH2 0x4AC JUMP JUMPDEST PUSH2 0x7AC DUP6 DUP6 DUP6 PUSH2 0x5C3 JUMP JUMPDEST SWAP1 POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x7ED JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x7E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x418 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x7F9 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x87C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA KECCAK256 0xD6 DUP10 BLOCKHASH 0xD3 0xD2 0x2E 0xA7 RETURNDATASIZE 0x5D EXP LT 0xDB JUMP 0xD7 0xDB 0xC5 0xC9 PUSH21 0xAEF3E12B580EFAC8F0FF081664736F6C6343000706 STOP CALLER ","sourceMap":"114:4157:105:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100d45760003560e01c8063bf1d2c7111610081578063d22462091161005b578063d22462091461034a578063e26274bd14610380578063f7212103146103c6576100d4565b8063bf1d2c7114610275578063c72e160b146102b5578063cb1b949614610314576100d4565b80636098fd4a116100b25780636098fd4a146101bd57806367df6e89146101ff5780636ac69a8e14610235576100d4565b806308c0f795146100d9578063290984621461012b57806329e24cb71461017d575b600080fd5b61010f600480360360608110156100ef57600080fd5b506001600160a01b03813581169160208101359091169060400135610408565b604080516001600160801b039092168252519081900360200190f35b61016b6004803603606081101561014157600080fd5b5080356001600160a01b0390811691602081013590911690604001356001600160801b031661041f565b60408051918252519081900360200190f35b61016b6004803603606081101561019357600080fd5b5080356001600160a01b0390811691602081013590911690604001356001600160801b031661043c565b61010f600480360360a08110156101d357600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135610449565b61010f6004803603606081101561021557600080fd5b506001600160a01b03813581169160208101359091169060400135610464565b61016b6004803603606081101561024b57600080fd5b5080356001600160a01b0390811691602081013590911690604001356001600160801b0316610471565b61016b6004803603606081101561028b57600080fd5b5080356001600160a01b0390811691602081013590911690604001356001600160801b031661047e565b6102fb600480360360808110156102cb57600080fd5b5080356001600160a01b0390811691602081013582169160408201351690606001356001600160801b0316610498565b6040805192835260208301919091528051918290030190f35b61016b6004803603606081101561032a57600080fd5b506001600160a01b038135811691602081013590911690604001356104b5565b61016b6004803603606081101561036057600080fd5b506001600160a01b038135811691602081013590911690604001356104c6565b61016b6004803603608081101561039657600080fd5b5080356001600160a01b0390811691602081013582169160408201351690606001356001600160801b03166104d7565b61016b600480360360a08110156103dc57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001356104f7565b6000610415848484610518565b90505b9392505050565b6000805a905061043085858561055a565b505a9003949350505050565b60006104158484846105c3565b60006104588686868686610606565b90505b95945050505050565b60006104158484846106be565b600061041584848461055a565b6000805a90506104308585856001600160801b0316610518565b6000806104a78686868661071c565b915091505b94509492505050565b6000805a9050610430858585610518565b6000805a90506104308585856106be565b6000805a90506104e98686868661071c565b50505a900395945050505050565b6000805a905061050a8787878787610606565b505a90039695505050505050565b6000826001600160a01b0316846001600160a01b03161115610538579192915b61041561055583600160601b8787036001600160a01b03166107b7565b610866565b6000826001600160a01b0316846001600160a01b0316111561057a579192915b836001600160a01b03166105b3606060ff16846001600160801b0316901b8686036001600160a01b0316866001600160a01b03166107b7565b816105ba57fe5b04949350505050565b6000826001600160a01b0316846001600160a01b031611156105e3579192915b610415826001600160801b03168585036001600160a01b0316600160601b6107b7565b6000836001600160a01b0316856001600160a01b03161115610626579293925b846001600160a01b0316866001600160a01b0316116106515761064a8585856106be565b905061045b565b836001600160a01b0316866001600160a01b031610156106b35760006106788786866106be565b90506000610687878986610518565b9050806001600160801b0316826001600160801b0316106106a857806106aa565b815b9250505061045b565b610458858584610518565b6000826001600160a01b0316846001600160a01b031611156106de579192915b6000610701856001600160a01b0316856001600160a01b0316600160601b6107b7565b905061045b61055584838888036001600160a01b03166107b7565b600080836001600160a01b0316856001600160a01b0316111561073d579293925b846001600160a01b0316866001600160a01b0316116107685761076185858561055a565b91506104ac565b836001600160a01b0316866001600160a01b031610156107a15761078d86858561055a565b915061079a8587856105c3565b90506104ac565b6107ac8585856105c3565b905094509492505050565b60008080600019858709868602925082811090839003039050806107ed57600084116107e257600080fd5b508290049050610418565b8084116107f957600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b806001600160801b038116811461087c57600080fd5b91905056fea2646970667358221220ca20d68940d3d22ea73d5d0a10db56d7dbc5c974aef3e12b580efac8f0ff081664736f6c63430007060033","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 0x34A JUMPI DUP1 PUSH4 0xE26274BD EQ PUSH2 0x380 JUMPI DUP1 PUSH4 0xF7212103 EQ PUSH2 0x3C6 JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0xBF1D2C71 EQ PUSH2 0x275 JUMPI DUP1 PUSH4 0xC72E160B EQ PUSH2 0x2B5 JUMPI DUP1 PUSH4 0xCB1B9496 EQ PUSH2 0x314 JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x6098FD4A GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x6098FD4A EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x67DF6E89 EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0x6AC69A8E EQ PUSH2 0x235 JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x8C0F795 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x29098462 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0x29E24CB7 EQ PUSH2 0x17D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x408 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x41F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x43C JUMP JUMPDEST PUSH2 0x10F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x1D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x449 JUMP JUMPDEST PUSH2 0x10F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x464 JUMP JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x471 JUMP JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x47E JUMP JUMPDEST PUSH2 0x2FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x498 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 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4B5 JUMP JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4C6 JUMP JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x4D7 JUMP JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x4F7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x415 DUP5 DUP5 DUP5 PUSH2 0x518 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x430 DUP6 DUP6 DUP6 PUSH2 0x55A JUMP JUMPDEST POP GAS SWAP1 SUB SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x415 DUP5 DUP5 DUP5 PUSH2 0x5C3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x458 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x606 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x415 DUP5 DUP5 DUP5 PUSH2 0x6BE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x415 DUP5 DUP5 DUP5 PUSH2 0x55A JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x430 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x518 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4A7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x71C JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x430 DUP6 DUP6 DUP6 PUSH2 0x518 JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x430 DUP6 DUP6 DUP6 PUSH2 0x6BE JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x4E9 DUP7 DUP7 DUP7 DUP7 PUSH2 0x71C JUMP JUMPDEST POP POP GAS SWAP1 SUB SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x50A DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x606 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x538 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0x415 PUSH2 0x555 DUP4 PUSH1 0x1 PUSH1 0x60 SHL DUP8 DUP8 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7B7 JUMP JUMPDEST PUSH2 0x866 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x57A JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5B3 PUSH1 0x60 PUSH1 0xFF AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 SHL DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7B7 JUMP JUMPDEST DUP2 PUSH2 0x5BA JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x5E3 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0x415 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP6 DUP6 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x7B7 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x626 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x651 JUMPI PUSH2 0x64A DUP6 DUP6 DUP6 PUSH2 0x6BE JUMP JUMPDEST SWAP1 POP PUSH2 0x45B JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x6B3 JUMPI PUSH1 0x0 PUSH2 0x678 DUP8 DUP7 DUP7 PUSH2 0x6BE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x687 DUP8 DUP10 DUP7 PUSH2 0x518 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x6A8 JUMPI DUP1 PUSH2 0x6AA JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP PUSH2 0x45B JUMP JUMPDEST PUSH2 0x458 DUP6 DUP6 DUP5 PUSH2 0x518 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x6DE JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH1 0x0 PUSH2 0x701 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x7B7 JUMP JUMPDEST SWAP1 POP PUSH2 0x45B PUSH2 0x555 DUP5 DUP4 DUP9 DUP9 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7B7 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x73D JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x768 JUMPI PUSH2 0x761 DUP6 DUP6 DUP6 PUSH2 0x55A JUMP JUMPDEST SWAP2 POP PUSH2 0x4AC JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x7A1 JUMPI PUSH2 0x78D DUP7 DUP6 DUP6 PUSH2 0x55A JUMP JUMPDEST SWAP2 POP PUSH2 0x79A DUP6 DUP8 DUP6 PUSH2 0x5C3 JUMP JUMPDEST SWAP1 POP PUSH2 0x4AC JUMP JUMPDEST PUSH2 0x7AC DUP6 DUP6 DUP6 PUSH2 0x5C3 JUMP JUMPDEST SWAP1 POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x7ED JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x7E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x418 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x7F9 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x87C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA KECCAK256 0xD6 DUP10 BLOCKHASH 0xD3 0xD2 0x2E 0xA7 RETURNDATASIZE 0x5D EXP LT 0xDB JUMP 0xD7 0xDB 0xC5 0xC9 PUSH21 0xAEF3E12B580EFAC8F0FF081664736F6C6343000706 STOP CALLER ","sourceMap":"114:4157:105:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:275;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;791:275:105;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;791:275:105;;;;;;;;;;;;;;2516:353;;;;;;;;;;;;;;;;-1:-1:-1;2516:353:105;;-1:-1:-1;;;;;2516:353:105;;;;;;;;;;;;;;;-1:-1:-1;;;;;2516:353:105;;:::i;:::-;;;;;;;;;;;;;;;;2877:277;;;;;;;;;;;;;;;;-1:-1:-1;2877:277:105;;-1:-1:-1;;;;;2877:277:105;;;;;;;;;;;;;;;-1:-1:-1;;;;;2877:277:105;;:::i;1431:355::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1431:355:105;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;151:275::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;151:275:105;;;;;;;;;;;;;;;;;:::i;2231:277::-;;;;;;;;;;;;;;;;-1:-1:-1;2231:277:105;;-1:-1:-1;;;;;2231:277:105;;;;;;;;;;;;;;;-1:-1:-1;;;;;2231:277:105;;:::i;3162:353::-;;;;;;;;;;;;;;;;-1:-1:-1;3162:353:105;;-1:-1:-1;;;;;3162:353:105;;;;;;;;;;;;;;;-1:-1:-1;;;;;3162:353:105;;:::i;3523:339::-;;;;;;;;;;;;;;;;-1:-1:-1;3523:339:105;;-1:-1:-1;;;;;3523:339:105;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3523:339:105;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1074:349;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1074:349:105;;;;;;;;;;;;;;;;;:::i;434:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;434:349:105;;;;;;;;;;;;;;;;;:::i;3870:398::-;;;;;;;;;;;;;;;;-1:-1:-1;3870:398:105;;-1:-1:-1;;;;;3870:398:105;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3870:398:105;;:::i;1794:429::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1794:429:105;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;791:275::-;943:17;980:78;1020:13;1035;1050:7;980:39;:78::i;:::-;973:85;;791:275;;;;;;:::o;2516:353::-;2682:7;2702:17;2722:9;2702:29;;2742:80;2782:13;2797;2812:9;2742:39;:80::i;:::-;;2852:9;2840:21;;;2516:353;-1:-1:-1;;;;2516:353:105:o;2877:277::-;3031:15;3066:80;3106:13;3121;3136:9;3066:39;:80::i;1431:355::-;1640:17;1677:101;1717:12;1731:13;1746;1761:7;1770;1677:39;:101::i;:::-;1670:108;;1431:355;;;;;;;;:::o;151:275::-;303:17;340:78;380:13;395;410:7;340:39;:78::i;2231:277::-;2385:15;2420:80;2460:13;2475;2490:9;2420:39;:80::i;3162:353::-;3328:7;3348:17;3368:9;3348:29;;3388:80;3428:13;3443;3458:9;-1:-1:-1;;;;;3388:80:105;:39;:80::i;3523:339::-;3708:15;3725;3760:94;3800:12;3814:13;3829;3844:9;3760:39;:94::i;:::-;3753:101;;;;3523:339;;;;;;;;:::o;1074:349::-;1238:7;1258:17;1278:9;1258:29;;1298:78;1338:13;1353;1368:7;1298:39;:78::i;434:349::-;598:7;618:17;638:9;618:29;;658:78;698:13;713;728:7;658:39;:78::i;3870:398::-;4067:7;4087:17;4107:9;4087:29;;4127:94;4167:12;4181:13;4196;4211:9;4127:39;:94::i;:::-;;;4251:9;4239:21;;;3870:398;-1:-1:-1;;;;;3870:398:105:o;1794:429::-;2015:7;2035:17;2055:9;2035:29;;2075:101;2115:12;2129:13;2144;2159:7;2168;2075:39;:101::i;:::-;;2206:9;2194:21;;;1794:429;-1:-1:-1;;;;;;1794:429:105:o;2019:390:93:-;2171:17;2221:13;-1:-1:-1;;;;;2205:29:93;:13;-1:-1:-1;;;;;2205:29:93;;2201:98;;;2270:13;;2285;2201:98;2317:84;2327:73;2343:7;-1:-1:-1;;;2386:13:93;2370;:29;-1:-1:-1;;;;;2327:73:93;:15;:73::i;:::-;2317:9;:84::i;4304:511::-;4458:15;4506:13;-1:-1:-1;;;;;4490:29:93;:13;-1:-1:-1;;;;;4490:29:93;;4486:98;;;4555:13;;4570;4486:98;4794:13;-1:-1:-1;;;;;4617:190:93;:174;316:2:17;4651:45:93;;4659:9;-1:-1:-1;;;;;4651:18:93;:45;;4731:13;4715;:29;-1:-1:-1;;;;;4617:174:93;4763:13;-1:-1:-1;;;;;4617:174:93;:15;:174::i;:::-;:190;;;;;;;4304:511;-1:-1:-1;;;;4304:511:93:o;5180:383::-;5334:15;5382:13;-1:-1:-1;;;;;5366:29:93;:13;-1:-1:-1;;;;;5366:29:93;;5362:98;;;5431:13;;5446;5362:98;5480:75;5496:9;-1:-1:-1;;;;;5480:75:93;5523:13;5507;:29;-1:-1:-1;;;;;5480:75:93;-1:-1:-1;;;5480:15:93;:75::i;3019:920::-;3228:17;3278:13;-1:-1:-1;;;;;3262:29:93;:13;-1:-1:-1;;;;;3262:29:93;;3258:98;;;3327:13;;3342;3258:98;3389:13;-1:-1:-1;;;;;3373:29:93;:12;-1:-1:-1;;;;;3373:29:93;;3369:563;;3431:61;3454:13;3469;3484:7;3431:22;:61::i;:::-;3419:73;;3369:563;;;3529:13;-1:-1:-1;;;;;3514:28:93;:12;-1:-1:-1;;;;;3514:28:93;;3510:422;;;3559:18;3580:60;3603:12;3617:13;3632:7;3580:22;:60::i;:::-;3559:81;;3655:18;3676:60;3699:13;3714:12;3728:7;3676:22;:60::i;:::-;3655:81;;3778:10;-1:-1:-1;;;;;3765:23:93;:10;-1:-1:-1;;;;;3765:23:93;;:49;;3804:10;3765:49;;;3791:10;3765:49;3753:61;;3510:422;;;;;3859:61;3882:13;3897;3912:7;3859:22;:61::i;1089:483::-;1241:17;1291:13;-1:-1:-1;;;;;1275:29:93;:13;-1:-1:-1;;;;;1275:29:93;;1271:98;;;1340:13;;1355;1271:98;1380:20;1403:63;1419:13;-1:-1:-1;;;;;1403:63:93;1434:13;-1:-1:-1;;;;;1403:63:93;-1:-1:-1;;;1403:15:93;:63::i;:::-;1380:86;;1484:80;1494:69;1510:7;1519:12;1549:13;1533;:29;-1:-1:-1;;;;;1494:69:93;:15;:69::i;6114:815::-;6299:15;6316;6364:13;-1:-1:-1;;;;;6348:29:93;:13;-1:-1:-1;;;;;6348:29:93;;6344:98;;;6413:13;;6428;6344:98;6475:13;-1:-1:-1;;;;;6459:29:93;:12;-1:-1:-1;;;;;6459:29:93;;6455:467;;6515:63;6538:13;6553;6568:9;6515:22;:63::i;:::-;6505:73;;6455:467;;;6615:13;-1:-1:-1;;;;;6600:28:93;:12;-1:-1:-1;;;;;6600:28:93;;6596:326;;;6655:62;6678:12;6692:13;6707:9;6655:22;:62::i;:::-;6645:72;;6742:62;6765:13;6780:12;6794:9;6742:22;:62::i;:::-;6732:72;;6596:326;;;6847:63;6870:13;6885;6900:9;6847:22;:63::i;:::-;6837:73;;6114:815;;;;;;;:::o;762:3868:18:-;878:14;;;-1:-1:-1;;1394:1:18;1391;1384:20;1427:9;;;;-1:-1:-1;1479:13:18;;;1463:14;;;;1459:34;;-1:-1:-1;1579:10:18;1575:185;;1628:1;1614:11;:15;1606:24;;;;;;-1:-1:-1;1683:23:18;;;;-1:-1:-1;1735:13:18;;1575:185;1891:5;1877:11;:19;1869:28;;;;;;2182:17;2260:11;2257:1;2254;2247:25;2623:12;2638;;;:26;;2761:22;;;;;3584:1;3565;:15;;3564:21;;3815:17;;;3811:21;;3804:28;3874:17;;;3870:21;;3863:28;3934:17;;;3930:21;;3923:28;3994:17;;;3990:21;;3983:28;4054:17;;;4050:21;;4043:28;4115:17;;;4111:21;;;4104:28;3144:12;;;;3140:23;;;3165:1;3136:31;2393:20;;;2382:32;;;3197:12;;;;2437:21;;;;2894:16;;;;3188:21;;;;4587:11;;;;;-1:-1:-1;;762:3868:18;;;;;:::o;501:112:93:-;603:1;-1:-1:-1;;;;;583:21:93;;;;575:30;;;;;;501:112;;;:::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/elixir-periphery/test/LiquidityAmountsTest.sol\":\"LiquidityAmountsTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-periphery/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x8ed6cb25c14c41756086367d76eba826250da3a8621ace0c8657fce32e68fad7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06d92752a75efdd197ef39740e3e266bda1fbd0361c40bb9c014a608ade17b31\",\"dweb:/ipfs/QmRPhnmoNz9s2ZvJDomKtKMrYJXPvD6J6LGDtTQ8KeTDMY\"]},\"contracts/elixir-periphery/test/LiquidityAmountsTest.sol\":{\"keccak256\":\"0xb79d7b7748788b8192057b51929590b1bd02cc47d3286d3a27e0241a99b8b9ac\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b4b8a1abcb6151f4b7a0ee5eac93a433e8a9f4518f6960fc275b01c6a438ff8d\",\"dweb:/ipfs/QmSahTapjfYqTfZSkeevKGY4CEioR2enxfmjH6gyFZ3QvK\"]}},\"version\":1}"}},"contracts/elixir-periphery/test/MockObservations.sol":{"MockObservations":{"abi":[{"inputs":[{"internalType":"uint32[4]","name":"_blockTimestamps","type":"uint32[4]"},{"internalType":"int56[4]","name":"_tickCumulatives","type":"int56[4]"},{"internalType":"uint128[4]","name":"_secondsPerLiquidityCumulativeX128s","type":"uint128[4]"},{"internalType":"bool[4]","name":"_initializeds","type":"bool[4]"},{"internalType":"uint192[4]","name":"_rewardPerLiquidityCumulativeX64","type":"uint192[4]"},{"internalType":"int24","name":"_tick","type":"int24"},{"internalType":"uint16","name":"_observationCardinality","type":"uint16"},{"internalType":"uint16","name":"_observationIndex","type":"uint16"},{"internalType":"bool","name":"_lastObservationCurrentTimestamp","type":"bool"},{"internalType":"uint128","name":"_liquidity","type":"uint128"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"","type":"uint32"},{"internalType":"int56","name":"","type":"int56"},{"internalType":"uint160","name":"","type":"uint160"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint192","name":"","type":"uint192"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"slot0","outputs":[{"internalType":"uint160","name":"","type":"uint160"},{"internalType":"int24","name":"","type":"int24"},{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506040516105b13803806105b1833981810160405261032081101561003457600080fd5b506102808101516102a08201516102c08301516102e0840151610300850151608086019461010087019461018088019461020089019492939192909160005b60048110156101f7576040518060a001604052808c836004811061009357fe5b602002015163ffffffff1681526020018b83600481106100af57fe5b602002015160060b81526020018a83600481106100c857fe5b60200201516001600160801b03166001600160a01b031681526020018983600481106100f057fe5b60200201511515815260200188836004811061010857fe5b60200201516001600160c01b031690526000826004811061012557fe5b825160029190910291909101805460208401516040850151606086015163ffffffff1990931663ffffffff9095169490941766ffffffffffffff60201b191664010000000066ffffffffffffff60069390930b929092169190910217600160581b600160f81b0319166b0100000000000000000000006001600160a01b0390941693909302929092176001600160f81b0316600160f81b92151592909202919091178155608090910151600191820180546001600160c01b0319166001600160c01b0390921691909117905501610073565b506008805462ffffff191662ffffff60029790970b969096169590951764ffff0000001916630100000061ffff958616021761ffff60281b19166501000000000093909416929092029290921760ff60b81b1916600160b81b9215159290920291909117600160381b600160b81b0319166701000000000000006001600160801b03929092169190910217905550610315935083925061029c915060009050396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80631a68650214610046578063252c09d7146100735780633850c7bd146100f6575b600080fd5b61004e61015c565b604080516fffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100906004803603602081101561008957600080fd5b503561017f565b6040805163ffffffff909616865260069490940b602086015273ffffffffffffffffffffffffffffffffffffffff909216848401521515606084015277ffffffffffffffffffffffffffffffffffffffffffffffff166080830152519081900360a00190f35b6100fe6102b1565b6040805173ffffffffffffffffffffffffffffffffffffffff909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b60085467010000000000000090046fffffffffffffffffffffffffffffffff1681565b6000806000806000806000876004811061019557fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b602084015273ffffffffffffffffffffffffffffffffffffffff6b0100000000000000000000008204169383019390935260ff600160f81b9093048316151560608301526001015477ffffffffffffffffffffffffffffffffffffffffffffffff166080820152600854909250770100000000000000000000000000000000000000000000009004161561028957805160085460009065010000000000900461ffff166004811061027257fe5b600202015463ffffffff9081169190910342031681525b8051602082015160408301516060840151608090940151929a91995097509195509350915050565b600854600090600281900b9061ffff650100000000008204811691630100000090041683808091929394959656fea2646970667358221220eb303fe82035a419dcedd4456ff3b1d78831c6ae9be38916298c93d2e0b723d264736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x5B1 CODESIZE SUB DUP1 PUSH2 0x5B1 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH2 0x320 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x280 DUP2 ADD MLOAD PUSH2 0x2A0 DUP3 ADD MLOAD PUSH2 0x2C0 DUP4 ADD MLOAD PUSH2 0x2E0 DUP5 ADD MLOAD PUSH2 0x300 DUP6 ADD MLOAD PUSH1 0x80 DUP7 ADD SWAP5 PUSH2 0x100 DUP8 ADD SWAP5 PUSH2 0x180 DUP9 ADD SWAP5 PUSH2 0x200 DUP10 ADD SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x0 JUMPDEST PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP13 DUP4 PUSH1 0x4 DUP2 LT PUSH2 0x93 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP4 PUSH1 0x4 DUP2 LT PUSH2 0xAF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x6 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP11 DUP4 PUSH1 0x4 DUP2 LT PUSH2 0xC8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP4 PUSH1 0x4 DUP2 LT PUSH2 0xF0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP4 PUSH1 0x4 DUP2 LT PUSH2 0x108 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND SWAP1 MSTORE PUSH1 0x0 DUP3 PUSH1 0x4 DUP2 LT PUSH2 0x125 JUMPI INVALID JUMPDEST DUP3 MLOAD PUSH1 0x2 SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH4 0xFFFFFFFF NOT SWAP1 SWAP4 AND PUSH4 0xFFFFFFFF SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR PUSH7 0xFFFFFFFFFFFFFF PUSH1 0x20 SHL NOT AND PUSH5 0x100000000 PUSH7 0xFFFFFFFFFFFFFF PUSH1 0x6 SWAP4 SWAP1 SWAP4 SIGNEXTEND SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL OR PUSH1 0x1 PUSH1 0x58 SHL PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND PUSH12 0x10000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP3 OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB AND PUSH1 0x1 PUSH1 0xF8 SHL SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR DUP2 SSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 SWAP2 DUP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE ADD PUSH2 0x73 JUMP JUMPDEST POP PUSH1 0x8 DUP1 SLOAD PUSH3 0xFFFFFF NOT AND PUSH3 0xFFFFFF PUSH1 0x2 SWAP8 SWAP1 SWAP8 SIGNEXTEND SWAP7 SWAP1 SWAP7 AND SWAP6 SWAP1 SWAP6 OR PUSH5 0xFFFF000000 NOT AND PUSH4 0x1000000 PUSH2 0xFFFF SWAP6 DUP7 AND MUL OR PUSH2 0xFFFF PUSH1 0x28 SHL NOT AND PUSH6 0x10000000000 SWAP4 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 OR PUSH1 0xFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x38 SHL PUSH1 0x1 PUSH1 0xB8 SHL SUB NOT AND PUSH8 0x100000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE POP PUSH2 0x315 SWAP4 POP DUP4 SWAP3 POP PUSH2 0x29C SWAP2 POP PUSH1 0x0 SWAP1 POP 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 0x1A686502 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x252C09D7 EQ PUSH2 0x73 JUMPI DUP1 PUSH4 0x3850C7BD EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x15C 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 0x90 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x17F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP7 AND DUP7 MSTORE PUSH1 0x6 SWAP5 SWAP1 SWAP5 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP5 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFE PUSH2 0x2B1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP9 AND DUP9 MSTORE PUSH1 0x2 SWAP7 SWAP1 SWAP7 SIGNEXTEND PUSH1 0x20 DUP9 ADD MSTORE PUSH2 0xFFFF SWAP5 DUP6 AND DUP8 DUP8 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x60 DUP8 ADD MSTORE SWAP3 AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xFF SWAP1 SWAP2 AND PUSH1 0xA0 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xE0 ADD SWAP1 RETURN JUMPDEST PUSH1 0x8 SLOAD PUSH8 0x100000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 PUSH1 0x4 DUP2 LT PUSH2 0x195 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH12 0x10000000000000000000000 DUP3 DIV AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP4 DIV DUP4 AND ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 ADD SLOAD PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x8 SLOAD SWAP1 SWAP3 POP PUSH24 0x10000000000000000000000000000000000000000000000 SWAP1 DIV AND ISZERO PUSH2 0x289 JUMPI DUP1 MLOAD PUSH1 0x8 SLOAD PUSH1 0x0 SWAP1 PUSH6 0x10000000000 SWAP1 DIV PUSH2 0xFFFF AND PUSH1 0x4 DUP2 LT PUSH2 0x272 JUMPI INVALID JUMPDEST PUSH1 0x2 MUL ADD SLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP2 SWAP1 SWAP2 SUB TIMESTAMP SUB AND DUP2 MSTORE JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD SWAP3 SWAP11 SWAP2 SWAP10 POP SWAP8 POP SWAP2 SWAP6 POP SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND SWAP1 PUSH2 0xFFFF PUSH6 0x10000000000 DUP3 DIV DUP2 AND SWAP2 PUSH4 0x1000000 SWAP1 DIV AND DUP4 DUP1 DUP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEB ADDRESS EXTCODEHASH 0xE8 KECCAK256 CALLDATALOAD LOG4 NOT 0xDC 0xED 0xD4 GASLIMIT PUSH16 0xF3B1D78831C6AE9BE38916298C93D2E0 0xB7 0x23 0xD2 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"119:2656:106:-:0;;;413:1274;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;413:1274:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;874:9;869:555;893:23;889:1;:27;869:555;;;962:450;;;;;;;;1016:16;1033:1;1016:19;;;;;;;;;;;962:450;;;;;;1070:16;1087:1;1070:19;;;;;;;;;;;962:450;;;;;;1143:35;1201:1;1143:78;;;;;;;;;;;-1:-1:-1;;;;;962:450:106;-1:-1:-1;;;;;962:450:106;;;;;1253:13;1267:1;1253:16;;;;;;;;;;;962:450;;;;;;1321:32;1376:1;1321:75;;;;;;;;;;;-1:-1:-1;;;;;962:450:106;;;938:18;957:1;938:21;;;;;;;:474;;:21;;;;;;;;;:474;;;;;;;;;;;;;;-1:-1:-1;;938:474:106;;;;;;;;;;;-1:-1:-1;;;;938:474:106;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;938:474:106;;-1:-1:-1;;;;;938:474:106;;;;;;;;;;;-1:-1:-1;;;;;938:474:106;-1:-1:-1;;;938:474:106;;;;;;;;;;;;;;;;;;-1:-1:-1;938:474:106;;;;;-1:-1:-1;;;;;;938:474:106;-1:-1:-1;;;;;938:474:106;;;;;;;;;918:3;869:555;;;-1:-1:-1;1436:9:106;:17;;-1:-1:-1;;1436:17:106;;;;;;;;;;;;;;;-1:-1:-1;;1464:53:106;;;;;;;;-1:-1:-1;;;;1528:41:106;;;;;;;;;;;;;;-1:-1:-1;;;;1580:66:106;-1:-1:-1;;;1580:66:106;;;;;;;;;;;-1:-1:-1;;;;;;;;1657:22:106;;-1:-1:-1;;;;;1657:22:106;;;;;;;;;;;-1:-1:-1;119:2656:106;;-1:-1:-1;119:2656:106;;-1:-1:-1;119:2656:106;;-1:-1:-1;;;;119:2656:106;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c80631a68650214610046578063252c09d7146100735780633850c7bd146100f6575b600080fd5b61004e61015c565b604080516fffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100906004803603602081101561008957600080fd5b503561017f565b6040805163ffffffff909616865260069490940b602086015273ffffffffffffffffffffffffffffffffffffffff909216848401521515606084015277ffffffffffffffffffffffffffffffffffffffffffffffff166080830152519081900360a00190f35b6100fe6102b1565b6040805173ffffffffffffffffffffffffffffffffffffffff909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b60085467010000000000000090046fffffffffffffffffffffffffffffffff1681565b6000806000806000806000876004811061019557fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b602084015273ffffffffffffffffffffffffffffffffffffffff6b0100000000000000000000008204169383019390935260ff600160f81b9093048316151560608301526001015477ffffffffffffffffffffffffffffffffffffffffffffffff166080820152600854909250770100000000000000000000000000000000000000000000009004161561028957805160085460009065010000000000900461ffff166004811061027257fe5b600202015463ffffffff9081169190910342031681525b8051602082015160408301516060840151608090940151929a91995097509195509350915050565b600854600090600281900b9061ffff650100000000008204811691630100000090041683808091929394959656fea2646970667358221220eb303fe82035a419dcedd4456ff3b1d78831c6ae9be38916298c93d2e0b723d264736f6c63430007060033","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 0x1A686502 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x252C09D7 EQ PUSH2 0x73 JUMPI DUP1 PUSH4 0x3850C7BD EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x15C 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 0x90 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x17F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP7 AND DUP7 MSTORE PUSH1 0x6 SWAP5 SWAP1 SWAP5 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP5 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFE PUSH2 0x2B1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP9 AND DUP9 MSTORE PUSH1 0x2 SWAP7 SWAP1 SWAP7 SIGNEXTEND PUSH1 0x20 DUP9 ADD MSTORE PUSH2 0xFFFF SWAP5 DUP6 AND DUP8 DUP8 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x60 DUP8 ADD MSTORE SWAP3 AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xFF SWAP1 SWAP2 AND PUSH1 0xA0 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xE0 ADD SWAP1 RETURN JUMPDEST PUSH1 0x8 SLOAD PUSH8 0x100000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 PUSH1 0x4 DUP2 LT PUSH2 0x195 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH5 0x100000000 DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH12 0x10000000000000000000000 DUP3 DIV AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP4 DIV DUP4 AND ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 ADD SLOAD PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x8 SLOAD SWAP1 SWAP3 POP PUSH24 0x10000000000000000000000000000000000000000000000 SWAP1 DIV AND ISZERO PUSH2 0x289 JUMPI DUP1 MLOAD PUSH1 0x8 SLOAD PUSH1 0x0 SWAP1 PUSH6 0x10000000000 SWAP1 DIV PUSH2 0xFFFF AND PUSH1 0x4 DUP2 LT PUSH2 0x272 JUMPI INVALID JUMPDEST PUSH1 0x2 MUL ADD SLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP2 SWAP1 SWAP2 SUB TIMESTAMP SUB AND DUP2 MSTORE JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD SWAP3 SWAP11 SWAP2 SWAP10 POP SWAP8 POP SWAP2 SWAP6 POP SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND SWAP1 PUSH2 0xFFFF PUSH6 0x10000000000 DUP3 DIV DUP2 AND SWAP2 PUSH4 0x1000000 SWAP1 DIV AND DUP4 DUP1 DUP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEB ADDRESS EXTCODEHASH 0xE8 KECCAK256 CALLDATALOAD LOG4 NOT 0xDC 0xED 0xD4 GASLIMIT PUSH16 0xF3B1D78831C6AE9BE38916298C93D2E0 0xB7 0x23 0xD2 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"119:2656:106:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;326:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2035:737;;;;;;;;;;;;;;;;-1:-1:-1;2035:737:106;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1695:332;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;326:24;;;;;;;;;:::o;2035:737::-;2111:6;2119:5;2126:7;2135:4;2141:7;2161:37;2201:18;2220:5;2201:25;;;;;;;2161:65;;;;;;;;2201:25;;;;;;;;;2161:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2161:65:106;;;;;;;;;;;;;;;;;;;;2241:31;;2161:65;;-1:-1:-1;2241:31:106;;;;2237:261;;;2459:26;;2398:21;;2459:26;;2398:21;;;;;2379:41;;;;;;;;;;:56;;;;;:106;;;;2342:15;2335:151;2289:197;;;2237:261;2530:26;;2571;;;;2612:45;;;;2672:23;;;;2710:43;;;;;2530:26;;2571;;-1:-1:-1;2612:45:106;-1:-1:-1;2672:23:106;;-1:-1:-1;2710:43:106;-1:-1:-1;2035:737:106;-1:-1:-1;;2035:737:106:o;1695:332::-;1869:9;;1762:7;;1869:9;;;;;1893:21;;;;;;;1929:27;;;;1762:7;;;1695:332;;;;;;:::o"},"methodIdentifiers":{"liquidity()":"1a686502","observations(uint256)":"252c09d7","slot0()":"3850c7bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint32[4]\",\"name\":\"_blockTimestamps\",\"type\":\"uint32[4]\"},{\"internalType\":\"int56[4]\",\"name\":\"_tickCumulatives\",\"type\":\"int56[4]\"},{\"internalType\":\"uint128[4]\",\"name\":\"_secondsPerLiquidityCumulativeX128s\",\"type\":\"uint128[4]\"},{\"internalType\":\"bool[4]\",\"name\":\"_initializeds\",\"type\":\"bool[4]\"},{\"internalType\":\"uint192[4]\",\"name\":\"_rewardPerLiquidityCumulativeX64\",\"type\":\"uint192[4]\"},{\"internalType\":\"int24\",\"name\":\"_tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"_observationCardinality\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_observationIndex\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"_lastObservationCurrentTimestamp\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"_liquidity\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"\",\"type\":\"uint32\"},{\"internalType\":\"int56\",\"name\":\"\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint192\",\"name\":\"\",\"type\":\"uint192\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slot0\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/test/MockObservations.sol\":\"MockObservations\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/libraries/Oracle.sol\":{\"keccak256\":\"0xb927015d21b9ea6fbcf518218811d938b8bba57250f77459e364421a6a6459c6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://773ae95cce9134e52b8a05574c6691869680cdd1f17129a1138c268c76b77607\",\"dweb:/ipfs/QmZsmHuzYWLWJiTD2PKuzVqfuJUB33ajQ2Rp3N3PkQAern\"]},\"contracts/elixir-periphery/test/MockObservations.sol\":{\"keccak256\":\"0x4c7af12db4ea8051f7a6c07d652b7cbdccfa01d7d2995f2e8a15f6974aaf30a4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://55fb6fa763f0958b1e30a74f8f8af0a247a1aa8e209f32b8255a0bcb2b485603\",\"dweb:/ipfs/QmQyzq8U13Cns3wxJgE3mxSYaN2WdKdGN9ZqYkNMYnZveU\"]}},\"version\":1}"}},"contracts/elixir-periphery/test/MockTimeSwapRouter.sol":{"MockTimeSwapRouter":{"abi":[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH9","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH9","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":"elixirSwapCallback","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":"refundETH","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":"unwrapWETH9","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":"unwrapWETH9WithFee","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:507:178","statements":[{"nodeType":"YulBlock","src":"6:3:178","statements":[]},{"body":{"nodeType":"YulBlock","src":"76:117:178","statements":[{"nodeType":"YulAssignment","src":"86:22:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"101:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"95:5:178"},"nodeType":"YulFunctionCall","src":"95:13:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"86:5:178"}]},{"body":{"nodeType":"YulBlock","src":"171:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"180:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"183:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"173:6:178"},"nodeType":"YulFunctionCall","src":"173:12:178"},"nodeType":"YulExpressionStatement","src":"173:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"130:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"141:5:178"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"156:3:178","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"161:1:178","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"152:3:178"},"nodeType":"YulFunctionCall","src":"152:11:178"},{"kind":"number","nodeType":"YulLiteral","src":"165:1:178","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"148:3:178"},"nodeType":"YulFunctionCall","src":"148:19:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"137:3:178"},"nodeType":"YulFunctionCall","src":"137:31:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"127:2:178"},"nodeType":"YulFunctionCall","src":"127:42:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"120:6:178"},"nodeType":"YulFunctionCall","src":"120:50:178"},"nodeType":"YulIf","src":"117:2:178"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"55:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"66:5:178","type":""}],"src":"14:179:178"},{"body":{"nodeType":"YulBlock","src":"296:209:178","statements":[{"body":{"nodeType":"YulBlock","src":"342:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"351:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"359:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"344:6:178"},"nodeType":"YulFunctionCall","src":"344:22:178"},"nodeType":"YulExpressionStatement","src":"344:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"317:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"326:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"313:3:178"},"nodeType":"YulFunctionCall","src":"313:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"338:2:178","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"309:3:178"},"nodeType":"YulFunctionCall","src":"309:32:178"},"nodeType":"YulIf","src":"306:2:178"},{"nodeType":"YulAssignment","src":"377:52:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"419:9:178"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"387:31:178"},"nodeType":"YulFunctionCall","src":"387:42:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"377:6:178"}]},{"nodeType":"YulAssignment","src":"438:61:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"484:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"495:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"480:3:178"},"nodeType":"YulFunctionCall","src":"480:18:178"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"448:31:178"},"nodeType":"YulFunctionCall","src":"448:51:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"438:6:178"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"254:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"265:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"277:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"285:6:178","type":""}],"src":"198:307:178"}]},"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":178,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60c06040526000196000553480156200001757600080fd5b5060405162002837380380620028378339810160408190526200003a9162000076565b6001600160601b0319606092831b8116608052911b1660a052620000ad565b80516001600160a01b03811681146200007157600080fd5b919050565b6000806040838503121562000089578182fd5b620000948362000059565b9150620000a46020840162000059565b90509250929050565b60805160601c60a05160601c61272e620001096000398061013d52806104e252806105d8528061066552806106a5528061079b5280611437528061147d52806114f1525080610b935280610bfa52806118a3525061272e6000f3fe60806040526004361061012d5760003560e01c8063c04b8d59116100a5578063db3e219811610074578063e0e189a011610059578063e0e189a014610316578063f28c049814610329578063f3995c671461033c576101b1565b8063db3e2198146102f0578063df2ab5bb14610303576101b1565b8063c04b8d5914610295578063c2e3140a146102a8578063c45a0155146102bb578063d804d7a7146102d0576101b1565b806349404b7c116100fc5780639b2c0a37116100e15780639b2c0a371461024f578063a4a78f0c14610262578063ac9650d814610275576101b1565b806349404b7c1461021a5780634aa4a4fc1461022d576101b1565b806312210e8a146101b65780633beb26c4146101be578063414bf389146101de5780634659a49414610207576101b1565b366101b157336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101af576040805162461bcd60e51b815260206004820152600960248201527f4e6f742057455448390000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b6101af61034f565b3480156101ca57600080fd5b506101af6101d9366004612388565b610359565b6101f16101ec366004612281565b61035e565b6040516101fe919061261c565b60405180910390f35b6101af610215366004611fff565b610444565b6101af6102283660046123a0565b6104de565b34801561023957600080fd5b50610242610663565b6040516101fe91906124a7565b6101af61025d3660046123cf565b610687565b6101af610270366004611fff565b61085e565b61028861028336600461205f565b6108ef565b6040516101fe9190612500565b6101f16102a33660046121d6565b610a2f565b6101af6102b6366004611fff565b610b02565b3480156102c757600080fd5b50610242610b91565b3480156102dc57600080fd5b506101af6102eb3660046120f1565b610bb5565b6101f16102fe366004612281565b610cc8565b6101af610311366004611f60565b610da6565b6101af610324366004611fa1565b610e8f565b6101f161033736600461229d565b610fc1565b6101af61034a366004611fff565b61106e565b6103576110e0565b565b600155565b6000816080013561036e816110f0565b61040760a08401356103866080860160608701611f3d565b610397610100870160e08801611f3d565b60408051808201909152806103af60208a018a611f3d565b6103bf60608b0160408c01612365565b6103cf60408c0160208d01611f3d565b6040516020016103e193929190612444565b6040516020818303038152906040528152602001336001600160a01b0316815250611148565b91508260c001358210156104365760405162461bcd60e51b815260040161042d906125aa565b60405180910390fd5b61043e6110e0565b50919050565b604080516323f2ebc360e21b815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b1580156104be57600080fd5b505af11580156104d2573d6000803e3d6000fd5b50505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561054d57600080fd5b505afa158015610561573d6000803e3d6000fd5b505050506040513d602081101561057757600080fd5b50519050828110156105d0576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b801561065e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561063c57600080fd5b505af1158015610650573d6000803e3d6000fd5b5050505061065e828261129a565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082118015610698575060648211155b6106a157600080fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561071057600080fd5b505afa158015610724573d6000803e3d6000fd5b505050506040513d602081101561073a57600080fd5b5051905084811015610793576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b8015610857577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b50505050600061271061082f858461138990919063ffffffff16565b8161083657fe5b049050801561084957610849838261129a565b6108558582840361129a565b505b5050505050565b60408051636eb1769f60e11b81523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b1580156108af57600080fd5b505afa1580156108c3573d6000803e3d6000fd5b505050506040513d60208110156108d957600080fd5b5051101561085557610855868686868686610444565b60608167ffffffffffffffff8111801561090857600080fd5b5060405190808252806020026020018201604052801561093c57816020015b60608152602001906001900390816109275790505b50905060005b82811015610a28576000803086868581811061095a57fe5b905060200281019061096c9190612625565b60405161097a929190612497565b600060405180830381855af49150503d80600081146109b5576040519150601f19603f3d011682016040523d82523d6000602084013e6109ba565b606091505b509150915081610a06576044815110156109d357600080fd5b600481019050808060200190518101906109ed919061216c565b60405162461bcd60e51b815260040161042d9190612560565b80848481518110610a1357fe5b60209081029190910101525050600101610942565b5092915050565b60008160400151610a3f816110f0565b335b6000610a5085600001516113b3565b9050610a9c856060015182610a69578660200151610a6b565b305b60006040518060400160405280610a858b600001516113bf565b8152602001876001600160a01b0316815250611148565b60608601528015610abc578451309250610ab5906113ce565b8552610ac9565b8460600151935050610acf565b50610a41565b8360800151831015610af35760405162461bcd60e51b815260040161042d906125aa565b610afb6110e0565b5050919050565b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b158015610b5157600080fd5b505afa158015610b65573d6000803e3d6000fd5b505050506040513d6020811015610b7b57600080fd5b505110156108555761085586868686868661106e565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000841380610bc45750600083135b610bcd57600080fd5b6000610bdb828401846122d5565b90506000806000610bef84600001516113e5565b925092509250610c217f0000000000000000000000000000000000000000000000000000000000000000848484611416565b5060008060008a13610c4857846001600160a01b0316846001600160a01b03161089610c5f565b836001600160a01b0316856001600160a01b0316108a5b915091508115610c7e57610c798587602001513384611435565b6104d2565b8551610c89906113b3565b15610cae578551610c99906113ce565b8652610ca881336000896115c5565b506104d2565b806000819055508394506104d28587602001513384611435565b60008160800135610cd8816110f0565b610d7460a0840135610cf06080860160608701611f3d565b610d01610100870160e08801611f3d565b6040518060400160405280886020016020810190610d1f9190611f3d565b610d2f60608b0160408c01612365565b610d3c60208c018c611f3d565b604051602001610d4e93929190612444565b6040516020818303038152906040528152602001336001600160a01b03168152506115c5565b91508260c00135821115610d9a5760405162461bcd60e51b815260040161042d90612573565b50600019600055919050565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610df557600080fd5b505afa158015610e09573d6000803e3d6000fd5b505050506040513d6020811015610e1f57600080fd5b5051905082811015610e78576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b8015610e8957610e89848383611740565b50505050565b600082118015610ea0575060648211155b610ea957600080fd5b6000856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610ef857600080fd5b505afa158015610f0c573d6000803e3d6000fd5b505050506040513d6020811015610f2257600080fd5b5051905084811015610f7b576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b8015610855576000612710610f908386611389565b81610f9757fe5b0490508015610fab57610fab878483611740565b610fb88786838503611740565b50505050505050565b60008160400135610fd1816110f0565b6110446060840135610fe96040860160208701611f3d565b60408051808201909152600090806110018980612625565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250336020909101526115c5565b5060005491508260800135821115610d9a5760405162461bcd60e51b815260040161042d90612573565b6040805163d505accf60e01b8152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b1580156104be57600080fd5b471561035757610357334761129a565b80421115611145576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b50565b60006001600160a01b03841661115c573093505b600080600061116e85600001516113e5565b919450925090506001600160a01b038083169084161060008061119286868661189c565b6001600160a01b031663128acb088b856111ab8f6118da565b6001600160a01b038e16156111c0578d6111e6565b876111df5773fffd8963efd1fc6a506488495d951d5263988d256111e6565b6401000276a45b8d6040516020016111f791906125e1565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016112269594939291906124bb565b6040805180830381600087803b15801561123f57600080fd5b505af1158015611253573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127791906120ce565b91509150826112865781611288565b805b6000039b9a5050505050505050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106112e65780518252601f1990920191602091820191016112c7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611348576040519150601f19603f3d011682016040523d82523d6000602084013e61134d565b606091505b505090508061065e576040805162461bcd60e51b815260206004820152600360248201526253544560e81b604482015290519081900360640190fd5b60008215806113a4575050818102818382816113a157fe5b04145b6113ad57600080fd5b92915050565b8051604211155b919050565b60606113ad826000602b6118f0565b80516060906113ad908390601790601619016118f0565b600080806113f38482611a4d565b9250611400846014611b19565b905061140d846017611a4d565b91509193909250565b600061142c85611427868686611bd5565b611c2b565b95945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156114765750804710155b15611598577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156114d657600080fd5b505af11580156114ea573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561156657600080fd5b505af115801561157a573d6000803e3d6000fd5b505050506040513d602081101561159057600080fd5b50610e899050565b6001600160a01b0383163014156115b9576115b4848383611740565b610e89565b610e8984848484611c4e565b60006001600160a01b0384166115d9573093505b60008060006115eb85600001516113e5565b919450925090506001600160a01b038084169083161060008061160f85878661189c565b6001600160a01b031663128acb088b856116288f6118da565b6000036001600160a01b038e1615611640578d611666565b8761165f5773fffd8963efd1fc6a506488495d951d5263988d25611666565b6401000276a45b8d60405160200161167791906125e1565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016116a69594939291906124bb565b6040805180830381600087803b1580156116bf57600080fd5b505af11580156116d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f791906120ce565b9150915060008361170c578183600003611712565b82826000035b90985090506001600160a01b038a16611731578b811461173157600080fd5b50505050505050949350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106117d15780518252601f1990920191602091820191016117b2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611833576040519150601f19603f3d011682016040523d82523d6000602084013e611838565b606091505b5091509150818015611866575080511580611866575080806020019051602081101561186357600080fd5b50515b610857576040805162461bcd60e51b815260206004820152600260248201526114d560f21b604482015290519081900360640190fd5b60006118d27f00000000000000000000000000000000000000000000000000000000000000006118cd868686611bd5565b611db3565b949350505050565b6000600160ff1b82106118ec57600080fd5b5090565b60608182601f01101561193b576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015611983576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b818301845110156119db576040805162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b6060821580156119fa5760405191506000825260208201604052611a44565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611a33578051835260209283019201611a1b565b5050858452601f01601f1916604052505b50949350505050565b600081826014011015611aa7576040805162461bcd60e51b815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015611b00576040805162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015611b73576040805162461bcd60e51b815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015611bcc576040805162461bcd60e51b815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b611bdd611eaf565b826001600160a01b0316846001600160a01b03161115611bfb579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b6000611c378383611db3565b9050336001600160a01b038216146113ad57600080fd5b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b178152925182516000948594938a169392918291908083835b60208310611ce75780518252601f199092019160209182019101611cc8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611d49576040519150601f19603f3d011682016040523d82523d6000602084013e611d4e565b606091505b5091509150818015611d7c575080511580611d7c5750808060200190516020811015611d7957600080fd5b50515b610855576040805162461bcd60e51b815260206004820152600360248201526229aa2360e91b604482015290519081900360640190fd5b600081602001516001600160a01b031682600001516001600160a01b031610611ddb57600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f5909101909152805191012090565b604080516060810182526000808252602082018190529181019190915290565b80356113ba816126e3565b600082601f830112611eea578081fd5b8135611efd611ef882612695565b612671565b818152846020838601011115611f11578283fd5b816020850160208301379081016020019190915292915050565b6000610100828403121561043e578081fd5b600060208284031215611f4e578081fd5b8135611f59816126e3565b9392505050565b600080600060608486031215611f74578182fd5b8335611f7f816126e3565b9250602084013591506040840135611f96816126e3565b809150509250925092565b600080600080600060a08688031215611fb8578081fd5b8535611fc3816126e3565b9450602086013593506040860135611fda816126e3565b9250606086013591506080860135611ff1816126e3565b809150509295509295909350565b60008060008060008060c08789031215612017578081fd5b8635612022816126e3565b95506020870135945060408701359350606087013560ff81168114612045578182fd5b9598949750929560808101359460a0909101359350915050565b60008060208385031215612071578182fd5b823567ffffffffffffffff80821115612088578384fd5b818501915085601f83011261209b578384fd5b8135818111156120a9578485fd5b86602080830285010111156120bc578485fd5b60209290920196919550909350505050565b600080604083850312156120e0578182fd5b505080516020909101519092909150565b60008060008060608587031215612106578182fd5b8435935060208501359250604085013567ffffffffffffffff8082111561212b578384fd5b818701915087601f83011261213e578384fd5b81358181111561214c578485fd5b88602082850101111561215d578485fd5b95989497505060200194505050565b60006020828403121561217d578081fd5b815167ffffffffffffffff811115612193578182fd5b8201601f810184136121a3578182fd5b80516121b1611ef882612695565b8181528560208385010111156121c5578384fd5b61142c8260208301602086016126b7565b6000602082840312156121e7578081fd5b813567ffffffffffffffff808211156121fe578283fd5b9083019060a08286031215612211578283fd5b60405160a08101818110838211171561222657fe5b604052823582811115612237578485fd5b61224387828601611eda565b82525061225260208401611ecf565b602082015260408301356040820152606083013560608201526080830135608082015280935050505092915050565b60006101008284031215612293578081fd5b611f598383611f2b565b6000602082840312156122ae578081fd5b813567ffffffffffffffff8111156122c4578182fd5b820160a08185031215611f59578182fd5b6000602082840312156122e6578081fd5b813567ffffffffffffffff808211156122fd578283fd5b9083019060408286031215612310578283fd5b60405160408101818110838211171561232557fe5b604052823582811115612336578485fd5b61234287828601611eda565b82525060208301359250612355836126e3565b6020810192909252509392505050565b600060208284031215612376578081fd5b813562ffffff81168114611f59578182fd5b600060208284031215612399578081fd5b5035919050565b600080604083850312156123b2578182fd5b8235915060208301356123c4816126e3565b809150509250929050565b600080600080608085870312156123e4578182fd5b8435935060208501356123f6816126e3565b925060408501359150606085013561240d816126e3565b939692955090935050565b600081518084526124308160208601602086016126b7565b601f01601f19169290920160200192915050565b606093841b6bffffffffffffffffffffffff19908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b60006001600160a01b038088168352861515602084015285604084015280851660608401525060a060808301526124f560a0830184612418565b979650505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b8281101561255357603f19888603018452612541858351612418565b94509285019290850190600101612525565b5092979650505050505050565b600060208252611f596020830184612418565b60208082526012908201527f546f6f206d756368207265717565737465640000000000000000000000000000604082015260600190565b60208082526013908201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604082015260600190565b6000602082528251604060208401526125fd6060840182612418565b90506001600160a01b0360208501511660408401528091505092915050565b90815260200190565b6000808335601e1984360301811261263b578283fd5b83018035915067ffffffffffffffff821115612655578283fd5b60200191503681900382131561266a57600080fd5b9250929050565b60405181810167ffffffffffffffff8111828210171561268d57fe5b604052919050565b600067ffffffffffffffff8211156126a957fe5b50601f01601f191660200190565b60005b838110156126d25781810151838201526020016126ba565b83811115610e895750506000910152565b6001600160a01b038116811461114557600080fdfea2646970667358221220c44ae75eab653d768fbfa7732c07be2d4e7a8510188a09af0d6c6d15158e46b064736f6c63430007060033","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 0x2837 CODESIZE SUB DUP1 PUSH3 0x2837 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 0x272E PUSH3 0x109 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x13D MSTORE DUP1 PUSH2 0x4E2 MSTORE DUP1 PUSH2 0x5D8 MSTORE DUP1 PUSH2 0x665 MSTORE DUP1 PUSH2 0x6A5 MSTORE DUP1 PUSH2 0x79B MSTORE DUP1 PUSH2 0x1437 MSTORE DUP1 PUSH2 0x147D MSTORE DUP1 PUSH2 0x14F1 MSTORE POP DUP1 PUSH2 0xB93 MSTORE DUP1 PUSH2 0xBFA MSTORE DUP1 PUSH2 0x18A3 MSTORE POP PUSH2 0x272E 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 0x316 JUMPI DUP1 PUSH4 0xF28C0498 EQ PUSH2 0x329 JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x33C JUMPI PUSH2 0x1B1 JUMP JUMPDEST DUP1 PUSH4 0xDB3E2198 EQ PUSH2 0x2F0 JUMPI DUP1 PUSH4 0xDF2AB5BB EQ PUSH2 0x303 JUMPI PUSH2 0x1B1 JUMP JUMPDEST DUP1 PUSH4 0xC04B8D59 EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0xD804D7A7 EQ PUSH2 0x2D0 JUMPI PUSH2 0x1B1 JUMP JUMPDEST DUP1 PUSH4 0x49404B7C GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x9B2C0A37 GT PUSH2 0xE1 JUMPI DUP1 PUSH4 0x9B2C0A37 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x275 JUMPI PUSH2 0x1B1 JUMP JUMPDEST DUP1 PUSH4 0x49404B7C EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x4AA4A4FC EQ PUSH2 0x22D JUMPI PUSH2 0x1B1 JUMP JUMPDEST DUP1 PUSH4 0x12210E8A EQ PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x3BEB26C4 EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x414BF389 EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x4659A494 EQ PUSH2 0x207 JUMPI PUSH2 0x1B1 JUMP JUMPDEST CALLDATASIZE PUSH2 0x1B1 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x1AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F742057455448390000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1AF PUSH2 0x34F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH2 0x1D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2388 JUMP JUMPDEST PUSH2 0x359 JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0x1EC CALLDATASIZE PUSH1 0x4 PUSH2 0x2281 JUMP JUMPDEST PUSH2 0x35E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x261C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1AF PUSH2 0x215 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FFF JUMP JUMPDEST PUSH2 0x444 JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x228 CALLDATASIZE PUSH1 0x4 PUSH2 0x23A0 JUMP JUMPDEST PUSH2 0x4DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x239 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x242 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x24A7 JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x25D CALLDATASIZE PUSH1 0x4 PUSH2 0x23CF JUMP JUMPDEST PUSH2 0x687 JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x270 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FFF JUMP JUMPDEST PUSH2 0x85E JUMP JUMPDEST PUSH2 0x288 PUSH2 0x283 CALLDATASIZE PUSH1 0x4 PUSH2 0x205F JUMP JUMPDEST PUSH2 0x8EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x2500 JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0x2A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x21D6 JUMP JUMPDEST PUSH2 0xA2F JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x2B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FFF JUMP JUMPDEST PUSH2 0xB02 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x242 PUSH2 0xB91 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH2 0x2EB CALLDATASIZE PUSH1 0x4 PUSH2 0x20F1 JUMP JUMPDEST PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0x2FE CALLDATASIZE PUSH1 0x4 PUSH2 0x2281 JUMP JUMPDEST PUSH2 0xCC8 JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x311 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F60 JUMP JUMPDEST PUSH2 0xDA6 JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x324 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FA1 JUMP JUMPDEST PUSH2 0xE8F JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0x337 CALLDATASIZE PUSH1 0x4 PUSH2 0x229D JUMP JUMPDEST PUSH2 0xFC1 JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x34A CALLDATASIZE PUSH1 0x4 PUSH2 0x1FFF JUMP JUMPDEST PUSH2 0x106E JUMP JUMPDEST PUSH2 0x357 PUSH2 0x10E0 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x36E DUP2 PUSH2 0x10F0 JUMP JUMPDEST PUSH2 0x407 PUSH1 0xA0 DUP5 ADD CALLDATALOAD PUSH2 0x386 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x1F3D JUMP JUMPDEST PUSH2 0x397 PUSH2 0x100 DUP8 ADD PUSH1 0xE0 DUP9 ADD PUSH2 0x1F3D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH2 0x3AF PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x1F3D JUMP JUMPDEST PUSH2 0x3BF PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x2365 JUMP JUMPDEST PUSH2 0x3CF PUSH1 0x40 DUP13 ADD PUSH1 0x20 DUP14 ADD PUSH2 0x1F3D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3E1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2444 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH2 0x1148 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0xC0 ADD CALLDATALOAD DUP3 LT ISZERO PUSH2 0x436 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x42D SWAP1 PUSH2 0x25AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x43E PUSH2 0x10E0 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23F2EBC3 PUSH1 0xE2 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x4BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x561 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 0x577 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x5D0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742057455448390000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x65E JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x63C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x650 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x65E DUP3 DUP3 PUSH2 0x129A JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x698 JUMPI POP PUSH1 0x64 DUP3 GT ISZERO JUMPDEST PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x710 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x724 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 0x73A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP5 DUP2 LT ISZERO PUSH2 0x793 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742057455448390000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x857 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x7FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x813 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x2710 PUSH2 0x82F DUP6 DUP5 PUSH2 0x1389 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x836 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x849 JUMPI PUSH2 0x849 DUP4 DUP3 PUSH2 0x129A JUMP JUMPDEST PUSH2 0x855 DUP6 DUP3 DUP5 SUB PUSH2 0x129A JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 NOT SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x8AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8C3 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 0x8D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x855 JUMPI PUSH2 0x855 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x444 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x908 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 0x93C JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x927 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xA28 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x95A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x96C SWAP2 SWAP1 PUSH2 0x2625 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97A SWAP3 SWAP2 SWAP1 PUSH2 0x2497 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x9B5 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 0x9BA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xA06 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x9D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x9ED SWAP2 SWAP1 PUSH2 0x216C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x42D SWAP2 SWAP1 PUSH2 0x2560 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xA13 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x942 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD PUSH2 0xA3F DUP2 PUSH2 0x10F0 JUMP JUMPDEST CALLER JUMPDEST PUSH1 0x0 PUSH2 0xA50 DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x13B3 JUMP JUMPDEST SWAP1 POP PUSH2 0xA9C DUP6 PUSH1 0x60 ADD MLOAD DUP3 PUSH2 0xA69 JUMPI DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0xA6B JUMP JUMPDEST ADDRESS JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xA85 DUP12 PUSH1 0x0 ADD MLOAD PUSH2 0x13BF JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH2 0x1148 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE DUP1 ISZERO PUSH2 0xABC JUMPI DUP5 MLOAD ADDRESS SWAP3 POP PUSH2 0xAB5 SWAP1 PUSH2 0x13CE JUMP JUMPDEST DUP6 MSTORE PUSH2 0xAC9 JUMP JUMPDEST DUP5 PUSH1 0x60 ADD MLOAD SWAP4 POP POP PUSH2 0xACF JUMP JUMPDEST POP PUSH2 0xA41 JUMP JUMPDEST DUP4 PUSH1 0x80 ADD MLOAD DUP4 LT ISZERO PUSH2 0xAF3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x42D SWAP1 PUSH2 0x25AA JUMP JUMPDEST PUSH2 0xAFB PUSH2 0x10E0 JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB65 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 0xB7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x855 JUMPI PUSH2 0x855 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x106E JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP5 SGT DUP1 PUSH2 0xBC4 JUMPI POP PUSH1 0x0 DUP4 SGT JUMPDEST PUSH2 0xBCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBDB DUP3 DUP5 ADD DUP5 PUSH2 0x22D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xBEF DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x13E5 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0xC21 PUSH32 0x0 DUP5 DUP5 DUP5 PUSH2 0x1416 JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP11 SGT PUSH2 0xC48 JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP10 PUSH2 0xC5F JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP11 JUMPDEST SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0xC7E JUMPI PUSH2 0xC79 DUP6 DUP8 PUSH1 0x20 ADD MLOAD CALLER DUP5 PUSH2 0x1435 JUMP JUMPDEST PUSH2 0x4D2 JUMP JUMPDEST DUP6 MLOAD PUSH2 0xC89 SWAP1 PUSH2 0x13B3 JUMP JUMPDEST ISZERO PUSH2 0xCAE JUMPI DUP6 MLOAD PUSH2 0xC99 SWAP1 PUSH2 0x13CE JUMP JUMPDEST DUP7 MSTORE PUSH2 0xCA8 DUP2 CALLER PUSH1 0x0 DUP10 PUSH2 0x15C5 JUMP JUMPDEST POP PUSH2 0x4D2 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP DUP4 SWAP5 POP PUSH2 0x4D2 DUP6 DUP8 PUSH1 0x20 ADD MLOAD CALLER DUP5 PUSH2 0x1435 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0xCD8 DUP2 PUSH2 0x10F0 JUMP JUMPDEST PUSH2 0xD74 PUSH1 0xA0 DUP5 ADD CALLDATALOAD PUSH2 0xCF0 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x1F3D JUMP JUMPDEST PUSH2 0xD01 PUSH2 0x100 DUP8 ADD PUSH1 0xE0 DUP9 ADD PUSH2 0x1F3D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xD1F SWAP2 SWAP1 PUSH2 0x1F3D JUMP JUMPDEST PUSH2 0xD2F PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x2365 JUMP JUMPDEST PUSH2 0xD3C PUSH1 0x20 DUP13 ADD DUP13 PUSH2 0x1F3D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD4E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2444 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH2 0x15C5 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0xC0 ADD CALLDATALOAD DUP3 GT ISZERO PUSH2 0xD9A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x42D SWAP1 PUSH2 0x2573 JUMP JUMPDEST POP PUSH1 0x0 NOT PUSH1 0x0 SSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xDF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE09 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 0xE1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0xE78 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0xE89 JUMPI PUSH2 0xE89 DUP5 DUP4 DUP4 PUSH2 0x1740 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0xEA0 JUMPI POP PUSH1 0x64 DUP3 GT ISZERO JUMPDEST PUSH2 0xEA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xEF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF0C 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 0xF22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP5 DUP2 LT ISZERO PUSH2 0xF7B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x855 JUMPI PUSH1 0x0 PUSH2 0x2710 PUSH2 0xF90 DUP4 DUP7 PUSH2 0x1389 JUMP JUMPDEST DUP2 PUSH2 0xF97 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0xFAB JUMPI PUSH2 0xFAB DUP8 DUP5 DUP4 PUSH2 0x1740 JUMP JUMPDEST PUSH2 0xFB8 DUP8 DUP7 DUP4 DUP6 SUB PUSH2 0x1740 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xFD1 DUP2 PUSH2 0x10F0 JUMP JUMPDEST PUSH2 0x1044 PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH2 0xFE9 PUSH1 0x40 DUP7 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1F3D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 DUP1 PUSH2 0x1001 DUP10 DUP1 PUSH2 0x2625 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 0x15C5 JUMP JUMPDEST POP PUSH1 0x0 SLOAD SWAP2 POP DUP3 PUSH1 0x80 ADD CALLDATALOAD DUP3 GT ISZERO PUSH2 0xD9A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x42D SWAP1 PUSH2 0x2573 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x4BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SELFBALANCE ISZERO PUSH2 0x357 JUMPI PUSH2 0x357 CALLER SELFBALANCE PUSH2 0x129A JUMP JUMPDEST DUP1 TIMESTAMP GT ISZERO PUSH2 0x1145 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x115C JUMPI ADDRESS SWAP4 POP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x116E DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x13E5 JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP1 DUP5 AND LT PUSH1 0x0 DUP1 PUSH2 0x1192 DUP7 DUP7 DUP7 PUSH2 0x189C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP12 DUP6 PUSH2 0x11AB DUP16 PUSH2 0x18DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND ISZERO PUSH2 0x11C0 JUMPI DUP14 PUSH2 0x11E6 JUMP JUMPDEST DUP8 PUSH2 0x11DF JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x11E6 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x11F7 SWAP2 SWAP1 PUSH2 0x25E1 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 0x1226 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x24BB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x123F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1253 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 0x1277 SWAP2 SWAP1 PUSH2 0x20CE JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 PUSH2 0x1286 JUMPI DUP2 PUSH2 0x1288 JUMP JUMPDEST DUP1 JUMPDEST PUSH1 0x0 SUB SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x12E6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x12C7 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 0x1348 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 0x134D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x65E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x535445 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x13A4 JUMPI POP POP DUP2 DUP2 MUL DUP2 DUP4 DUP3 DUP2 PUSH2 0x13A1 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x13AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x42 GT ISZERO JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x13AD DUP3 PUSH1 0x0 PUSH1 0x2B PUSH2 0x18F0 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x13AD SWAP1 DUP4 SWAP1 PUSH1 0x17 SWAP1 PUSH1 0x16 NOT ADD PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x13F3 DUP5 DUP3 PUSH2 0x1A4D JUMP JUMPDEST SWAP3 POP PUSH2 0x1400 DUP5 PUSH1 0x14 PUSH2 0x1B19 JUMP JUMPDEST SWAP1 POP PUSH2 0x140D DUP5 PUSH1 0x17 PUSH2 0x1A4D JUMP JUMPDEST SWAP2 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x142C DUP6 PUSH2 0x1427 DUP7 DUP7 DUP7 PUSH2 0x1BD5 JUMP JUMPDEST PUSH2 0x1C2B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x1476 JUMPI POP DUP1 SELFBALANCE LT ISZERO JUMPDEST ISZERO PUSH2 0x1598 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x14D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x157A 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 0x1590 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE89 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ ISZERO PUSH2 0x15B9 JUMPI PUSH2 0x15B4 DUP5 DUP4 DUP4 PUSH2 0x1740 JUMP JUMPDEST PUSH2 0xE89 JUMP JUMPDEST PUSH2 0xE89 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1C4E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x15D9 JUMPI ADDRESS SWAP4 POP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x15EB DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x13E5 JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP1 DUP4 AND LT PUSH1 0x0 DUP1 PUSH2 0x160F DUP6 DUP8 DUP7 PUSH2 0x189C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP12 DUP6 PUSH2 0x1628 DUP16 PUSH2 0x18DA JUMP JUMPDEST PUSH1 0x0 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND ISZERO PUSH2 0x1640 JUMPI DUP14 PUSH2 0x1666 JUMP JUMPDEST DUP8 PUSH2 0x165F JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x1666 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1677 SWAP2 SWAP1 PUSH2 0x25E1 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 0x16A6 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x24BB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16D3 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 0x16F7 SWAP2 SWAP1 PUSH2 0x20CE JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP4 PUSH2 0x170C JUMPI DUP2 DUP4 PUSH1 0x0 SUB PUSH2 0x1712 JUMP JUMPDEST DUP3 DUP3 PUSH1 0x0 SUB JUMPDEST SWAP1 SWAP9 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH2 0x1731 JUMPI DUP12 DUP2 EQ PUSH2 0x1731 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH4 0xA9059CBB PUSH1 0xE0 SHL 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 0x17D1 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x17B2 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 0x1833 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 0x1838 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1866 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1866 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1863 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x857 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x14D5 PUSH1 0xF2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x18D2 PUSH32 0x0 PUSH2 0x18CD DUP7 DUP7 DUP7 PUSH2 0x1BD5 JUMP JUMPDEST PUSH2 0x1DB3 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 LT PUSH2 0x18EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP3 PUSH1 0x1F ADD LT ISZERO PUSH2 0x193B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x736C6963655F6F766572666C6F77 PUSH1 0x90 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 DUP5 ADD LT ISZERO PUSH2 0x1983 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x736C6963655F6F766572666C6F77 PUSH1 0x90 SHL 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 0x19DB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x19FA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x0 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1A44 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 0x1A33 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x1A1B JUMP JUMPDEST POP POP DUP6 DUP5 MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT 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 0x1AA7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x1B00 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x1B73 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x1BCC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x1BDD PUSH2 0x1EAF JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x1BFB JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1C37 DUP4 DUP4 PUSH2 0x1DB3 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x13AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH4 0x23B872DD PUSH1 0xE0 SHL 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 0x1CE7 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1CC8 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 0x1D49 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 0x1D4E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1D7C JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1D7C JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x855 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x29AA23 PUSH1 0xE9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x1DDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x41A723F9E6457830B1B7A44DF4435FAB88581D073226894B33131815DD674C22 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 0x13BA DUP2 PUSH2 0x26E3 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1EEA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1EFD PUSH2 0x1EF8 DUP3 PUSH2 0x2695 JUMP JUMPDEST PUSH2 0x2671 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1F11 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 0x43E JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F4E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1F59 DUP2 PUSH2 0x26E3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1F74 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1F7F DUP2 PUSH2 0x26E3 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1F96 DUP2 PUSH2 0x26E3 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 0x1FB8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x1FC3 DUP2 PUSH2 0x26E3 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x1FDA DUP2 PUSH2 0x26E3 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x1FF1 DUP2 PUSH2 0x26E3 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 0x2017 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2022 DUP2 PUSH2 0x26E3 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 0x2045 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 0x2071 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2088 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x209B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x20A9 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x20BC 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 0x20E0 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 0x2106 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 0x212B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x213E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x214C JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x215D 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 0x217D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2193 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x21A3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x21B1 PUSH2 0x1EF8 DUP3 PUSH2 0x2695 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x21C5 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x142C DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x26B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21E7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x21FE JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0xA0 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x2211 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x2226 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x2237 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2243 DUP8 DUP3 DUP7 ADD PUSH2 0x1EDA JUMP JUMPDEST DUP3 MSTORE POP PUSH2 0x2252 PUSH1 0x20 DUP5 ADD PUSH2 0x1ECF 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 0x2293 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1F59 DUP4 DUP4 PUSH2 0x1F2B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22AE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x22C4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0xA0 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x1F59 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22E6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x22FD JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x40 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x2310 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x2325 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x2336 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2342 DUP8 DUP3 DUP7 ADD PUSH2 0x1EDA JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP3 POP PUSH2 0x2355 DUP4 PUSH2 0x26E3 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 0x2376 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1F59 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2399 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x23B2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x23C4 DUP2 PUSH2 0x26E3 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 0x23E4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x23F6 DUP2 PUSH2 0x26E3 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x240D DUP2 PUSH2 0x26E3 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2430 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x26B7 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SWAP4 DUP5 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x24F5 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x2418 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 0x2553 JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x2541 DUP6 DUP4 MLOAD PUSH2 0x2418 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2525 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1F59 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2418 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 0x25FD PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0x2418 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x263B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2655 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x266A 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 0x268D JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x26A9 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x26D2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26BA JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xE89 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1145 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC4 0x4A 0xE7 0x5E 0xAB PUSH6 0x3D768FBFA773 0x2C SMOD 0xBE 0x2D 0x4E PUSH27 0x8510188A09AF0D6C6D15158E46B064736F6C634300070600330000 ","sourceMap":"119:352:107:-:0;;;-1:-1:-1;;1328:57:60;;189:102:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;536:18:64;;;;;;;;565:14;;;;;119:352:107;;14:179:178;95:13;;-1:-1:-1;;;;;137:31:178;;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;:::-;119:352:107;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:15619:178","statements":[{"nodeType":"YulBlock","src":"6:3:178","statements":[]},{"body":{"nodeType":"YulBlock","src":"65:87:178","statements":[{"nodeType":"YulAssignment","src":"75:29:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"97:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"84:12:178"},"nodeType":"YulFunctionCall","src":"84:20:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"75:5:178"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"140:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"113:26:178"},"nodeType":"YulFunctionCall","src":"113:33:178"},"nodeType":"YulExpressionStatement","src":"113:33:178"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"44:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"55:5:178","type":""}],"src":"14:138:178"},{"body":{"nodeType":"YulBlock","src":"211:431:178","statements":[{"body":{"nodeType":"YulBlock","src":"260:24:178","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"269:5:178"},{"name":"array","nodeType":"YulIdentifier","src":"276:5:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"262:6:178"},"nodeType":"YulFunctionCall","src":"262:20:178"},"nodeType":"YulExpressionStatement","src":"262:20:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"239:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"247:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:178"},"nodeType":"YulFunctionCall","src":"235:17:178"},{"name":"end","nodeType":"YulIdentifier","src":"254:3:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"231:3:178"},"nodeType":"YulFunctionCall","src":"231:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"224:6:178"},"nodeType":"YulFunctionCall","src":"224:35:178"},"nodeType":"YulIf","src":"221:2:178"},{"nodeType":"YulVariableDeclaration","src":"293:30:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"316:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"303:12:178"},"nodeType":"YulFunctionCall","src":"303:20:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"297:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"332:64:178","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"392:2:178"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"362:29:178"},"nodeType":"YulFunctionCall","src":"362:33:178"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"347:14:178"},"nodeType":"YulFunctionCall","src":"347:49:178"},"variables":[{"name":"array_1","nodeType":"YulTypedName","src":"336:7:178","type":""}]},{"expression":{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"412:7:178"},{"name":"_1","nodeType":"YulIdentifier","src":"421:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"405:6:178"},"nodeType":"YulFunctionCall","src":"405:19:178"},"nodeType":"YulExpressionStatement","src":"405:19:178"},{"body":{"nodeType":"YulBlock","src":"472:24:178","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"481:5:178"},{"name":"array","nodeType":"YulIdentifier","src":"488:5:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"474:6:178"},"nodeType":"YulFunctionCall","src":"474:20:178"},"nodeType":"YulExpressionStatement","src":"474:20:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"447:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"455:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"443:3:178"},"nodeType":"YulFunctionCall","src":"443:15:178"},{"kind":"number","nodeType":"YulLiteral","src":"460:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"439:3:178"},"nodeType":"YulFunctionCall","src":"439:26:178"},{"name":"end","nodeType":"YulIdentifier","src":"467:3:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"436:2:178"},"nodeType":"YulFunctionCall","src":"436:35:178"},"nodeType":"YulIf","src":"433:2:178"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"522:7:178"},{"kind":"number","nodeType":"YulLiteral","src":"531:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"518:3:178"},"nodeType":"YulFunctionCall","src":"518:18:178"},{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"542:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"550:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"538:3:178"},"nodeType":"YulFunctionCall","src":"538:17:178"},{"name":"_1","nodeType":"YulIdentifier","src":"557:2:178"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"505:12:178"},"nodeType":"YulFunctionCall","src":"505:55:178"},"nodeType":"YulExpressionStatement","src":"505:55:178"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"584:7:178"},{"name":"_1","nodeType":"YulIdentifier","src":"593:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"580:3:178"},"nodeType":"YulFunctionCall","src":"580:16:178"},{"kind":"number","nodeType":"YulLiteral","src":"598:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"576:3:178"},"nodeType":"YulFunctionCall","src":"576:27:178"},{"name":"array","nodeType":"YulIdentifier","src":"605:5:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"569:6:178"},"nodeType":"YulFunctionCall","src":"569:42:178"},"nodeType":"YulExpressionStatement","src":"569:42:178"},{"nodeType":"YulAssignment","src":"620:16:178","value":{"name":"array_1","nodeType":"YulIdentifier","src":"629:7:178"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"620:5:178"}]}]},"name":"abi_decode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"185:6:178","type":""},{"name":"end","nodeType":"YulTypedName","src":"193:3:178","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"201:5:178","type":""}],"src":"157:485:178"},{"body":{"nodeType":"YulBlock","src":"735:94:178","statements":[{"body":{"nodeType":"YulBlock","src":"775:24:178","statements":[{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"784:5:178"},{"name":"value","nodeType":"YulIdentifier","src":"791:5:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"777:6:178"},"nodeType":"YulFunctionCall","src":"777:20:178"},"nodeType":"YulExpressionStatement","src":"777:20:178"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"756:3:178"},{"name":"offset","nodeType":"YulIdentifier","src":"761:6:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"752:3:178"},"nodeType":"YulFunctionCall","src":"752:16:178"},{"kind":"number","nodeType":"YulLiteral","src":"770:3:178","type":"","value":"256"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"748:3:178"},"nodeType":"YulFunctionCall","src":"748:26:178"},"nodeType":"YulIf","src":"745:2:178"},{"nodeType":"YulAssignment","src":"808:15:178","value":{"name":"offset","nodeType":"YulIdentifier","src":"817:6:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"808:5:178"}]}]},"name":"abi_decode_t_struct$_ExactInputSingleParams_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"709:6:178","type":""},{"name":"end","nodeType":"YulTypedName","src":"717:3:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"725:5:178","type":""}],"src":"647:182:178"},{"body":{"nodeType":"YulBlock","src":"904:189:178","statements":[{"body":{"nodeType":"YulBlock","src":"950:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"959:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"967:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"952:6:178"},"nodeType":"YulFunctionCall","src":"952:22:178"},"nodeType":"YulExpressionStatement","src":"952:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"925:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"934:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"921:3:178"},"nodeType":"YulFunctionCall","src":"921:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"946:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"917:3:178"},"nodeType":"YulFunctionCall","src":"917:32:178"},"nodeType":"YulIf","src":"914:2:178"},{"nodeType":"YulVariableDeclaration","src":"985:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1011:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"998:12:178"},"nodeType":"YulFunctionCall","src":"998:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"989:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1057:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1030:26:178"},"nodeType":"YulFunctionCall","src":"1030:33:178"},"nodeType":"YulExpressionStatement","src":"1030:33:178"},{"nodeType":"YulAssignment","src":"1072:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"1082:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1072:6:178"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"870:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"881:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"893:6:178","type":""}],"src":"834:259:178"},{"body":{"nodeType":"YulBlock","src":"1202:366:178","statements":[{"body":{"nodeType":"YulBlock","src":"1248:26:178","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1257:6:178"},{"name":"value1","nodeType":"YulIdentifier","src":"1265:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1250:6:178"},"nodeType":"YulFunctionCall","src":"1250:22:178"},"nodeType":"YulExpressionStatement","src":"1250:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1223:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"1232:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1219:3:178"},"nodeType":"YulFunctionCall","src":"1219:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"1244:2:178","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1215:3:178"},"nodeType":"YulFunctionCall","src":"1215:32:178"},"nodeType":"YulIf","src":"1212:2:178"},{"nodeType":"YulVariableDeclaration","src":"1283:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1309:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1296:12:178"},"nodeType":"YulFunctionCall","src":"1296:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1287:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1328:26:178"},"nodeType":"YulFunctionCall","src":"1328:33:178"},"nodeType":"YulExpressionStatement","src":"1328:33:178"},{"nodeType":"YulAssignment","src":"1370:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"1380:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1370:6:178"}]},{"nodeType":"YulAssignment","src":"1394:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1421:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1432:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1417:3:178"},"nodeType":"YulFunctionCall","src":"1417:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1404:12:178"},"nodeType":"YulFunctionCall","src":"1404:32:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1394:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"1445:47:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1477:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1488:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1473:3:178"},"nodeType":"YulFunctionCall","src":"1473:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1460:12:178"},"nodeType":"YulFunctionCall","src":"1460:32:178"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1449:7:178","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1528:7:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1501:26:178"},"nodeType":"YulFunctionCall","src":"1501:35:178"},"nodeType":"YulExpressionStatement","src":"1501:35:178"},{"nodeType":"YulAssignment","src":"1545:17:178","value":{"name":"value_1","nodeType":"YulIdentifier","src":"1555:7:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1545:6:178"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1152:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1163:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1175:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1183:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1191:6:178","type":""}],"src":"1098:470:178"},{"body":{"nodeType":"YulBlock","src":"1711:545:178","statements":[{"body":{"nodeType":"YulBlock","src":"1758:26:178","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1767:6:178"},{"name":"value4","nodeType":"YulIdentifier","src":"1775:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1760:6:178"},"nodeType":"YulFunctionCall","src":"1760:22:178"},"nodeType":"YulExpressionStatement","src":"1760:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1732:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"1741:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1728:3:178"},"nodeType":"YulFunctionCall","src":"1728:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"1753:3:178","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1724:3:178"},"nodeType":"YulFunctionCall","src":"1724:33:178"},"nodeType":"YulIf","src":"1721:2:178"},{"nodeType":"YulVariableDeclaration","src":"1793:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1819:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1806:12:178"},"nodeType":"YulFunctionCall","src":"1806:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1797:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1865:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1838:26:178"},"nodeType":"YulFunctionCall","src":"1838:33:178"},"nodeType":"YulExpressionStatement","src":"1838:33:178"},{"nodeType":"YulAssignment","src":"1880:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"1890:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1880:6:178"}]},{"nodeType":"YulAssignment","src":"1904:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1931:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1942:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1927:3:178"},"nodeType":"YulFunctionCall","src":"1927:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1914:12:178"},"nodeType":"YulFunctionCall","src":"1914:32:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1904:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"1955:47:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1987:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1998:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1983:3:178"},"nodeType":"YulFunctionCall","src":"1983:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1970:12:178"},"nodeType":"YulFunctionCall","src":"1970:32:178"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1959:7:178","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2038:7:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2011:26:178"},"nodeType":"YulFunctionCall","src":"2011:35:178"},"nodeType":"YulExpressionStatement","src":"2011:35:178"},{"nodeType":"YulAssignment","src":"2055:17:178","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2065:7:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2055:6:178"}]},{"nodeType":"YulAssignment","src":"2081:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2108:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2119:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2104:3:178"},"nodeType":"YulFunctionCall","src":"2104:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2091:12:178"},"nodeType":"YulFunctionCall","src":"2091:32:178"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"2081:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"2132:48:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2164:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2175:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2160:3:178"},"nodeType":"YulFunctionCall","src":"2160:19:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2147:12:178"},"nodeType":"YulFunctionCall","src":"2147:33:178"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"2136:7:178","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"2216:7:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2189:26:178"},"nodeType":"YulFunctionCall","src":"2189:35:178"},"nodeType":"YulExpressionStatement","src":"2189:35:178"},{"nodeType":"YulAssignment","src":"2233:17:178","value":{"name":"value_2","nodeType":"YulIdentifier","src":"2243:7:178"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"2233:6:178"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_addresst_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1645:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1656:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1668:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1676:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1684:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1692:6:178","type":""},{"name":"value4","nodeType":"YulTypedName","src":"1700:6:178","type":""}],"src":"1573:683:178"},{"body":{"nodeType":"YulBlock","src":"2414:556:178","statements":[{"body":{"nodeType":"YulBlock","src":"2461:26:178","statements":[{"expression":{"arguments":[{"name":"value5","nodeType":"YulIdentifier","src":"2470:6:178"},{"name":"value5","nodeType":"YulIdentifier","src":"2478:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2463:6:178"},"nodeType":"YulFunctionCall","src":"2463:22:178"},"nodeType":"YulExpressionStatement","src":"2463:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2435:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"2444:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2431:3:178"},"nodeType":"YulFunctionCall","src":"2431:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"2456:3:178","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2427:3:178"},"nodeType":"YulFunctionCall","src":"2427:33:178"},"nodeType":"YulIf","src":"2424:2:178"},{"nodeType":"YulVariableDeclaration","src":"2496:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2522:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2509:12:178"},"nodeType":"YulFunctionCall","src":"2509:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2500:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2568:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2541:26:178"},"nodeType":"YulFunctionCall","src":"2541:33:178"},"nodeType":"YulExpressionStatement","src":"2541:33:178"},{"nodeType":"YulAssignment","src":"2583:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"2593:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2583:6:178"}]},{"nodeType":"YulAssignment","src":"2607:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2634:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2645:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2630:3:178"},"nodeType":"YulFunctionCall","src":"2630:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2617:12:178"},"nodeType":"YulFunctionCall","src":"2617:32:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2607:6:178"}]},{"nodeType":"YulAssignment","src":"2658:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2685:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2696:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2681:3:178"},"nodeType":"YulFunctionCall","src":"2681:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2668:12:178"},"nodeType":"YulFunctionCall","src":"2668:32:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2658:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"2709:47:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2741:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2752:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2737:3:178"},"nodeType":"YulFunctionCall","src":"2737:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2724:12:178"},"nodeType":"YulFunctionCall","src":"2724:32:178"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"2713:7:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2808:26:178","statements":[{"expression":{"arguments":[{"name":"value5","nodeType":"YulIdentifier","src":"2817:6:178"},{"name":"value5","nodeType":"YulIdentifier","src":"2825:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2810:6:178"},"nodeType":"YulFunctionCall","src":"2810:22:178"},"nodeType":"YulExpressionStatement","src":"2810:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2778:7:178"},{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2791:7:178"},{"kind":"number","nodeType":"YulLiteral","src":"2800:4:178","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2787:3:178"},"nodeType":"YulFunctionCall","src":"2787:18:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2775:2:178"},"nodeType":"YulFunctionCall","src":"2775:31:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2768:6:178"},"nodeType":"YulFunctionCall","src":"2768:39:178"},"nodeType":"YulIf","src":"2765:2:178"},{"nodeType":"YulAssignment","src":"2843:17:178","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2853:7:178"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"2843:6:178"}]},{"nodeType":"YulAssignment","src":"2869:43:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2896:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2907:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2892:3:178"},"nodeType":"YulFunctionCall","src":"2892:19:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2879:12:178"},"nodeType":"YulFunctionCall","src":"2879:33:178"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"2869:6:178"}]},{"nodeType":"YulAssignment","src":"2921:43:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2948:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2959:3:178","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2944:3:178"},"nodeType":"YulFunctionCall","src":"2944:19:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2931:12:178"},"nodeType":"YulFunctionCall","src":"2931:33:178"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"2921:6:178"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2340:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2351:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2363:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2371:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2379:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2387:6:178","type":""},{"name":"value4","nodeType":"YulTypedName","src":"2395:6:178","type":""},{"name":"value5","nodeType":"YulTypedName","src":"2403:6:178","type":""}],"src":"2261:709:178"},{"body":{"nodeType":"YulBlock","src":"3091:561:178","statements":[{"body":{"nodeType":"YulBlock","src":"3137:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3146:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3154:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3139:6:178"},"nodeType":"YulFunctionCall","src":"3139:22:178"},"nodeType":"YulExpressionStatement","src":"3139:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3112:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"3121:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3108:3:178"},"nodeType":"YulFunctionCall","src":"3108:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"3133:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3104:3:178"},"nodeType":"YulFunctionCall","src":"3104:32:178"},"nodeType":"YulIf","src":"3101:2:178"},{"nodeType":"YulVariableDeclaration","src":"3172:37:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3199:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3186:12:178"},"nodeType":"YulFunctionCall","src":"3186:23:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3176:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3218:28:178","value":{"kind":"number","nodeType":"YulLiteral","src":"3228:18:178","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3222:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3273:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3282:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3290:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3275:6:178"},"nodeType":"YulFunctionCall","src":"3275:22:178"},"nodeType":"YulExpressionStatement","src":"3275:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3261:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3269:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3258:2:178"},"nodeType":"YulFunctionCall","src":"3258:14:178"},"nodeType":"YulIf","src":"3255:2:178"},{"nodeType":"YulVariableDeclaration","src":"3308:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3322:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"3333:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3318:3:178"},"nodeType":"YulFunctionCall","src":"3318:22:178"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3312:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3388:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3397:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3405:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3390:6:178"},"nodeType":"YulFunctionCall","src":"3390:22:178"},"nodeType":"YulExpressionStatement","src":"3390:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3367:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"3371:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3363:3:178"},"nodeType":"YulFunctionCall","src":"3363:13:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3378:7:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3359:3:178"},"nodeType":"YulFunctionCall","src":"3359:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3352:6:178"},"nodeType":"YulFunctionCall","src":"3352:35:178"},"nodeType":"YulIf","src":"3349:2:178"},{"nodeType":"YulVariableDeclaration","src":"3423:30:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3450:2:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3437:12:178"},"nodeType":"YulFunctionCall","src":"3437:16:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3427:6:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3480:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3489:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3497:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3482:6:178"},"nodeType":"YulFunctionCall","src":"3482:22:178"},"nodeType":"YulExpressionStatement","src":"3482:22:178"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3468:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3476:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3465:2:178"},"nodeType":"YulFunctionCall","src":"3465:14:178"},"nodeType":"YulIf","src":"3462:2:178"},{"body":{"nodeType":"YulBlock","src":"3565:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3574:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3582:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3567:6:178"},"nodeType":"YulFunctionCall","src":"3567:22:178"},"nodeType":"YulExpressionStatement","src":"3567:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3529:2:178"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3537:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"3545:2:178","type":"","value":"32"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3533:3:178"},"nodeType":"YulFunctionCall","src":"3533:15:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3525:3:178"},"nodeType":"YulFunctionCall","src":"3525:24:178"},{"kind":"number","nodeType":"YulLiteral","src":"3551:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3521:3:178"},"nodeType":"YulFunctionCall","src":"3521:33:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3556:7:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3518:2:178"},"nodeType":"YulFunctionCall","src":"3518:46:178"},"nodeType":"YulIf","src":"3515:2:178"},{"nodeType":"YulAssignment","src":"3600:21:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3614:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"3618:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3610:3:178"},"nodeType":"YulFunctionCall","src":"3610:11:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3600:6:178"}]},{"nodeType":"YulAssignment","src":"3630:16:178","value":{"name":"length","nodeType":"YulIdentifier","src":"3640:6:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3630:6:178"}]}]},"name":"abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3049:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3060:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3072:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3080:6:178","type":""}],"src":"2975:677:178"},{"body":{"nodeType":"YulBlock","src":"3753:157:178","statements":[{"body":{"nodeType":"YulBlock","src":"3799:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3808:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3816:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3801:6:178"},"nodeType":"YulFunctionCall","src":"3801:22:178"},"nodeType":"YulExpressionStatement","src":"3801:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3774:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"3783:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3770:3:178"},"nodeType":"YulFunctionCall","src":"3770:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"3795:2:178","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3766:3:178"},"nodeType":"YulFunctionCall","src":"3766:32:178"},"nodeType":"YulIf","src":"3763:2:178"},{"nodeType":"YulAssignment","src":"3834:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3850:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3844:5:178"},"nodeType":"YulFunctionCall","src":"3844:16:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3834:6:178"}]},{"nodeType":"YulAssignment","src":"3869:35:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3889:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3900:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3885:3:178"},"nodeType":"YulFunctionCall","src":"3885:18:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3879:5:178"},"nodeType":"YulFunctionCall","src":"3879:25:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3869:6:178"}]}]},"name":"abi_decode_tuple_t_int256t_int256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3711:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3722:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3734:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3742:6:178","type":""}],"src":"3657:253:178"},{"body":{"nodeType":"YulBlock","src":"4036:654:178","statements":[{"body":{"nodeType":"YulBlock","src":"4082:26:178","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4091:6:178"},{"name":"value2","nodeType":"YulIdentifier","src":"4099:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4084:6:178"},"nodeType":"YulFunctionCall","src":"4084:22:178"},"nodeType":"YulExpressionStatement","src":"4084:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4057:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"4066:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4053:3:178"},"nodeType":"YulFunctionCall","src":"4053:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"4078:2:178","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4049:3:178"},"nodeType":"YulFunctionCall","src":"4049:32:178"},"nodeType":"YulIf","src":"4046:2:178"},{"nodeType":"YulAssignment","src":"4117:33:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4140:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4127:12:178"},"nodeType":"YulFunctionCall","src":"4127:23:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4117:6:178"}]},{"nodeType":"YulAssignment","src":"4159:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4186:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4197:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4182:3:178"},"nodeType":"YulFunctionCall","src":"4182:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4169:12:178"},"nodeType":"YulFunctionCall","src":"4169:32:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4159:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"4210:46:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4241:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4252:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4237:3:178"},"nodeType":"YulFunctionCall","src":"4237:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4224:12:178"},"nodeType":"YulFunctionCall","src":"4224:32:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4214:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4265:28:178","value":{"kind":"number","nodeType":"YulLiteral","src":"4275:18:178","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4269:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"4320:26:178","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4329:6:178"},{"name":"value2","nodeType":"YulIdentifier","src":"4337:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4322:6:178"},"nodeType":"YulFunctionCall","src":"4322:22:178"},"nodeType":"YulExpressionStatement","src":"4322:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4308:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"4316:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4305:2:178"},"nodeType":"YulFunctionCall","src":"4305:14:178"},"nodeType":"YulIf","src":"4302:2:178"},{"nodeType":"YulVariableDeclaration","src":"4355:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4369:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"4380:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4365:3:178"},"nodeType":"YulFunctionCall","src":"4365:22:178"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"4359:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"4435:26:178","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4444:6:178"},{"name":"value2","nodeType":"YulIdentifier","src":"4452:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4437:6:178"},"nodeType":"YulFunctionCall","src":"4437:22:178"},"nodeType":"YulExpressionStatement","src":"4437:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4414:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"4418:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4410:3:178"},"nodeType":"YulFunctionCall","src":"4410:13:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4425:7:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4406:3:178"},"nodeType":"YulFunctionCall","src":"4406:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4399:6:178"},"nodeType":"YulFunctionCall","src":"4399:35:178"},"nodeType":"YulIf","src":"4396:2:178"},{"nodeType":"YulVariableDeclaration","src":"4470:30:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4497:2:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4484:12:178"},"nodeType":"YulFunctionCall","src":"4484:16:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4474:6:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"4527:26:178","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4536:6:178"},{"name":"value2","nodeType":"YulIdentifier","src":"4544:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4529:6:178"},"nodeType":"YulFunctionCall","src":"4529:22:178"},"nodeType":"YulExpressionStatement","src":"4529:22:178"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4515:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"4523:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4512:2:178"},"nodeType":"YulFunctionCall","src":"4512:14:178"},"nodeType":"YulIf","src":"4509:2:178"},{"body":{"nodeType":"YulBlock","src":"4603:26:178","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4612:6:178"},{"name":"value2","nodeType":"YulIdentifier","src":"4620:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4605:6:178"},"nodeType":"YulFunctionCall","src":"4605:22:178"},"nodeType":"YulExpressionStatement","src":"4605:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4576:2:178"},{"name":"length","nodeType":"YulIdentifier","src":"4580:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4572:3:178"},"nodeType":"YulFunctionCall","src":"4572:15:178"},{"kind":"number","nodeType":"YulLiteral","src":"4589:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4568:3:178"},"nodeType":"YulFunctionCall","src":"4568:24:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4594:7:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4565:2:178"},"nodeType":"YulFunctionCall","src":"4565:37:178"},"nodeType":"YulIf","src":"4562:2:178"},{"nodeType":"YulAssignment","src":"4638:21:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4652:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"4656:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4648:3:178"},"nodeType":"YulFunctionCall","src":"4648:11:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4638:6:178"}]},{"nodeType":"YulAssignment","src":"4668:16:178","value":{"name":"length","nodeType":"YulIdentifier","src":"4678:6:178"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4668:6:178"}]}]},"name":"abi_decode_tuple_t_int256t_int256t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3978:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3989:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4001:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4009:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4017:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4025:6:178","type":""}],"src":"3915:775:178"},{"body":{"nodeType":"YulBlock","src":"4786:585:178","statements":[{"body":{"nodeType":"YulBlock","src":"4832:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4841:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"4849:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4834:6:178"},"nodeType":"YulFunctionCall","src":"4834:22:178"},"nodeType":"YulExpressionStatement","src":"4834:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4807:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"4816:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4803:3:178"},"nodeType":"YulFunctionCall","src":"4803:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"4828:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4799:3:178"},"nodeType":"YulFunctionCall","src":"4799:32:178"},"nodeType":"YulIf","src":"4796:2:178"},{"nodeType":"YulVariableDeclaration","src":"4867:30:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4887:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4881:5:178"},"nodeType":"YulFunctionCall","src":"4881:16:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4871:6:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"4940:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4949:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"4957:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4942:6:178"},"nodeType":"YulFunctionCall","src":"4942:22:178"},"nodeType":"YulExpressionStatement","src":"4942:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4912:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"4920:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4909:2:178"},"nodeType":"YulFunctionCall","src":"4909:30:178"},"nodeType":"YulIf","src":"4906:2:178"},{"nodeType":"YulVariableDeclaration","src":"4975:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4989:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"5000:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4985:3:178"},"nodeType":"YulFunctionCall","src":"4985:22:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4979:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"5055:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5064:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"5072:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5057:6:178"},"nodeType":"YulFunctionCall","src":"5057:22:178"},"nodeType":"YulExpressionStatement","src":"5057:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"5034:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"5038:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5030:3:178"},"nodeType":"YulFunctionCall","src":"5030:13:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5045:7:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5026:3:178"},"nodeType":"YulFunctionCall","src":"5026:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5019:6:178"},"nodeType":"YulFunctionCall","src":"5019:35:178"},"nodeType":"YulIf","src":"5016:2:178"},{"nodeType":"YulVariableDeclaration","src":"5090:19:178","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"5106:2:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5100:5:178"},"nodeType":"YulFunctionCall","src":"5100:9:178"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"5094:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5118:62:178","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5176:2:178"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"5146:29:178"},"nodeType":"YulFunctionCall","src":"5146:33:178"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"5131:14:178"},"nodeType":"YulFunctionCall","src":"5131:49:178"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"5122:5:178","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"5196:5:178"},{"name":"_2","nodeType":"YulIdentifier","src":"5203:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5189:6:178"},"nodeType":"YulFunctionCall","src":"5189:17:178"},"nodeType":"YulExpressionStatement","src":"5189:17:178"},{"body":{"nodeType":"YulBlock","src":"5252:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5261:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"5269:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5254:6:178"},"nodeType":"YulFunctionCall","src":"5254:22:178"},"nodeType":"YulExpressionStatement","src":"5254:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"5229:2:178"},{"name":"_2","nodeType":"YulIdentifier","src":"5233:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5225:3:178"},"nodeType":"YulFunctionCall","src":"5225:11:178"},{"kind":"number","nodeType":"YulLiteral","src":"5238:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5221:3:178"},"nodeType":"YulFunctionCall","src":"5221:20:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5243:7:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5218:2:178"},"nodeType":"YulFunctionCall","src":"5218:33:178"},"nodeType":"YulIf","src":"5215:2:178"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"5313:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"5317:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5309:3:178"},"nodeType":"YulFunctionCall","src":"5309:11:178"},{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"5326:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"5333:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5322:3:178"},"nodeType":"YulFunctionCall","src":"5322:14:178"},{"name":"_2","nodeType":"YulIdentifier","src":"5338:2:178"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"5287:21:178"},"nodeType":"YulFunctionCall","src":"5287:54:178"},"nodeType":"YulExpressionStatement","src":"5287:54:178"},{"nodeType":"YulAssignment","src":"5350:15:178","value":{"name":"array","nodeType":"YulIdentifier","src":"5360:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5350:6:178"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4752:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4763:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4775:6:178","type":""}],"src":"4695:676:178"},{"body":{"nodeType":"YulBlock","src":"5481:938:178","statements":[{"body":{"nodeType":"YulBlock","src":"5527:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5536:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"5544:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5529:6:178"},"nodeType":"YulFunctionCall","src":"5529:22:178"},"nodeType":"YulExpressionStatement","src":"5529:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5502:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"5511:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5498:3:178"},"nodeType":"YulFunctionCall","src":"5498:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"5523:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5494:3:178"},"nodeType":"YulFunctionCall","src":"5494:32:178"},"nodeType":"YulIf","src":"5491:2:178"},{"nodeType":"YulVariableDeclaration","src":"5562:37:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5589:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5576:12:178"},"nodeType":"YulFunctionCall","src":"5576:23:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5566:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5608:28:178","value":{"kind":"number","nodeType":"YulLiteral","src":"5618:18:178","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5612:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"5663:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5672:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"5680:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5665:6:178"},"nodeType":"YulFunctionCall","src":"5665:22:178"},"nodeType":"YulExpressionStatement","src":"5665:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5651:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"5659:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5648:2:178"},"nodeType":"YulFunctionCall","src":"5648:14:178"},"nodeType":"YulIf","src":"5645:2:178"},{"nodeType":"YulVariableDeclaration","src":"5698:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5712:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"5723:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5708:3:178"},"nodeType":"YulFunctionCall","src":"5708:22:178"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"5702:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"5770:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5779:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"5787:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5772:6:178"},"nodeType":"YulFunctionCall","src":"5772:22:178"},"nodeType":"YulExpressionStatement","src":"5772:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5750:7:178"},{"name":"_2","nodeType":"YulIdentifier","src":"5759:2:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5746:3:178"},"nodeType":"YulFunctionCall","src":"5746:16:178"},{"kind":"number","nodeType":"YulLiteral","src":"5764:4:178","type":"","value":"0xa0"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5742:3:178"},"nodeType":"YulFunctionCall","src":"5742:27:178"},"nodeType":"YulIf","src":"5739:2:178"},{"nodeType":"YulVariableDeclaration","src":"5805:23:178","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5825:2:178","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5819:5:178"},"nodeType":"YulFunctionCall","src":"5819:9:178"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5809:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5837:35:178","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5859:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"5867:4:178","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5855:3:178"},"nodeType":"YulFunctionCall","src":"5855:17:178"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"5841:10:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"5931:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"5933:7:178"},"nodeType":"YulFunctionCall","src":"5933:9:178"},"nodeType":"YulExpressionStatement","src":"5933:9:178"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5890:10:178"},{"name":"_1","nodeType":"YulIdentifier","src":"5902:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5887:2:178"},"nodeType":"YulFunctionCall","src":"5887:18:178"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5910:10:178"},{"name":"memPtr","nodeType":"YulIdentifier","src":"5922:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5907:2:178"},"nodeType":"YulFunctionCall","src":"5907:22:178"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5884:2:178"},"nodeType":"YulFunctionCall","src":"5884:46:178"},"nodeType":"YulIf","src":"5881:2:178"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5960:2:178","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5964:10:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5953:6:178"},"nodeType":"YulFunctionCall","src":"5953:22:178"},"nodeType":"YulExpressionStatement","src":"5953:22:178"},{"nodeType":"YulVariableDeclaration","src":"5984:32:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6013:2:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6000:12:178"},"nodeType":"YulFunctionCall","src":"6000:16:178"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"5988:8:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"6045:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6054:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"6062:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6047:6:178"},"nodeType":"YulFunctionCall","src":"6047:22:178"},"nodeType":"YulExpressionStatement","src":"6047:22:178"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"6031:8:178"},{"name":"_1","nodeType":"YulIdentifier","src":"6041:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6028:2:178"},"nodeType":"YulFunctionCall","src":"6028:16:178"},"nodeType":"YulIf","src":"6025:2:178"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6087:6:178"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6118:2:178"},{"name":"offset_1","nodeType":"YulIdentifier","src":"6122:8:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6114:3:178"},"nodeType":"YulFunctionCall","src":"6114:17:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6133:7:178"}],"functionName":{"name":"abi_decode_t_bytes","nodeType":"YulIdentifier","src":"6095:18:178"},"nodeType":"YulFunctionCall","src":"6095:46:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6080:6:178"},"nodeType":"YulFunctionCall","src":"6080:62:178"},"nodeType":"YulExpressionStatement","src":"6080:62:178"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6162:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6170:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6158:3:178"},"nodeType":"YulFunctionCall","src":"6158:15:178"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6200:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"6204:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6196:3:178"},"nodeType":"YulFunctionCall","src":"6196:11:178"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6175:20:178"},"nodeType":"YulFunctionCall","src":"6175:33:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6151:6:178"},"nodeType":"YulFunctionCall","src":"6151:58:178"},"nodeType":"YulExpressionStatement","src":"6151:58:178"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6229:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6237:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6225:3:178"},"nodeType":"YulFunctionCall","src":"6225:15:178"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6259:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"6263:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6255:3:178"},"nodeType":"YulFunctionCall","src":"6255:11:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6242:12:178"},"nodeType":"YulFunctionCall","src":"6242:25:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6218:6:178"},"nodeType":"YulFunctionCall","src":"6218:50:178"},"nodeType":"YulExpressionStatement","src":"6218:50:178"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6288:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6296:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6284:3:178"},"nodeType":"YulFunctionCall","src":"6284:15:178"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6318:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"6322:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6314:3:178"},"nodeType":"YulFunctionCall","src":"6314:11:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6301:12:178"},"nodeType":"YulFunctionCall","src":"6301:25:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6277:6:178"},"nodeType":"YulFunctionCall","src":"6277:50:178"},"nodeType":"YulExpressionStatement","src":"6277:50:178"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6347:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6355:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6343:3:178"},"nodeType":"YulFunctionCall","src":"6343:16:178"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6378:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"6382:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6374:3:178"},"nodeType":"YulFunctionCall","src":"6374:12:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6361:12:178"},"nodeType":"YulFunctionCall","src":"6361:26:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6336:6:178"},"nodeType":"YulFunctionCall","src":"6336:52:178"},"nodeType":"YulExpressionStatement","src":"6336:52:178"},{"nodeType":"YulAssignment","src":"6397:16:178","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"6407:6:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6397:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_ExactInputParams_$16314_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5447:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5458:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5470:6:178","type":""}],"src":"5376:1043:178"},{"body":{"nodeType":"YulBlock","src":"6537:170:178","statements":[{"body":{"nodeType":"YulBlock","src":"6584:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6593:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"6601:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6586:6:178"},"nodeType":"YulFunctionCall","src":"6586:22:178"},"nodeType":"YulExpressionStatement","src":"6586:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6558:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"6567:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6554:3:178"},"nodeType":"YulFunctionCall","src":"6554:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"6579:3:178","type":"","value":"256"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6550:3:178"},"nodeType":"YulFunctionCall","src":"6550:33:178"},"nodeType":"YulIf","src":"6547:2:178"},{"nodeType":"YulAssignment","src":"6619:82:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6682:9:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6693:7:178"}],"functionName":{"name":"abi_decode_t_struct$_ExactInputSingleParams_calldata","nodeType":"YulIdentifier","src":"6629:52:178"},"nodeType":"YulFunctionCall","src":"6629:72:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6619:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_ExactInputSingleParams_$16295_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6503:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6514:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6526:6:178","type":""}],"src":"6424:283:178"},{"body":{"nodeType":"YulBlock","src":"6820:320:178","statements":[{"body":{"nodeType":"YulBlock","src":"6866:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6875:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"6883:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6868:6:178"},"nodeType":"YulFunctionCall","src":"6868:22:178"},"nodeType":"YulExpressionStatement","src":"6868:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6841:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"6850:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6837:3:178"},"nodeType":"YulFunctionCall","src":"6837:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"6862:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6833:3:178"},"nodeType":"YulFunctionCall","src":"6833:32:178"},"nodeType":"YulIf","src":"6830:2:178"},{"nodeType":"YulVariableDeclaration","src":"6901:37:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6928:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6915:12:178"},"nodeType":"YulFunctionCall","src":"6915:23:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6905:6:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"6981:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6990:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"6998:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6983:6:178"},"nodeType":"YulFunctionCall","src":"6983:22:178"},"nodeType":"YulExpressionStatement","src":"6983:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6953:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6961:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6950:2:178"},"nodeType":"YulFunctionCall","src":"6950:30:178"},"nodeType":"YulIf","src":"6947:2:178"},{"nodeType":"YulVariableDeclaration","src":"7016:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7030:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"7041:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7026:3:178"},"nodeType":"YulFunctionCall","src":"7026:22:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7020:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"7087:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7096:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"7104:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7089:6:178"},"nodeType":"YulFunctionCall","src":"7089:22:178"},"nodeType":"YulExpressionStatement","src":"7089:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7068:7:178"},{"name":"_1","nodeType":"YulIdentifier","src":"7077:2:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7064:3:178"},"nodeType":"YulFunctionCall","src":"7064:16:178"},{"kind":"number","nodeType":"YulLiteral","src":"7082:3:178","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7060:3:178"},"nodeType":"YulFunctionCall","src":"7060:26:178"},"nodeType":"YulIf","src":"7057:2:178"},{"nodeType":"YulAssignment","src":"7122:12:178","value":{"name":"_1","nodeType":"YulIdentifier","src":"7132:2:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7122:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_ExactOutputParams_$16358_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6786:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6797:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6809:6:178","type":""}],"src":"6712:428:178"},{"body":{"nodeType":"YulBlock","src":"7259:170:178","statements":[{"body":{"nodeType":"YulBlock","src":"7306:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7315:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"7323:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7308:6:178"},"nodeType":"YulFunctionCall","src":"7308:22:178"},"nodeType":"YulExpressionStatement","src":"7308:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7280:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"7289:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7276:3:178"},"nodeType":"YulFunctionCall","src":"7276:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"7301:3:178","type":"","value":"256"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7272:3:178"},"nodeType":"YulFunctionCall","src":"7272:33:178"},"nodeType":"YulIf","src":"7269:2:178"},{"nodeType":"YulAssignment","src":"7341:82:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7404:9:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7415:7:178"}],"functionName":{"name":"abi_decode_t_struct$_ExactInputSingleParams_calldata","nodeType":"YulIdentifier","src":"7351:52:178"},"nodeType":"YulFunctionCall","src":"7351:72:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7341:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_ExactOutputSingleParams_$16339_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7225:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7236:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7248:6:178","type":""}],"src":"7145:284:178"},{"body":{"nodeType":"YulBlock","src":"7539:824:178","statements":[{"body":{"nodeType":"YulBlock","src":"7585:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7594:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"7602:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7587:6:178"},"nodeType":"YulFunctionCall","src":"7587:22:178"},"nodeType":"YulExpressionStatement","src":"7587:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7560:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"7569:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7556:3:178"},"nodeType":"YulFunctionCall","src":"7556:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"7581:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7552:3:178"},"nodeType":"YulFunctionCall","src":"7552:32:178"},"nodeType":"YulIf","src":"7549:2:178"},{"nodeType":"YulVariableDeclaration","src":"7620:37:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7647:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7634:12:178"},"nodeType":"YulFunctionCall","src":"7634:23:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7624:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7666:28:178","value":{"kind":"number","nodeType":"YulLiteral","src":"7676:18:178","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7670:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"7721:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7730:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"7738:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7723:6:178"},"nodeType":"YulFunctionCall","src":"7723:22:178"},"nodeType":"YulExpressionStatement","src":"7723:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7709:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"7717:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7706:2:178"},"nodeType":"YulFunctionCall","src":"7706:14:178"},"nodeType":"YulIf","src":"7703:2:178"},{"nodeType":"YulVariableDeclaration","src":"7756:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7770:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"7781:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7766:3:178"},"nodeType":"YulFunctionCall","src":"7766:22:178"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"7760:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"7828:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7837:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"7845:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7830:6:178"},"nodeType":"YulFunctionCall","src":"7830:22:178"},"nodeType":"YulExpressionStatement","src":"7830:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7808:7:178"},{"name":"_2","nodeType":"YulIdentifier","src":"7817:2:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7804:3:178"},"nodeType":"YulFunctionCall","src":"7804:16:178"},{"kind":"number","nodeType":"YulLiteral","src":"7822:4:178","type":"","value":"0x40"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7800:3:178"},"nodeType":"YulFunctionCall","src":"7800:27:178"},"nodeType":"YulIf","src":"7797:2:178"},{"nodeType":"YulVariableDeclaration","src":"7863:25:178","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7883:4:178","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7877:5:178"},"nodeType":"YulFunctionCall","src":"7877:11:178"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7867:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7897:35:178","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7919:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"7927:4:178","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7915:3:178"},"nodeType":"YulFunctionCall","src":"7915:17:178"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7901:10:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"7991:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"7993:7:178"},"nodeType":"YulFunctionCall","src":"7993:9:178"},"nodeType":"YulExpressionStatement","src":"7993:9:178"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7950:10:178"},{"name":"_1","nodeType":"YulIdentifier","src":"7962:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7947:2:178"},"nodeType":"YulFunctionCall","src":"7947:18:178"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7970:10:178"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7982:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7967:2:178"},"nodeType":"YulFunctionCall","src":"7967:22:178"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7944:2:178"},"nodeType":"YulFunctionCall","src":"7944:46:178"},"nodeType":"YulIf","src":"7941:2:178"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8020:4:178","type":"","value":"0x40"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8026:10:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8013:6:178"},"nodeType":"YulFunctionCall","src":"8013:24:178"},"nodeType":"YulExpressionStatement","src":"8013:24:178"},{"nodeType":"YulVariableDeclaration","src":"8046:32:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"8075:2:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8062:12:178"},"nodeType":"YulFunctionCall","src":"8062:16:178"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"8050:8:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"8107:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8116:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"8124:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8109:6:178"},"nodeType":"YulFunctionCall","src":"8109:22:178"},"nodeType":"YulExpressionStatement","src":"8109:22:178"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"8093:8:178"},{"name":"_1","nodeType":"YulIdentifier","src":"8103:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8090:2:178"},"nodeType":"YulFunctionCall","src":"8090:16:178"},"nodeType":"YulIf","src":"8087:2:178"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8149:6:178"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"8180:2:178"},{"name":"offset_1","nodeType":"YulIdentifier","src":"8184:8:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8176:3:178"},"nodeType":"YulFunctionCall","src":"8176:17:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8195:7:178"}],"functionName":{"name":"abi_decode_t_bytes","nodeType":"YulIdentifier","src":"8157:18:178"},"nodeType":"YulFunctionCall","src":"8157:46:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8142:6:178"},"nodeType":"YulFunctionCall","src":"8142:62:178"},"nodeType":"YulExpressionStatement","src":"8142:62:178"},{"nodeType":"YulVariableDeclaration","src":"8213:38:178","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"8243:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"8247:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8239:3:178"},"nodeType":"YulFunctionCall","src":"8239:11:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8226:12:178"},"nodeType":"YulFunctionCall","src":"8226:25:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8217:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8287:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"8260:26:178"},"nodeType":"YulFunctionCall","src":"8260:33:178"},"nodeType":"YulExpressionStatement","src":"8260:33:178"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8313:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"8321:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8309:3:178"},"nodeType":"YulFunctionCall","src":"8309:15:178"},{"name":"value","nodeType":"YulIdentifier","src":"8326:5:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8302:6:178"},"nodeType":"YulFunctionCall","src":"8302:30:178"},"nodeType":"YulExpressionStatement","src":"8302:30:178"},{"nodeType":"YulAssignment","src":"8341:16:178","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"8351:6:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8341:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_SwapCallbackData_$13840_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7505:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7516:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7528:6:178","type":""}],"src":"7434:929:178"},{"body":{"nodeType":"YulBlock","src":"8438:189:178","statements":[{"body":{"nodeType":"YulBlock","src":"8484:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8493:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"8501:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8486:6:178"},"nodeType":"YulFunctionCall","src":"8486:22:178"},"nodeType":"YulExpressionStatement","src":"8486:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8459:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"8468:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8455:3:178"},"nodeType":"YulFunctionCall","src":"8455:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"8480:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8451:3:178"},"nodeType":"YulFunctionCall","src":"8451:32:178"},"nodeType":"YulIf","src":"8448:2:178"},{"nodeType":"YulVariableDeclaration","src":"8519:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8545:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8532:12:178"},"nodeType":"YulFunctionCall","src":"8532:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8523:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8591:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"8564:26:178"},"nodeType":"YulFunctionCall","src":"8564:33:178"},"nodeType":"YulExpressionStatement","src":"8564:33:178"},{"nodeType":"YulAssignment","src":"8606:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"8616:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8606:6:178"}]}]},"name":"abi_decode_tuple_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8404:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8415:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8427:6:178","type":""}],"src":"8368:259:178"},{"body":{"nodeType":"YulBlock","src":"8701:225:178","statements":[{"body":{"nodeType":"YulBlock","src":"8747:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8756:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"8764:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8749:6:178"},"nodeType":"YulFunctionCall","src":"8749:22:178"},"nodeType":"YulExpressionStatement","src":"8749:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8722:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"8731:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8718:3:178"},"nodeType":"YulFunctionCall","src":"8718:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"8743:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8714:3:178"},"nodeType":"YulFunctionCall","src":"8714:32:178"},"nodeType":"YulIf","src":"8711:2:178"},{"nodeType":"YulVariableDeclaration","src":"8782:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8808:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8795:12:178"},"nodeType":"YulFunctionCall","src":"8795:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8786:5:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"8870:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8879:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"8887:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8872:6:178"},"nodeType":"YulFunctionCall","src":"8872:22:178"},"nodeType":"YulExpressionStatement","src":"8872:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8840:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8851:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"8858:8:178","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8847:3:178"},"nodeType":"YulFunctionCall","src":"8847:20:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8837:2:178"},"nodeType":"YulFunctionCall","src":"8837:31:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8830:6:178"},"nodeType":"YulFunctionCall","src":"8830:39:178"},"nodeType":"YulIf","src":"8827:2:178"},{"nodeType":"YulAssignment","src":"8905:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"8915:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8905:6:178"}]}]},"name":"abi_decode_tuple_t_uint24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8667:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8678:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8690:6:178","type":""}],"src":"8632:294:178"},{"body":{"nodeType":"YulBlock","src":"9001:120:178","statements":[{"body":{"nodeType":"YulBlock","src":"9047:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9056:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"9064:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9049:6:178"},"nodeType":"YulFunctionCall","src":"9049:22:178"},"nodeType":"YulExpressionStatement","src":"9049:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9022:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"9031:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9018:3:178"},"nodeType":"YulFunctionCall","src":"9018:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"9043:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9014:3:178"},"nodeType":"YulFunctionCall","src":"9014:32:178"},"nodeType":"YulIf","src":"9011:2:178"},{"nodeType":"YulAssignment","src":"9082:33:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9105:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9092:12:178"},"nodeType":"YulFunctionCall","src":"9092:23:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9082:6:178"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8967:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8978:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8990:6:178","type":""}],"src":"8931:190:178"},{"body":{"nodeType":"YulBlock","src":"9213:240:178","statements":[{"body":{"nodeType":"YulBlock","src":"9259:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9268:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"9276:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9261:6:178"},"nodeType":"YulFunctionCall","src":"9261:22:178"},"nodeType":"YulExpressionStatement","src":"9261:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9234:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"9243:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9230:3:178"},"nodeType":"YulFunctionCall","src":"9230:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"9255:2:178","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9226:3:178"},"nodeType":"YulFunctionCall","src":"9226:32:178"},"nodeType":"YulIf","src":"9223:2:178"},{"nodeType":"YulAssignment","src":"9294:33:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9317:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9304:12:178"},"nodeType":"YulFunctionCall","src":"9304:23:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9294:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"9336:45:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9366:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"9377:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9362:3:178"},"nodeType":"YulFunctionCall","src":"9362:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9349:12:178"},"nodeType":"YulFunctionCall","src":"9349:32:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"9340:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9417:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"9390:26:178"},"nodeType":"YulFunctionCall","src":"9390:33:178"},"nodeType":"YulExpressionStatement","src":"9390:33:178"},{"nodeType":"YulAssignment","src":"9432:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"9442:5:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9432:6:178"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9171:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9182:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9194:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9202:6:178","type":""}],"src":"9126:327:178"},{"body":{"nodeType":"YulBlock","src":"9579:418:178","statements":[{"body":{"nodeType":"YulBlock","src":"9626:26:178","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"9635:6:178"},{"name":"value2","nodeType":"YulIdentifier","src":"9643:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9628:6:178"},"nodeType":"YulFunctionCall","src":"9628:22:178"},"nodeType":"YulExpressionStatement","src":"9628:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9600:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"9609:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9596:3:178"},"nodeType":"YulFunctionCall","src":"9596:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"9621:3:178","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9592:3:178"},"nodeType":"YulFunctionCall","src":"9592:33:178"},"nodeType":"YulIf","src":"9589:2:178"},{"nodeType":"YulAssignment","src":"9661:33:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9684:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9671:12:178"},"nodeType":"YulFunctionCall","src":"9671:23:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9661:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"9703:45:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9733:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"9744:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9729:3:178"},"nodeType":"YulFunctionCall","src":"9729:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9716:12:178"},"nodeType":"YulFunctionCall","src":"9716:32:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"9707:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9784:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"9757:26:178"},"nodeType":"YulFunctionCall","src":"9757:33:178"},"nodeType":"YulExpressionStatement","src":"9757:33:178"},{"nodeType":"YulAssignment","src":"9799:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"9809:5:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9799:6:178"}]},{"nodeType":"YulAssignment","src":"9823:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9850:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"9861:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9846:3:178"},"nodeType":"YulFunctionCall","src":"9846:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9833:12:178"},"nodeType":"YulFunctionCall","src":"9833:32:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"9823:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"9874:47:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9906:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"9917:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9902:3:178"},"nodeType":"YulFunctionCall","src":"9902:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9889:12:178"},"nodeType":"YulFunctionCall","src":"9889:32:178"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"9878:7:178","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"9957:7:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"9930:26:178"},"nodeType":"YulFunctionCall","src":"9930:35:178"},"nodeType":"YulExpressionStatement","src":"9930:35:178"},{"nodeType":"YulAssignment","src":"9974:17:178","value":{"name":"value_1","nodeType":"YulIdentifier","src":"9984:7:178"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"9974:6:178"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9521:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9532:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9544:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9552:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9560:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9568:6:178","type":""}],"src":"9458:539:178"},{"body":{"nodeType":"YulBlock","src":"10053:208:178","statements":[{"nodeType":"YulVariableDeclaration","src":"10063:26:178","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10083:5:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10077:5:178"},"nodeType":"YulFunctionCall","src":"10077:12:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"10067:6:178","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10105:3:178"},{"name":"length","nodeType":"YulIdentifier","src":"10110:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10098:6:178"},"nodeType":"YulFunctionCall","src":"10098:19:178"},"nodeType":"YulExpressionStatement","src":"10098:19:178"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10152:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"10159:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10148:3:178"},"nodeType":"YulFunctionCall","src":"10148:16:178"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10170:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"10175:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10166:3:178"},"nodeType":"YulFunctionCall","src":"10166:14:178"},{"name":"length","nodeType":"YulIdentifier","src":"10182:6:178"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"10126:21:178"},"nodeType":"YulFunctionCall","src":"10126:63:178"},"nodeType":"YulExpressionStatement","src":"10126:63:178"},{"nodeType":"YulAssignment","src":"10198:57:178","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10213:3:178"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10226:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"10234:2:178","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10222:3:178"},"nodeType":"YulFunctionCall","src":"10222:15:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10243:2:178","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10239:3:178"},"nodeType":"YulFunctionCall","src":"10239:7:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10218:3:178"},"nodeType":"YulFunctionCall","src":"10218:29:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10209:3:178"},"nodeType":"YulFunctionCall","src":"10209:39:178"},{"kind":"number","nodeType":"YulLiteral","src":"10250:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10205:3:178"},"nodeType":"YulFunctionCall","src":"10205:50:178"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10198:3:178"}]}]},"name":"abi_encode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10030:5:178","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10037:3:178","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10045:3:178","type":""}],"src":"10002:259:178"},{"body":{"nodeType":"YulBlock","src":"10439:258:178","statements":[{"nodeType":"YulVariableDeclaration","src":"10449:41:178","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10463:26:178","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10459:3:178"},"nodeType":"YulFunctionCall","src":"10459:31:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"10453:2:178","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10506:3:178"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10519:2:178","type":"","value":"96"},{"name":"value0","nodeType":"YulIdentifier","src":"10523:6:178"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10515:3:178"},"nodeType":"YulFunctionCall","src":"10515:15:178"},{"name":"_1","nodeType":"YulIdentifier","src":"10532:2:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10511:3:178"},"nodeType":"YulFunctionCall","src":"10511:24:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10499:6:178"},"nodeType":"YulFunctionCall","src":"10499:37:178"},"nodeType":"YulExpressionStatement","src":"10499:37:178"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10556:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"10561:2:178","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10552:3:178"},"nodeType":"YulFunctionCall","src":"10552:12:178"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10574:3:178","type":"","value":"232"},{"name":"value1","nodeType":"YulIdentifier","src":"10579:6:178"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10570:3:178"},"nodeType":"YulFunctionCall","src":"10570:16:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10592:3:178","type":"","value":"232"},{"kind":"number","nodeType":"YulLiteral","src":"10597:8:178","type":"","value":"16777215"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10588:3:178"},"nodeType":"YulFunctionCall","src":"10588:18:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10566:3:178"},"nodeType":"YulFunctionCall","src":"10566:41:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10545:6:178"},"nodeType":"YulFunctionCall","src":"10545:63:178"},"nodeType":"YulExpressionStatement","src":"10545:63:178"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10628:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"10633:2:178","type":"","value":"23"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10624:3:178"},"nodeType":"YulFunctionCall","src":"10624:12:178"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10646:2:178","type":"","value":"96"},{"name":"value2","nodeType":"YulIdentifier","src":"10650:6:178"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10642:3:178"},"nodeType":"YulFunctionCall","src":"10642:15:178"},{"name":"_1","nodeType":"YulIdentifier","src":"10659:2:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10638:3:178"},"nodeType":"YulFunctionCall","src":"10638:24:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10617:6:178"},"nodeType":"YulFunctionCall","src":"10617:46:178"},"nodeType":"YulExpressionStatement","src":"10617:46:178"},{"nodeType":"YulAssignment","src":"10672:19:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10683:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"10688:2:178","type":"","value":"43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10679:3:178"},"nodeType":"YulFunctionCall","src":"10679:12:178"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10672:3:178"}]}]},"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":"10399:3:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10404:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10412:6:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10420:6:178","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10431:3:178","type":""}],"src":"10266:431:178"},{"body":{"nodeType":"YulBlock","src":"10849:126:178","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10872:3:178"},{"name":"value0","nodeType":"YulIdentifier","src":"10877:6:178"},{"name":"value1","nodeType":"YulIdentifier","src":"10885:6:178"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"10859:12:178"},"nodeType":"YulFunctionCall","src":"10859:33:178"},"nodeType":"YulExpressionStatement","src":"10859:33:178"},{"nodeType":"YulVariableDeclaration","src":"10901:26:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10915:3:178"},{"name":"value1","nodeType":"YulIdentifier","src":"10920:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10911:3:178"},"nodeType":"YulFunctionCall","src":"10911:16:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"10905:2:178","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"10943:2:178"},{"name":"end","nodeType":"YulIdentifier","src":"10947:3:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10936:6:178"},"nodeType":"YulFunctionCall","src":"10936:15:178"},"nodeType":"YulExpressionStatement","src":"10936:15:178"},{"nodeType":"YulAssignment","src":"10960:9:178","value":{"name":"_1","nodeType":"YulIdentifier","src":"10967:2:178"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10960:3:178"}]}]},"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":"10817:3:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10822:6:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10830:6:178","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10841:3:178","type":""}],"src":"10702:273:178"},{"body":{"nodeType":"YulBlock","src":"11081:125:178","statements":[{"nodeType":"YulAssignment","src":"11091:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11103:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"11114:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11099:3:178"},"nodeType":"YulFunctionCall","src":"11099:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11091:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11133:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11148:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"11156:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11144:3:178"},"nodeType":"YulFunctionCall","src":"11144:55:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11126:6:178"},"nodeType":"YulFunctionCall","src":"11126:74:178"},"nodeType":"YulExpressionStatement","src":"11126:74:178"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11050:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11061:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11072:4:178","type":""}],"src":"10980:226:178"},{"body":{"nodeType":"YulBlock","src":"11434:370:178","statements":[{"nodeType":"YulVariableDeclaration","src":"11444:52:178","value":{"kind":"number","nodeType":"YulLiteral","src":"11454:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"11448:2:178","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11512:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11527:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"11535:2:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11523:3:178"},"nodeType":"YulFunctionCall","src":"11523:15:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11505:6:178"},"nodeType":"YulFunctionCall","src":"11505:34:178"},"nodeType":"YulExpressionStatement","src":"11505:34:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11559:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"11570:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11555:3:178"},"nodeType":"YulFunctionCall","src":"11555:18:178"},{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11589:6:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11582:6:178"},"nodeType":"YulFunctionCall","src":"11582:14:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11575:6:178"},"nodeType":"YulFunctionCall","src":"11575:22:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11548:6:178"},"nodeType":"YulFunctionCall","src":"11548:50:178"},"nodeType":"YulExpressionStatement","src":"11548:50:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11618:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"11629:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11614:3:178"},"nodeType":"YulFunctionCall","src":"11614:18:178"},{"name":"value2","nodeType":"YulIdentifier","src":"11634:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11607:6:178"},"nodeType":"YulFunctionCall","src":"11607:34:178"},"nodeType":"YulExpressionStatement","src":"11607:34:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11661:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"11672:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11657:3:178"},"nodeType":"YulFunctionCall","src":"11657:18:178"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"11681:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"11689:2:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11677:3:178"},"nodeType":"YulFunctionCall","src":"11677:15:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11650:6:178"},"nodeType":"YulFunctionCall","src":"11650:43:178"},"nodeType":"YulExpressionStatement","src":"11650:43:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11713:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"11724:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11709:3:178"},"nodeType":"YulFunctionCall","src":"11709:19:178"},{"kind":"number","nodeType":"YulLiteral","src":"11730:3:178","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11702:6:178"},"nodeType":"YulFunctionCall","src":"11702:32:178"},"nodeType":"YulExpressionStatement","src":"11702:32:178"},{"nodeType":"YulAssignment","src":"11743:55:178","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"11770:6:178"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11782:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"11793:3:178","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11778:3:178"},"nodeType":"YulFunctionCall","src":"11778:19:178"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"11751:18:178"},"nodeType":"YulFunctionCall","src":"11751:47:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11743:4:178"}]}]},"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":"11371:9:178","type":""},{"name":"value4","nodeType":"YulTypedName","src":"11382:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"11390:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11398:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11406:6:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11414:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11425:4:178","type":""}],"src":"11211:593:178"},{"body":{"nodeType":"YulBlock","src":"11978:637:178","statements":[{"nodeType":"YulVariableDeclaration","src":"11988:12:178","value":{"kind":"number","nodeType":"YulLiteral","src":"11998:2:178","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"11992:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12009:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12027:9:178"},{"name":"_1","nodeType":"YulIdentifier","src":"12038:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12023:3:178"},"nodeType":"YulFunctionCall","src":"12023:18:178"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"12013:6:178","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12057:9:178"},{"name":"_1","nodeType":"YulIdentifier","src":"12068:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12050:6:178"},"nodeType":"YulFunctionCall","src":"12050:21:178"},"nodeType":"YulExpressionStatement","src":"12050:21:178"},{"nodeType":"YulVariableDeclaration","src":"12080:17:178","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"12091:6:178"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"12084:3:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12106:27:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12126:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12120:5:178"},"nodeType":"YulFunctionCall","src":"12120:13:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"12110:6:178","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"12149:6:178"},{"name":"length","nodeType":"YulIdentifier","src":"12157:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12142:6:178"},"nodeType":"YulFunctionCall","src":"12142:22:178"},"nodeType":"YulExpressionStatement","src":"12142:22:178"},{"nodeType":"YulAssignment","src":"12173:25:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12184:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"12195:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12180:3:178"},"nodeType":"YulFunctionCall","src":"12180:18:178"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12173:3:178"}]},{"nodeType":"YulVariableDeclaration","src":"12207:54:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12229:9:178"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12244:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"12252:2:178"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"12240:3:178"},"nodeType":"YulFunctionCall","src":"12240:15:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12225:3:178"},"nodeType":"YulFunctionCall","src":"12225:31:178"},{"kind":"number","nodeType":"YulLiteral","src":"12258:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12221:3:178"},"nodeType":"YulFunctionCall","src":"12221:40:178"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"12211:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12270:29:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12288:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"12296:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12284:3:178"},"nodeType":"YulFunctionCall","src":"12284:15:178"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"12274:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12308:13:178","value":{"name":"tail","nodeType":"YulIdentifier","src":"12317:4:178"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"12312:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"12379:207:178","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12400:3:178"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12413:6:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"12421:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12409:3:178"},"nodeType":"YulFunctionCall","src":"12409:22:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12437:2:178","type":"","value":"63"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"12433:3:178"},"nodeType":"YulFunctionCall","src":"12433:7:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12405:3:178"},"nodeType":"YulFunctionCall","src":"12405:36:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12393:6:178"},"nodeType":"YulFunctionCall","src":"12393:49:178"},"nodeType":"YulExpressionStatement","src":"12393:49:178"},{"nodeType":"YulAssignment","src":"12455:51:178","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"12490:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12484:5:178"},"nodeType":"YulFunctionCall","src":"12484:13:178"},{"name":"tail_2","nodeType":"YulIdentifier","src":"12499:6:178"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"12465:18:178"},"nodeType":"YulFunctionCall","src":"12465:41:178"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12455:6:178"}]},{"nodeType":"YulAssignment","src":"12519:25:178","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"12533:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"12541:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12529:3:178"},"nodeType":"YulFunctionCall","src":"12529:15:178"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"12519:6:178"}]},{"nodeType":"YulAssignment","src":"12557:19:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12568:3:178"},{"name":"_1","nodeType":"YulIdentifier","src":"12573:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12564:3:178"},"nodeType":"YulFunctionCall","src":"12564:12:178"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12557:3:178"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"12341:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"12344:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"12338:2:178"},"nodeType":"YulFunctionCall","src":"12338:13:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"12352:18:178","statements":[{"nodeType":"YulAssignment","src":"12354:14:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"12363:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"12366:1:178","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12359:3:178"},"nodeType":"YulFunctionCall","src":"12359:9:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"12354:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"12334:3:178","statements":[]},"src":"12330:256:178"},{"nodeType":"YulAssignment","src":"12595:14:178","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"12603:6:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12595:4:178"}]}]},"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":"11947:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11958:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11969:4:178","type":""}],"src":"11809:806:178"},{"body":{"nodeType":"YulBlock","src":"12741:100:178","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12758:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"12769:2:178","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12751:6:178"},"nodeType":"YulFunctionCall","src":"12751:21:178"},"nodeType":"YulExpressionStatement","src":"12751:21:178"},{"nodeType":"YulAssignment","src":"12781:54:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12808:6:178"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12820:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"12831:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12816:3:178"},"nodeType":"YulFunctionCall","src":"12816:18:178"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"12789:18:178"},"nodeType":"YulFunctionCall","src":"12789:46:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12781:4:178"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12710:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12721:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12732:4:178","type":""}],"src":"12620:221:178"},{"body":{"nodeType":"YulBlock","src":"13020:168:178","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13037:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13048:2:178","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13030:6:178"},"nodeType":"YulFunctionCall","src":"13030:21:178"},"nodeType":"YulExpressionStatement","src":"13030:21:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13071:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13082:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13067:3:178"},"nodeType":"YulFunctionCall","src":"13067:18:178"},{"kind":"number","nodeType":"YulLiteral","src":"13087:2:178","type":"","value":"18"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13060:6:178"},"nodeType":"YulFunctionCall","src":"13060:30:178"},"nodeType":"YulExpressionStatement","src":"13060:30:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13110:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13121:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13106:3:178"},"nodeType":"YulFunctionCall","src":"13106:18:178"},{"kind":"string","nodeType":"YulLiteral","src":"13126:20:178","type":"","value":"Too much requested"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13099:6:178"},"nodeType":"YulFunctionCall","src":"13099:48:178"},"nodeType":"YulExpressionStatement","src":"13099:48:178"},{"nodeType":"YulAssignment","src":"13156:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13168:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13179:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13164:3:178"},"nodeType":"YulFunctionCall","src":"13164:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13156:4:178"}]}]},"name":"abi_encode_tuple_t_stringliteral_a5c1362ddf12293b907d8907d79f16e40792a7ddc4f09ee6d70cfec4ad443305__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12997:9:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13011:4:178","type":""}],"src":"12846:342:178"},{"body":{"nodeType":"YulBlock","src":"13367:169:178","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13384:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13395:2:178","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13377:6:178"},"nodeType":"YulFunctionCall","src":"13377:21:178"},"nodeType":"YulExpressionStatement","src":"13377:21:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13418:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13429:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13414:3:178"},"nodeType":"YulFunctionCall","src":"13414:18:178"},{"kind":"number","nodeType":"YulLiteral","src":"13434:2:178","type":"","value":"19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13407:6:178"},"nodeType":"YulFunctionCall","src":"13407:30:178"},"nodeType":"YulExpressionStatement","src":"13407:30:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13457:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13468:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13453:3:178"},"nodeType":"YulFunctionCall","src":"13453:18:178"},{"kind":"string","nodeType":"YulLiteral","src":"13473:21:178","type":"","value":"Too little received"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13446:6:178"},"nodeType":"YulFunctionCall","src":"13446:49:178"},"nodeType":"YulExpressionStatement","src":"13446:49:178"},{"nodeType":"YulAssignment","src":"13504:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13516:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13527:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13512:3:178"},"nodeType":"YulFunctionCall","src":"13512:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13504:4:178"}]}]},"name":"abi_encode_tuple_t_stringliteral_f037a9cbca9be03859489f289f0cf5f85c0414bbfdd9785bc7ab31bd734e249c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13344:9:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13358:4:178","type":""}],"src":"13193:343:178"},{"body":{"nodeType":"YulBlock","src":"13712:328:178","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13729:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13740:2:178","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13722:6:178"},"nodeType":"YulFunctionCall","src":"13722:21:178"},"nodeType":"YulExpressionStatement","src":"13722:21:178"},{"nodeType":"YulVariableDeclaration","src":"13752:33:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13778:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13772:5:178"},"nodeType":"YulFunctionCall","src":"13772:13:178"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"13756:12:178","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13805:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13816:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13801:3:178"},"nodeType":"YulFunctionCall","src":"13801:18:178"},{"kind":"number","nodeType":"YulLiteral","src":"13821:4:178","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13794:6:178"},"nodeType":"YulFunctionCall","src":"13794:32:178"},"nodeType":"YulExpressionStatement","src":"13794:32:178"},{"nodeType":"YulVariableDeclaration","src":"13835:66:178","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"13868:12:178"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13886:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13897:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13882:3:178"},"nodeType":"YulFunctionCall","src":"13882:18:178"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"13849:18:178"},"nodeType":"YulFunctionCall","src":"13849:52:178"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"13839:6:178","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13921:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"13932:4:178","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13917:3:178"},"nodeType":"YulFunctionCall","src":"13917:20:178"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13953:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"13961:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13949:3:178"},"nodeType":"YulFunctionCall","src":"13949:15:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13943:5:178"},"nodeType":"YulFunctionCall","src":"13943:22:178"},{"kind":"number","nodeType":"YulLiteral","src":"13967:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13939:3:178"},"nodeType":"YulFunctionCall","src":"13939:71:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13910:6:178"},"nodeType":"YulFunctionCall","src":"13910:101:178"},"nodeType":"YulExpressionStatement","src":"13910:101:178"},{"nodeType":"YulAssignment","src":"14020:14:178","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"14028:6:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14020:4:178"}]}]},"name":"abi_encode_tuple_t_struct$_SwapCallbackData_$13840_memory_ptr__to_t_struct$_SwapCallbackData_$13840_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13681:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13692:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13703:4:178","type":""}],"src":"13541:499:178"},{"body":{"nodeType":"YulBlock","src":"14146:76:178","statements":[{"nodeType":"YulAssignment","src":"14156:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14168:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"14179:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14164:3:178"},"nodeType":"YulFunctionCall","src":"14164:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14156:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14198:9:178"},{"name":"value0","nodeType":"YulIdentifier","src":"14209:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14191:6:178"},"nodeType":"YulFunctionCall","src":"14191:25:178"},"nodeType":"YulExpressionStatement","src":"14191:25:178"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14115:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14126:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14137:4:178","type":""}],"src":"14045:177:178"},{"body":{"nodeType":"YulBlock","src":"14321:439:178","statements":[{"nodeType":"YulVariableDeclaration","src":"14331:51:178","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"14370:11:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14357:12:178"},"nodeType":"YulFunctionCall","src":"14357:25:178"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"14335:18:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"14471:22:178","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"14480:4:178"},{"name":"addr","nodeType":"YulIdentifier","src":"14486:4:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14473:6:178"},"nodeType":"YulFunctionCall","src":"14473:18:178"},"nodeType":"YulExpressionStatement","src":"14473:18:178"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"14405:18:178"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"14433:12:178"},"nodeType":"YulFunctionCall","src":"14433:14:178"},{"name":"base_ref","nodeType":"YulIdentifier","src":"14449:8:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14429:3:178"},"nodeType":"YulFunctionCall","src":"14429:29:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14464:2:178","type":"","value":"30"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"14460:3:178"},"nodeType":"YulFunctionCall","src":"14460:7:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14425:3:178"},"nodeType":"YulFunctionCall","src":"14425:43:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"14401:3:178"},"nodeType":"YulFunctionCall","src":"14401:68:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"14394:6:178"},"nodeType":"YulFunctionCall","src":"14394:76:178"},"nodeType":"YulIf","src":"14391:2:178"},{"nodeType":"YulVariableDeclaration","src":"14502:47:178","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"14520:8:178"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"14530:18:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14516:3:178"},"nodeType":"YulFunctionCall","src":"14516:33:178"},"variables":[{"name":"addr_1","nodeType":"YulTypedName","src":"14506:6:178","type":""}]},{"nodeType":"YulAssignment","src":"14558:30:178","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"14581:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14568:12:178"},"nodeType":"YulFunctionCall","src":"14568:20:178"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"14558:6:178"}]},{"body":{"nodeType":"YulBlock","src":"14631:22:178","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"14640:4:178"},{"name":"addr","nodeType":"YulIdentifier","src":"14646:4:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14633:6:178"},"nodeType":"YulFunctionCall","src":"14633:18:178"},"nodeType":"YulExpressionStatement","src":"14633:18:178"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14603:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"14611:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14600:2:178"},"nodeType":"YulFunctionCall","src":"14600:30:178"},"nodeType":"YulIf","src":"14597:2:178"},{"nodeType":"YulAssignment","src":"14662:25:178","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"14674:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"14682:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14670:3:178"},"nodeType":"YulFunctionCall","src":"14670:17:178"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"14662:4:178"}]},{"body":{"nodeType":"YulBlock","src":"14738:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14747:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14750:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14740:6:178"},"nodeType":"YulFunctionCall","src":"14740:12:178"},"nodeType":"YulExpressionStatement","src":"14740:12:178"}]},"condition":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"14703:4:178"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"14713:12:178"},"nodeType":"YulFunctionCall","src":"14713:14:178"},{"name":"length","nodeType":"YulIdentifier","src":"14729:6:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14709:3:178"},"nodeType":"YulFunctionCall","src":"14709:27:178"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"14699:3:178"},"nodeType":"YulFunctionCall","src":"14699:38:178"},"nodeType":"YulIf","src":"14696:2:178"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"14278:8:178","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"14288:11:178","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"14304:4:178","type":""},{"name":"length","nodeType":"YulTypedName","src":"14310:6:178","type":""}],"src":"14227:533:178"},{"body":{"nodeType":"YulBlock","src":"14809:198:178","statements":[{"nodeType":"YulAssignment","src":"14819:19:178","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14835:2:178","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14829:5:178"},"nodeType":"YulFunctionCall","src":"14829:9:178"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14819:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"14847:35:178","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14869:6:178"},{"name":"size","nodeType":"YulIdentifier","src":"14877:4:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14865:3:178"},"nodeType":"YulFunctionCall","src":"14865:17:178"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"14851:10:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"14957:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"14959:7:178"},"nodeType":"YulFunctionCall","src":"14959:9:178"},"nodeType":"YulExpressionStatement","src":"14959:9:178"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"14900:10:178"},{"kind":"number","nodeType":"YulLiteral","src":"14912:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14897:2:178"},"nodeType":"YulFunctionCall","src":"14897:34:178"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"14936:10:178"},{"name":"memPtr","nodeType":"YulIdentifier","src":"14948:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14933:2:178"},"nodeType":"YulFunctionCall","src":"14933:22:178"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"14894:2:178"},"nodeType":"YulFunctionCall","src":"14894:62:178"},"nodeType":"YulIf","src":"14891:2:178"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14986:2:178","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"14990:10:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14979:6:178"},"nodeType":"YulFunctionCall","src":"14979:22:178"},"nodeType":"YulExpressionStatement","src":"14979:22:178"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"14789:4:178","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"14798:6:178","type":""}],"src":"14765:242:178"},{"body":{"nodeType":"YulBlock","src":"15071:122:178","statements":[{"body":{"nodeType":"YulBlock","src":"15115:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"15117:7:178"},"nodeType":"YulFunctionCall","src":"15117:9:178"},"nodeType":"YulExpressionStatement","src":"15117:9:178"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"15087:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"15095:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15084:2:178"},"nodeType":"YulFunctionCall","src":"15084:30:178"},"nodeType":"YulIf","src":"15081:2:178"},{"nodeType":"YulAssignment","src":"15137:50:178","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"15157:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"15165:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15153:3:178"},"nodeType":"YulFunctionCall","src":"15153:17:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15176:2:178","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"15172:3:178"},"nodeType":"YulFunctionCall","src":"15172:7:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15149:3:178"},"nodeType":"YulFunctionCall","src":"15149:31:178"},{"kind":"number","nodeType":"YulLiteral","src":"15182:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15145:3:178"},"nodeType":"YulFunctionCall","src":"15145:42:178"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"15137:4:178"}]}]},"name":"array_allocation_size_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"15051:6:178","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"15062:4:178","type":""}],"src":"15012:181:178"},{"body":{"nodeType":"YulBlock","src":"15251:205:178","statements":[{"nodeType":"YulVariableDeclaration","src":"15261:10:178","value":{"kind":"number","nodeType":"YulLiteral","src":"15270:1:178","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"15265:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"15330:63:178","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"15355:3:178"},{"name":"i","nodeType":"YulIdentifier","src":"15360:1:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15351:3:178"},"nodeType":"YulFunctionCall","src":"15351:11:178"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"15374:3:178"},{"name":"i","nodeType":"YulIdentifier","src":"15379:1:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15370:3:178"},"nodeType":"YulFunctionCall","src":"15370:11:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15364:5:178"},"nodeType":"YulFunctionCall","src":"15364:18:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15344:6:178"},"nodeType":"YulFunctionCall","src":"15344:39:178"},"nodeType":"YulExpressionStatement","src":"15344:39:178"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"15291:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"15294:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"15288:2:178"},"nodeType":"YulFunctionCall","src":"15288:13:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"15302:19:178","statements":[{"nodeType":"YulAssignment","src":"15304:15:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"15313:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"15316:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15309:3:178"},"nodeType":"YulFunctionCall","src":"15309:10:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"15304:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"15284:3:178","statements":[]},"src":"15280:113:178"},{"body":{"nodeType":"YulBlock","src":"15419:31:178","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"15432:3:178"},{"name":"length","nodeType":"YulIdentifier","src":"15437:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15428:3:178"},"nodeType":"YulFunctionCall","src":"15428:16:178"},{"kind":"number","nodeType":"YulLiteral","src":"15446:1:178","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15421:6:178"},"nodeType":"YulFunctionCall","src":"15421:27:178"},"nodeType":"YulExpressionStatement","src":"15421:27:178"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"15408:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"15411:6:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15405:2:178"},"nodeType":"YulFunctionCall","src":"15405:13:178"},"nodeType":"YulIf","src":"15402:2:178"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"15229:3:178","type":""},{"name":"dst","nodeType":"YulTypedName","src":"15234:3:178","type":""},{"name":"length","nodeType":"YulTypedName","src":"15239:6:178","type":""}],"src":"15198:258:178"},{"body":{"nodeType":"YulBlock","src":"15508:109:178","statements":[{"body":{"nodeType":"YulBlock","src":"15595:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15604:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15607:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"15597:6:178"},"nodeType":"YulFunctionCall","src":"15597:12:178"},"nodeType":"YulExpressionStatement","src":"15597:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15531:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15542:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"15549:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15538:3:178"},"nodeType":"YulFunctionCall","src":"15538:54:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"15528:2:178"},"nodeType":"YulFunctionCall","src":"15528:65:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"15521:6:178"},"nodeType":"YulFunctionCall","src":"15521:73:178"},"nodeType":"YulIf","src":"15518:2:178"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15497:5:178","type":""}],"src":"15461:156:178"}]},"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_$16314_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_$16295_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_$16358_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_$16339_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_$13840_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), not(31))), 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 := not(0xffffffffffffffffffffffff)\n        mstore(pos, and(shl(96, value0), _1))\n        mstore(add(pos, 20), and(shl(232, value1), shl(232, 16777215)))\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), not(63)))\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_$13840_memory_ptr__to_t_struct$_SwapCallbackData_$13840_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), not(30)))) { 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), not(31)), 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":178,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"14934":[{"length":32,"start":2963},{"length":32,"start":3066},{"length":32,"start":6307}],"14938":[{"length":32,"start":317},{"length":32,"start":1250},{"length":32,"start":1496},{"length":32,"start":1637},{"length":32,"start":1701},{"length":32,"start":1947},{"length":32,"start":5175},{"length":32,"start":5245},{"length":32,"start":5361}]},"linkReferences":{},"object":"60806040526004361061012d5760003560e01c8063c04b8d59116100a5578063db3e219811610074578063e0e189a011610059578063e0e189a014610316578063f28c049814610329578063f3995c671461033c576101b1565b8063db3e2198146102f0578063df2ab5bb14610303576101b1565b8063c04b8d5914610295578063c2e3140a146102a8578063c45a0155146102bb578063d804d7a7146102d0576101b1565b806349404b7c116100fc5780639b2c0a37116100e15780639b2c0a371461024f578063a4a78f0c14610262578063ac9650d814610275576101b1565b806349404b7c1461021a5780634aa4a4fc1461022d576101b1565b806312210e8a146101b65780633beb26c4146101be578063414bf389146101de5780634659a49414610207576101b1565b366101b157336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101af576040805162461bcd60e51b815260206004820152600960248201527f4e6f742057455448390000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b6101af61034f565b3480156101ca57600080fd5b506101af6101d9366004612388565b610359565b6101f16101ec366004612281565b61035e565b6040516101fe919061261c565b60405180910390f35b6101af610215366004611fff565b610444565b6101af6102283660046123a0565b6104de565b34801561023957600080fd5b50610242610663565b6040516101fe91906124a7565b6101af61025d3660046123cf565b610687565b6101af610270366004611fff565b61085e565b61028861028336600461205f565b6108ef565b6040516101fe9190612500565b6101f16102a33660046121d6565b610a2f565b6101af6102b6366004611fff565b610b02565b3480156102c757600080fd5b50610242610b91565b3480156102dc57600080fd5b506101af6102eb3660046120f1565b610bb5565b6101f16102fe366004612281565b610cc8565b6101af610311366004611f60565b610da6565b6101af610324366004611fa1565b610e8f565b6101f161033736600461229d565b610fc1565b6101af61034a366004611fff565b61106e565b6103576110e0565b565b600155565b6000816080013561036e816110f0565b61040760a08401356103866080860160608701611f3d565b610397610100870160e08801611f3d565b60408051808201909152806103af60208a018a611f3d565b6103bf60608b0160408c01612365565b6103cf60408c0160208d01611f3d565b6040516020016103e193929190612444565b6040516020818303038152906040528152602001336001600160a01b0316815250611148565b91508260c001358210156104365760405162461bcd60e51b815260040161042d906125aa565b60405180910390fd5b61043e6110e0565b50919050565b604080516323f2ebc360e21b815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b1580156104be57600080fd5b505af11580156104d2573d6000803e3d6000fd5b50505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561054d57600080fd5b505afa158015610561573d6000803e3d6000fd5b505050506040513d602081101561057757600080fd5b50519050828110156105d0576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b801561065e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561063c57600080fd5b505af1158015610650573d6000803e3d6000fd5b5050505061065e828261129a565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082118015610698575060648211155b6106a157600080fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561071057600080fd5b505afa158015610724573d6000803e3d6000fd5b505050506040513d602081101561073a57600080fd5b5051905084811015610793576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b8015610857577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b50505050600061271061082f858461138990919063ffffffff16565b8161083657fe5b049050801561084957610849838261129a565b6108558582840361129a565b505b5050505050565b60408051636eb1769f60e11b81523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b1580156108af57600080fd5b505afa1580156108c3573d6000803e3d6000fd5b505050506040513d60208110156108d957600080fd5b5051101561085557610855868686868686610444565b60608167ffffffffffffffff8111801561090857600080fd5b5060405190808252806020026020018201604052801561093c57816020015b60608152602001906001900390816109275790505b50905060005b82811015610a28576000803086868581811061095a57fe5b905060200281019061096c9190612625565b60405161097a929190612497565b600060405180830381855af49150503d80600081146109b5576040519150601f19603f3d011682016040523d82523d6000602084013e6109ba565b606091505b509150915081610a06576044815110156109d357600080fd5b600481019050808060200190518101906109ed919061216c565b60405162461bcd60e51b815260040161042d9190612560565b80848481518110610a1357fe5b60209081029190910101525050600101610942565b5092915050565b60008160400151610a3f816110f0565b335b6000610a5085600001516113b3565b9050610a9c856060015182610a69578660200151610a6b565b305b60006040518060400160405280610a858b600001516113bf565b8152602001876001600160a01b0316815250611148565b60608601528015610abc578451309250610ab5906113ce565b8552610ac9565b8460600151935050610acf565b50610a41565b8360800151831015610af35760405162461bcd60e51b815260040161042d906125aa565b610afb6110e0565b5050919050565b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b158015610b5157600080fd5b505afa158015610b65573d6000803e3d6000fd5b505050506040513d6020811015610b7b57600080fd5b505110156108555761085586868686868661106e565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000841380610bc45750600083135b610bcd57600080fd5b6000610bdb828401846122d5565b90506000806000610bef84600001516113e5565b925092509250610c217f0000000000000000000000000000000000000000000000000000000000000000848484611416565b5060008060008a13610c4857846001600160a01b0316846001600160a01b03161089610c5f565b836001600160a01b0316856001600160a01b0316108a5b915091508115610c7e57610c798587602001513384611435565b6104d2565b8551610c89906113b3565b15610cae578551610c99906113ce565b8652610ca881336000896115c5565b506104d2565b806000819055508394506104d28587602001513384611435565b60008160800135610cd8816110f0565b610d7460a0840135610cf06080860160608701611f3d565b610d01610100870160e08801611f3d565b6040518060400160405280886020016020810190610d1f9190611f3d565b610d2f60608b0160408c01612365565b610d3c60208c018c611f3d565b604051602001610d4e93929190612444565b6040516020818303038152906040528152602001336001600160a01b03168152506115c5565b91508260c00135821115610d9a5760405162461bcd60e51b815260040161042d90612573565b50600019600055919050565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610df557600080fd5b505afa158015610e09573d6000803e3d6000fd5b505050506040513d6020811015610e1f57600080fd5b5051905082811015610e78576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b8015610e8957610e89848383611740565b50505050565b600082118015610ea0575060648211155b610ea957600080fd5b6000856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610ef857600080fd5b505afa158015610f0c573d6000803e3d6000fd5b505050506040513d6020811015610f2257600080fd5b5051905084811015610f7b576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b8015610855576000612710610f908386611389565b81610f9757fe5b0490508015610fab57610fab878483611740565b610fb88786838503611740565b50505050505050565b60008160400135610fd1816110f0565b6110446060840135610fe96040860160208701611f3d565b60408051808201909152600090806110018980612625565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250336020909101526115c5565b5060005491508260800135821115610d9a5760405162461bcd60e51b815260040161042d90612573565b6040805163d505accf60e01b8152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b1580156104be57600080fd5b471561035757610357334761129a565b80421115611145576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b50565b60006001600160a01b03841661115c573093505b600080600061116e85600001516113e5565b919450925090506001600160a01b038083169084161060008061119286868661189c565b6001600160a01b031663128acb088b856111ab8f6118da565b6001600160a01b038e16156111c0578d6111e6565b876111df5773fffd8963efd1fc6a506488495d951d5263988d256111e6565b6401000276a45b8d6040516020016111f791906125e1565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016112269594939291906124bb565b6040805180830381600087803b15801561123f57600080fd5b505af1158015611253573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127791906120ce565b91509150826112865781611288565b805b6000039b9a5050505050505050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106112e65780518252601f1990920191602091820191016112c7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611348576040519150601f19603f3d011682016040523d82523d6000602084013e61134d565b606091505b505090508061065e576040805162461bcd60e51b815260206004820152600360248201526253544560e81b604482015290519081900360640190fd5b60008215806113a4575050818102818382816113a157fe5b04145b6113ad57600080fd5b92915050565b8051604211155b919050565b60606113ad826000602b6118f0565b80516060906113ad908390601790601619016118f0565b600080806113f38482611a4d565b9250611400846014611b19565b905061140d846017611a4d565b91509193909250565b600061142c85611427868686611bd5565b611c2b565b95945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156114765750804710155b15611598577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156114d657600080fd5b505af11580156114ea573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561156657600080fd5b505af115801561157a573d6000803e3d6000fd5b505050506040513d602081101561159057600080fd5b50610e899050565b6001600160a01b0383163014156115b9576115b4848383611740565b610e89565b610e8984848484611c4e565b60006001600160a01b0384166115d9573093505b60008060006115eb85600001516113e5565b919450925090506001600160a01b038084169083161060008061160f85878661189c565b6001600160a01b031663128acb088b856116288f6118da565b6000036001600160a01b038e1615611640578d611666565b8761165f5773fffd8963efd1fc6a506488495d951d5263988d25611666565b6401000276a45b8d60405160200161167791906125e1565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016116a69594939291906124bb565b6040805180830381600087803b1580156116bf57600080fd5b505af11580156116d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f791906120ce565b9150915060008361170c578183600003611712565b82826000035b90985090506001600160a01b038a16611731578b811461173157600080fd5b50505050505050949350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106117d15780518252601f1990920191602091820191016117b2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611833576040519150601f19603f3d011682016040523d82523d6000602084013e611838565b606091505b5091509150818015611866575080511580611866575080806020019051602081101561186357600080fd5b50515b610857576040805162461bcd60e51b815260206004820152600260248201526114d560f21b604482015290519081900360640190fd5b60006118d27f00000000000000000000000000000000000000000000000000000000000000006118cd868686611bd5565b611db3565b949350505050565b6000600160ff1b82106118ec57600080fd5b5090565b60608182601f01101561193b576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015611983576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b818301845110156119db576040805162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b6060821580156119fa5760405191506000825260208201604052611a44565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611a33578051835260209283019201611a1b565b5050858452601f01601f1916604052505b50949350505050565b600081826014011015611aa7576040805162461bcd60e51b815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015611b00576040805162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015611b73576040805162461bcd60e51b815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015611bcc576040805162461bcd60e51b815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b611bdd611eaf565b826001600160a01b0316846001600160a01b03161115611bfb579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b6000611c378383611db3565b9050336001600160a01b038216146113ad57600080fd5b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b178152925182516000948594938a169392918291908083835b60208310611ce75780518252601f199092019160209182019101611cc8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611d49576040519150601f19603f3d011682016040523d82523d6000602084013e611d4e565b606091505b5091509150818015611d7c575080511580611d7c5750808060200190516020811015611d7957600080fd5b50515b610855576040805162461bcd60e51b815260206004820152600360248201526229aa2360e91b604482015290519081900360640190fd5b600081602001516001600160a01b031682600001516001600160a01b031610611ddb57600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f5909101909152805191012090565b604080516060810182526000808252602082018190529181019190915290565b80356113ba816126e3565b600082601f830112611eea578081fd5b8135611efd611ef882612695565b612671565b818152846020838601011115611f11578283fd5b816020850160208301379081016020019190915292915050565b6000610100828403121561043e578081fd5b600060208284031215611f4e578081fd5b8135611f59816126e3565b9392505050565b600080600060608486031215611f74578182fd5b8335611f7f816126e3565b9250602084013591506040840135611f96816126e3565b809150509250925092565b600080600080600060a08688031215611fb8578081fd5b8535611fc3816126e3565b9450602086013593506040860135611fda816126e3565b9250606086013591506080860135611ff1816126e3565b809150509295509295909350565b60008060008060008060c08789031215612017578081fd5b8635612022816126e3565b95506020870135945060408701359350606087013560ff81168114612045578182fd5b9598949750929560808101359460a0909101359350915050565b60008060208385031215612071578182fd5b823567ffffffffffffffff80821115612088578384fd5b818501915085601f83011261209b578384fd5b8135818111156120a9578485fd5b86602080830285010111156120bc578485fd5b60209290920196919550909350505050565b600080604083850312156120e0578182fd5b505080516020909101519092909150565b60008060008060608587031215612106578182fd5b8435935060208501359250604085013567ffffffffffffffff8082111561212b578384fd5b818701915087601f83011261213e578384fd5b81358181111561214c578485fd5b88602082850101111561215d578485fd5b95989497505060200194505050565b60006020828403121561217d578081fd5b815167ffffffffffffffff811115612193578182fd5b8201601f810184136121a3578182fd5b80516121b1611ef882612695565b8181528560208385010111156121c5578384fd5b61142c8260208301602086016126b7565b6000602082840312156121e7578081fd5b813567ffffffffffffffff808211156121fe578283fd5b9083019060a08286031215612211578283fd5b60405160a08101818110838211171561222657fe5b604052823582811115612237578485fd5b61224387828601611eda565b82525061225260208401611ecf565b602082015260408301356040820152606083013560608201526080830135608082015280935050505092915050565b60006101008284031215612293578081fd5b611f598383611f2b565b6000602082840312156122ae578081fd5b813567ffffffffffffffff8111156122c4578182fd5b820160a08185031215611f59578182fd5b6000602082840312156122e6578081fd5b813567ffffffffffffffff808211156122fd578283fd5b9083019060408286031215612310578283fd5b60405160408101818110838211171561232557fe5b604052823582811115612336578485fd5b61234287828601611eda565b82525060208301359250612355836126e3565b6020810192909252509392505050565b600060208284031215612376578081fd5b813562ffffff81168114611f59578182fd5b600060208284031215612399578081fd5b5035919050565b600080604083850312156123b2578182fd5b8235915060208301356123c4816126e3565b809150509250929050565b600080600080608085870312156123e4578182fd5b8435935060208501356123f6816126e3565b925060408501359150606085013561240d816126e3565b939692955090935050565b600081518084526124308160208601602086016126b7565b601f01601f19169290920160200192915050565b606093841b6bffffffffffffffffffffffff19908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b60006001600160a01b038088168352861515602084015285604084015280851660608401525060a060808301526124f560a0830184612418565b979650505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b8281101561255357603f19888603018452612541858351612418565b94509285019290850190600101612525565b5092979650505050505050565b600060208252611f596020830184612418565b60208082526012908201527f546f6f206d756368207265717565737465640000000000000000000000000000604082015260600190565b60208082526013908201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604082015260600190565b6000602082528251604060208401526125fd6060840182612418565b90506001600160a01b0360208501511660408401528091505092915050565b90815260200190565b6000808335601e1984360301811261263b578283fd5b83018035915067ffffffffffffffff821115612655578283fd5b60200191503681900382131561266a57600080fd5b9250929050565b60405181810167ffffffffffffffff8111828210171561268d57fe5b604052919050565b600067ffffffffffffffff8211156126a957fe5b50601f01601f191660200190565b60005b838110156126d25781810151838201526020016126ba565b83811115610e895750506000910152565b6001600160a01b038116811461114557600080fdfea2646970667358221220c44ae75eab653d768fbfa7732c07be2d4e7a8510188a09af0d6c6d15158e46b064736f6c63430007060033","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 0x316 JUMPI DUP1 PUSH4 0xF28C0498 EQ PUSH2 0x329 JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x33C JUMPI PUSH2 0x1B1 JUMP JUMPDEST DUP1 PUSH4 0xDB3E2198 EQ PUSH2 0x2F0 JUMPI DUP1 PUSH4 0xDF2AB5BB EQ PUSH2 0x303 JUMPI PUSH2 0x1B1 JUMP JUMPDEST DUP1 PUSH4 0xC04B8D59 EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0xD804D7A7 EQ PUSH2 0x2D0 JUMPI PUSH2 0x1B1 JUMP JUMPDEST DUP1 PUSH4 0x49404B7C GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x9B2C0A37 GT PUSH2 0xE1 JUMPI DUP1 PUSH4 0x9B2C0A37 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x275 JUMPI PUSH2 0x1B1 JUMP JUMPDEST DUP1 PUSH4 0x49404B7C EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x4AA4A4FC EQ PUSH2 0x22D JUMPI PUSH2 0x1B1 JUMP JUMPDEST DUP1 PUSH4 0x12210E8A EQ PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x3BEB26C4 EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x414BF389 EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x4659A494 EQ PUSH2 0x207 JUMPI PUSH2 0x1B1 JUMP JUMPDEST CALLDATASIZE PUSH2 0x1B1 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x1AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F742057455448390000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1AF PUSH2 0x34F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH2 0x1D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2388 JUMP JUMPDEST PUSH2 0x359 JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0x1EC CALLDATASIZE PUSH1 0x4 PUSH2 0x2281 JUMP JUMPDEST PUSH2 0x35E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x261C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1AF PUSH2 0x215 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FFF JUMP JUMPDEST PUSH2 0x444 JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x228 CALLDATASIZE PUSH1 0x4 PUSH2 0x23A0 JUMP JUMPDEST PUSH2 0x4DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x239 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x242 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x24A7 JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x25D CALLDATASIZE PUSH1 0x4 PUSH2 0x23CF JUMP JUMPDEST PUSH2 0x687 JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x270 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FFF JUMP JUMPDEST PUSH2 0x85E JUMP JUMPDEST PUSH2 0x288 PUSH2 0x283 CALLDATASIZE PUSH1 0x4 PUSH2 0x205F JUMP JUMPDEST PUSH2 0x8EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x2500 JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0x2A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x21D6 JUMP JUMPDEST PUSH2 0xA2F JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x2B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FFF JUMP JUMPDEST PUSH2 0xB02 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x242 PUSH2 0xB91 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH2 0x2EB CALLDATASIZE PUSH1 0x4 PUSH2 0x20F1 JUMP JUMPDEST PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0x2FE CALLDATASIZE PUSH1 0x4 PUSH2 0x2281 JUMP JUMPDEST PUSH2 0xCC8 JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x311 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F60 JUMP JUMPDEST PUSH2 0xDA6 JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x324 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FA1 JUMP JUMPDEST PUSH2 0xE8F JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0x337 CALLDATASIZE PUSH1 0x4 PUSH2 0x229D JUMP JUMPDEST PUSH2 0xFC1 JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x34A CALLDATASIZE PUSH1 0x4 PUSH2 0x1FFF JUMP JUMPDEST PUSH2 0x106E JUMP JUMPDEST PUSH2 0x357 PUSH2 0x10E0 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x36E DUP2 PUSH2 0x10F0 JUMP JUMPDEST PUSH2 0x407 PUSH1 0xA0 DUP5 ADD CALLDATALOAD PUSH2 0x386 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x1F3D JUMP JUMPDEST PUSH2 0x397 PUSH2 0x100 DUP8 ADD PUSH1 0xE0 DUP9 ADD PUSH2 0x1F3D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH2 0x3AF PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x1F3D JUMP JUMPDEST PUSH2 0x3BF PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x2365 JUMP JUMPDEST PUSH2 0x3CF PUSH1 0x40 DUP13 ADD PUSH1 0x20 DUP14 ADD PUSH2 0x1F3D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3E1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2444 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH2 0x1148 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0xC0 ADD CALLDATALOAD DUP3 LT ISZERO PUSH2 0x436 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x42D SWAP1 PUSH2 0x25AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x43E PUSH2 0x10E0 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23F2EBC3 PUSH1 0xE2 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x4BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x561 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 0x577 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x5D0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742057455448390000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x65E JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x63C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x650 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x65E DUP3 DUP3 PUSH2 0x129A JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x698 JUMPI POP PUSH1 0x64 DUP3 GT ISZERO JUMPDEST PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x710 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x724 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 0x73A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP5 DUP2 LT ISZERO PUSH2 0x793 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742057455448390000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x857 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x7FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x813 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x2710 PUSH2 0x82F DUP6 DUP5 PUSH2 0x1389 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x836 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x849 JUMPI PUSH2 0x849 DUP4 DUP3 PUSH2 0x129A JUMP JUMPDEST PUSH2 0x855 DUP6 DUP3 DUP5 SUB PUSH2 0x129A JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 NOT SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x8AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8C3 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 0x8D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x855 JUMPI PUSH2 0x855 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x444 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x908 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 0x93C JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x927 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xA28 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x95A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x96C SWAP2 SWAP1 PUSH2 0x2625 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97A SWAP3 SWAP2 SWAP1 PUSH2 0x2497 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x9B5 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 0x9BA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xA06 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x9D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x9ED SWAP2 SWAP1 PUSH2 0x216C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x42D SWAP2 SWAP1 PUSH2 0x2560 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xA13 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x942 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD PUSH2 0xA3F DUP2 PUSH2 0x10F0 JUMP JUMPDEST CALLER JUMPDEST PUSH1 0x0 PUSH2 0xA50 DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x13B3 JUMP JUMPDEST SWAP1 POP PUSH2 0xA9C DUP6 PUSH1 0x60 ADD MLOAD DUP3 PUSH2 0xA69 JUMPI DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0xA6B JUMP JUMPDEST ADDRESS JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xA85 DUP12 PUSH1 0x0 ADD MLOAD PUSH2 0x13BF JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH2 0x1148 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE DUP1 ISZERO PUSH2 0xABC JUMPI DUP5 MLOAD ADDRESS SWAP3 POP PUSH2 0xAB5 SWAP1 PUSH2 0x13CE JUMP JUMPDEST DUP6 MSTORE PUSH2 0xAC9 JUMP JUMPDEST DUP5 PUSH1 0x60 ADD MLOAD SWAP4 POP POP PUSH2 0xACF JUMP JUMPDEST POP PUSH2 0xA41 JUMP JUMPDEST DUP4 PUSH1 0x80 ADD MLOAD DUP4 LT ISZERO PUSH2 0xAF3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x42D SWAP1 PUSH2 0x25AA JUMP JUMPDEST PUSH2 0xAFB PUSH2 0x10E0 JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB65 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 0xB7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x855 JUMPI PUSH2 0x855 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x106E JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP5 SGT DUP1 PUSH2 0xBC4 JUMPI POP PUSH1 0x0 DUP4 SGT JUMPDEST PUSH2 0xBCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBDB DUP3 DUP5 ADD DUP5 PUSH2 0x22D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xBEF DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x13E5 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0xC21 PUSH32 0x0 DUP5 DUP5 DUP5 PUSH2 0x1416 JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP11 SGT PUSH2 0xC48 JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP10 PUSH2 0xC5F JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP11 JUMPDEST SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0xC7E JUMPI PUSH2 0xC79 DUP6 DUP8 PUSH1 0x20 ADD MLOAD CALLER DUP5 PUSH2 0x1435 JUMP JUMPDEST PUSH2 0x4D2 JUMP JUMPDEST DUP6 MLOAD PUSH2 0xC89 SWAP1 PUSH2 0x13B3 JUMP JUMPDEST ISZERO PUSH2 0xCAE JUMPI DUP6 MLOAD PUSH2 0xC99 SWAP1 PUSH2 0x13CE JUMP JUMPDEST DUP7 MSTORE PUSH2 0xCA8 DUP2 CALLER PUSH1 0x0 DUP10 PUSH2 0x15C5 JUMP JUMPDEST POP PUSH2 0x4D2 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP DUP4 SWAP5 POP PUSH2 0x4D2 DUP6 DUP8 PUSH1 0x20 ADD MLOAD CALLER DUP5 PUSH2 0x1435 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0xCD8 DUP2 PUSH2 0x10F0 JUMP JUMPDEST PUSH2 0xD74 PUSH1 0xA0 DUP5 ADD CALLDATALOAD PUSH2 0xCF0 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x1F3D JUMP JUMPDEST PUSH2 0xD01 PUSH2 0x100 DUP8 ADD PUSH1 0xE0 DUP9 ADD PUSH2 0x1F3D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xD1F SWAP2 SWAP1 PUSH2 0x1F3D JUMP JUMPDEST PUSH2 0xD2F PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x2365 JUMP JUMPDEST PUSH2 0xD3C PUSH1 0x20 DUP13 ADD DUP13 PUSH2 0x1F3D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD4E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2444 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH2 0x15C5 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0xC0 ADD CALLDATALOAD DUP3 GT ISZERO PUSH2 0xD9A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x42D SWAP1 PUSH2 0x2573 JUMP JUMPDEST POP PUSH1 0x0 NOT PUSH1 0x0 SSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xDF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE09 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 0xE1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0xE78 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0xE89 JUMPI PUSH2 0xE89 DUP5 DUP4 DUP4 PUSH2 0x1740 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0xEA0 JUMPI POP PUSH1 0x64 DUP3 GT ISZERO JUMPDEST PUSH2 0xEA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xEF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF0C 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 0xF22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP5 DUP2 LT ISZERO PUSH2 0xF7B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x855 JUMPI PUSH1 0x0 PUSH2 0x2710 PUSH2 0xF90 DUP4 DUP7 PUSH2 0x1389 JUMP JUMPDEST DUP2 PUSH2 0xF97 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0xFAB JUMPI PUSH2 0xFAB DUP8 DUP5 DUP4 PUSH2 0x1740 JUMP JUMPDEST PUSH2 0xFB8 DUP8 DUP7 DUP4 DUP6 SUB PUSH2 0x1740 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xFD1 DUP2 PUSH2 0x10F0 JUMP JUMPDEST PUSH2 0x1044 PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH2 0xFE9 PUSH1 0x40 DUP7 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1F3D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 DUP1 PUSH2 0x1001 DUP10 DUP1 PUSH2 0x2625 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 0x15C5 JUMP JUMPDEST POP PUSH1 0x0 SLOAD SWAP2 POP DUP3 PUSH1 0x80 ADD CALLDATALOAD DUP3 GT ISZERO PUSH2 0xD9A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x42D SWAP1 PUSH2 0x2573 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x4BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SELFBALANCE ISZERO PUSH2 0x357 JUMPI PUSH2 0x357 CALLER SELFBALANCE PUSH2 0x129A JUMP JUMPDEST DUP1 TIMESTAMP GT ISZERO PUSH2 0x1145 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x115C JUMPI ADDRESS SWAP4 POP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x116E DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x13E5 JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP1 DUP5 AND LT PUSH1 0x0 DUP1 PUSH2 0x1192 DUP7 DUP7 DUP7 PUSH2 0x189C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP12 DUP6 PUSH2 0x11AB DUP16 PUSH2 0x18DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND ISZERO PUSH2 0x11C0 JUMPI DUP14 PUSH2 0x11E6 JUMP JUMPDEST DUP8 PUSH2 0x11DF JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x11E6 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x11F7 SWAP2 SWAP1 PUSH2 0x25E1 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 0x1226 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x24BB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x123F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1253 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 0x1277 SWAP2 SWAP1 PUSH2 0x20CE JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 PUSH2 0x1286 JUMPI DUP2 PUSH2 0x1288 JUMP JUMPDEST DUP1 JUMPDEST PUSH1 0x0 SUB SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x12E6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x12C7 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 0x1348 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 0x134D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x65E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x535445 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x13A4 JUMPI POP POP DUP2 DUP2 MUL DUP2 DUP4 DUP3 DUP2 PUSH2 0x13A1 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x13AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x42 GT ISZERO JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x13AD DUP3 PUSH1 0x0 PUSH1 0x2B PUSH2 0x18F0 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x13AD SWAP1 DUP4 SWAP1 PUSH1 0x17 SWAP1 PUSH1 0x16 NOT ADD PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x13F3 DUP5 DUP3 PUSH2 0x1A4D JUMP JUMPDEST SWAP3 POP PUSH2 0x1400 DUP5 PUSH1 0x14 PUSH2 0x1B19 JUMP JUMPDEST SWAP1 POP PUSH2 0x140D DUP5 PUSH1 0x17 PUSH2 0x1A4D JUMP JUMPDEST SWAP2 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x142C DUP6 PUSH2 0x1427 DUP7 DUP7 DUP7 PUSH2 0x1BD5 JUMP JUMPDEST PUSH2 0x1C2B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x1476 JUMPI POP DUP1 SELFBALANCE LT ISZERO JUMPDEST ISZERO PUSH2 0x1598 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x14D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x157A 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 0x1590 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE89 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ ISZERO PUSH2 0x15B9 JUMPI PUSH2 0x15B4 DUP5 DUP4 DUP4 PUSH2 0x1740 JUMP JUMPDEST PUSH2 0xE89 JUMP JUMPDEST PUSH2 0xE89 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1C4E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x15D9 JUMPI ADDRESS SWAP4 POP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x15EB DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x13E5 JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP1 DUP4 AND LT PUSH1 0x0 DUP1 PUSH2 0x160F DUP6 DUP8 DUP7 PUSH2 0x189C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x128ACB08 DUP12 DUP6 PUSH2 0x1628 DUP16 PUSH2 0x18DA JUMP JUMPDEST PUSH1 0x0 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND ISZERO PUSH2 0x1640 JUMPI DUP14 PUSH2 0x1666 JUMP JUMPDEST DUP8 PUSH2 0x165F JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x1666 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1677 SWAP2 SWAP1 PUSH2 0x25E1 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 0x16A6 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x24BB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16D3 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 0x16F7 SWAP2 SWAP1 PUSH2 0x20CE JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP4 PUSH2 0x170C JUMPI DUP2 DUP4 PUSH1 0x0 SUB PUSH2 0x1712 JUMP JUMPDEST DUP3 DUP3 PUSH1 0x0 SUB JUMPDEST SWAP1 SWAP9 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH2 0x1731 JUMPI DUP12 DUP2 EQ PUSH2 0x1731 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH4 0xA9059CBB PUSH1 0xE0 SHL 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 0x17D1 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x17B2 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 0x1833 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 0x1838 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1866 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1866 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1863 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x857 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x14D5 PUSH1 0xF2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x18D2 PUSH32 0x0 PUSH2 0x18CD DUP7 DUP7 DUP7 PUSH2 0x1BD5 JUMP JUMPDEST PUSH2 0x1DB3 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 LT PUSH2 0x18EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP3 PUSH1 0x1F ADD LT ISZERO PUSH2 0x193B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x736C6963655F6F766572666C6F77 PUSH1 0x90 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 DUP5 ADD LT ISZERO PUSH2 0x1983 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x736C6963655F6F766572666C6F77 PUSH1 0x90 SHL 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 0x19DB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x19FA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x0 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1A44 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 0x1A33 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x1A1B JUMP JUMPDEST POP POP DUP6 DUP5 MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT 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 0x1AA7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x1B00 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x1B73 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x1BCC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x1BDD PUSH2 0x1EAF JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x1BFB JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1C37 DUP4 DUP4 PUSH2 0x1DB3 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x13AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH4 0x23B872DD PUSH1 0xE0 SHL 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 0x1CE7 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1CC8 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 0x1D49 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 0x1D4E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1D7C JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1D7C JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x855 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x29AA23 PUSH1 0xE9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x1DDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x41A723F9E6457830B1B7A44DF4435FAB88581D073226894B33131815DD674C22 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 0x13BA DUP2 PUSH2 0x26E3 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1EEA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1EFD PUSH2 0x1EF8 DUP3 PUSH2 0x2695 JUMP JUMPDEST PUSH2 0x2671 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1F11 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 0x43E JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F4E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1F59 DUP2 PUSH2 0x26E3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1F74 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1F7F DUP2 PUSH2 0x26E3 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1F96 DUP2 PUSH2 0x26E3 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 0x1FB8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x1FC3 DUP2 PUSH2 0x26E3 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x1FDA DUP2 PUSH2 0x26E3 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x1FF1 DUP2 PUSH2 0x26E3 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 0x2017 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2022 DUP2 PUSH2 0x26E3 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 0x2045 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 0x2071 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2088 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x209B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x20A9 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x20BC 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 0x20E0 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 0x2106 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 0x212B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x213E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x214C JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x215D 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 0x217D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2193 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x21A3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x21B1 PUSH2 0x1EF8 DUP3 PUSH2 0x2695 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x21C5 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x142C DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x26B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21E7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x21FE JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0xA0 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x2211 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x2226 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x2237 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2243 DUP8 DUP3 DUP7 ADD PUSH2 0x1EDA JUMP JUMPDEST DUP3 MSTORE POP PUSH2 0x2252 PUSH1 0x20 DUP5 ADD PUSH2 0x1ECF 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 0x2293 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1F59 DUP4 DUP4 PUSH2 0x1F2B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22AE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x22C4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0xA0 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x1F59 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22E6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x22FD JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x40 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x2310 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x2325 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x2336 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2342 DUP8 DUP3 DUP7 ADD PUSH2 0x1EDA JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP3 POP PUSH2 0x2355 DUP4 PUSH2 0x26E3 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 0x2376 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1F59 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2399 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x23B2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x23C4 DUP2 PUSH2 0x26E3 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 0x23E4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x23F6 DUP2 PUSH2 0x26E3 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x240D DUP2 PUSH2 0x26E3 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2430 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x26B7 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SWAP4 DUP5 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x24F5 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x2418 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 0x2553 JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x2541 DUP6 DUP4 MLOAD PUSH2 0x2418 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2525 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1F59 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2418 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 0x25FD PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0x2418 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x263B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2655 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x266A 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 0x268D JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x26A9 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x26D2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26BA JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xE89 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1145 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC4 0x4A 0xE7 0x5E 0xAB PUSH6 0x3D768FBFA773 0x2C SMOD 0xBE 0x2D 0x4E PUSH27 0x8510188A09AF0D6C6D15158E46B064736F6C634300070600330000 ","sourceMap":"119:352:107:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;461:10:65;-1:-1:-1;;;;;475:5:65;461:19;;453:41;;;;;-1:-1:-1;;;453:41:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;119:352:107;;;;;1457:78:65;;;:::i;396:72:107:-;;;;;;;;;;-1:-1:-1;396:72:107;;;;;:::i;:::-;;:::i;4355:584:60:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1380:298:69;;;;;;:::i;:::-;;:::i;550:405:65:-;;;;;;:::i;:::-;;:::i;431:39:64:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;568:715:66:-;;;;;;:::i;:::-;;:::i;1719:358:69:-;;;;;;:::i;:::-;;:::i;318:669:63:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4980:1332:60:-;;;;;;:::i;:::-;;:::i;1016:323:69:-;;;;;;:::i;:::-;;:::i;337:41:64:-;;;;;;;;;;;;;:::i;1980:1318:60:-;;;;;;;;;;-1:-1:-1;1980:1318:60;;;;;:::i;:::-;;:::i;7776:750::-;;;;;;:::i;:::-;;:::i;1003:406:65:-;;;;;;:::i;:::-;;:::i;1338:695:66:-;;;;;;:::i;:::-;;:::i;8567:775:60:-;;;;;;:::i;:::-;;:::i;693:282:69:-;;;;;;:::i;:::-;;:::i;1457:78:65:-;1515:12;:10;:12::i;:::-;1457:78::o;396:72:107:-;448:4;:12;396:72::o;4355:584:60:-;4532:17;4497:6;:15;;;170:24:67;185:8;170:14;:24::i;:::-;4579:250:60::1;4612:15;::::0;::::1;;4642:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;4673:24;::::0;;;::::1;::::0;::::1;;:::i;:::-;4712:106;::::0;;;;::::1;::::0;;;;4753:14:::1;;::::0;::::1;:6:::0;:14:::1;:::i;:::-;4769:10;::::0;;;::::1;::::0;::::1;;:::i;:::-;4781:15;::::0;;;::::1;::::0;::::1;;:::i;:::-;4736:61;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4712:106;;;;4806:10;-1:-1:-1::0;;;;;4712:106:60::1;;;::::0;4579:18:::1;:250::i;:::-;4567:262;;4861:6;:23;;;4848:9;:36;;4840:68;;;;-1:-1:-1::0;;;4840:68:60::1;;;;;;;:::i;:::-;;;;;;;;;4919:12;:10;:12::i;:::-;4355:584:::0;;;;:::o;1380:298:69:-;1580:90;;;-1:-1:-1;;;1580:90:69;;1614:10;1580:90;;;;1634:4;1580:90;;;;;;;;;;;;;;;;1656:4;1580:90;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1580:33:69;;;;;:90;;;;;-1:-1:-1;;1580:90:69;;;;;;;-1:-1:-1;1580:33:69;:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1380:298;;;;;;:::o;550:405:65:-;648:20;678:5;-1:-1:-1;;;;;671:23:65;;703:4;671:38;;;;;;;;;;;;;-1:-1:-1;;;;;671:38:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;671:38:65;;-1:-1:-1;728:29:65;;;;720:60;;;;;-1:-1:-1;;;720:60:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;797:16;;793:155;;837:5;-1:-1:-1;;;;;830:22:65;;853:12;830:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;881:55;912:9;923:12;881:30;:55::i;:::-;550:405;;;:::o;431:39:64:-;;;:::o;568:715:66:-;773:1;763:7;:11;:29;;;;;789:3;778:7;:14;;763:29;755:38;;;;;;806:20;836:5;-1:-1:-1;;;;;829:23:66;;861:4;829:38;;;;;;;;;;;;;-1:-1:-1;;;;;829:38:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;829:38:66;;-1:-1:-1;886:29:66;;;;878:60;;;;;-1:-1:-1;;;878:60:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;955:16;;951:325;;995:5;-1:-1:-1;;;;;988:22:66;;1011:12;988:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1039:17;1087:6;1059:25;1076:7;1059:12;:16;;:25;;;;:::i;:::-;:34;;;;;;;-1:-1:-1;1112:13:66;;1108:74;;1127:55;1158:12;1172:9;1127:30;:55::i;:::-;1197:67;1228:9;1254;1239:12;:24;1197:30;:67::i;:::-;951:325;;568:715;;;;;:::o;1719:358:69:-;1936:50;;;-1:-1:-1;;;1936:50:69;;1960:10;1936:50;;;;1980:4;1936:50;;;;;;-1:-1:-1;;1989:17:69;-1:-1:-1;;;;;1936:23:69;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1936:50:69;:70;1932:137;;;2021:48;2039:5;2046;2053:6;2061:1;2064;2067;2021:17;:48::i;318:669:63:-;393:22;450:4;438:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;428:34;;478:9;473:507;493:15;;;473:507;;;531:12;;576:4;595;;600:1;595:7;;;;;;;;;;;;;;;;;;:::i;:::-;568:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;530:73;;;;625:7;620:313;;754:2;738:6;:13;:18;734:32;;;758:8;;;734:32;839:4;831:6;827:17;817:27;;899:6;888:28;;;;;;;;;;;;:::i;:::-;881:36;;-1:-1:-1;;;881:36:63;;;;;;;;:::i;620:313::-;962:6;949:7;957:1;949:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;510:3:63;;473:507;;;;318:669;;;;:::o;4980:1332:60:-;5143:17;5108:6;:15;;;170:24:67;185:8;170:14;:24::i;:::-;5194:10:60::1;5254:947;5282:21;5306:30;:6;:11;;;:28;:30::i;:::-;5282:54;;5451:402;5488:6;:15;;;5522:16;:51;;5557:6;:16;;;5522:51;;;5549:4;5522:51;5643:1;5663:175;;;;;;;;5709:26;:6;:11;;;:24;:26::i;:::-;5663:175;;;;5813:5;-1:-1:-1::0;;;;;5663:175:60::1;;;::::0;5451:18:::1;:402::i;:::-;5433:15;::::0;::::1;:420:::0;5926:264;::::1;;;6059:11:::0;;5983:4:::1;::::0;-1:-1:-1;6059:23:60::1;::::0;:21:::1;:23::i;:::-;6045:37:::0;;5926:264:::1;;;6135:6;:15;;;6123:27;;6169:5;;;5926:264;5254:947;;;;6234:6;:23;;;6221:9;:36;;6213:68;;;;-1:-1:-1::0;;;6213:68:60::1;;;;;;;:::i;:::-;6292:12;:10;:12::i;:::-;205:1:67;4980:1332:60::0;;;;:::o;1016:323:69:-;1228:50;;;-1:-1:-1;;;1228:50:69;;1252:10;1228:50;;;;1272:4;1228:50;;;;;;1281:5;;-1:-1:-1;;;;;1228:23:69;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1228:50:69;:58;1224:107;;;1288:43;1299:5;1306;1313:8;1323:1;1326;1329;1288:10;:43::i;337:41:64:-;;;:::o;1980:1318:60:-;2158:1;2143:12;:16;:36;;;;2178:1;2163:12;:16;2143:36;2135:45;;;;;;2254:28;2285:37;;;;2296:5;2285:37;:::i;:::-;2254:68;;2334:15;2351:16;2369:10;2383:27;:4;:9;;;:25;:27::i;:::-;2333:77;;;;;;2421:66;2455:7;2464;2473:8;2483:3;2421:33;:66::i;:::-;;2501:17;2520:19;2571:1;2556:12;:16;:142;;2667:7;-1:-1:-1;;;;;2656:18:60;:8;-1:-1:-1;;;;;2656:18:60;;2684:12;2556:142;;;2603:8;-1:-1:-1;;;;;2593:18:60;:7;-1:-1:-1;;;;;2593:18:60;;2621:12;2556:142;2500:198;;;;2713:12;2709:582;;;2742:49;2746:7;2755:4;:10;;;2767;2779:11;2742:3;:49::i;:::-;2709:582;;;2881:9;;:28;;:26;:28::i;:::-;2877:403;;;2942:9;;:21;;:19;:21::i;:::-;2930:33;;2982:53;3002:11;3015:10;2930:9;:4;2982:19;:53::i;:::-;;2877:403;;;3093:11;3076:14;:28;;;;3133:8;3123:18;;3215:49;3219:7;3228:4;:10;;;3240;3252:11;3215:3;:49::i;7776:750::-;7955:16;7920:6;:15;;;170:24:67;185:8;170:14;:24::i;:::-;8057:252:60::1;8091:16;::::0;::::1;;8122;::::0;;;::::1;::::0;::::1;;:::i;:::-;8153:24;::::0;;;::::1;::::0;::::1;;:::i;:::-;8192:106;;;;;;;;8233:6;:15;;;;;;;;;;:::i;:::-;8250:10;::::0;;;::::1;::::0;::::1;;:::i;:::-;8262:14;;::::0;::::1;:6:::0;:14:::1;:::i;:::-;8216:61;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8192:106;;;;8286:10;-1:-1:-1::0;;;;;8192:106:60::1;;;::::0;8057:19:::1;:252::i;:::-;8046:263;;8342:6;:22;;;8330:8;:34;;8322:65;;;;-1:-1:-1::0;;;8322:65:60::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;8477:14:60::1;:41:::0;7776:750;;-1:-1:-1;7776:750:60:o;1003:406:65:-;1149:20;1179:5;-1:-1:-1;;;;;1172:23:65;;1204:4;1172:38;;;;;;;;;;;;;-1:-1:-1;;;;;1172:38:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1172:38:65;;-1:-1:-1;1229:29:65;;;;1221:60;;;;;-1:-1:-1;;;1221:60:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;1298:16;;1294:108;;1331:59;1359:5;1366:9;1377:12;1331:27;:59::i;:::-;1003:406;;;;:::o;1338:695:66:-;1566:1;1556:7;:11;:29;;;;;1582:3;1571:7;:14;;1556:29;1548:38;;;;;;1599:20;1629:5;-1:-1:-1;;;;;1622:23:66;;1654:4;1622:38;;;;;;;;;;;;;-1:-1:-1;;;;;1622:38:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1622:38:66;;-1:-1:-1;1679:29:66;;;;1671:60;;;;;-1:-1:-1;;;1671:60:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;1748:16;;1744:282;;1781:17;1829:6;1801:25;:12;1818:7;1801:16;:25::i;:::-;:34;;;;;;;-1:-1:-1;1854:13:66;;1850:78;;1869:59;1897:5;1904:12;1918:9;1869:27;:59::i;:::-;1943:71;1971:5;1978:9;2004;1989:12;:24;1943:27;:71::i;:::-;1744:282;1338:695;;;;;;:::o;8567:775:60:-;8734:16;8699:6;:15;;;170:24:67;185:8;170:14;:24::i;:::-;8989:179:60::1;9023:16;::::0;::::1;;9054;::::0;;;::::1;::::0;::::1;;:::i;:::-;9101:56;::::0;;;;::::1;::::0;;;9085:1:::1;::::0;9101:56;9125:11:::1;:6:::0;;:11:::1;:::i;:::-;9101:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;9101:56:60;;;-1:-1:-1;9145:10:60::1;9101:56;::::0;;::::1;::::0;8989:19:::1;:179::i;:::-;;9192:14;;9181:25;;9237:6;:22;;;9225:8;:34;;9217:65;;;;-1:-1:-1::0;;;9217:65:60::1;;;;;;;:::i;693:282:69:-:0;888:79;;;-1:-1:-1;;;888:79:69;;915:10;888:79;;;;935:4;888:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;888:26:69;;;;;:79;;;;;-1:-1:-1;;888:79:69;;;;;;;-1:-1:-1;888:26:69;:79;;;;;;;;;;1543:146:65;1589:21;:25;1585:96;;1616:65;1647:10;1659:21;1616:30;:65::i;222:133:67:-;315:8;296:15;:27;;288:59;;;;;-1:-1:-1;;;288:59:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;222:133;:::o;3355:959:60:-;3537:17;-1:-1:-1;;;;;3635:23:60;;3631:54;;3680:4;3660:25;;3631:54;3699:15;3716:16;3734:10;3748:27;:4;:9;;;:25;:27::i;:::-;3698:77;;-1:-1:-1;3698:77:60;-1:-1:-1;3698:77:60;-1:-1:-1;;;;;;3806:18:60;;;;;;;3788:15;;3885:31;3698:77;;;3885:7;:31::i;:::-;-1:-1:-1;;;;;3885:36:60;;3940:9;3968:10;3997:19;:8;:17;:19::i;:::-;-1:-1:-1;;;;;4035:22:60;;;:159;;4177:17;4035:159;;;4082:10;:70;;4125:27;4082:70;;;4095:27;4082:70;4224:4;4213:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;3885:359;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3837:407;;;;4274:10;:30;;4297:7;4274:30;;;4287:7;4274:30;4272:33;;;3355:959;-1:-1:-1;;;;;;;;;;;3355:959:60:o;2433:168:103:-;2546:12;;;2506;2546;;;;;;;;;-1:-1:-1;;;;;2524:7:103;;;2539:5;;2524:35;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2524:35:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2505:54;;;2578:7;2570:23;;;;;-1:-1:-1;;;2570:23:103;;;;;;;;;;;;-1:-1:-1;;;2570:23:103;;;;;;;;;;;;;;1012:127:20;1070:9;1100:6;;;:30;;-1:-1:-1;;1115:5:20;;;1129:1;1124;1115:5;1124:1;1110:15;;;;;:20;1100:30;1092:39;;;;;;1012:127;;;;:::o;1016:140:96:-;1108:11;;796:24;-1:-1:-1;1108:40:96;1016:140;;;;:::o;2377:129::-;2441:12;2473:25;:4;2484:1;635:23;2473:10;:25::i;2700:151::-;2817:11;;2761:12;;2793:50;;2817:4;;522:20;;-1:-1:-1;;2817:25:96;2793:10;:50::i;1820:326::-;1928:14;;;2033:17;:4;1928:14;2033;:17::i;:::-;2024:26;-1:-1:-1;2067:24:96;:4;314:2;2067:13;:24::i;:::-;2061:30;-1:-1:-1;2111:27:96;:4;522:20;2111:14;:27::i;:::-;2102:36;;1820:326;;;;;:::o;677:263:90:-;828:16;864:68;879:7;888:43;911:6;919;927:3;888:22;:43::i;:::-;864:14;:68::i;:::-;857:75;677:263;-1:-1:-1;;;;;677:263:90:o;1886:716:65:-;2039:5;-1:-1:-1;;;;;2030:14:65;:5;-1:-1:-1;;;;;2030:14:65;;:48;;;;;2073:5;2048:21;:30;;2030:48;2026:569;;;2133:5;-1:-1:-1;;;;;2126:21:65;;2155:5;2126:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2220:5;-1:-1:-1;;;;;2213:22:65;;2236:9;2247:5;2213:40;;;;;;;;;;;;;-1:-1:-1;;;;;2213:40:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2026:569:65;;-1:-1:-1;2026:569:65;;-1:-1:-1;;;;;2275:22:65;;2292:4;2275:22;2271:324;;;2406:52;2434:5;2441:9;2452:5;2406:27;:52::i;:::-;2271:324;;;2520:63;2552:5;2559;2566:9;2577:5;2520:31;:63::i;6370:1365:60:-;6554:16;-1:-1:-1;;;;;6651:23:60;;6647:54;;6696:4;6676:25;;6647:54;6715:16;6733:15;6750:10;6764:27;:4;:9;;;:25;:27::i;:::-;6714:77;;-1:-1:-1;6714:77:60;-1:-1:-1;6714:77:60;-1:-1:-1;;;;;;6822:18:60;;;;;;;6804:15;;6911:31;6714:77;;;6911:7;:31::i;:::-;-1:-1:-1;;;;;6911:36:60;;6966:9;6994:10;7024:20;:9;:18;:20::i;:::-;7023:21;;-1:-1:-1;;;;;7063:22:60;;;:159;;7205:17;7063:159;;;7110:10;:70;;7153:27;7110:70;;;7123:27;7110:70;7252:4;7241:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;6911:361;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6853:419;;;;7285:25;7353:10;:136;;7451:12;7475;7474:13;;7353:136;;;7388:12;7412;7411:13;;7353:136;7321:168;;-1:-1:-1;7321:168:60;-1:-1:-1;;;;;;7664:22:60;;7660:67;;7717:9;7696:17;:30;7688:39;;;;;;6370:1365;;;;;;;;;;;;;:::o;1247:316:103:-;1412:59;;;-1:-1:-1;;;;;1412:59:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1412:59:103;;;1401:71;;;;1366:12;;;;1401:10;;;;1412:59;1401:71;;;1412:59;1401:71;;1412:59;1401:71;;;;;;;;;;-1:-1:-1;;1401:71:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1365:107;;;;1491:7;:57;;;;-1:-1:-1;1503:11:103;;:16;;:44;;;1534:4;1523:24;;;;;;;;;;;;;;;-1:-1:-1;1523:24:103;1503:44;1483:72;;;;;-1:-1:-1;;;1483:72:103;;;;;;;;;;;;-1:-1:-1;;;1483:72:103;;;;;;;;;;;;;;1597:249:60;1714:11;1757:80;1784:7;1793:43;1816:6;1824;1832:3;1793:22;:43::i;:::-;1757:26;:80::i;:::-;1738:100;1597:249;-1:-1:-1;;;;1597:249:60:o;947:124:23:-;999:8;-1:-1:-1;;;1028:1:23;:10;1020:19;;;;;;-1:-1:-1;1061:1:23;947:124::o;410:3071:89:-;536:12;585:7;569;579:2;569:12;:23;;561:50;;;;;-1:-1:-1;;;561:50:89;;;;;;;;;;;;-1:-1:-1;;;561:50:89;;;;;;;;;;;;;;;650:6;639:7;630:6;:16;:26;;622:53;;;;;-1:-1:-1;;;622:53:89;;;;;;;;;;;;-1:-1:-1;;;622:53:89;;;;;;;;;;;;;;;720:7;711:6;:16;694:6;:13;:33;;686:63;;;;;-1:-1:-1;;;686:63:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;762:22;828:15;;861:2137;;;;3154:4;3148:11;3135:24;;3355:1;3344:9;3337:20;3409:4;3398:9;3394:20;3388:4;3381:34;821:2613;;861:2137;1058:4;1052:11;1039:24;;1763:2;1754:7;1750:16;2171:9;2164:17;2158:4;2154:28;2142:9;2131;2127:25;2123:60;2224:7;2220:2;2216:16;2497:6;2483:9;2476:17;2470:4;2466:28;2454:9;2446:6;2442:22;2438:57;2434:70;2256:470;2535:3;2531:2;2528:11;2256:470;;;2693:9;;2682:21;;2581:4;2573:13;;;;2618;2256:470;;;-1:-1:-1;;2750:26:89;;;2974:2;2957:11;-1:-1:-1;;2953:25:89;2947:4;2940:39;-1:-1:-1;821:2613:89;-1:-1:-1;3464:9:89;410:3071;-1:-1:-1;;;;410:3071:89:o;3489:426::-;3568:7;3611:6;3596;3605:2;3596:11;:21;;3588:52;;;;;-1:-1:-1;;;3588:52:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;3676:6;3685:2;3676:11;3659:6;:13;:28;;3651:62;;;;;-1:-1:-1;;;3651:62:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3805:30:89;3821:4;3805:30;3799:37;3838:27;3795:71;;;3489:426::o;3923:375::-;4001:6;4042;4028;4037:1;4028:10;:20;;4020:50;;;;;-1:-1:-1;;;4020:50:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;4106:6;4115:1;4106:10;4089:6;:13;:27;;4081:60;;;;;-1:-1:-1;;;4081:60:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4222:29:89;4238:3;4222:29;4216:36;;3923:375::o;1215:281:97:-;1336:14;;:::i;:::-;1376:6;-1:-1:-1;;;;;1367:15:97;:6;-1:-1:-1;;;;;1367:15:97;;1363:56;;;1404:6;;1412;1363:56;-1:-1:-1;1437:51:97;;;;;;;;-1:-1:-1;;;;;1437:51:97;;;;;;;;;;;;;;;;;;;;;;;1215:281::o;1193:280:90:-;1320:16;1373:44;1400:7;1409;1373:26;:44::i;:::-;1354:64;-1:-1:-1;1437:10:90;-1:-1:-1;;;;;1437:27:90;;;1429:36;;;;;581:367:103;786:69;;;-1:-1:-1;;;;;786:69:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;786:69:103;;;775:81;;;;727:12;;;;775:10;;;;786:69;775:81;;;786:69;775:81;;786:69;775:81;;;;;;;;;;-1:-1:-1;;775:81:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;726:130;;;;875:7;:57;;;;-1:-1:-1;887:11:103;;:16;;:44;;;918:4;907:24;;;;;;;;;;;;;;;-1:-1:-1;907:24:103;887:44;867:73;;;;;-1:-1:-1;;;867:73:103;;;;;;;;;;;;-1:-1:-1;;;867:73:103;;;;;;;;;;;;;;1749:526:97;1833:12;1879:3;:10;;;-1:-1:-1;;;;;1866:23:97;:3;:10;;;-1:-1:-1;;;;;1866:23:97;;1858:32;;;;;;-1:-1:-1;2120:10:97;;2132;;;;;2144:7;;;;;2109:43;;-1:-1:-1;;;;;2109:43:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:54;;;;;;1988:234;;;;;;;;-1:-1:-1;;1988:234:97;;;;;;;;;;;;658:66;1988:234;;;;;;;;;;;;;;;;;;;;;;;;;1956:285;;;;;;1749:526::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:138:178:-;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:178: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:178: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:178;1417:18;;1404:32;;-1:-1:-1;1488:2:178;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:178;1927:18;;1914:32;;-1:-1:-1;1998:2:178;1983:18;;1970:32;2011:35;1970:32;2011:35;:::i;:::-;2065:7;-1:-1:-1;2119:2:178;2104:18;;2091:32;;-1:-1:-1;2175:3:178;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:178;2630:18;;2617:32;;-1:-1:-1;2696:2:178;2681:18;;2668:32;;-1:-1:-1;2752:2:178;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:178;;2907:3;2892:19;;2879:33;;2959:3;2944:19;;;2931:33;;-1:-1:-1;2414:556:178;-1:-1:-1;;2414:556:178: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:178;;-1:-1:-1;;;;3091:561:178: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:178;;3900:2;3885:18;;;3879:25;3844:16;;3879:25;;-1:-1:-1;3753:157:178: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:178;4648:11;;-1:-1:-1;;;4036:654:178: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:178;;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:929;;7581:2;7569:9;7560:7;7556:23;7552:32;7549:2;;;7602:6;7594;7587:22;7549:2;7647:9;7634:23;7676:18;7717:2;7709:6;7706:14;7703:2;;;7738:6;7730;7723:22;7703:2;7766:22;;;;7822:4;7804:16;;;7800:27;7797:2;;;7845:6;7837;7830:22;7797:2;7883:4;7877:11;7927:4;7919:6;7915:17;7982:6;7970:10;7967:22;7962:2;7950:10;7947:18;7944:46;7941:2;;;7993:9;7941:2;8020:4;8013:24;8062:16;;8090;;;8087:2;;;8124:6;8116;8109:22;8087:2;8157:46;8195:7;8184:8;8180:2;8176:17;8157:46;:::i;:::-;8149:6;8142:62;;8247:2;8243;8239:11;8226:25;8213:38;;8260:33;8287:5;8260:33;:::i;:::-;8321:2;8309:15;;8302:30;;;;-1:-1:-1;8313:6:178;7539:824;-1:-1:-1;;;7539:824:178:o;8632:294::-;;8743:2;8731:9;8722:7;8718:23;8714:32;8711:2;;;8764:6;8756;8749:22;8711:2;8808:9;8795:23;8858:8;8851:5;8847:20;8840:5;8837:31;8827:2;;8887:6;8879;8872:22;8931:190;;9043:2;9031:9;9022:7;9018:23;9014:32;9011:2;;;9064:6;9056;9049:22;9011:2;-1:-1:-1;9092:23:178;;9001:120;-1:-1:-1;9001:120:178:o;9126:327::-;;;9255:2;9243:9;9234:7;9230:23;9226:32;9223:2;;;9276:6;9268;9261:22;9223:2;9317:9;9304:23;9294:33;;9377:2;9366:9;9362:18;9349:32;9390:33;9417:5;9390:33;:::i;:::-;9442:5;9432:15;;;9213:240;;;;;:::o;9458:539::-;;;;;9621:3;9609:9;9600:7;9596:23;9592:33;9589:2;;;9643:6;9635;9628:22;9589:2;9684:9;9671:23;9661:33;;9744:2;9733:9;9729:18;9716:32;9757:33;9784:5;9757:33;:::i;:::-;9809:5;-1:-1:-1;9861:2:178;9846:18;;9833:32;;-1:-1:-1;9917:2:178;9902:18;;9889:32;9930:35;9889:32;9930:35;:::i;:::-;9579:418;;;;-1:-1:-1;9579:418:178;;-1:-1:-1;;9579:418:178:o;10002:259::-;;10083:5;10077:12;10110:6;10105:3;10098:19;10126:63;10182:6;10175:4;10170:3;10166:14;10159:4;10152:5;10148:16;10126:63;:::i;:::-;10243:2;10222:15;-1:-1:-1;;10218:29:178;10209:39;;;;10250:4;10205:50;;10053:208;-1:-1:-1;;10053:208:178:o;10266:431::-;10519:2;10515:15;;;-1:-1:-1;;10511:24:178;;;10499:37;;10592:3;10570:16;;;;10588:18;10566:41;10561:2;10552:12;;10545:63;10642:15;;10638:24;10633:2;10624:12;;10617:46;10688:2;10679:12;;10439:258::o;10702:273::-;;10885:6;10877;10872:3;10859:33;10911:16;;10936:15;;;10911:16;10849:126;-1:-1:-1;10849:126:178:o;10980:226::-;-1:-1:-1;;;;;11144:55:178;;;;11126:74;;11114:2;11099:18;;11081:125::o;11211:593::-;;-1:-1:-1;;;;;11535:2:178;11527:6;11523:15;11512:9;11505:34;11589:6;11582:14;11575:22;11570:2;11559:9;11555:18;11548:50;11634:6;11629:2;11618:9;11614:18;11607:34;11689:2;11681:6;11677:15;11672:2;11661:9;11657:18;11650:43;;11730:3;11724;11713:9;11709:19;11702:32;11751:47;11793:3;11782:9;11778:19;11770:6;11751:47;:::i;:::-;11743:55;11434:370;-1:-1:-1;;;;;;;11434:370:178:o;11809:806::-;;11998:2;12038;12027:9;12023:18;12068:2;12057:9;12050:21;12091:6;12126;12120:13;12157:6;12149;12142:22;12195:2;12184:9;12180:18;12173:25;;12258:2;12252;12244:6;12240:15;12229:9;12225:31;12221:40;12207:54;;12296:2;12288:6;12284:15;12317:4;12330:256;12344:6;12341:1;12338:13;12330:256;;;12437:2;12433:7;12421:9;12413:6;12409:22;12405:36;12400:3;12393:49;12465:41;12499:6;12490;12484:13;12465:41;:::i;:::-;12455:51;-1:-1:-1;12564:12:178;;;;12529:15;;;;12366:1;12359:9;12330:256;;;-1:-1:-1;12603:6:178;;11978:637;-1:-1:-1;;;;;;;11978:637:178:o;12620:221::-;;12769:2;12758:9;12751:21;12789:46;12831:2;12820:9;12816:18;12808:6;12789:46;:::i;12846:342::-;13048:2;13030:21;;;13087:2;13067:18;;;13060:30;13126:20;13121:2;13106:18;;13099:48;13179:2;13164:18;;13020:168::o;13193:343::-;13395:2;13377:21;;;13434:2;13414:18;;;13407:30;13473:21;13468:2;13453:18;;13446:49;13527:2;13512:18;;13367:169::o;13541:499::-;;13740:2;13729:9;13722:21;13778:6;13772:13;13821:4;13816:2;13805:9;13801:18;13794:32;13849:52;13897:2;13886:9;13882:18;13868:12;13849:52;:::i;:::-;13835:66;;-1:-1:-1;;;;;13961:2:178;13953:6;13949:15;13943:22;13939:71;13932:4;13921:9;13917:20;13910:101;14028:6;14020:14;;;13712:328;;;;:::o;14045:177::-;14191:25;;;14179:2;14164:18;;14146:76::o;14227:533::-;;;14370:11;14357:25;14464:2;14460:7;14449:8;14433:14;14429:29;14425:43;14405:18;14401:68;14391:2;;14486:4;14480;14473:18;14391:2;14516:33;;14568:20;;;-1:-1:-1;14611:18:178;14600:30;;14597:2;;;14646:4;14640;14633:18;14597:2;14682:4;14670:17;;-1:-1:-1;14713:14:178;14709:27;;;14699:38;;14696:2;;;14750:1;14747;14740:12;14696:2;14321:439;;;;;:::o;14765:242::-;14835:2;14829:9;14865:17;;;14912:18;14897:34;;14933:22;;;14894:62;14891:2;;;14959:9;14891:2;14986;14979:22;14809:198;;-1:-1:-1;14809:198:178:o;15012:181::-;;15095:18;15087:6;15084:30;15081:2;;;15117:9;15081:2;-1:-1:-1;15176:2:178;15153:17;-1:-1:-1;;15149:31:178;15182:4;15145:42;;15071:122::o;15198:258::-;15270:1;15280:113;15294:6;15291:1;15288:13;15280:113;;;15370:11;;;15364:18;15351:11;;;15344:39;15316:2;15309:10;15280:113;;;15411:6;15408:1;15405:13;15402:2;;;-1:-1:-1;;15446:1:178;15428:16;;15421:27;15251:205::o;15461:156::-;-1:-1:-1;;;;;15542:5:178;15538:54;15531:5;15528:65;15518:2;;15607:1;15604;15597:12"},"methodIdentifiers":{"WETH9()":"4aa4a4fc","elixirSwapCallback(int256,int256,bytes)":"d804d7a7","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","refundETH()":"12210e8a","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","unwrapWETH9(uint256,address)":"49404b7c","unwrapWETH9WithFee(uint256,address,uint256,address)":"9b2c0a37"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_WETH9\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"WETH9\",\"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\":\"elixirSwapCallback\",\"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\":\"refundETH\",\"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\":\"unwrapWETH9\",\"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\":\"unwrapWETH9WithFee\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"elixirSwapCallback(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 ElixirPool deployed by the canonical ElixirFactory. 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 IElixirPoolActions#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\"}},\"refundETH()\":{\"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\"},\"unwrapWETH9(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of WETH9 to unwrap\",\"recipient\":\"The address receiving ETH\"}},\"unwrapWETH9WithFee(uint256,address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"elixirSwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IElixirPool#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\"},\"refundETH()\":{\"notice\":\"Refunds any ETH 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\"},\"unwrapWETH9(uint256,address)\":{\"notice\":\"Unwraps the contract's WETH9 balance and sends it to recipient as ETH.\"},\"unwrapWETH9WithFee(uint256,address,uint256,address)\":{\"notice\":\"Unwraps the contract's WETH9 balance and sends it to recipient as ETH, with a percentage between 0 (exclusive), and 1 (inclusive) going to feeRecipient\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/test/MockTimeSwapRouter.sol\":\"MockTimeSwapRouter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/callback/IElixirSwapCallback.sol\":{\"keccak256\":\"0xc9fbc830c4c6b20c2e87b16569730bce747f3c9cde95efee554f1c6f07cc60b0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b94f129f0ad86cbc99ff550c65bc0ab2b9e754b7f3c2734f09f51ffb908864d\",\"dweb:/ipfs/QmUuJ7zyX1vWC7SfpsDhBqXGCKMS24pvSzirPVMU3sSkK8\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]},\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-periphery/SwapRouter.sol\":{\"keccak256\":\"0x0ac62db88c756033de196bb9956607fad480ef0b295b777e84b1fd6d41806024\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://838d092793303bd1a8fefc3916e337907280e3686b4f99f53ef222ecbe388f4f\",\"dweb:/ipfs/QmRxdq3UsUfg72vmhHsc1gVDuVkNGnmJZCktGrh5CUiG3A\"]},\"contracts/elixir-periphery/base/Multicall.sol\":{\"keccak256\":\"0x3acc1acf20b9f218e68706d90f71b28d63fbca91b8a6b5445613e12d5c98aac6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c4414bcad1d2971596866d1dc95790954fac1ca9e772d9864785496348083839\",\"dweb:/ipfs/QmXeTSwz3446DddKoZSaY1vZ4mNsMvdF4zAeX4ANoMxhjT\"]},\"contracts/elixir-periphery/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x1d0175136fda60c5e1b6aab6dfa4a35856717413d754d0750eb75866f3f5e43f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8e19496cd2a7239e9e869bafbfb9f762691a9ab52f169b579f11d752d7df79a5\",\"dweb:/ipfs/QmTaLVPUVMGp4ZywHwpFupnz2873NPyqYs3EzbJTHpVNSA\"]},\"contracts/elixir-periphery/base/PeripheryPayments.sol\":{\"keccak256\":\"0x2fbe56fb8efa036258fb1eb651b1aa426c03e6483ec271f2fa1291d7d6030724\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0f5c8e95ec1e7ed22f7bbc35e18905ced294231e3c34b010448b1a841d466ba9\",\"dweb:/ipfs/QmZHnDNLBcMY8CFoa8dvrkdCHTXNNMsX6RcT1y1vHNEWzc\"]},\"contracts/elixir-periphery/base/PeripheryPaymentsWithFee.sol\":{\"keccak256\":\"0xdba77a2ccc0d510df720c667b59b0d3c5ee4b6656c731afd7a34effd643a59e4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7a3f9d2bc6dee42d50626bfa4a3e33bf85c3085050ef989d870932af2caaaea8\",\"dweb:/ipfs/QmSQJHrGecUpihnDPYViMArbJgBRQ13DQALeXEUtVH7Lpt\"]},\"contracts/elixir-periphery/base/PeripheryValidation.sol\":{\"keccak256\":\"0x439687955aa8549b51cabaeba892a28730e3f7756317dbc48fa562cd945fee5a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bc8a557487299a2b451f3e19d5d60f025898b7e302307af2a4fe4e3db3865b7a\",\"dweb:/ipfs/Qmb4WLpfFqguv1Jou3TfLNzErcZuLDnaqCWxnbuWjPewqJ\"]},\"contracts/elixir-periphery/base/SelfPermit.sol\":{\"keccak256\":\"0x93b6b25fba6b55918c18fd5d55ddb8a85336dcbb4773c3d7ab6d486960c9a665\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://fd2a053076cdd2a7fbd4ba498c9a493cd173cba860ead6139eb9e5c3fe60f067\",\"dweb:/ipfs/QmQwpbEx5aMbJAXeKGeA43qNGcCAYMz8ng1vwG5z4SCqv1\"]},\"contracts/elixir-periphery/interfaces/IMulticall.sol\":{\"keccak256\":\"0x76aeef8a8cd237f1bd8fb67f21e1734ba5c294b522c1932ce336f72fe41e5355\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b577b8f8e1b2767f218d0a1d78f7cc4d7b24ccd01ed7422a7129f9ae465edff\",\"dweb:/ipfs/QmVUzqSeAXf9Urwc1tseh1sW3pNz6z36vEYYYAGTNAnDWf\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x8e0cdb6280728619c44a8220996512b81e85f6fa7bc5373db742ea953a81eda8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0748123e32874d0e1e405a463fafcf98f686fac0055da2e13bfdaa0db917766\",\"dweb:/ipfs/QmRZPF69X1e6T3yT2z8HTgzEtXHTVScqzoEMbfvp5Niggq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPaymentsWithFee.sol\":{\"keccak256\":\"0x55bddad9998fa9ac8feace5b1f2e43b31c63bb51e5fbcbf4382584e8725bb307\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5292794b4e3817769c19db8067db4766397d857090c65caf2b8cbf4ee3e9e04e\",\"dweb:/ipfs/QmZvwFxW24eravpmBVRoZ33giLyJURnv76rJ1Nj3QubpdS\"]},\"contracts/elixir-periphery/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0xb442ad31c8fef5c47ebb82b3b3f906d0a5dbca8eb26db90b287a4825bf53d595\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6e36e6e894083ad07e2ba62977a06db0874b8ed1f6eac705f4c9d89a410f54ea\",\"dweb:/ipfs/QmWLWTuKrcCzxZeedLpUG3c8jjFLs5gLmvt35Ysp2uc9c6\"]},\"contracts/elixir-periphery/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x3cb7ef4c1c9bd18d8f1cd9cd03b3dfdb369174bc5706759d4c2fd298d9ca41f8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f8260f4ab3203a1917c32651994ec7c4c3c15859c339b293323a2259be74d084\",\"dweb:/ipfs/QmQRaMPMTDZ67Ya9cccRzCcDtxrSdvYFdvLhYkmc9twd3P\"]},\"contracts/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x1495f5068f2b892668447889f379d87decb18c9369f4506df9d23edba9ccb4b7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6f322bead944abc1da0e75aba72c9e02b22f02c15712f49b212bb65869b406ca\",\"dweb:/ipfs/QmTZAqfg4EwuFAX61ZW4nA55sUbn3o2Qy3W55C3ghPUAWM\"]},\"contracts/elixir-periphery/interfaces/external/IWETH9.sol\":{\"keccak256\":\"0xa992da106a4a4ee9aca70fd30222480366e153411592c23defb169176f1aaf09\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://95eeaee1cae3d1fabaad9bd9f06d8310415e8d04951c44b019adcb47f428e833\",\"dweb:/ipfs/QmYnaMUiuMvikcuC92HWhWruuiMkvEx2eR7g7Y44PzHHKu\"]},\"contracts/elixir-periphery/libraries/BytesLib.sol\":{\"keccak256\":\"0xbf23f73b0ec504e799b3e8ea71063eaeec08d6e688c56951fc645afaf5c1e7fd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://863b16fdc6f8b9a22622fe4f9b991b4b7039db2beec8095134ed18ec4843683f\",\"dweb:/ipfs/QmatVX7apv6drzj8WvDjQs8sREGApz1U4pvhPnk6MCyPFT\"]},\"contracts/elixir-periphery/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xb2c39ec43afd1140b765a183017c52d02763f6ad1732cc8bd15b424cf60addf3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4991a734b128dee4821aaaca11279e2caa458128a436ee4b64ddd2483962223a\",\"dweb:/ipfs/QmbLtcN47cGXxbAua61GDp9PGz9bqru7UQPH2CJSgF1cjC\"]},\"contracts/elixir-periphery/libraries/Path.sol\":{\"keccak256\":\"0x13c1302a21dbc2bbac527052506140eb3ed342c3b83054e07d0040d22c3dd284\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed3ce8db752fabe37b23d6fd1205a35102f2f6e91ad14f42536538b6ea71ae08\",\"dweb:/ipfs/QmSpSmvuTcavQW3HixkdAcFhCyzLwSkHKNUa7RrEM47jet\"]},\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]},\"contracts/elixir-periphery/libraries/TransferHelper.sol\":{\"keccak256\":\"0xc7727a37285f7b260c7b6a1f42655da9b6a1765dcb7f57bcba31627d9c2ec978\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://22a8e896dbac834f895395fc5cac70e8f2bab8045b9e34fe479ed0e92dbd99a9\",\"dweb:/ipfs/QmZYbeZxEvD1nfoeozEkrWzLYTKuS5618fsEgoKTnDuM2L\"]},\"contracts/elixir-periphery/test/MockTimeSwapRouter.sol\":{\"keccak256\":\"0xb796322a73709294a9d255de98b61b008fc92c932ef025d504ffd66c53b99db4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://dbdc9328a3250428795ec6de50b699e1ec81c72cf0db6e899aefee0fa43104d2\",\"dweb:/ipfs/QmQkcFwm141XeVDkuskt7RWSvnbzTyVKCk5QmnwUL8TUBs\"]},\"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]},\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}"}},"contracts/elixir-periphery/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":"60a060405234801561001057600080fd5b506040516101a93803806101a98339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b031661014361006660003980606752506101436000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063994ea42c14610030575b600080fd5b61004d6004803603602081101561004657600080fd5b503561005f565b60408051918252519081900360200190f35b6000805a90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166399fbab88846040518263ffffffff1660e01b8152600401808281526020019150506101806040518083038186803b1580156100d757600080fd5b505afa1580156100eb573d6000803e3d6000fd5b505050506040513d61018081101561010257600080fd5b50505a90039291505056fea26469706673582212203dedb12e53267836472e6daf6f09971de1713c1f131b0d44252b31537268251d64736f6c63430007060033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1A9 CODESIZE SUB DUP1 PUSH2 0x1A9 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 0x143 PUSH2 0x66 PUSH1 0x0 CODECOPY DUP1 PUSH1 0x67 MSTORE POP PUSH2 0x143 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATASIZE 0xED 0xB1 0x2E MSTORE8 0x26 PUSH25 0x36472E6DAF6F09971DE1713C1F131B0D44252B31537268251D PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"126:510:108:-:0;;;258:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;258:144:108;338:56;;;;-1:-1:-1;;;;;;338:56:108;;;-1:-1:-1;;;;;126:510:108;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{"21327":[{"length":32,"start":103}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061002b5760003560e01c8063994ea42c14610030575b600080fd5b61004d6004803603602081101561004657600080fd5b503561005f565b60408051918252519081900360200190f35b6000805a90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166399fbab88846040518263ffffffff1660e01b8152600401808281526020019150506101806040518083038186803b1580156100d757600080fd5b505afa1580156100eb573d6000803e3d6000fd5b505050506040513d61018081101561010257600080fd5b50505a90039291505056fea26469706673582212203dedb12e53267836472e6daf6f09971de1713c1f131b0d44252b31537268251d64736f6c63430007060033","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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATASIZE 0xED 0xB1 0x2E MSTORE8 0x26 PUSH25 0x36472E6DAF6F09971DE1713C1F131B0D44252B31537268251D PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"126:510:108:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;410:223;;;;;;;;;;;;;;;;-1:-1:-1;410:223:108;;:::i;:::-;;;;;;;;;;;;;;;;;481:7;501:17;521:9;501:29;;541:26;:36;;;578:7;541:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;616:9:108;604:21;;;410:223;-1:-1:-1;;410:223:108: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/elixir-periphery/test/NonfungiblePositionManagerPositionsGasTest.sol\":\"NonfungiblePositionManagerPositionsGasTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x1731f38308b9364d3d18a34a4da72afe434ad49f99939d81300dab93a940c458\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1cf9728098907ca0140ddf5398b7cebb2e6b8a0487bb1cf8338a4da603989be7\",\"dweb:/ipfs/QmPt5nvaLrdbXLxzJNhX4fM8s2akbdUPTmxZQaN2ierJPA\"]},\"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0xf968ea5f5b29c4407b3337051b0fb2ea786b8a6e3f476d40cdde1cb9415b1735\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c92f629ddeb1a6bcec8b154e6619a492053a375db3a28b37bbcd49b35d4b171\",\"dweb:/ipfs/QmYRNQmFQ8gD3dkTQz85cEHwEkBuXW4F64HQB9MUUHHYse\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x8e0cdb6280728619c44a8220996512b81e85f6fa7bc5373db742ea953a81eda8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0748123e32874d0e1e405a463fafcf98f686fac0055da2e13bfdaa0db917766\",\"dweb:/ipfs/QmRZPF69X1e6T3yT2z8HTgzEtXHTVScqzoEMbfvp5Niggq\"]},\"contracts/elixir-periphery/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x0d3371b28c765f2ad1231c212ce395c91c925738f54e2280298bfd08b50a2c97\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://18a3777dc86b84fb192cf54fbefd444058f5a5adc13b1080f393ada3ee0a5a08\",\"dweb:/ipfs/QmabPex6ctJszwwNGGnS9Va6xqsN6MpcQC3M869rbwcGCo\"]},\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]},\"contracts/elixir-periphery/test/NonfungiblePositionManagerPositionsGasTest.sol\":{\"keccak256\":\"0xbdaa7c3298931d4367bafd33a2459a403527cb2662e79d78219766d07b92b208\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4e14bc0f1e65d88a6e48b9080e09f5e4d4bbf75028f08986f4310f4cac0cd94d\",\"dweb:/ipfs/QmSEZ4FtenhWXY2wu22YVXz7QUX2wn5FyDHCBbBcLFdUjQ\"]},\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]}},\"version\":1}"}},"contracts/elixir-periphery/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":"608060405234801561001057600080fd5b50611573806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063824134891161005b57806382413489146100fd578063ab34b0fc14610110578063bbe8f41914610130578063e6c4fbe01461014357610088565b8063333b19a81461008d57806343c57a27146100b75780636a816ff9146100d75780637059b38a146100ea575b600080fd5b6100a061009b366004611272565b610164565b6040516100ae9291906114bf565b60405180910390f35b6100ca6100c536600461145e565b61017a565b6040516100ae91906114db565b6100ca6100e536600461145e565b610191565b6100ca6100f83660046112ca565b6101b0565b6100a061010b36600461128c565b6101c3565b61012361011e366004611388565b6101db565b6040516100ae91906114b1565b6100ca61013e36600461128c565b6101ee565b610156610151366004611272565b61020a565b6040516100ae9291906114e4565b6000806101708361021f565b915091505b915091565b600061018885858585610565565b95945050505050565b6000805a90506101a386868686610565565b505a900395945050505050565b60006101bc838361065c565b9392505050565b6000806101d0848461073d565b915091509250929050565b60006101e682610b53565b90505b919050565b6000805a90506101fe848461073d565b50505a90039392505050565b60008061021683610c0f565b93429350915050565b6000806000806000856001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561026057600080fd5b505afa158015610274573d6000803e3d6000fd5b505050506040513d60e081101561028a57600080fd5b50602081015160408201516060909201519094509092509050600161ffff8216116102e2576040805162461bcd60e51b81526020600482015260036024820152624e454f60e81b604482015290519081900360640190fd5b6000806000886001600160a01b031663252c09d7866040518263ffffffff1660e01b8152600401808261ffff16815260200191505060a06040518083038186803b15801561032f57600080fd5b505afa158015610343573d6000803e3d6000fd5b505050506040513d60a081101561035957600080fd5b508051602082015160409092015190945090925090504263ffffffff908116908416146103f75785896001600160a01b0316631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ba57600080fd5b505afa1580156103ce573d6000803e3d6000fd5b505050506040513d60208110156103e457600080fd5b5051909850965061017595505050505050565b60008461ffff1660018661ffff168861ffff1601038161041357fe5b0690506000806000808d6001600160a01b031663252c09d7866040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b15801561046057600080fd5b505afa158015610474573d6000803e3d6000fd5b505050506040513d60a081101561048a57600080fd5b5080516020820151604083015160609093015191965094509092509050806104df576040805162461bcd60e51b81526020600482015260036024820152624f4e4960e81b604482015290519081900360640190fd5b83880363ffffffff811684890360060b816104f657fe5b059b50600077ffffffffffffffffffffffffffffffffffffffff0000000084890360201b1663ffffffff83166001600160a01b030277ffffffffffffffffffffffffffffffffffffffffffffffff168161054c57fe5b9d9f50909c049c50505050505050505050505050915091565b60008061057186610dde565b90506001600160801b036001600160a01b038216116105e0576001600160a01b03808216800290848116908616106105c0576105bb600160c01b876001600160801b031683611110565b6105d8565b6105d881876001600160801b0316600160c01b611110565b925050610653565b60006105ff6001600160a01b0383168068010000000000000000611110565b9050836001600160a01b0316856001600160a01b03161061063757610632600160801b876001600160801b031683611110565b61064f565b61064f81876001600160801b0316600160801b611110565b9250505b50949350505050565b6000815160018451031461069c576040805162461bcd60e51b8152602060048201526002602482015261111360f21b604482015290519081900360640190fd5b60015b82518111610736578381815181106106b357fe5b60200260200101516001600160a01b03168460018303815181106106d357fe5b60200260200101516001600160a01b03161061070d578260018203815181106106f857fe5b602002602001015160020b820391508161072d565b82600182038151811061071c57fe5b602002602001015160020b82019150815b5060010161069f565b5092915050565b60008063ffffffff831661077d576040805162461bcd60e51b8152602060048201526002602482015261042560f41b604482015290519081900360640190fd5b60408051600280825260608201835260009260208301908036833701905050905083816000815181106107ac57fe5b602002602001019063ffffffff16908163ffffffff16815250506000816001815181106107d557fe5b63ffffffff90921660209283029190910182015260405163883bdbfd60e01b81526004810182815283516024830152835160009384936001600160a01b038b169363883bdbfd9388939192839260449091019185820191028083838b5b8381101561084a578181015183820152602001610832565b505050509050019250505060006040518083038186803b15801561086d57600080fd5b505afa158015610881573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260608110156108aa57600080fd5b81019080805160405193929190846401000000008211156108ca57600080fd5b9083019060208201858111156108df57600080fd5b82518660208202830111640100000000821117156108fc57600080fd5b82525081516020918201928201910280838360005b83811015610929578181015183820152602001610911565b505050509050016040526020018051604051939291908464010000000082111561095257600080fd5b90830190602082018581111561096757600080fd5b825186602082028301116401000000008211171561098457600080fd5b82525081516020918201928201910280838360005b838110156109b1578181015183820152602001610999565b50505050905001604052602001805160405193929190846401000000008211156109da57600080fd5b9083019060208201858111156109ef57600080fd5b8251866020820283011164010000000082111715610a0c57600080fd5b82525081516020918201928201910280838360005b83811015610a39578181015183820152602001610a21565b505050509050016040525050505091509150600082600081518110610a5a57fe5b602002602001015183600181518110610a6f57fe5b6020026020010151039050600082600081518110610a8957fe5b602002602001015183600181518110610a9e57fe5b60200260200101510390508763ffffffff168260060b81610abb57fe5b05965060008260060b128015610ae557508763ffffffff168260060b81610ade57fe5b0760060b15155b15610af257600019909601955b63ffffffff88166001600160a01b030277ffffffffffffffffffffffffffffffffffffffff00000000602083901b1677ffffffffffffffffffffffffffffffffffffffffffffffff821681610b4357fe5b0496505050505050509250929050565b6000806000805b8451811015610bd657848181518110610b6f57fe5b6020026020010151602001516001600160801b0316858281518110610b9057fe5b60200260200101516000015160020b0283019250848181518110610bb057fe5b6020026020010151602001516001600160801b0316820191508080600101915050610b5a565b50808281610be057fe5b059250600082128015610bfb5750808281610bf757fe5b0715155b15610c0857600019909201915b5050919050565b6000806000836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610c4d57600080fd5b505afa158015610c61573d6000803e3d6000fd5b505050506040513d60e0811015610c7757600080fd5b506040810151606090910151909250905061ffff8116610cc3576040805162461bcd60e51b81526020600482015260026024820152614e4960f01b604482015290519081900360640190fd5b600080856001600160a01b031663252c09d78461ffff168660010161ffff1681610ce957fe5b066040518263ffffffff1660e01b8152600401808261ffff16815260200191505060a06040518083038186803b158015610d2257600080fd5b505afa158015610d36573d6000803e3d6000fd5b505050506040513d60a0811015610d4c57600080fd5b508051606090910151909250905080610dd357856001600160a01b031663252c09d760006040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b158015610da457600080fd5b505afa158015610db8573d6000803e3d6000fd5b505050506040513d60a0811015610dce57600080fd5b505191505b504203949350505050565b60008060008360020b12610df5578260020b610dfd565b8260020b6000035b9050620d89e8811115610e3b576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216610e4f57600160801b610e61565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610e95576ffff97272373d413259a46990580e213a0260801c5b6004821615610eb4576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615610ed3576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615610ef2576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615610f11576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615610f30576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615610f4f576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615610f6f576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615610f8f576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615610faf576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615610fcf576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615610fef576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561100f576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161561102f576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561104f576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611070576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611090576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156110af576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156110cc576b048a170391f7dc42444e8fa20260801c5b60008460020b13156110e75780600019816110e357fe5b0490505b6401000000008106156110fb5760016110fe565b60005b60ff16602082901c0192505050919050565b6000808060001985870986860292508281109083900303905080611146576000841161113b57600080fd5b5082900490506101bc565b80841161115257600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b80356001600160a01b03811681146101e957600080fd5b600082601f8301126111e6578081fd5b813560206111fb6111f68361151f565b6114fb565b8281528181019085830183850287018401881015611217578586fd5b855b8581101561123c5761122a82611249565b84529284019290840190600101611219565b5090979650505050505050565b8035600281900b81146101e957600080fd5b80356001600160801b03811681146101e957600080fd5b600060208284031215611283578081fd5b6101bc826111bf565b6000806040838503121561129e578081fd5b6112a7836111bf565b9150602083013563ffffffff811681146112bf578182fd5b809150509250929050565b600080604083850312156112dc578182fd5b823567ffffffffffffffff808211156112f3578384fd5b818501915085601f830112611306578384fd5b813560206113166111f68361151f565b82815281810190858301838502870184018b1015611332578889fd5b8896505b8487101561135b57611347816111bf565b835260019690960195918301918301611336565b5096505086013592505080821115611371578283fd5b5061137e858286016111d6565b9150509250929050565b6000602080838503121561139a578182fd5b823567ffffffffffffffff808211156113b1578384fd5b818501915085601f8301126113c4578384fd5b81356113d26111f68261151f565b818152848101908486016040808502870188018b10156113f0578889fd5b8896505b8487101561144f5780828c03121561140a578889fd5b8051818101818110888211171561141d57fe5b825261142883611249565b815261143589840161125b565b818a015284526001969096019592870192908101906113f4565b50909998505050505050505050565b60008060008060808587031215611473578182fd5b61147c85611249565b935061148a6020860161125b565b9250611498604086016111bf565b91506114a6606086016111bf565b905092959194509250565b60029190910b815260200190565b60029290920b82526001600160801b0316602082015260400190565b90815260200190565b63ffffffff92831681529116602082015260400190565b60405181810167ffffffffffffffff8111828210171561151757fe5b604052919050565b600067ffffffffffffffff82111561153357fe5b506020908102019056fea26469706673582212202d6cccf7b6851fa809e8d669f6be0fd84c2cdcc2b90c02abba822dc3ac9cb12b64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1573 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 0x1272 JUMP JUMPDEST PUSH2 0x164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAE SWAP3 SWAP2 SWAP1 PUSH2 0x14BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCA PUSH2 0xC5 CALLDATASIZE PUSH1 0x4 PUSH2 0x145E JUMP JUMPDEST PUSH2 0x17A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAE SWAP2 SWAP1 PUSH2 0x14DB JUMP JUMPDEST PUSH2 0xCA PUSH2 0xE5 CALLDATASIZE PUSH1 0x4 PUSH2 0x145E JUMP JUMPDEST PUSH2 0x191 JUMP JUMPDEST PUSH2 0xCA PUSH2 0xF8 CALLDATASIZE PUSH1 0x4 PUSH2 0x12CA JUMP JUMPDEST PUSH2 0x1B0 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x10B CALLDATASIZE PUSH1 0x4 PUSH2 0x128C JUMP JUMPDEST PUSH2 0x1C3 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x11E CALLDATASIZE PUSH1 0x4 PUSH2 0x1388 JUMP JUMPDEST PUSH2 0x1DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAE SWAP2 SWAP1 PUSH2 0x14B1 JUMP JUMPDEST PUSH2 0xCA PUSH2 0x13E CALLDATASIZE PUSH1 0x4 PUSH2 0x128C JUMP JUMPDEST PUSH2 0x1EE JUMP JUMPDEST PUSH2 0x156 PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x1272 JUMP JUMPDEST PUSH2 0x20A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAE SWAP3 SWAP2 SWAP1 PUSH2 0x14E4 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 0x565 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x1A3 DUP7 DUP7 DUP7 DUP7 PUSH2 0x565 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BC DUP4 DUP4 PUSH2 0x65C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D0 DUP5 DUP5 PUSH2 0x73D JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E6 DUP3 PUSH2 0xB53 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x1FE DUP5 DUP5 PUSH2 0x73D JUMP JUMPDEST POP POP GAS SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x216 DUP4 PUSH2 0xC0F JUMP JUMPDEST SWAP4 TIMESTAMP SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x274 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 0x28A 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 0x2E2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4E454F PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x343 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x359 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 0x3F7 JUMPI DUP6 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x3BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3CE 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 0x3E4 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 0x413 JUMPI INVALID JUMPDEST MOD SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x460 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x474 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x48A 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 0x4DF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4F4E49 PUSH1 0xE8 SHL 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 0x4F6 JUMPI INVALID JUMPDEST SDIV SWAP12 POP PUSH1 0x0 PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 DUP5 DUP10 SUB PUSH1 0x20 SHL AND PUSH4 0xFFFFFFFF DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH2 0x54C 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 0x571 DUP7 PUSH2 0xDDE JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND GT PUSH2 0x5E0 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND DUP1 MUL SWAP1 DUP5 DUP2 AND SWAP1 DUP7 AND LT PUSH2 0x5C0 JUMPI PUSH2 0x5BB PUSH1 0x1 PUSH1 0xC0 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP4 PUSH2 0x1110 JUMP JUMPDEST PUSH2 0x5D8 JUMP JUMPDEST PUSH2 0x5D8 DUP2 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0xC0 SHL PUSH2 0x1110 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x653 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5FF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP1 PUSH9 0x10000000000000000 PUSH2 0x1110 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x637 JUMPI PUSH2 0x632 PUSH1 0x1 PUSH1 0x80 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP4 PUSH2 0x1110 JUMP JUMPDEST PUSH2 0x64F JUMP JUMPDEST PUSH2 0x64F DUP2 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x1110 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 0x69C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x1113 PUSH1 0xF2 SHL 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 0x736 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x6B3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 DUP4 SUB DUP2 MLOAD DUP2 LT PUSH2 0x6D3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x70D JUMPI DUP3 PUSH1 0x1 DUP3 SUB DUP2 MLOAD DUP2 LT PUSH2 0x6F8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP3 SUB SWAP2 POP DUP2 PUSH2 0x72D JUMP JUMPDEST DUP3 PUSH1 0x1 DUP3 SUB DUP2 MLOAD DUP2 LT PUSH2 0x71C 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 0x69F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH4 0xFFFFFFFF DUP4 AND PUSH2 0x77D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x425 PUSH1 0xF4 SHL 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 0x7AC 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 0x7D5 JUMPI INVALID JUMPDEST PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x883BDBFD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP4 ADD MSTORE DUP4 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x84A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x832 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 0x86D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x881 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 PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8AA 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 0x8CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x8DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x8FC 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 0x929 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x911 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 0x952 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x967 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x984 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 0x9B1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x999 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 0x9DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x9EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0xA0C 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 0xA39 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA21 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xA5A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xA6F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xA89 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xA9E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB SWAP1 POP DUP8 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0xABB JUMPI INVALID JUMPDEST SDIV SWAP7 POP PUSH1 0x0 DUP3 PUSH1 0x6 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0xAE5 JUMPI POP DUP8 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0xADE JUMPI INVALID JUMPDEST SMOD PUSH1 0x6 SIGNEXTEND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xAF2 JUMPI PUSH1 0x0 NOT SWAP1 SWAP7 ADD SWAP6 JUMPDEST PUSH4 0xFFFFFFFF DUP9 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x20 DUP4 SWAP1 SHL AND PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 PUSH2 0xB43 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 0xBD6 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xB6F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB90 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 0xBB0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 ADD SWAP2 POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0xB5A JUMP JUMPDEST POP DUP1 DUP3 DUP2 PUSH2 0xBE0 JUMPI INVALID JUMPDEST SDIV SWAP3 POP PUSH1 0x0 DUP3 SLT DUP1 ISZERO PUSH2 0xBFB JUMPI POP DUP1 DUP3 DUP2 PUSH2 0xBF7 JUMPI INVALID JUMPDEST SMOD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xC08 JUMPI PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xC4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC61 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 0xC77 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 0xCC3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4E49 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x252C09D7 DUP5 PUSH2 0xFFFF AND DUP7 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0xCE9 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 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD36 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xD4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x60 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP1 PUSH2 0xDD3 JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xDCE 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 0xDF5 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0xDFD JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0xE3B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0xE4F JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0xE61 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0xE95 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0xEB4 JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0xED3 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0xEF2 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0xF11 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0xF30 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0xF4F JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0xF6F JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0xF8F JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0xFAF JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0xFCF JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0xFEF JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x100F JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x102F JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x104F JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x1070 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x1090 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x10AF JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x10CC JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x10E7 JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x10E3 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x10FB JUMPI PUSH1 0x1 PUSH2 0x10FE 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 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x1146 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x113B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x1BC JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x1152 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x11E6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x11FB PUSH2 0x11F6 DUP4 PUSH2 0x151F JUMP JUMPDEST PUSH2 0x14FB JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD DUP4 DUP6 MUL DUP8 ADD DUP5 ADD DUP9 LT ISZERO PUSH2 0x1217 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x123C JUMPI PUSH2 0x122A DUP3 PUSH2 0x1249 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1219 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1283 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1BC DUP3 PUSH2 0x11BF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x129E JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x12A7 DUP4 PUSH2 0x11BF JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x12BF 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 0x12DC JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x12F3 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1306 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x1316 PUSH2 0x11F6 DUP4 PUSH2 0x151F JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD DUP4 DUP6 MUL DUP8 ADD DUP5 ADD DUP12 LT ISZERO PUSH2 0x1332 JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x135B JUMPI PUSH2 0x1347 DUP2 PUSH2 0x11BF JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x1336 JUMP JUMPDEST POP SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x1371 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x137E DUP6 DUP3 DUP7 ADD PUSH2 0x11D6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x139A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x13B1 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x13C4 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13D2 PUSH2 0x11F6 DUP3 PUSH2 0x151F 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 0x13F0 JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x144F JUMPI DUP1 DUP3 DUP13 SUB SLT ISZERO PUSH2 0x140A JUMPI DUP9 DUP10 REVERT JUMPDEST DUP1 MLOAD DUP2 DUP2 ADD DUP2 DUP2 LT DUP9 DUP3 GT OR ISZERO PUSH2 0x141D JUMPI INVALID JUMPDEST DUP3 MSTORE PUSH2 0x1428 DUP4 PUSH2 0x1249 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x1435 DUP10 DUP5 ADD PUSH2 0x125B JUMP JUMPDEST DUP2 DUP11 ADD MSTORE DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP8 ADD SWAP3 SWAP1 DUP2 ADD SWAP1 PUSH2 0x13F4 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 0x1473 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x147C DUP6 PUSH2 0x1249 JUMP JUMPDEST SWAP4 POP PUSH2 0x148A PUSH1 0x20 DUP7 ADD PUSH2 0x125B JUMP JUMPDEST SWAP3 POP PUSH2 0x1498 PUSH1 0x40 DUP7 ADD PUSH2 0x11BF JUMP JUMPDEST SWAP2 POP PUSH2 0x14A6 PUSH1 0x60 DUP7 ADD PUSH2 0x11BF 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB 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 0x1517 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1533 JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D PUSH13 0xCCF7B6851FA809E8D669F6BE0F 0xD8 0x4C 0x2C 0xDC 0xC2 0xB9 0xC MUL 0xAB 0xBA DUP3 0x2D 0xC3 0xAC SWAP13 0xB1 0x2B PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"132:2096:109:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6528:178","statements":[{"nodeType":"YulBlock","src":"6:3:178","statements":[]},{"body":{"nodeType":"YulBlock","src":"65:147:178","statements":[{"nodeType":"YulAssignment","src":"75:29:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"97:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"84:12:178"},"nodeType":"YulFunctionCall","src":"84:20:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"75:5:178"}]},{"body":{"nodeType":"YulBlock","src":"190:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"199:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"202:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"192:6:178"},"nodeType":"YulFunctionCall","src":"192:12:178"},"nodeType":"YulExpressionStatement","src":"192:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"126:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"137:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"144:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"133:3:178"},"nodeType":"YulFunctionCall","src":"133:54:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"123:2:178"},"nodeType":"YulFunctionCall","src":"123:65:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"116:6:178"},"nodeType":"YulFunctionCall","src":"116:73:178"},"nodeType":"YulIf","src":"113:2:178"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"44:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"55:5:178","type":""}],"src":"14:198:178"},{"body":{"nodeType":"YulBlock","src":"285:641:178","statements":[{"body":{"nodeType":"YulBlock","src":"334:24:178","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"343:5:178"},{"name":"array","nodeType":"YulIdentifier","src":"350:5:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"336:6:178"},"nodeType":"YulFunctionCall","src":"336:20:178"},"nodeType":"YulExpressionStatement","src":"336:20:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"313:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"321:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"309:3:178"},"nodeType":"YulFunctionCall","src":"309:17:178"},{"name":"end","nodeType":"YulIdentifier","src":"328:3:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"305:3:178"},"nodeType":"YulFunctionCall","src":"305:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"298:6:178"},"nodeType":"YulFunctionCall","src":"298:35:178"},"nodeType":"YulIf","src":"295:2:178"},{"nodeType":"YulVariableDeclaration","src":"367:30:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"390:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"377:12:178"},"nodeType":"YulFunctionCall","src":"377:20:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"371:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"406:14:178","value":{"kind":"number","nodeType":"YulLiteral","src":"416:4:178","type":"","value":"0x20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"410:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"429:76:178","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"501:2:178"}],"functionName":{"name":"array_allocation_size_t_array$_t_address_$dyn","nodeType":"YulIdentifier","src":"455:45:178"},"nodeType":"YulFunctionCall","src":"455:49:178"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"440:14:178"},"nodeType":"YulFunctionCall","src":"440:65:178"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"433:3:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"514:16:178","value":{"name":"dst","nodeType":"YulIdentifier","src":"527:3:178"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"518:5:178","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"546:3:178"},{"name":"_1","nodeType":"YulIdentifier","src":"551:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"539:6:178"},"nodeType":"YulFunctionCall","src":"539:15:178"},"nodeType":"YulExpressionStatement","src":"539:15:178"},{"nodeType":"YulAssignment","src":"563:19:178","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"574:3:178"},{"name":"_2","nodeType":"YulIdentifier","src":"579:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"570:3:178"},"nodeType":"YulFunctionCall","src":"570:12:178"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"563:3:178"}]},{"nodeType":"YulVariableDeclaration","src":"591:26:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"606:6:178"},{"name":"_2","nodeType":"YulIdentifier","src":"614:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"602:3:178"},"nodeType":"YulFunctionCall","src":"602:15:178"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"595:3:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"672:24:178","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"681:5:178"},{"name":"array","nodeType":"YulIdentifier","src":"688:5:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"674:6:178"},"nodeType":"YulFunctionCall","src":"674:20:178"},"nodeType":"YulExpressionStatement","src":"674:20:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"640:6:178"},{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"652:2:178"},{"name":"_2","nodeType":"YulIdentifier","src":"656:2:178"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"648:3:178"},"nodeType":"YulFunctionCall","src":"648:11:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"636:3:178"},"nodeType":"YulFunctionCall","src":"636:24:178"},{"name":"_2","nodeType":"YulIdentifier","src":"662:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"632:3:178"},"nodeType":"YulFunctionCall","src":"632:33:178"},{"name":"end","nodeType":"YulIdentifier","src":"667:3:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"629:2:178"},"nodeType":"YulFunctionCall","src":"629:42:178"},"nodeType":"YulIf","src":"626:2:178"},{"nodeType":"YulVariableDeclaration","src":"705:14:178","value":{"name":"array","nodeType":"YulIdentifier","src":"714:5:178"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"709:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"773:124:178","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"794:3:178"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"818:3:178"}],"functionName":{"name":"abi_decode_t_int24","nodeType":"YulIdentifier","src":"799:18:178"},"nodeType":"YulFunctionCall","src":"799:23:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"787:6:178"},"nodeType":"YulFunctionCall","src":"787:36:178"},"nodeType":"YulExpressionStatement","src":"787:36:178"},{"nodeType":"YulAssignment","src":"836:19:178","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"847:3:178"},{"name":"_2","nodeType":"YulIdentifier","src":"852:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"843:3:178"},"nodeType":"YulFunctionCall","src":"843:12:178"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"836:3:178"}]},{"nodeType":"YulAssignment","src":"868:19:178","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"879:3:178"},{"name":"_2","nodeType":"YulIdentifier","src":"884:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"875:3:178"},"nodeType":"YulFunctionCall","src":"875:12:178"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"868:3:178"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"739:1:178"},{"name":"_1","nodeType":"YulIdentifier","src":"742:2:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"736:2:178"},"nodeType":"YulFunctionCall","src":"736:9:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"746:18:178","statements":[{"nodeType":"YulAssignment","src":"748:14:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"757:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"760:1:178","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"753:3:178"},"nodeType":"YulFunctionCall","src":"753:9:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"748:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"732:3:178","statements":[]},"src":"728:169:178"},{"nodeType":"YulAssignment","src":"906:14:178","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"915:5:178"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"906:5:178"}]}]},"name":"abi_decode_t_array$_t_int24_$dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"259:6:178","type":""},{"name":"end","nodeType":"YulTypedName","src":"267:3:178","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"275:5:178","type":""}],"src":"217:709:178"},{"body":{"nodeType":"YulBlock","src":"980:113:178","statements":[{"nodeType":"YulAssignment","src":"990:29:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1012:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"999:12:178"},"nodeType":"YulFunctionCall","src":"999:20:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"990:5:178"}]},{"body":{"nodeType":"YulBlock","src":"1071:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1080:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1083:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1073:6:178"},"nodeType":"YulFunctionCall","src":"1073:12:178"},"nodeType":"YulExpressionStatement","src":"1073:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1041:5:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1059:1:178","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"1062:5:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"1048:10:178"},"nodeType":"YulFunctionCall","src":"1048:20:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1038:2:178"},"nodeType":"YulFunctionCall","src":"1038:31:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1031:6:178"},"nodeType":"YulFunctionCall","src":"1031:39:178"},"nodeType":"YulIf","src":"1028:2:178"}]},"name":"abi_decode_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"959:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"970:5:178","type":""}],"src":"931:162:178"},{"body":{"nodeType":"YulBlock","src":"1149:139:178","statements":[{"nodeType":"YulAssignment","src":"1159:29:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1181:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1168:12:178"},"nodeType":"YulFunctionCall","src":"1168:20:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1159:5:178"}]},{"body":{"nodeType":"YulBlock","src":"1266:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1275:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1278:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1268:6:178"},"nodeType":"YulFunctionCall","src":"1268:12:178"},"nodeType":"YulExpressionStatement","src":"1268:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1210:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1221:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"1228:34:178","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1217:3:178"},"nodeType":"YulFunctionCall","src":"1217:46:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1207:2:178"},"nodeType":"YulFunctionCall","src":"1207:57:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1200:6:178"},"nodeType":"YulFunctionCall","src":"1200:65:178"},"nodeType":"YulIf","src":"1197:2:178"}]},"name":"abi_decode_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1128:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1139:5:178","type":""}],"src":"1098:190:178"},{"body":{"nodeType":"YulBlock","src":"1363:128:178","statements":[{"body":{"nodeType":"YulBlock","src":"1409:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1418:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1426:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1411:6:178"},"nodeType":"YulFunctionCall","src":"1411:22:178"},"nodeType":"YulExpressionStatement","src":"1411:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1384:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"1393:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1380:3:178"},"nodeType":"YulFunctionCall","src":"1380:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"1405:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1376:3:178"},"nodeType":"YulFunctionCall","src":"1376:32:178"},"nodeType":"YulIf","src":"1373:2:178"},{"nodeType":"YulAssignment","src":"1444:41:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1475:9:178"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1454:20:178"},"nodeType":"YulFunctionCall","src":"1454:31:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1444:6:178"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1329:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1340:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1352:6:178","type":""}],"src":"1293:198:178"},{"body":{"nodeType":"YulBlock","src":"1582:286:178","statements":[{"body":{"nodeType":"YulBlock","src":"1628:26:178","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1637:6:178"},{"name":"value1","nodeType":"YulIdentifier","src":"1645:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1630:6:178"},"nodeType":"YulFunctionCall","src":"1630:22:178"},"nodeType":"YulExpressionStatement","src":"1630:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1603:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"1612:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1599:3:178"},"nodeType":"YulFunctionCall","src":"1599:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"1624:2:178","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1595:3:178"},"nodeType":"YulFunctionCall","src":"1595:32:178"},"nodeType":"YulIf","src":"1592:2:178"},{"nodeType":"YulAssignment","src":"1663:41:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1694:9:178"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1673:20:178"},"nodeType":"YulFunctionCall","src":"1673:31:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1663:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"1713:45:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1743:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1754:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1739:3:178"},"nodeType":"YulFunctionCall","src":"1739:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1726:12:178"},"nodeType":"YulFunctionCall","src":"1726:32:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1717:5:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"1812:26:178","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1821:6:178"},{"name":"value1","nodeType":"YulIdentifier","src":"1829:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1814:6:178"},"nodeType":"YulFunctionCall","src":"1814:22:178"},"nodeType":"YulExpressionStatement","src":"1814:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1780:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1791:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"1798:10:178","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1787:3:178"},"nodeType":"YulFunctionCall","src":"1787:22:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1777:2:178"},"nodeType":"YulFunctionCall","src":"1777:33:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1770:6:178"},"nodeType":"YulFunctionCall","src":"1770:41:178"},"nodeType":"YulIf","src":"1767:2:178"},{"nodeType":"YulAssignment","src":"1847:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"1857:5:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1847:6:178"}]}]},"name":"abi_decode_tuple_t_addresst_uint32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1540:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1551:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1563:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1571:6:178","type":""}],"src":"1496:372:178"},{"body":{"nodeType":"YulBlock","src":"2008:1087:178","statements":[{"body":{"nodeType":"YulBlock","src":"2054:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2063:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2071:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2056:6:178"},"nodeType":"YulFunctionCall","src":"2056:22:178"},"nodeType":"YulExpressionStatement","src":"2056:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2029:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"2038:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2025:3:178"},"nodeType":"YulFunctionCall","src":"2025:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"2050:2:178","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2021:3:178"},"nodeType":"YulFunctionCall","src":"2021:32:178"},"nodeType":"YulIf","src":"2018:2:178"},{"nodeType":"YulVariableDeclaration","src":"2089:37:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2116:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2103:12:178"},"nodeType":"YulFunctionCall","src":"2103:23:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2093:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2135:28:178","value":{"kind":"number","nodeType":"YulLiteral","src":"2145:18:178","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2139:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2190:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2199:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2207:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2192:6:178"},"nodeType":"YulFunctionCall","src":"2192:22:178"},"nodeType":"YulExpressionStatement","src":"2192:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2178:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"2186:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2175:2:178"},"nodeType":"YulFunctionCall","src":"2175:14:178"},"nodeType":"YulIf","src":"2172:2:178"},{"nodeType":"YulVariableDeclaration","src":"2225:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2239:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"2250:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2235:3:178"},"nodeType":"YulFunctionCall","src":"2235:22:178"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2229:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2305:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2314:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2322:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2307:6:178"},"nodeType":"YulFunctionCall","src":"2307:22:178"},"nodeType":"YulExpressionStatement","src":"2307:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2284:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"2288:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2280:3:178"},"nodeType":"YulFunctionCall","src":"2280:13:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2295:7:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2276:3:178"},"nodeType":"YulFunctionCall","src":"2276:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2269:6:178"},"nodeType":"YulFunctionCall","src":"2269:35:178"},"nodeType":"YulIf","src":"2266:2:178"},{"nodeType":"YulVariableDeclaration","src":"2340:26:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2363:2:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2350:12:178"},"nodeType":"YulFunctionCall","src":"2350:16:178"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2344:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2375:14:178","value":{"kind":"number","nodeType":"YulLiteral","src":"2385:4:178","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"2379:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2398:76:178","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2470:2:178"}],"functionName":{"name":"array_allocation_size_t_array$_t_address_$dyn","nodeType":"YulIdentifier","src":"2424:45:178"},"nodeType":"YulFunctionCall","src":"2424:49:178"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"2409:14:178"},"nodeType":"YulFunctionCall","src":"2409:65:178"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"2402:3:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2483:16:178","value":{"name":"dst","nodeType":"YulIdentifier","src":"2496:3:178"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"2487:5:178","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2515:3:178"},{"name":"_3","nodeType":"YulIdentifier","src":"2520:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2508:6:178"},"nodeType":"YulFunctionCall","src":"2508:15:178"},"nodeType":"YulExpressionStatement","src":"2508:15:178"},{"nodeType":"YulAssignment","src":"2532:19:178","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2543:3:178"},{"name":"_4","nodeType":"YulIdentifier","src":"2548:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2539:3:178"},"nodeType":"YulFunctionCall","src":"2539:12:178"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"2532:3:178"}]},{"nodeType":"YulVariableDeclaration","src":"2560:22:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2575:2:178"},{"name":"_4","nodeType":"YulIdentifier","src":"2579:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2571:3:178"},"nodeType":"YulFunctionCall","src":"2571:11:178"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"2564:3:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2637:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2646:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2654:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2639:6:178"},"nodeType":"YulFunctionCall","src":"2639:22:178"},"nodeType":"YulExpressionStatement","src":"2639:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2605:2:178"},{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2613:2:178"},{"name":"_4","nodeType":"YulIdentifier","src":"2617:2:178"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2609:3:178"},"nodeType":"YulFunctionCall","src":"2609:11:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2601:3:178"},"nodeType":"YulFunctionCall","src":"2601:20:178"},{"name":"_4","nodeType":"YulIdentifier","src":"2623:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2597:3:178"},"nodeType":"YulFunctionCall","src":"2597:29:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2628:7:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2594:2:178"},"nodeType":"YulFunctionCall","src":"2594:42:178"},"nodeType":"YulIf","src":"2591:2:178"},{"nodeType":"YulVariableDeclaration","src":"2672:15:178","value":{"name":"value0","nodeType":"YulIdentifier","src":"2681:6:178"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"2676:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2741:126:178","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2762:3:178"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2788:3:178"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"2767:20:178"},"nodeType":"YulFunctionCall","src":"2767:25:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2755:6:178"},"nodeType":"YulFunctionCall","src":"2755:38:178"},"nodeType":"YulExpressionStatement","src":"2755:38:178"},{"nodeType":"YulAssignment","src":"2806:19:178","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2817:3:178"},{"name":"_4","nodeType":"YulIdentifier","src":"2822:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2813:3:178"},"nodeType":"YulFunctionCall","src":"2813:12:178"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"2806:3:178"}]},{"nodeType":"YulAssignment","src":"2838:19:178","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2849:3:178"},{"name":"_4","nodeType":"YulIdentifier","src":"2854:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2845:3:178"},"nodeType":"YulFunctionCall","src":"2845:12:178"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"2838:3:178"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2707:1:178"},{"name":"_3","nodeType":"YulIdentifier","src":"2710:2:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2704:2:178"},"nodeType":"YulFunctionCall","src":"2704:9:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2714:18:178","statements":[{"nodeType":"YulAssignment","src":"2716:14:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2725:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"2728:1:178","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2721:3:178"},"nodeType":"YulFunctionCall","src":"2721:9:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"2716:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"2700:3:178","statements":[]},"src":"2696:171:178"},{"nodeType":"YulAssignment","src":"2876:15:178","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"2886:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2876:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"2900:48:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2933:9:178"},{"name":"_4","nodeType":"YulIdentifier","src":"2944:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2929:3:178"},"nodeType":"YulFunctionCall","src":"2929:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2916:12:178"},"nodeType":"YulFunctionCall","src":"2916:32:178"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"2904:8:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2977:26:178","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2986:6:178"},{"name":"value1","nodeType":"YulIdentifier","src":"2994:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2979:6:178"},"nodeType":"YulFunctionCall","src":"2979:22:178"},"nodeType":"YulExpressionStatement","src":"2979:22:178"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"2963:8:178"},{"name":"_1","nodeType":"YulIdentifier","src":"2973:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2960:2:178"},"nodeType":"YulFunctionCall","src":"2960:16:178"},"nodeType":"YulIf","src":"2957:2:178"},{"nodeType":"YulAssignment","src":"3012:77:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3059:9:178"},{"name":"offset_1","nodeType":"YulIdentifier","src":"3070:8:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3055:3:178"},"nodeType":"YulFunctionCall","src":"3055:24:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3081:7:178"}],"functionName":{"name":"abi_decode_t_array$_t_int24_$dyn","nodeType":"YulIdentifier","src":"3022:32:178"},"nodeType":"YulFunctionCall","src":"3022:67:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3012:6:178"}]}]},"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:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1977:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1989:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1997:6:178","type":""}],"src":"1873:1222:178"},{"body":{"nodeType":"YulBlock","src":"3230:1277:178","statements":[{"nodeType":"YulVariableDeclaration","src":"3240:12:178","value":{"kind":"number","nodeType":"YulLiteral","src":"3250:2:178","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3244:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3297:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3306:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3314:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3299:6:178"},"nodeType":"YulFunctionCall","src":"3299:22:178"},"nodeType":"YulExpressionStatement","src":"3299:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3272:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"3281:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3268:3:178"},"nodeType":"YulFunctionCall","src":"3268:23:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3293:2:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3264:3:178"},"nodeType":"YulFunctionCall","src":"3264:32:178"},"nodeType":"YulIf","src":"3261:2:178"},{"nodeType":"YulVariableDeclaration","src":"3332:37:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3359:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3346:12:178"},"nodeType":"YulFunctionCall","src":"3346:23:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3336:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3378:28:178","value":{"kind":"number","nodeType":"YulLiteral","src":"3388:18:178","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3382:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3433:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3442:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3450:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3435:6:178"},"nodeType":"YulFunctionCall","src":"3435:22:178"},"nodeType":"YulExpressionStatement","src":"3435:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3421:6:178"},{"name":"_2","nodeType":"YulIdentifier","src":"3429:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3418:2:178"},"nodeType":"YulFunctionCall","src":"3418:14:178"},"nodeType":"YulIf","src":"3415:2:178"},{"nodeType":"YulVariableDeclaration","src":"3468:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3482:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"3493:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3478:3:178"},"nodeType":"YulFunctionCall","src":"3478:22:178"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"3472:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3548:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3557:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3565:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3550:6:178"},"nodeType":"YulFunctionCall","src":"3550:22:178"},"nodeType":"YulExpressionStatement","src":"3550:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3527:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"3531:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3523:3:178"},"nodeType":"YulFunctionCall","src":"3523:13:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3538:7:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3519:3:178"},"nodeType":"YulFunctionCall","src":"3519:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3512:6:178"},"nodeType":"YulFunctionCall","src":"3512:35:178"},"nodeType":"YulIf","src":"3509:2:178"},{"nodeType":"YulVariableDeclaration","src":"3583:26:178","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3606:2:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3593:12:178"},"nodeType":"YulFunctionCall","src":"3593:16:178"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"3587:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3618:76:178","value":{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"3690:2:178"}],"functionName":{"name":"array_allocation_size_t_array$_t_address_$dyn","nodeType":"YulIdentifier","src":"3644:45:178"},"nodeType":"YulFunctionCall","src":"3644:49:178"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"3629:14:178"},"nodeType":"YulFunctionCall","src":"3629:65:178"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"3622:3:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3703:16:178","value":{"name":"dst","nodeType":"YulIdentifier","src":"3716:3:178"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"3707:5:178","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3735:3:178"},{"name":"_4","nodeType":"YulIdentifier","src":"3740:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3728:6:178"},"nodeType":"YulFunctionCall","src":"3728:15:178"},"nodeType":"YulExpressionStatement","src":"3728:15:178"},{"nodeType":"YulAssignment","src":"3752:19:178","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3763:3:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3768:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3759:3:178"},"nodeType":"YulFunctionCall","src":"3759:12:178"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3752:3:178"}]},{"nodeType":"YulVariableDeclaration","src":"3780:22:178","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3795:2:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3799:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3791:3:178"},"nodeType":"YulFunctionCall","src":"3791:11:178"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"3784:3:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3811:14:178","value":{"kind":"number","nodeType":"YulLiteral","src":"3821:4:178","type":"","value":"0x40"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"3815:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3880:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3889:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3897:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3882:6:178"},"nodeType":"YulFunctionCall","src":"3882:22:178"},"nodeType":"YulExpressionStatement","src":"3882:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3848:2:178"},{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"3856:2:178"},{"name":"_5","nodeType":"YulIdentifier","src":"3860:2:178"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3852:3:178"},"nodeType":"YulFunctionCall","src":"3852:11:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3844:3:178"},"nodeType":"YulFunctionCall","src":"3844:20:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3866:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3840:3:178"},"nodeType":"YulFunctionCall","src":"3840:29:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3871:7:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3837:2:178"},"nodeType":"YulFunctionCall","src":"3837:42:178"},"nodeType":"YulIf","src":"3834:2:178"},{"nodeType":"YulVariableDeclaration","src":"3915:15:178","value":{"name":"value0","nodeType":"YulIdentifier","src":"3924:6:178"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3919:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3984:493:178","statements":[{"body":{"nodeType":"YulBlock","src":"4028:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4037:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"4045:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4030:6:178"},"nodeType":"YulFunctionCall","src":"4030:22:178"},"nodeType":"YulExpressionStatement","src":"4030:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4009:7:178"},{"name":"src","nodeType":"YulIdentifier","src":"4018:3:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4005:3:178"},"nodeType":"YulFunctionCall","src":"4005:17:178"},{"name":"_5","nodeType":"YulIdentifier","src":"4024:2:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4001:3:178"},"nodeType":"YulFunctionCall","src":"4001:26:178"},"nodeType":"YulIf","src":"3998:2:178"},{"nodeType":"YulVariableDeclaration","src":"4067:23:178","value":{"arguments":[{"name":"_5","nodeType":"YulIdentifier","src":"4087:2:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4081:5:178"},"nodeType":"YulFunctionCall","src":"4081:9:178"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"4071:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4103:33:178","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4125:6:178"},{"name":"_5","nodeType":"YulIdentifier","src":"4133:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4121:3:178"},"nodeType":"YulFunctionCall","src":"4121:15:178"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"4107:10:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"4199:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"4201:7:178"},"nodeType":"YulFunctionCall","src":"4201:9:178"},"nodeType":"YulExpressionStatement","src":"4201:9:178"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4158:10:178"},{"name":"_2","nodeType":"YulIdentifier","src":"4170:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4155:2:178"},"nodeType":"YulFunctionCall","src":"4155:18:178"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4178:10:178"},{"name":"memPtr","nodeType":"YulIdentifier","src":"4190:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4175:2:178"},"nodeType":"YulFunctionCall","src":"4175:22:178"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4152:2:178"},"nodeType":"YulFunctionCall","src":"4152:46:178"},"nodeType":"YulIf","src":"4149:2:178"},{"expression":{"arguments":[{"name":"_5","nodeType":"YulIdentifier","src":"4232:2:178"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4236:10:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4225:6:178"},"nodeType":"YulFunctionCall","src":"4225:22:178"},"nodeType":"YulExpressionStatement","src":"4225:22:178"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4267:6:178"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4294:3:178"}],"functionName":{"name":"abi_decode_t_int24","nodeType":"YulIdentifier","src":"4275:18:178"},"nodeType":"YulFunctionCall","src":"4275:23:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4260:6:178"},"nodeType":"YulFunctionCall","src":"4260:39:178"},"nodeType":"YulExpressionStatement","src":"4260:39:178"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4323:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"4331:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4319:3:178"},"nodeType":"YulFunctionCall","src":"4319:15:178"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4361:3:178"},{"name":"_1","nodeType":"YulIdentifier","src":"4366:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4357:3:178"},"nodeType":"YulFunctionCall","src":"4357:12:178"}],"functionName":{"name":"abi_decode_t_uint128","nodeType":"YulIdentifier","src":"4336:20:178"},"nodeType":"YulFunctionCall","src":"4336:34:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4312:6:178"},"nodeType":"YulFunctionCall","src":"4312:59:178"},"nodeType":"YulExpressionStatement","src":"4312:59:178"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4391:3:178"},{"name":"memPtr","nodeType":"YulIdentifier","src":"4396:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4384:6:178"},"nodeType":"YulFunctionCall","src":"4384:19:178"},"nodeType":"YulExpressionStatement","src":"4384:19:178"},{"nodeType":"YulAssignment","src":"4416:19:178","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4427:3:178"},{"name":"_1","nodeType":"YulIdentifier","src":"4432:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4423:3:178"},"nodeType":"YulFunctionCall","src":"4423:12:178"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"4416:3:178"}]},{"nodeType":"YulAssignment","src":"4448:19:178","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4459:3:178"},{"name":"_5","nodeType":"YulIdentifier","src":"4464:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4455:3:178"},"nodeType":"YulFunctionCall","src":"4455:12:178"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"4448:3:178"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3950:1:178"},{"name":"_4","nodeType":"YulIdentifier","src":"3953:2:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3947:2:178"},"nodeType":"YulFunctionCall","src":"3947:9:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3957:18:178","statements":[{"nodeType":"YulAssignment","src":"3959:14:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3968:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"3971:1:178","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3964:3:178"},"nodeType":"YulFunctionCall","src":"3964:9:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3959:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"3943:3:178","statements":[]},"src":"3939:538:178"},{"nodeType":"YulAssignment","src":"4486:15:178","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"4496:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4486:6:178"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_WeightedTickData_$19367_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3196:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3207:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3219:6:178","type":""}],"src":"3100:1407:178"},{"body":{"nodeType":"YulBlock","src":"4631:304:178","statements":[{"body":{"nodeType":"YulBlock","src":"4678:26:178","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4687:6:178"},{"name":"value2","nodeType":"YulIdentifier","src":"4695:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4680:6:178"},"nodeType":"YulFunctionCall","src":"4680:22:178"},"nodeType":"YulExpressionStatement","src":"4680:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4652:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"4661:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4648:3:178"},"nodeType":"YulFunctionCall","src":"4648:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"4673:3:178","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4644:3:178"},"nodeType":"YulFunctionCall","src":"4644:33:178"},"nodeType":"YulIf","src":"4641:2:178"},{"nodeType":"YulAssignment","src":"4713:39:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4742:9:178"}],"functionName":{"name":"abi_decode_t_int24","nodeType":"YulIdentifier","src":"4723:18:178"},"nodeType":"YulFunctionCall","src":"4723:29:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4713:6:178"}]},{"nodeType":"YulAssignment","src":"4761:50:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4796:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4807:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4792:3:178"},"nodeType":"YulFunctionCall","src":"4792:18:178"}],"functionName":{"name":"abi_decode_t_uint128","nodeType":"YulIdentifier","src":"4771:20:178"},"nodeType":"YulFunctionCall","src":"4771:40:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4761:6:178"}]},{"nodeType":"YulAssignment","src":"4820:50:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4855:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4866:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4851:3:178"},"nodeType":"YulFunctionCall","src":"4851:18:178"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4830:20:178"},"nodeType":"YulFunctionCall","src":"4830:40:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4820:6:178"}]},{"nodeType":"YulAssignment","src":"4879:50:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4914:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4925:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4910:3:178"},"nodeType":"YulFunctionCall","src":"4910:18:178"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4889:20:178"},"nodeType":"YulFunctionCall","src":"4889:40:178"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4879:6:178"}]}]},"name":"abi_decode_tuple_t_int24t_uint128t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4573:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4584:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4596:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4604:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4612:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4620:6:178","type":""}],"src":"4512:423:178"},{"body":{"nodeType":"YulBlock","src":"5037:91:178","statements":[{"nodeType":"YulAssignment","src":"5047:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5059:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5070:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5055:3:178"},"nodeType":"YulFunctionCall","src":"5055:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5047:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5089:9:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5111:1:178","type":"","value":"2"},{"name":"value0","nodeType":"YulIdentifier","src":"5114:6:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"5100:10:178"},"nodeType":"YulFunctionCall","src":"5100:21:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5082:6:178"},"nodeType":"YulFunctionCall","src":"5082:40:178"},"nodeType":"YulExpressionStatement","src":"5082:40:178"}]},"name":"abi_encode_tuple_t_int24__to_t_int24__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5006:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5017:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5028:4:178","type":""}],"src":"4940:188:178"},{"body":{"nodeType":"YulBlock","src":"5258:175:178","statements":[{"nodeType":"YulAssignment","src":"5268:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5280:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5291:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5276:3:178"},"nodeType":"YulFunctionCall","src":"5276:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5268:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5310:9:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5332:1:178","type":"","value":"2"},{"name":"value0","nodeType":"YulIdentifier","src":"5335:6:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"5321:10:178"},"nodeType":"YulFunctionCall","src":"5321:21:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5303:6:178"},"nodeType":"YulFunctionCall","src":"5303:40:178"},"nodeType":"YulExpressionStatement","src":"5303:40:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5363:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5374:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5359:3:178"},"nodeType":"YulFunctionCall","src":"5359:18:178"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"5383:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"5391:34:178","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5379:3:178"},"nodeType":"YulFunctionCall","src":"5379:47:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5352:6:178"},"nodeType":"YulFunctionCall","src":"5352:75:178"},"nodeType":"YulExpressionStatement","src":"5352:75:178"}]},"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:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5230:6:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5238:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5249:4:178","type":""}],"src":"5133:300:178"},{"body":{"nodeType":"YulBlock","src":"5537:76:178","statements":[{"nodeType":"YulAssignment","src":"5547:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5559:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5570:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5555:3:178"},"nodeType":"YulFunctionCall","src":"5555:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5547:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5589:9:178"},{"name":"value0","nodeType":"YulIdentifier","src":"5600:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5582:6:178"},"nodeType":"YulFunctionCall","src":"5582:25:178"},"nodeType":"YulExpressionStatement","src":"5582:25:178"}]},"name":"abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5506:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5517:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5528:4:178","type":""}],"src":"5438:175:178"},{"body":{"nodeType":"YulBlock","src":"5719:76:178","statements":[{"nodeType":"YulAssignment","src":"5729:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5741:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5752:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5737:3:178"},"nodeType":"YulFunctionCall","src":"5737:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5729:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5771:9:178"},{"name":"value0","nodeType":"YulIdentifier","src":"5782:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5764:6:178"},"nodeType":"YulFunctionCall","src":"5764:25:178"},"nodeType":"YulExpressionStatement","src":"5764:25:178"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5688:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5699:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5710:4:178","type":""}],"src":"5618:177:178"},{"body":{"nodeType":"YulBlock","src":"5925:166:178","statements":[{"nodeType":"YulAssignment","src":"5935:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5947:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5958:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5943:3:178"},"nodeType":"YulFunctionCall","src":"5943:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5935:4:178"}]},{"nodeType":"YulVariableDeclaration","src":"5970:20:178","value":{"kind":"number","nodeType":"YulLiteral","src":"5980:10:178","type":"","value":"0xffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5974:2:178","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6006:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6021:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"6029:2:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6017:3:178"},"nodeType":"YulFunctionCall","src":"6017:15:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5999:6:178"},"nodeType":"YulFunctionCall","src":"5999:34:178"},"nodeType":"YulExpressionStatement","src":"5999:34:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6053:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"6064:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6049:3:178"},"nodeType":"YulFunctionCall","src":"6049:18:178"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6073:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"6081:2:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6069:3:178"},"nodeType":"YulFunctionCall","src":"6069:15:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6042:6:178"},"nodeType":"YulFunctionCall","src":"6042:43:178"},"nodeType":"YulExpressionStatement","src":"6042:43:178"}]},"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:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5897:6:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5905:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5916:4:178","type":""}],"src":"5800:291:178"},{"body":{"nodeType":"YulBlock","src":"6140:198:178","statements":[{"nodeType":"YulAssignment","src":"6150:19:178","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6166:2:178","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6160:5:178"},"nodeType":"YulFunctionCall","src":"6160:9:178"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6150:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"6178:35:178","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6200:6:178"},{"name":"size","nodeType":"YulIdentifier","src":"6208:4:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6196:3:178"},"nodeType":"YulFunctionCall","src":"6196:17:178"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"6182:10:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"6288:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"6290:7:178"},"nodeType":"YulFunctionCall","src":"6290:9:178"},"nodeType":"YulExpressionStatement","src":"6290:9:178"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"6231:10:178"},{"kind":"number","nodeType":"YulLiteral","src":"6243:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6228:2:178"},"nodeType":"YulFunctionCall","src":"6228:34:178"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"6267:10:178"},{"name":"memPtr","nodeType":"YulIdentifier","src":"6279:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6264:2:178"},"nodeType":"YulFunctionCall","src":"6264:22:178"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6225:2:178"},"nodeType":"YulFunctionCall","src":"6225:62:178"},"nodeType":"YulIf","src":"6222:2:178"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6317:2:178","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"6321:10:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6310:6:178"},"nodeType":"YulFunctionCall","src":"6310:22:178"},"nodeType":"YulExpressionStatement","src":"6310:22:178"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"6120:4:178","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"6129:6:178","type":""}],"src":"6096:242:178"},{"body":{"nodeType":"YulBlock","src":"6418:108:178","statements":[{"body":{"nodeType":"YulBlock","src":"6462:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"6464:7:178"},"nodeType":"YulFunctionCall","src":"6464:9:178"},"nodeType":"YulExpressionStatement","src":"6464:9:178"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6434:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6442:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6431:2:178"},"nodeType":"YulFunctionCall","src":"6431:30:178"},"nodeType":"YulIf","src":"6428:2:178"},{"nodeType":"YulAssignment","src":"6484:36:178","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6500:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"6508:4:178","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6496:3:178"},"nodeType":"YulFunctionCall","src":"6496:17:178"},{"kind":"number","nodeType":"YulLiteral","src":"6515:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6492:3:178"},"nodeType":"YulFunctionCall","src":"6492:28:178"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"6484:4:178"}]}]},"name":"array_allocation_size_t_array$_t_address_$dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"6398:6:178","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"6409:4:178","type":""}],"src":"6343:183:178"}]},"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_$19367_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":178,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c8063824134891161005b57806382413489146100fd578063ab34b0fc14610110578063bbe8f41914610130578063e6c4fbe01461014357610088565b8063333b19a81461008d57806343c57a27146100b75780636a816ff9146100d75780637059b38a146100ea575b600080fd5b6100a061009b366004611272565b610164565b6040516100ae9291906114bf565b60405180910390f35b6100ca6100c536600461145e565b61017a565b6040516100ae91906114db565b6100ca6100e536600461145e565b610191565b6100ca6100f83660046112ca565b6101b0565b6100a061010b36600461128c565b6101c3565b61012361011e366004611388565b6101db565b6040516100ae91906114b1565b6100ca61013e36600461128c565b6101ee565b610156610151366004611272565b61020a565b6040516100ae9291906114e4565b6000806101708361021f565b915091505b915091565b600061018885858585610565565b95945050505050565b6000805a90506101a386868686610565565b505a900395945050505050565b60006101bc838361065c565b9392505050565b6000806101d0848461073d565b915091509250929050565b60006101e682610b53565b90505b919050565b6000805a90506101fe848461073d565b50505a90039392505050565b60008061021683610c0f565b93429350915050565b6000806000806000856001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561026057600080fd5b505afa158015610274573d6000803e3d6000fd5b505050506040513d60e081101561028a57600080fd5b50602081015160408201516060909201519094509092509050600161ffff8216116102e2576040805162461bcd60e51b81526020600482015260036024820152624e454f60e81b604482015290519081900360640190fd5b6000806000886001600160a01b031663252c09d7866040518263ffffffff1660e01b8152600401808261ffff16815260200191505060a06040518083038186803b15801561032f57600080fd5b505afa158015610343573d6000803e3d6000fd5b505050506040513d60a081101561035957600080fd5b508051602082015160409092015190945090925090504263ffffffff908116908416146103f75785896001600160a01b0316631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ba57600080fd5b505afa1580156103ce573d6000803e3d6000fd5b505050506040513d60208110156103e457600080fd5b5051909850965061017595505050505050565b60008461ffff1660018661ffff168861ffff1601038161041357fe5b0690506000806000808d6001600160a01b031663252c09d7866040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b15801561046057600080fd5b505afa158015610474573d6000803e3d6000fd5b505050506040513d60a081101561048a57600080fd5b5080516020820151604083015160609093015191965094509092509050806104df576040805162461bcd60e51b81526020600482015260036024820152624f4e4960e81b604482015290519081900360640190fd5b83880363ffffffff811684890360060b816104f657fe5b059b50600077ffffffffffffffffffffffffffffffffffffffff0000000084890360201b1663ffffffff83166001600160a01b030277ffffffffffffffffffffffffffffffffffffffffffffffff168161054c57fe5b9d9f50909c049c50505050505050505050505050915091565b60008061057186610dde565b90506001600160801b036001600160a01b038216116105e0576001600160a01b03808216800290848116908616106105c0576105bb600160c01b876001600160801b031683611110565b6105d8565b6105d881876001600160801b0316600160c01b611110565b925050610653565b60006105ff6001600160a01b0383168068010000000000000000611110565b9050836001600160a01b0316856001600160a01b03161061063757610632600160801b876001600160801b031683611110565b61064f565b61064f81876001600160801b0316600160801b611110565b9250505b50949350505050565b6000815160018451031461069c576040805162461bcd60e51b8152602060048201526002602482015261111360f21b604482015290519081900360640190fd5b60015b82518111610736578381815181106106b357fe5b60200260200101516001600160a01b03168460018303815181106106d357fe5b60200260200101516001600160a01b03161061070d578260018203815181106106f857fe5b602002602001015160020b820391508161072d565b82600182038151811061071c57fe5b602002602001015160020b82019150815b5060010161069f565b5092915050565b60008063ffffffff831661077d576040805162461bcd60e51b8152602060048201526002602482015261042560f41b604482015290519081900360640190fd5b60408051600280825260608201835260009260208301908036833701905050905083816000815181106107ac57fe5b602002602001019063ffffffff16908163ffffffff16815250506000816001815181106107d557fe5b63ffffffff90921660209283029190910182015260405163883bdbfd60e01b81526004810182815283516024830152835160009384936001600160a01b038b169363883bdbfd9388939192839260449091019185820191028083838b5b8381101561084a578181015183820152602001610832565b505050509050019250505060006040518083038186803b15801561086d57600080fd5b505afa158015610881573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260608110156108aa57600080fd5b81019080805160405193929190846401000000008211156108ca57600080fd5b9083019060208201858111156108df57600080fd5b82518660208202830111640100000000821117156108fc57600080fd5b82525081516020918201928201910280838360005b83811015610929578181015183820152602001610911565b505050509050016040526020018051604051939291908464010000000082111561095257600080fd5b90830190602082018581111561096757600080fd5b825186602082028301116401000000008211171561098457600080fd5b82525081516020918201928201910280838360005b838110156109b1578181015183820152602001610999565b50505050905001604052602001805160405193929190846401000000008211156109da57600080fd5b9083019060208201858111156109ef57600080fd5b8251866020820283011164010000000082111715610a0c57600080fd5b82525081516020918201928201910280838360005b83811015610a39578181015183820152602001610a21565b505050509050016040525050505091509150600082600081518110610a5a57fe5b602002602001015183600181518110610a6f57fe5b6020026020010151039050600082600081518110610a8957fe5b602002602001015183600181518110610a9e57fe5b60200260200101510390508763ffffffff168260060b81610abb57fe5b05965060008260060b128015610ae557508763ffffffff168260060b81610ade57fe5b0760060b15155b15610af257600019909601955b63ffffffff88166001600160a01b030277ffffffffffffffffffffffffffffffffffffffff00000000602083901b1677ffffffffffffffffffffffffffffffffffffffffffffffff821681610b4357fe5b0496505050505050509250929050565b6000806000805b8451811015610bd657848181518110610b6f57fe5b6020026020010151602001516001600160801b0316858281518110610b9057fe5b60200260200101516000015160020b0283019250848181518110610bb057fe5b6020026020010151602001516001600160801b0316820191508080600101915050610b5a565b50808281610be057fe5b059250600082128015610bfb5750808281610bf757fe5b0715155b15610c0857600019909201915b5050919050565b6000806000836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610c4d57600080fd5b505afa158015610c61573d6000803e3d6000fd5b505050506040513d60e0811015610c7757600080fd5b506040810151606090910151909250905061ffff8116610cc3576040805162461bcd60e51b81526020600482015260026024820152614e4960f01b604482015290519081900360640190fd5b600080856001600160a01b031663252c09d78461ffff168660010161ffff1681610ce957fe5b066040518263ffffffff1660e01b8152600401808261ffff16815260200191505060a06040518083038186803b158015610d2257600080fd5b505afa158015610d36573d6000803e3d6000fd5b505050506040513d60a0811015610d4c57600080fd5b508051606090910151909250905080610dd357856001600160a01b031663252c09d760006040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b158015610da457600080fd5b505afa158015610db8573d6000803e3d6000fd5b505050506040513d60a0811015610dce57600080fd5b505191505b504203949350505050565b60008060008360020b12610df5578260020b610dfd565b8260020b6000035b9050620d89e8811115610e3b576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216610e4f57600160801b610e61565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610e95576ffff97272373d413259a46990580e213a0260801c5b6004821615610eb4576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615610ed3576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615610ef2576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615610f11576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615610f30576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615610f4f576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615610f6f576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615610f8f576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615610faf576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615610fcf576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615610fef576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561100f576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161561102f576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561104f576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611070576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611090576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156110af576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156110cc576b048a170391f7dc42444e8fa20260801c5b60008460020b13156110e75780600019816110e357fe5b0490505b6401000000008106156110fb5760016110fe565b60005b60ff16602082901c0192505050919050565b6000808060001985870986860292508281109083900303905080611146576000841161113b57600080fd5b5082900490506101bc565b80841161115257600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b80356001600160a01b03811681146101e957600080fd5b600082601f8301126111e6578081fd5b813560206111fb6111f68361151f565b6114fb565b8281528181019085830183850287018401881015611217578586fd5b855b8581101561123c5761122a82611249565b84529284019290840190600101611219565b5090979650505050505050565b8035600281900b81146101e957600080fd5b80356001600160801b03811681146101e957600080fd5b600060208284031215611283578081fd5b6101bc826111bf565b6000806040838503121561129e578081fd5b6112a7836111bf565b9150602083013563ffffffff811681146112bf578182fd5b809150509250929050565b600080604083850312156112dc578182fd5b823567ffffffffffffffff808211156112f3578384fd5b818501915085601f830112611306578384fd5b813560206113166111f68361151f565b82815281810190858301838502870184018b1015611332578889fd5b8896505b8487101561135b57611347816111bf565b835260019690960195918301918301611336565b5096505086013592505080821115611371578283fd5b5061137e858286016111d6565b9150509250929050565b6000602080838503121561139a578182fd5b823567ffffffffffffffff808211156113b1578384fd5b818501915085601f8301126113c4578384fd5b81356113d26111f68261151f565b818152848101908486016040808502870188018b10156113f0578889fd5b8896505b8487101561144f5780828c03121561140a578889fd5b8051818101818110888211171561141d57fe5b825261142883611249565b815261143589840161125b565b818a015284526001969096019592870192908101906113f4565b50909998505050505050505050565b60008060008060808587031215611473578182fd5b61147c85611249565b935061148a6020860161125b565b9250611498604086016111bf565b91506114a6606086016111bf565b905092959194509250565b60029190910b815260200190565b60029290920b82526001600160801b0316602082015260400190565b90815260200190565b63ffffffff92831681529116602082015260400190565b60405181810167ffffffffffffffff8111828210171561151757fe5b604052919050565b600067ffffffffffffffff82111561153357fe5b506020908102019056fea26469706673582212202d6cccf7b6851fa809e8d669f6be0fd84c2cdcc2b90c02abba822dc3ac9cb12b64736f6c63430007060033","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 0x1272 JUMP JUMPDEST PUSH2 0x164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAE SWAP3 SWAP2 SWAP1 PUSH2 0x14BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCA PUSH2 0xC5 CALLDATASIZE PUSH1 0x4 PUSH2 0x145E JUMP JUMPDEST PUSH2 0x17A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAE SWAP2 SWAP1 PUSH2 0x14DB JUMP JUMPDEST PUSH2 0xCA PUSH2 0xE5 CALLDATASIZE PUSH1 0x4 PUSH2 0x145E JUMP JUMPDEST PUSH2 0x191 JUMP JUMPDEST PUSH2 0xCA PUSH2 0xF8 CALLDATASIZE PUSH1 0x4 PUSH2 0x12CA JUMP JUMPDEST PUSH2 0x1B0 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x10B CALLDATASIZE PUSH1 0x4 PUSH2 0x128C JUMP JUMPDEST PUSH2 0x1C3 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x11E CALLDATASIZE PUSH1 0x4 PUSH2 0x1388 JUMP JUMPDEST PUSH2 0x1DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAE SWAP2 SWAP1 PUSH2 0x14B1 JUMP JUMPDEST PUSH2 0xCA PUSH2 0x13E CALLDATASIZE PUSH1 0x4 PUSH2 0x128C JUMP JUMPDEST PUSH2 0x1EE JUMP JUMPDEST PUSH2 0x156 PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x1272 JUMP JUMPDEST PUSH2 0x20A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAE SWAP3 SWAP2 SWAP1 PUSH2 0x14E4 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 0x565 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x1A3 DUP7 DUP7 DUP7 DUP7 PUSH2 0x565 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BC DUP4 DUP4 PUSH2 0x65C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D0 DUP5 DUP5 PUSH2 0x73D JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E6 DUP3 PUSH2 0xB53 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x1FE DUP5 DUP5 PUSH2 0x73D JUMP JUMPDEST POP POP GAS SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x216 DUP4 PUSH2 0xC0F JUMP JUMPDEST SWAP4 TIMESTAMP SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x274 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 0x28A 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 0x2E2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4E454F PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x343 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x359 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 0x3F7 JUMPI DUP6 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x3BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3CE 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 0x3E4 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 0x413 JUMPI INVALID JUMPDEST MOD SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x460 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x474 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x48A 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 0x4DF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4F4E49 PUSH1 0xE8 SHL 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 0x4F6 JUMPI INVALID JUMPDEST SDIV SWAP12 POP PUSH1 0x0 PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 DUP5 DUP10 SUB PUSH1 0x20 SHL AND PUSH4 0xFFFFFFFF DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH2 0x54C 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 0x571 DUP7 PUSH2 0xDDE JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND GT PUSH2 0x5E0 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND DUP1 MUL SWAP1 DUP5 DUP2 AND SWAP1 DUP7 AND LT PUSH2 0x5C0 JUMPI PUSH2 0x5BB PUSH1 0x1 PUSH1 0xC0 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP4 PUSH2 0x1110 JUMP JUMPDEST PUSH2 0x5D8 JUMP JUMPDEST PUSH2 0x5D8 DUP2 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0xC0 SHL PUSH2 0x1110 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x653 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5FF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP1 PUSH9 0x10000000000000000 PUSH2 0x1110 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x637 JUMPI PUSH2 0x632 PUSH1 0x1 PUSH1 0x80 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP4 PUSH2 0x1110 JUMP JUMPDEST PUSH2 0x64F JUMP JUMPDEST PUSH2 0x64F DUP2 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x1110 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 0x69C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x1113 PUSH1 0xF2 SHL 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 0x736 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x6B3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 DUP4 SUB DUP2 MLOAD DUP2 LT PUSH2 0x6D3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x70D JUMPI DUP3 PUSH1 0x1 DUP3 SUB DUP2 MLOAD DUP2 LT PUSH2 0x6F8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP3 SUB SWAP2 POP DUP2 PUSH2 0x72D JUMP JUMPDEST DUP3 PUSH1 0x1 DUP3 SUB DUP2 MLOAD DUP2 LT PUSH2 0x71C 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 0x69F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH4 0xFFFFFFFF DUP4 AND PUSH2 0x77D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x425 PUSH1 0xF4 SHL 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 0x7AC 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 0x7D5 JUMPI INVALID JUMPDEST PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x883BDBFD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP4 ADD MSTORE DUP4 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x84A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x832 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 0x86D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x881 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 PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8AA 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 0x8CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x8DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x8FC 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 0x929 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x911 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 0x952 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x967 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x984 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 0x9B1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x999 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 0x9DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x9EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0xA0C 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 0xA39 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA21 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xA5A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xA6F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xA89 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xA9E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB SWAP1 POP DUP8 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0xABB JUMPI INVALID JUMPDEST SDIV SWAP7 POP PUSH1 0x0 DUP3 PUSH1 0x6 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0xAE5 JUMPI POP DUP8 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0xADE JUMPI INVALID JUMPDEST SMOD PUSH1 0x6 SIGNEXTEND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xAF2 JUMPI PUSH1 0x0 NOT SWAP1 SWAP7 ADD SWAP6 JUMPDEST PUSH4 0xFFFFFFFF DUP9 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x20 DUP4 SWAP1 SHL AND PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 PUSH2 0xB43 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 0xBD6 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xB6F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB90 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 0xBB0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 ADD SWAP2 POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0xB5A JUMP JUMPDEST POP DUP1 DUP3 DUP2 PUSH2 0xBE0 JUMPI INVALID JUMPDEST SDIV SWAP3 POP PUSH1 0x0 DUP3 SLT DUP1 ISZERO PUSH2 0xBFB JUMPI POP DUP1 DUP3 DUP2 PUSH2 0xBF7 JUMPI INVALID JUMPDEST SMOD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xC08 JUMPI PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xC4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC61 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 0xC77 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 0xCC3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4E49 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x252C09D7 DUP5 PUSH2 0xFFFF AND DUP7 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0xCE9 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 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD36 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xD4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x60 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP1 PUSH2 0xDD3 JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xDCE 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 0xDF5 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0xDFD JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0xE3B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0xE4F JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0xE61 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0xE95 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0xEB4 JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0xED3 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0xEF2 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0xF11 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0xF30 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0xF4F JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0xF6F JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0xF8F JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0xFAF JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0xFCF JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0xFEF JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x100F JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x102F JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x104F JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x1070 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x1090 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x10AF JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x10CC JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x10E7 JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x10E3 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x10FB JUMPI PUSH1 0x1 PUSH2 0x10FE 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 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x1146 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x113B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x1BC JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x1152 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x11E6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x11FB PUSH2 0x11F6 DUP4 PUSH2 0x151F JUMP JUMPDEST PUSH2 0x14FB JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD DUP4 DUP6 MUL DUP8 ADD DUP5 ADD DUP9 LT ISZERO PUSH2 0x1217 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x123C JUMPI PUSH2 0x122A DUP3 PUSH2 0x1249 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1219 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1283 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1BC DUP3 PUSH2 0x11BF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x129E JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x12A7 DUP4 PUSH2 0x11BF JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x12BF 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 0x12DC JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x12F3 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1306 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x1316 PUSH2 0x11F6 DUP4 PUSH2 0x151F JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD DUP4 DUP6 MUL DUP8 ADD DUP5 ADD DUP12 LT ISZERO PUSH2 0x1332 JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x135B JUMPI PUSH2 0x1347 DUP2 PUSH2 0x11BF JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x1336 JUMP JUMPDEST POP SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x1371 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x137E DUP6 DUP3 DUP7 ADD PUSH2 0x11D6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x139A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x13B1 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x13C4 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13D2 PUSH2 0x11F6 DUP3 PUSH2 0x151F 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 0x13F0 JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x144F JUMPI DUP1 DUP3 DUP13 SUB SLT ISZERO PUSH2 0x140A JUMPI DUP9 DUP10 REVERT JUMPDEST DUP1 MLOAD DUP2 DUP2 ADD DUP2 DUP2 LT DUP9 DUP3 GT OR ISZERO PUSH2 0x141D JUMPI INVALID JUMPDEST DUP3 MSTORE PUSH2 0x1428 DUP4 PUSH2 0x1249 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x1435 DUP10 DUP5 ADD PUSH2 0x125B JUMP JUMPDEST DUP2 DUP11 ADD MSTORE DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP8 ADD SWAP3 SWAP1 DUP2 ADD SWAP1 PUSH2 0x13F4 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 0x1473 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x147C DUP6 PUSH2 0x1249 JUMP JUMPDEST SWAP4 POP PUSH2 0x148A PUSH1 0x20 DUP7 ADD PUSH2 0x125B JUMP JUMPDEST SWAP3 POP PUSH2 0x1498 PUSH1 0x40 DUP7 ADD PUSH2 0x11BF JUMP JUMPDEST SWAP2 POP PUSH2 0x14A6 PUSH1 0x60 DUP7 ADD PUSH2 0x11BF 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB 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 0x1517 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1533 JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D PUSH13 0xCCF7B6851FA809E8D669F6BE0F 0xD8 0x4C 0x2C 0xDC 0xC2 0xB9 0xC MUL 0xAB 0xBA DUP3 0x2D 0xC3 0xAC SWAP13 0xB1 0x2B PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"132:2096:109:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1590:171;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;392:282;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;941:347::-;;;;;;:::i;:::-;;:::i;2040:185::-;;;;;;:::i;:::-;;:::i;159:225::-;;;;;;:::i;:::-;;:::i;1769:263::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;712:221::-;;;;;;:::i;:::-;;:::i;1296:286::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1590:171::-;1667:5;1674:7;1701:52;1748:4;1701:46;:52::i;:::-;1694:59;;;;1590:171;;;;:::o;392:282::-;551:19;597:69;626:4;632:10;644:9;655:10;597:28;:69::i;:::-;583:83;392:282;-1:-1:-1;;;;;392:282:109:o;941:347::-;1112:7;1132:17;1152:9;1132:29;;1172:69;1201:4;1207:10;1219:9;1230:10;1172:28;:69::i;:::-;;1271:9;1259:21;;;941:347;-1:-1:-1;;;;;941:347:109:o;2040:185::-;2133:20;2173:44;2203:6;2211:5;2173:29;:44::i;:::-;2166:51;2040:185;-1:-1:-1;;;2040:185:109:o;159:225::-;257:24;283:29;337:39;359:4;365:10;337:21;:39::i;:::-;330:46;;;;159:225;;;;;:::o;1769:263::-;1910:32;1967:57;2011:12;1967:43;:57::i;:::-;1960:64;;1769:263;;;;:::o;712:221::-;791:7;811:17;831:9;811:29;;851:35;873:4;879:6;851:21;:35::i;:::-;;;916:9;904:21;;;712:221;-1:-1:-1;;;712:221:109:o;1296:286::-;1398:17;1417:23;1471:50;1516:4;1471:44;:50::i;:::-;1458:63;1558:15;;-1:-1:-1;1296:286:109;-1:-1:-1;;1296:286:109:o;4900:1795:95:-;4979:5;4986:7;5009:10;5021:23;5046:29;5097:4;-1:-1:-1;;;;;5085:23:95;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5085:25:95;;;;;;;;;;;;;;;-1:-1:-1;5085:25:95;;-1:-1:-1;5085:25:95;-1:-1:-1;5240:1:95;5215:26;;;;5207:42;;;;;-1:-1:-1;;;5207:42:95;;;;;;;;;;;;-1:-1:-1;;;5207:42:95;;;;;;;;;;;;;;;5572:27;5601:20;5623:41;5697:4;-1:-1:-1;;;;;5685:30:95;;5716:16;5685:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5685:48:95;;;;;;;;;;;;;-1:-1:-1;5685:48:95;;-1:-1:-1;5685:48:95;-1:-1:-1;5779:15:95;5748:47;;;;;;;;5744:124;;5820:4;5838;-1:-1:-1;;;;;5826:27:95;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5826:29:95;5812:44;;-1:-1:-1;5826:29:95;-1:-1:-1;5812:44:95;;-1:-1:-1;;;;;;5812:44:95;5744:124;5880:17;5959:22;5900:81;;5954:1;5929:22;5901:50;;5909:16;5901:25;;:50;:54;5900:81;;;;;;5880:101;;6007:31;6053:24;6092:45;6152:20;6199:4;-1:-1:-1;;;;;6187:30:95;;6218:9;6187:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6187:41:95;;;;;;;;;;;;;;;;;-1:-1:-1;6187:41:95;-1:-1:-1;6187:41:95;;-1:-1:-1;6187:41:95;-1:-1:-1;6187:41:95;6241:31;;;;;-1:-1:-1;;;6241:31:95;;;;;;;;;;;;-1:-1:-1;;;6241:31:95;;;;;;;;;;;;;;;6300:47;;;6371:45;;;6372:35;;;6371:45;;;;;;;;;-1:-1:-1;6428:17:95;6548:88;6556:73;;;6634:2;6548:88;;6488:14;;;-1:-1:-1;;;;;6488:34:95;6548:88;6487:150;6548:88;6487:150;;;;6671:4;;-1:-1:-1;6487:150:95;;;;-1:-1:-1;;;;;;;;;;;;;4900:1795:95;;;:::o;2633:975::-;2794:19;2826:20;2849:33;2877:4;2849:27;:33::i;:::-;2826:56;-1:-1:-1;;;;;;;;;;;3004:33:95;;;3000:601;;-1:-1:-1;;;;;3074:36:95;;;;;;3139:22;;;;;;;:158;;3249:48;-1:-1:-1;;;3275:10:95;-1:-1:-1;;;;;3249:48:95;3287:9;3249:15;:48::i;:::-;3139:158;;;3181:48;3197:9;3208:10;-1:-1:-1;;;;;3181:48:95;-1:-1:-1;;;3181:15:95;:48::i;:::-;3125:172;;3000:601;;;;3330:17;3350:52;-1:-1:-1;;;;;3350:52:95;;;3394:7;3350:15;:52::i;:::-;3330:72;;3443:10;-1:-1:-1;;;;;3431:22:95;:9;-1:-1:-1;;;;;3431:22:95;;:158;;3541:48;-1:-1:-1;;;3567:10:95;-1:-1:-1;;;;;3541:48:95;3579:9;3541:15;:48::i;:::-;3431:158;;;3473:48;3489:9;3500:10;-1:-1:-1;;;;;3473:48:95;-1:-1:-1;;;3473:15:95;:48::i;:::-;3417:172;;3000:601;;2633:975;;;;;;;:::o;8896:565::-;9018:20;9085:5;:12;9080:1;9064:6;:13;:17;:33;9056:48;;;;;-1:-1:-1;;;9056:48:95;;;;;;;;;;;;-1:-1:-1;;;9056:48:95;;;;;;;;;;;;;;;9132:1;9115:339;9140:5;:12;9135:1;:17;9115:339;;9369:6;9376:1;9369:9;;;;;;;;;;;;;;-1:-1:-1;;;;;9353:25:95;:6;9364:1;9360;:5;9353:13;;;;;;;;;;;;;;-1:-1:-1;;;;;9353:25:95;;:89;;9430:5;9440:1;9436;:5;9430:12;;;;;;;;;;;;;;9413:29;;;;;;;9353:89;;;9398:5;9408:1;9404;:5;9398:12;;;;;;;;;;;;;;9381:29;;;;;;;9353:89;-1:-1:-1;9154:3:95;;9115:339;;;;8896:565;;;;:::o;870:1251::-;970:24;;1051:15;;;1043:30;;;;;-1:-1:-1;;;1043:30:95;;;;;;;;;;;;-1:-1:-1;;;1043:30:95;;;;;;;;;;;;;;;1116:15;;;1129:1;1116:15;;;;;;;;1086:27;;1116:15;;;;;;;;;;-1:-1:-1;1116:15:95;1086:45;;1159:10;1142:11;1154:1;1142:14;;;;;;;;;;;;;:27;;;;;;;;;;;1197:1;1180:11;1192:1;1180:14;;;;;;;;:18;;;;:14;;;;;;;;;;:18;1314:38;;-1:-1:-1;;;1314:38:95;;;;;;;;;;;;;;;;1212:30;;;;-1:-1:-1;;;;;1314:25:95;;;;;1340:11;;1314:38;;;;;;;;;;;;;;;;;1212:30;1314:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1314:38:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1314:38:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1314:38:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1314:38:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1211:141;;;;;1365:26;1415:15;1431:1;1415:18;;;;;;;;;;;;;;1394:15;1410:1;1394:18;;;;;;;;;;;;;;:39;1365:68;;1444:43;1543:34;1578:1;1543:37;;;;;;;;;;;;;;1503:34;1538:1;1503:37;;;;;;;;;;;;;;:77;1444:136;;1643:10;1620:33;;:20;:33;;;;;;;;1593:61;;1738:1;1715:20;:24;;;:68;;;;;1767:10;1744:33;;:20;:33;;;;;;;;:38;;;;1715:68;1711:94;;;-1:-1:-1;;1785:20:95;;;;1711:94;1961:19;;;-1:-1:-1;;;;;1961:39:95;2061:50;2109:2;2061:50;;;;;2043:69;;2061:50;2043:69;;;;;2011:102;;870:1251;;;;;;;;;;;:::o;7455:913::-;7588:32;7715:16;7791:19;7933:9;7928:207;7948:16;:23;7944:1;:27;7928:207;;;8040:16;8057:1;8040:19;;;;;;;;;;;;;;:26;;;-1:-1:-1;;;;;8033:34:95;8006:16;8023:1;8006:19;;;;;;;;;;;;;;:24;;;:61;;;7993:74;;;;8097:16;8114:1;8097:19;;;;;;;;;;;;;;:26;;;-1:-1:-1;;;;;8082:41:95;;;;;7973:3;;;;;;;7928:207;;;;8201:11;8182:9;:31;;;;;;8147:67;;8287:1;8275:9;:13;:55;;;;;8312:11;8293:9;:31;;;;;;:36;;8275:55;8271:89;;;-1:-1:-1;;8332:28:95;;;;8271:89;7455:913;;;;;:::o;3885:788::-;3962:17;3997:23;4022:29;4073:4;-1:-1:-1;;;;;4061:23:95;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4061:25:95;;;;;;;;;;;-1:-1:-1;4061:25:95;-1:-1:-1;4105:26:95;;;4097:41;;;;;-1:-1:-1;;;4097:41:95;;;;;;;;;;;;-1:-1:-1;;;4097:41:95;;;;;;;;;;;;;;;4152:27;4185:16;4231:4;-1:-1:-1;;;;;4219:30:95;;4275:22;4250:47;;4251:16;4270:1;4251:20;4250:47;;;;;;;;4219:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4219:79:95;;;;;;;;;-1:-1:-1;4219:79:95;-1:-1:-1;4219:79:95;4483:111;;4561:4;-1:-1:-1;;;;;4549:30:95;;4580:1;4549:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4549:33:95;;-1:-1:-1;4483:111:95;-1:-1:-1;4626:15:95;4619:46;;3885:788;-1:-1:-1;;;;3885:788:95:o;1384:2611:28:-;1447:20;1480:15;1505:1;1498:4;:8;;;:57;;1549:4;1542:12;;1498:57;;;1525:4;1518:12;;1517:13;;1498:57;1480:75;-1:-1:-1;654:9:28;1574:28;;;1566:42;;;;;-1:-1:-1;;;1566:42:28;;;;;;;;;;;;-1:-1:-1;;;1566:42:28;;;;;;;;;;;;;;;1621:13;1647:3;1637:13;;:93;;-1:-1:-1;;;1637:93:28;;;1658:34;1637:93;1621:109;;;-1:-1:-1;1755:3:28;1745:13;;:18;1741:83;;1782:34;1774:42;1821:3;1773:51;1741:83;1849:3;1839:13;;:18;1835:83;;1876:34;1868:42;1915:3;1867:51;1835:83;1943:3;1933:13;;:18;1929:83;;1970:34;1962:42;2009:3;1961:51;1929:83;2037:4;2027:14;;:19;2023:84;;2065:34;2057:42;2104:3;2056:51;2023:84;2132:4;2122:14;;:19;2118:84;;2160:34;2152:42;2199:3;2151:51;2118:84;2227:4;2217:14;;:19;2213:84;;2255:34;2247:42;2294:3;2246:51;2213:84;2322:4;2312:14;;:19;2308:84;;2350:34;2342:42;2389:3;2341:51;2308:84;2417:5;2407:15;;:20;2403:85;;2446:34;2438:42;2485:3;2437:51;2403:85;2513:5;2503:15;;:20;2499:85;;2542:34;2534:42;2581:3;2533:51;2499:85;2609:5;2599:15;;:20;2595:85;;2638:34;2630:42;2677:3;2629:51;2595:85;2705:5;2695:15;;:20;2691:85;;2734:34;2726:42;2773:3;2725:51;2691:85;2801:6;2791:16;;:21;2787:86;;2831:34;2823:42;2870:3;2822:51;2787:86;2898:6;2888:16;;:21;2884:86;;2928:34;2920:42;2967:3;2919:51;2884:86;2995:6;2985:16;;:21;2981:86;;3025:34;3017:42;3064:3;3016:51;2981:86;3092:6;3082:16;;:21;3078:86;;3122:34;3114:42;3161:3;3113:51;3078:86;3189:7;3179:17;;:22;3175:86;;3220:33;3212:41;3258:3;3211:50;3175:86;3286:7;3276:17;;:22;3272:85;;3317:32;3309:40;3354:3;3308:49;3272:85;3382:7;3372:17;;:22;3368:83;;3413:30;3405:38;3448:3;3404:47;3368:83;3476:7;3466:17;;:22;3462:78;;3507:25;3499:33;3537:3;3498:42;3462:78;3564:1;3557:4;:8;;;3553:47;;;3595:5;-1:-1:-1;;3575:25:28;;;;;;3567:33;;3553:47;3964:7;3955:5;:17;:22;:30;;3984:1;3955:30;;;3980:1;3955:30;3938:48;;3948:2;3939:5;:11;;3938:48;3915:72;;1384:2611;;;;;:::o;762:3868:18:-;878:14;;;-1:-1:-1;;1394:1:18;1391;1384:20;1427:9;;;;-1:-1:-1;1479:13:18;;;1463:14;;;;1459:34;;-1:-1:-1;1579:10:18;1575:185;;1628:1;1614:11;:15;1606:24;;;;;;-1:-1:-1;1683:23:18;;;;-1:-1:-1;1735:13:18;;1575:185;1891:5;1877:11;:19;1869:28;;;;;;2182:17;2260:11;2257:1;2254;2247:25;2623:12;2638;;;:26;;2761:22;;;;;3584:1;3565;:15;;3564:21;;3815:17;;;3811:21;;3804:28;3874:17;;;3870:21;;3863:28;3934:17;;;3930:21;;3923:28;3994:17;;;3990:21;;3983:28;4054:17;;;4050:21;;4043:28;4115:17;;;4111:21;;;4104:28;3144:12;;;;3140:23;;;3165:1;3136:31;2393:20;;;2382:32;;;3197:12;;;;2437:21;;;;2894:16;;;;3188:21;;;;4587:11;;;;;-1:-1:-1;;762:3868:18;;;;;:::o;14:198:178:-;84:20;;-1:-1:-1;;;;;133:54:178;;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:178;;;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:178;;285:641;-1:-1:-1;;;;;;;285:641:178:o;931:162::-;999:20;;1059:1;1048:20;;;1038:31;;1028:2;;1083:1;1080;1073:12;1098:190;1168:20;;-1:-1:-1;;;;;1217:46:178;;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:178;;;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:178;-1:-1:-1;;2929:18:178;;2916:32;;-1:-1:-1;;2960:16:178;;;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:178;;;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:178;;3230:1277;-1:-1:-1;;;;;;;;;3230:1277:178: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;;-1:-1:-1;;;;;5379:47:178;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:178:o;6343:183::-;;6442:18;6434:6;6431:30;6428:2;;;6464:9;6428:2;-1:-1:-1;6515:4:178;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/elixir-periphery/test/OracleTest.sol\":\"OracleTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-periphery/libraries/OracleLibrary.sol\":{\"keccak256\":\"0xecfbccc929ebb369764737fbf6a1641f598e08572d0143391726ab847f1c312b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3c89b1004e7e602ec60e7ec340085a0ec2e96f63475ef142921b6ba5f02ddd2c\",\"dweb:/ipfs/Qmd7BCnEAR9wFBSTKQ3ykyjW1LYEhGBQPHKDu5qBjSrwuy\"]},\"contracts/elixir-periphery/test/OracleTest.sol\":{\"keccak256\":\"0xfd02c05229e4ab6f8428a0c6a48cb6e6a6df9318096f59c76d4b73480fab7579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ce9d49558d96b9dce49cab5ad3887711cba2fbc68a7a690e9b731c394e740597\",\"dweb:/ipfs/QmWekrnpZqAARLM5XfkqoihM4Ro8ok7PBfLBcTZecpCVbe\"]}},\"version\":1}"}},"contracts/elixir-periphery/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":"608060405234801561001057600080fd5b50610858806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063bf8b627b11610050578063bf8b627b14610241578063d7c9ca0c146102e7578063eadc682a1461039f57610067565b80637db6e2461461006c5780639dc1c39114610187575b600080fd5b6101126004803603602081101561008257600080fd5b81019060208101813564010000000081111561009d57600080fd5b8201836020820111156100af57600080fd5b803590602001918460018302840111640100000000831117156100d157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610481945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014c578181015183820152602001610134565b50505050905090810190601f1680156101795780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61022d6004803603602081101561019d57600080fd5b8101906020810181356401000000008111156101b857600080fd5b8201836020820111156101ca57600080fd5b803590602001918460018302840111640100000000831117156101ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610492945050505050565b604080519115158252519081900360200190f35b6101126004803603602081101561025757600080fd5b81019060208101813564010000000081111561027257600080fd5b82018360208201111561028457600080fd5b803590602001918460018302840111640100000000831117156102a657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061049d945050505050565b61038d600480360360208110156102fd57600080fd5b81019060208101813564010000000081111561031857600080fd5b82018360208201111561032a57600080fd5b8035906020019184600183028401116401000000008311171561034c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506104a8945050505050565b60408051918252519081900360200190f35b610445600480360360208110156103b557600080fd5b8101906020810181356401000000008111156103d057600080fd5b8201836020820111156103e257600080fd5b8035906020019184600183028401116401000000008311171561040457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506104c3945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff168183015290519081900360600190f35b606061048c826104de565b92915050565b600061048c826104ed565b606061048c826104f5565b6000805a90506104b78361050c565b5050505a900392915050565b60008060006104d18461050c565b9250925092509193909250565b606061048c826000602b61053d565b516042111590565b805160609061048c9083906017906016190161053d565b6000808061051a848261069a565b9250610527846014610766565b905061053484601761069a565b91509193909250565b60608182601f011015610588576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b8282840110156105d0576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b81830184511015610628576040805162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b6060821580156106475760405191506000825260208201604052610691565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610680578051835260209283019201610668565b5050858452601f01601f1916604052505b50949350505050565b6000818260140110156106f4576040805162461bcd60e51b815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b816014018351101561074d576040805162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b6000818260030110156107c0576040805162461bcd60e51b815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015610819576040805162461bcd60e51b815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b5001600301519056fea264697066735822122003bb69978ceb1f0659769bb07678ff736ec432c81b4d4d3413e706658a48df4564736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x858 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 0x50C JUMP JUMPDEST POP POP POP GAS SWAP1 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4D1 DUP5 PUSH2 0x50C 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 0x53D JUMP JUMPDEST MLOAD PUSH1 0x42 GT ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x48C SWAP1 DUP4 SWAP1 PUSH1 0x17 SWAP1 PUSH1 0x16 NOT ADD PUSH2 0x53D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x51A DUP5 DUP3 PUSH2 0x69A JUMP JUMPDEST SWAP3 POP PUSH2 0x527 DUP5 PUSH1 0x14 PUSH2 0x766 JUMP JUMPDEST SWAP1 POP PUSH2 0x534 DUP5 PUSH1 0x17 PUSH2 0x69A JUMP JUMPDEST SWAP2 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP3 PUSH1 0x1F ADD LT ISZERO PUSH2 0x588 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x736C6963655F6F766572666C6F77 PUSH1 0x90 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 DUP5 ADD LT ISZERO PUSH2 0x5D0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x736C6963655F6F766572666C6F77 PUSH1 0x90 SHL 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 0x628 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x647 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x0 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x691 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 0x680 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x668 JUMP JUMPDEST POP POP DUP6 DUP5 MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT 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 0x6F4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x74D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x7C0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x819 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SUB 0xBB PUSH10 0x978CEB1F0659769BB076 PUSH25 0xFF736EC432C81B4D4D3413E706658A48DF4564736F6C634300 SMOD MOD STOP CALLER ","sourceMap":"102:900:110:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c8063bf8b627b11610050578063bf8b627b14610241578063d7c9ca0c146102e7578063eadc682a1461039f57610067565b80637db6e2461461006c5780639dc1c39114610187575b600080fd5b6101126004803603602081101561008257600080fd5b81019060208101813564010000000081111561009d57600080fd5b8201836020820111156100af57600080fd5b803590602001918460018302840111640100000000831117156100d157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610481945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014c578181015183820152602001610134565b50505050905090810190601f1680156101795780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61022d6004803603602081101561019d57600080fd5b8101906020810181356401000000008111156101b857600080fd5b8201836020820111156101ca57600080fd5b803590602001918460018302840111640100000000831117156101ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610492945050505050565b604080519115158252519081900360200190f35b6101126004803603602081101561025757600080fd5b81019060208101813564010000000081111561027257600080fd5b82018360208201111561028457600080fd5b803590602001918460018302840111640100000000831117156102a657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061049d945050505050565b61038d600480360360208110156102fd57600080fd5b81019060208101813564010000000081111561031857600080fd5b82018360208201111561032a57600080fd5b8035906020019184600183028401116401000000008311171561034c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506104a8945050505050565b60408051918252519081900360200190f35b610445600480360360208110156103b557600080fd5b8101906020810181356401000000008111156103d057600080fd5b8201836020820111156103e257600080fd5b8035906020019184600183028401116401000000008311171561040457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506104c3945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff168183015290519081900360600190f35b606061048c826104de565b92915050565b600061048c826104ed565b606061048c826104f5565b6000805a90506104b78361050c565b5050505a900392915050565b60008060006104d18461050c565b9250925092509193909250565b606061048c826000602b61053d565b516042111590565b805160609061048c9083906017906016190161053d565b6000808061051a848261069a565b9250610527846014610766565b905061053484601761069a565b91509193909250565b60608182601f011015610588576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b8282840110156105d0576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b81830184511015610628576040805162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b6060821580156106475760405191506000825260208201604052610691565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610680578051835260209283019201610668565b5050858452601f01601f1916604052505b50949350505050565b6000818260140110156106f4576040805162461bcd60e51b815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b816014018351101561074d576040805162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b6000818260030110156107c0576040805162461bcd60e51b815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015610819576040805162461bcd60e51b815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b5001600301519056fea264697066735822122003bb69978ceb1f0659769bb07678ff736ec432c81b4d4d3413e706658a48df4564736f6c63430007060033","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 0x50C JUMP JUMPDEST POP POP POP GAS SWAP1 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4D1 DUP5 PUSH2 0x50C 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 0x53D JUMP JUMPDEST MLOAD PUSH1 0x42 GT ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x48C SWAP1 DUP4 SWAP1 PUSH1 0x17 SWAP1 PUSH1 0x16 NOT ADD PUSH2 0x53D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x51A DUP5 DUP3 PUSH2 0x69A JUMP JUMPDEST SWAP3 POP PUSH2 0x527 DUP5 PUSH1 0x14 PUSH2 0x766 JUMP JUMPDEST SWAP1 POP PUSH2 0x534 DUP5 PUSH1 0x17 PUSH2 0x69A JUMP JUMPDEST SWAP2 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP3 PUSH1 0x1F ADD LT ISZERO PUSH2 0x588 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x736C6963655F6F766572666C6F77 PUSH1 0x90 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 DUP5 ADD LT ISZERO PUSH2 0x5D0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x736C6963655F6F766572666C6F77 PUSH1 0x90 SHL 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 0x628 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x647 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x0 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x691 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 0x680 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x668 JUMP JUMPDEST POP POP DUP6 DUP5 MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT 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 0x6F4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x74D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x7C0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x819 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SUB 0xBB PUSH10 0x978CEB1F0659769BB076 PUSH25 0xFF736EC432C81B4D4D3413E706658A48DF4564736F6C634300 SMOD MOD STOP CALLER ","sourceMap":"102:900:110:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;511:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;511:125:110;;-1:-1:-1;511:125:110;;-1:-1:-1;;;;;511:125:110:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;127:125:110;;-1:-1:-1;127:125:110;;-1:-1:-1;;;;;127:125:110:i;:::-;;;;;;;;;;;;;;;;;;644:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;644:119:110;;-1:-1:-1;644:119:110;;-1:-1:-1;;;;;644:119:110:i;789:210::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;789:210:110;;-1:-1:-1;789:210:110;;-1:-1:-1;;;;;789:210:110:i;:::-;;;;;;;;;;;;;;;;260:243;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;260:243:110;;-1:-1:-1;260:243:110;;-1:-1:-1;;;;;260:243:110:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;511:125;573:12;605:23;623:4;605:17;:23::i;:::-;598:30;511:125;-1:-1:-1;;511:125:110:o;127:::-;193:4;217:27;239:4;217:21;:27::i;644:119::-;703:12;735:20;750:4;735:14;:20::i;789:210::-;866:7;886:17;906:9;886:29;;926:26;947:4;926:20;:26::i;:::-;;;;982:9;970:21;;;789:210;-1:-1:-1;;789:210:110:o;260:243::-;366:14;395;424:10;469:26;490:4;469:20;:26::i;:::-;462:33;;;;;;260:243;;;;;:::o;2377:129:96:-;2441:12;2473:25;:4;2484:1;635:23;2473:10;:25::i;1016:140::-;1108:11;796:24;-1:-1:-1;1108:40:96;;1016:140::o;2700:151::-;2817:11;;2761:12;;2793:50;;2817:4;;522:20;;-1:-1:-1;;2817:25:96;2793:10;:50::i;1820:326::-;1928:14;;;2033:17;:4;1928:14;2033;:17::i;:::-;2024:26;-1:-1:-1;2067:24:96;:4;314:2;2067:13;:24::i;:::-;2061:30;-1:-1:-1;2111:27:96;:4;522:20;2111:14;:27::i;:::-;2102:36;;1820:326;;;;;:::o;410:3071:89:-;536:12;585:7;569;579:2;569:12;:23;;561:50;;;;;-1:-1:-1;;;561:50:89;;;;;;;;;;;;-1:-1:-1;;;561:50:89;;;;;;;;;;;;;;;650:6;639:7;630:6;:16;:26;;622:53;;;;;-1:-1:-1;;;622:53:89;;;;;;;;;;;;-1:-1:-1;;;622:53:89;;;;;;;;;;;;;;;720:7;711:6;:16;694:6;:13;:33;;686:63;;;;;-1:-1:-1;;;686:63:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;762:22;828:15;;861:2137;;;;3154:4;3148:11;3135:24;;3355:1;3344:9;3337:20;3409:4;3398:9;3394:20;3388:4;3381:34;821:2613;;861:2137;1058:4;1052:11;1039:24;;1763:2;1754:7;1750:16;2171:9;2164:17;2158:4;2154:28;2142:9;2131;2127:25;2123:60;2224:7;2220:2;2216:16;2497:6;2483:9;2476:17;2470:4;2466:28;2454:9;2446:6;2442:22;2438:57;2434:70;2256:470;2535:3;2531:2;2528:11;2256:470;;;2693:9;;2682:21;;2581:4;2573:13;;;;2618;2256:470;;;-1:-1:-1;;2750:26:89;;;2974:2;2957:11;-1:-1:-1;;2953:25:89;2947:4;2940:39;-1:-1:-1;821:2613:89;-1:-1:-1;3464:9:89;410:3071;-1:-1:-1;;;;410:3071:89:o;3489:426::-;3568:7;3611:6;3596;3605:2;3596:11;:21;;3588:52;;;;;-1:-1:-1;;;3588:52:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;3676:6;3685:2;3676:11;3659:6;:13;:28;;3651:62;;;;;-1:-1:-1;;;3651:62:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3805:30:89;3821:4;3805:30;3799:37;3838:27;3795:71;;;3489:426::o;3923:375::-;4001:6;4042;4028;4037:1;4028:10;:20;;4020:50;;;;;-1:-1:-1;;;4020:50:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;4106:6;4115:1;4106:10;4089:6;:13;:27;;4081:60;;;;;-1:-1:-1;;;4081:60:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4222:29:89;4238:3;4222:29;4216:36;;3923:375::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/elixir-periphery/test/PathTest.sol\":\"PathTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/libraries/BytesLib.sol\":{\"keccak256\":\"0xbf23f73b0ec504e799b3e8ea71063eaeec08d6e688c56951fc645afaf5c1e7fd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://863b16fdc6f8b9a22622fe4f9b991b4b7039db2beec8095134ed18ec4843683f\",\"dweb:/ipfs/QmatVX7apv6drzj8WvDjQs8sREGApz1U4pvhPnk6MCyPFT\"]},\"contracts/elixir-periphery/libraries/Path.sol\":{\"keccak256\":\"0x13c1302a21dbc2bbac527052506140eb3ed342c3b83054e07d0040d22c3dd284\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed3ce8db752fabe37b23d6fd1205a35102f2f6e91ad14f42536538b6ea71ae08\",\"dweb:/ipfs/QmSpSmvuTcavQW3HixkdAcFhCyzLwSkHKNUa7RrEM47jet\"]},\"contracts/elixir-periphery/test/PathTest.sol\":{\"keccak256\":\"0xf6d8cde981bd7d18919c9853fc78d5becd767449667eeaca2ca3e49428d3bde7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2659006531122831691175e801ea5f078ea92b3bfa2cd9167f7b9c6cc5a930f3\",\"dweb:/ipfs/QmTy55bsmhiVSUTtiZqTRQmuptT2iKm445rtxgu7NJ1Jgh\"]}},\"version\":1}"}},"contracts/elixir-periphery/test/PeripheryImmutableStateTest.sol":{"PeripheryImmutableStateTest":{"abi":[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH9","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH9","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":"60c060405234801561001057600080fd5b506040516101643803806101648339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c60ea61007a60003980606e5250806092525060ea6000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80634aa4a4fc146037578063c45a0155146066575b600080fd5b603d606c565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b603d6090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f00000000000000000000000000000000000000000000000000000000000000008156fea2646970667358221220fcb8b822eacca4a3716d80d234d5ac58761be0d013241b6979f89a065509c02764736f6c63430007060033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x164 CODESIZE SUB DUP1 PUSH2 0x164 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 0xEA PUSH2 0x7A PUSH1 0x0 CODECOPY DUP1 PUSH1 0x6E MSTORE POP DUP1 PUSH1 0x92 MSTORE POP PUSH1 0xEA 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 0x4AA4A4FC 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFC 0xB8 0xB8 0x22 0xEA 0xCC LOG4 LOG3 PUSH18 0x6D80D234D5AC58761BE0D013241B6979F89A MOD SSTORE MULMOD 0xC0 0x27 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"122:164:111:-:0;;;193:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;193:90:111;;;;;;;-1:-1:-1;;;;;;536:18:64;;;;;;;;565:14;;;;;122:164:111;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{"14934":[{"length":32,"start":146}],"14938":[{"length":32,"start":110}]},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060325760003560e01c80634aa4a4fc146037578063c45a0155146066575b600080fd5b603d606c565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b603d6090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f00000000000000000000000000000000000000000000000000000000000000008156fea2646970667358221220fcb8b822eacca4a3716d80d234d5ac58761be0d013241b6979f89a065509c02764736f6c63430007060033","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 0x4AA4A4FC 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFC 0xB8 0xB8 0x22 0xEA 0xCC LOG4 LOG3 PUSH18 0x6D80D234D5AC58761BE0D013241B6979F89A MOD SSTORE MULMOD 0xC0 0x27 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"122:164:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;431:39:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;337:41;;;:::i;431:39::-;;;:::o;337:41::-;;;:::o"},"methodIdentifiers":{"WETH9()":"4aa4a4fc","factory()":"c45a0155"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_WETH9\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"WETH9\",\"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/elixir-periphery/test/PeripheryImmutableStateTest.sol\":\"PeripheryImmutableStateTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x1d0175136fda60c5e1b6aab6dfa4a35856717413d754d0750eb75866f3f5e43f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8e19496cd2a7239e9e869bafbfb9f762691a9ab52f169b579f11d752d7df79a5\",\"dweb:/ipfs/QmTaLVPUVMGp4ZywHwpFupnz2873NPyqYs3EzbJTHpVNSA\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/test/PeripheryImmutableStateTest.sol\":{\"keccak256\":\"0x0bc1e9ad5fe809b727ec3600cd973cca2aa23b6d032a2d21c4bac34e91135c20\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5ba54f729cd40f08758b0aaf306ed7bf24af0e9c9fbfc10d271f05025fae4dc6\",\"dweb:/ipfs/QmP7nEkeDHQKmDVogFkLSeuErbtBgi4nnCHojhS9FPfz8Y\"]}},\"version\":1}"}},"contracts/elixir-periphery/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":"608060405234801561001057600080fd5b506102ea806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80638716c5ff14610046578063cce34ec6146100a4578063dc6fd8ab146100f8575b600080fd5b6100886004803603608081101561005c57600080fd5b5080356001600160a01b03908116916020810135821691604082013516906060013562ffffff16610100565b604080516001600160a01b039092168252519081900360200190f35b6100e6600480360360808110156100ba57600080fd5b5080356001600160a01b03908116916020810135821691604082013516906060013562ffffff16610146565b60408051918252519081900360200190f35b6100e6610194565b600061013d856040518060600160405280876001600160a01b03168152602001866001600160a01b031681526020018562ffffff168152506101b8565b95945050505050565b6000805a9050610187866040518060600160405280886001600160a01b03168152602001876001600160a01b031681526020018662ffffff168152506101b8565b505a900395945050505050565b7f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2290565b600081602001516001600160a01b031682600001516001600160a01b0316106101e057600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f590910190915280519101209056fea264697066735822122042ec7c9d7eed2175ee4f6f69bc08c917a58ecd29bcf7d717b878b596c54c877b64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EA 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 0xA4 JUMPI DUP1 PUSH4 0xDC6FD8AB EQ PUSH2 0xF8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x88 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x100 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x146 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE6 PUSH2 0x194 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13D DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH3 0xFFFFFF AND DUP2 MSTORE POP PUSH2 0x1B8 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x187 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH3 0xFFFFFF AND DUP2 MSTORE POP PUSH2 0x1B8 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x41A723F9E6457830B1B7A44DF4435FAB88581D073226894B33131815DD674C22 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x41A723F9E6457830B1B7A44DF4435FAB88581D073226894B33131815DD674C22 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TIMESTAMP 0xEC PUSH29 0x9D7EED2175EE4F6F69BC08C917A58ECD29BCF7D717B878B596C54C877B PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"109:827:112:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c80638716c5ff14610046578063cce34ec6146100a4578063dc6fd8ab146100f8575b600080fd5b6100886004803603608081101561005c57600080fd5b5080356001600160a01b03908116916020810135821691604082013516906060013562ffffff16610100565b604080516001600160a01b039092168252519081900360200190f35b6100e6600480360360808110156100ba57600080fd5b5080356001600160a01b03908116916020810135821691604082013516906060013562ffffff16610146565b60408051918252519081900360200190f35b6100e6610194565b600061013d856040518060600160405280876001600160a01b03168152602001866001600160a01b031681526020018562ffffff168152506101b8565b95945050505050565b6000805a9050610187866040518060600160405280886001600160a01b03168152602001876001600160a01b031681526020018662ffffff168152506101b8565b505a900395945050505050565b7f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2290565b600081602001516001600160a01b031682600001516001600160a01b0316106101e057600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f590910190915280519101209056fea264697066735822122042ec7c9d7eed2175ee4f6f69bc08c917a58ecd29bcf7d717b878b596c54c877b64736f6c63430007060033","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 0xA4 JUMPI DUP1 PUSH4 0xDC6FD8AB EQ PUSH2 0xF8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x88 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x100 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x146 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE6 PUSH2 0x194 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13D DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH3 0xFFFFFF AND DUP2 MSTORE POP PUSH2 0x1B8 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x187 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH3 0xFFFFFF AND DUP2 MSTORE POP PUSH2 0x1B8 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x41A723F9E6457830B1B7A44DF4435FAB88581D073226894B33131815DD674C22 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x41A723F9E6457830B1B7A44DF4435FAB88581D073226894B33131815DD674C22 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TIMESTAMP 0xEC PUSH29 0x9D7EED2175EE4F6F69BC08C917A58ECD29BCF7D717B878B596C54C877B PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"109:827:112:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;269:286;;;;;;;;;;;;;;;;-1:-1:-1;269:286:112;;-1:-1:-1;;;;;269:286:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;269:286:112;;;;;;;;;;;;;;563:370;;;;;;;;;;;;;;;;-1:-1:-1;563:370:112;;-1:-1:-1;;;;;563:370:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;141:120;;;:::i;269:286::-;420:7;447:100;474:7;483:63;;;;;;;;512:6;-1:-1:-1;;;;;483:63:112;;;;;528:6;-1:-1:-1;;;;;483:63:112;;;;;541:3;483:63;;;;;447:26;:100::i;:::-;440:107;269:286;-1:-1:-1;;;;;269:286:112:o;563:370::-;726:7;746:17;766:9;746:29;;786:100;813:7;822:63;;;;;;;;851:6;-1:-1:-1;;;;;822:63:112;;;;;867:6;-1:-1:-1;;;;;822:63:112;;;;;880:3;822:63;;;;;786:26;:100::i;:::-;;916:9;904:21;;;563:370;-1:-1:-1;;;;;563:370:112:o;141:120::-;658:66:97;141:120:112;:::o;1749:526:97:-;1833:12;1879:3;:10;;;-1:-1:-1;;;;;1866:23:97;:3;:10;;;-1:-1:-1;;;;;1866:23:97;;1858:32;;;;;;-1:-1:-1;2120:10:97;;2132;;;;;2144:7;;;;;2109:43;;-1:-1:-1;;;;;2109:43:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:54;;;;;;1988:234;;;;;;;;-1:-1:-1;;1988:234:97;;;;;;;;;;;;658:66;1988:234;;;;;;;;;;;;;;;;;;;;;;;;;1956:285;;;;;;1749:526::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/elixir-periphery/test/PoolAddressTest.sol\":\"PoolAddressTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]},\"contracts/elixir-periphery/test/PoolAddressTest.sol\":{\"keccak256\":\"0x718b8904f5454d223e5bb83c2f9e72f98b4a9ce9be36bafcb5928a50b2cfe35d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3cc9b1f726ca26285f2d7948c7af53fc07072c83e585b670cd154da1ecb75bd4\",\"dweb:/ipfs/QmXg7jJJiYaNwyV6R3CtEkgeqPrcnWmrew1imkdhqN4krW\"]}},\"version\":1}"}},"contracts/elixir-periphery/test/PoolTicksCounterTest.sol":{"PoolTicksCounterTest":{"abi":[{"inputs":[{"internalType":"contract IElixirPool","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":"608060405234801561001057600080fd5b50610680806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80634c5b941c14610030575b600080fd5b6100696004803603606081101561004657600080fd5b506001600160a01b03813516906020810135600290810b9160400135900b610082565b6040805163ffffffff9092168252519081900360200190f35b60006100986001600160a01b03851684846100a0565b949350505050565b60008060008060008060008060088b6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100e757600080fd5b505afa1580156100fb573d6000803e3d6000fd5b505050506040513d602081101561011157600080fd5b5051600290810b908c900b8161012357fe5b0560020b901d905060006101008c6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561016957600080fd5b505afa15801561017d573d6000803e3d6000fd5b505050506040513d602081101561019357600080fd5b5051600290810b908d900b816101a557fe5b0560020b816101b057fe5b079050600060088d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101f057600080fd5b505afa158015610204573d6000803e3d6000fd5b505050506040513d602081101561021a57600080fd5b5051600290810b908d900b8161022c57fe5b0560020b901d905060006101008e6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561027257600080fd5b505afa158015610286573d6000803e3d6000fd5b505050506040513d602081101561029c57600080fd5b5051600290810b908e900b816102ae57fe5b0560020b816102b957fe5b07905060008160ff166001901b8f6001600160a01b0316635339c296856040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561030d57600080fd5b505afa158015610321573d6000803e3d6000fd5b505050506040513d602081101561033757600080fd5b5051161180156103bd57508d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561037b57600080fd5b505afa15801561038f573d6000803e3d6000fd5b505050506040513d60208110156103a557600080fd5b5051600290810b908d900b816103b757fe5b0760020b155b80156103ce57508b60020b8d60020b135b945060008360ff166001901b8f6001600160a01b0316635339c296876040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561042157600080fd5b505afa158015610435573d6000803e3d6000fd5b505050506040513d602081101561044b57600080fd5b5051161180156104d157508d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561048f57600080fd5b505afa1580156104a3573d6000803e3d6000fd5b505050506040513d60208110156104b957600080fd5b5051600290810b908e900b816104cb57fe5b0760020b155b80156104e257508b60020b8d60020b125b95508160010b8460010b128061050e57508160010b8460010b14801561050e57508060ff168360ff1611155b1561052457839950829750819850809650610531565b8199508097508398508296505b505060001960ff87161b9150505b8560010b8760010b13610601578560010b8760010b14156105665760001960ff858103161c165b6000818c6001600160a01b0316635339c2968a6040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b1580156105b057600080fd5b505afa1580156105c4573d6000803e3d6000fd5b505050506040513d60208110156105da57600080fd5b50511690506105e881610629565b61ffff169890980197505060019095019460001961053f565b811561060e576001880397505b821561061b576001880397505b505050505050509392505050565b6000805b82156106445760001983019092169160010161062d565b9291505056fea2646970667358221220e2f48ddb54f82ed338805e6fad1a1732cf5e7fb9705f06730b1cd7d53357396f64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x680 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 0x69 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x40 ADD CALLDATALOAD SWAP1 SIGNEXTEND PUSH2 0x82 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 0x98 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 DUP5 PUSH2 0xA0 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFB 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 0x111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP13 SWAP1 SIGNEXTEND DUP2 PUSH2 0x123 JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND SWAP1 SAR SWAP1 POP PUSH1 0x0 PUSH2 0x100 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17D 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 0x193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x1A5 JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x1B0 JUMPI INVALID JUMPDEST SMOD SWAP1 POP PUSH1 0x0 PUSH1 0x8 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x204 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 0x21A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x22C JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND SWAP1 SAR SWAP1 POP PUSH1 0x0 PUSH2 0x100 DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x286 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 0x29C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP15 SWAP1 SIGNEXTEND DUP2 PUSH2 0x2AE JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x2B9 JUMPI INVALID JUMPDEST SMOD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL DUP16 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x321 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 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND GT DUP1 ISZERO PUSH2 0x3BD JUMPI POP DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x37B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x38F 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 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x3B7 JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3CE 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x421 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x435 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 0x44B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND GT DUP1 ISZERO PUSH2 0x4D1 JUMPI POP DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x48F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A3 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 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP15 SWAP1 SIGNEXTEND DUP2 PUSH2 0x4CB JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x4E2 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 0x50E JUMPI POP DUP2 PUSH1 0x1 SIGNEXTEND DUP5 PUSH1 0x1 SIGNEXTEND EQ DUP1 ISZERO PUSH2 0x50E JUMPI POP DUP1 PUSH1 0xFF AND DUP4 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO PUSH2 0x524 JUMPI DUP4 SWAP10 POP DUP3 SWAP8 POP DUP2 SWAP9 POP DUP1 SWAP7 POP PUSH2 0x531 JUMP JUMPDEST DUP2 SWAP10 POP DUP1 SWAP8 POP DUP4 SWAP9 POP DUP3 SWAP7 POP JUMPDEST POP POP PUSH1 0x0 NOT PUSH1 0xFF DUP8 AND SHL SWAP2 POP POP JUMPDEST DUP6 PUSH1 0x1 SIGNEXTEND DUP8 PUSH1 0x1 SIGNEXTEND SGT PUSH2 0x601 JUMPI DUP6 PUSH1 0x1 SIGNEXTEND DUP8 PUSH1 0x1 SIGNEXTEND EQ ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 NOT PUSH1 0xFF DUP6 DUP2 SUB AND SHR AND JUMPDEST PUSH1 0x0 DUP2 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x5B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5C4 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 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND SWAP1 POP PUSH2 0x5E8 DUP2 PUSH2 0x629 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP9 SWAP1 SWAP9 ADD SWAP8 POP POP PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 PUSH1 0x0 NOT PUSH2 0x53F JUMP JUMPDEST DUP2 ISZERO PUSH2 0x60E JUMPI PUSH1 0x1 DUP9 SUB SWAP8 POP JUMPDEST DUP3 ISZERO PUSH2 0x61B 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 0x644 JUMPI PUSH1 0x0 NOT DUP4 ADD SWAP1 SWAP3 AND SWAP2 PUSH1 0x1 ADD PUSH2 0x62D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE2 DELEGATECALL DUP14 0xDB SLOAD 0xF8 0x2E 0xD3 CODESIZE DUP1 0x5E PUSH16 0xAD1A1732CF5E7FB9705F06730B1CD7D5 CALLER JUMPI CODECOPY PUSH16 0x64736F6C634300070600330000000000 ","sourceMap":"179:349:113:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061002b5760003560e01c80634c5b941c14610030575b600080fd5b6100696004803603606081101561004657600080fd5b506001600160a01b03813516906020810135600290810b9160400135900b610082565b6040805163ffffffff9092168252519081900360200190f35b60006100986001600160a01b03851684846100a0565b949350505050565b60008060008060008060008060088b6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100e757600080fd5b505afa1580156100fb573d6000803e3d6000fd5b505050506040513d602081101561011157600080fd5b5051600290810b908c900b8161012357fe5b0560020b901d905060006101008c6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561016957600080fd5b505afa15801561017d573d6000803e3d6000fd5b505050506040513d602081101561019357600080fd5b5051600290810b908d900b816101a557fe5b0560020b816101b057fe5b079050600060088d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101f057600080fd5b505afa158015610204573d6000803e3d6000fd5b505050506040513d602081101561021a57600080fd5b5051600290810b908d900b8161022c57fe5b0560020b901d905060006101008e6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561027257600080fd5b505afa158015610286573d6000803e3d6000fd5b505050506040513d602081101561029c57600080fd5b5051600290810b908e900b816102ae57fe5b0560020b816102b957fe5b07905060008160ff166001901b8f6001600160a01b0316635339c296856040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561030d57600080fd5b505afa158015610321573d6000803e3d6000fd5b505050506040513d602081101561033757600080fd5b5051161180156103bd57508d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561037b57600080fd5b505afa15801561038f573d6000803e3d6000fd5b505050506040513d60208110156103a557600080fd5b5051600290810b908d900b816103b757fe5b0760020b155b80156103ce57508b60020b8d60020b135b945060008360ff166001901b8f6001600160a01b0316635339c296876040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561042157600080fd5b505afa158015610435573d6000803e3d6000fd5b505050506040513d602081101561044b57600080fd5b5051161180156104d157508d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561048f57600080fd5b505afa1580156104a3573d6000803e3d6000fd5b505050506040513d60208110156104b957600080fd5b5051600290810b908e900b816104cb57fe5b0760020b155b80156104e257508b60020b8d60020b125b95508160010b8460010b128061050e57508160010b8460010b14801561050e57508060ff168360ff1611155b1561052457839950829750819850809650610531565b8199508097508398508296505b505060001960ff87161b9150505b8560010b8760010b13610601578560010b8760010b14156105665760001960ff858103161c165b6000818c6001600160a01b0316635339c2968a6040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b1580156105b057600080fd5b505afa1580156105c4573d6000803e3d6000fd5b505050506040513d60208110156105da57600080fd5b50511690506105e881610629565b61ffff169890980197505060019095019460001961053f565b811561060e576001880397505b821561061b576001880397505b505050505050509392505050565b6000805b82156106445760001983019092169160010161062d565b9291505056fea2646970667358221220e2f48ddb54f82ed338805e6fad1a1732cf5e7fb9705f06730b1cd7d53357396f64736f6c63430007060033","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 0x69 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x40 ADD CALLDATALOAD SWAP1 SIGNEXTEND PUSH2 0x82 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 0x98 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 DUP5 PUSH2 0xA0 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFB 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 0x111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP13 SWAP1 SIGNEXTEND DUP2 PUSH2 0x123 JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND SWAP1 SAR SWAP1 POP PUSH1 0x0 PUSH2 0x100 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17D 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 0x193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x1A5 JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x1B0 JUMPI INVALID JUMPDEST SMOD SWAP1 POP PUSH1 0x0 PUSH1 0x8 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x204 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 0x21A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x22C JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND SWAP1 SAR SWAP1 POP PUSH1 0x0 PUSH2 0x100 DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x286 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 0x29C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP15 SWAP1 SIGNEXTEND DUP2 PUSH2 0x2AE JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x2B9 JUMPI INVALID JUMPDEST SMOD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL DUP16 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x321 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 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND GT DUP1 ISZERO PUSH2 0x3BD JUMPI POP DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x37B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x38F 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 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x3B7 JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3CE 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x421 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x435 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 0x44B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND GT DUP1 ISZERO PUSH2 0x4D1 JUMPI POP DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x48F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A3 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 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP15 SWAP1 SIGNEXTEND DUP2 PUSH2 0x4CB JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x4E2 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 0x50E JUMPI POP DUP2 PUSH1 0x1 SIGNEXTEND DUP5 PUSH1 0x1 SIGNEXTEND EQ DUP1 ISZERO PUSH2 0x50E JUMPI POP DUP1 PUSH1 0xFF AND DUP4 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO PUSH2 0x524 JUMPI DUP4 SWAP10 POP DUP3 SWAP8 POP DUP2 SWAP9 POP DUP1 SWAP7 POP PUSH2 0x531 JUMP JUMPDEST DUP2 SWAP10 POP DUP1 SWAP8 POP DUP4 SWAP9 POP DUP3 SWAP7 POP JUMPDEST POP POP PUSH1 0x0 NOT PUSH1 0xFF DUP8 AND SHL SWAP2 POP POP JUMPDEST DUP6 PUSH1 0x1 SIGNEXTEND DUP8 PUSH1 0x1 SIGNEXTEND SGT PUSH2 0x601 JUMPI DUP6 PUSH1 0x1 SIGNEXTEND DUP8 PUSH1 0x1 SIGNEXTEND EQ ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 NOT PUSH1 0xFF DUP6 DUP2 SUB AND SHR AND JUMPDEST PUSH1 0x0 DUP2 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x5B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5C4 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 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND SWAP1 POP PUSH2 0x5E8 DUP2 PUSH2 0x629 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP9 SWAP1 SWAP9 ADD SWAP8 POP POP PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 PUSH1 0x0 NOT PUSH2 0x53F JUMP JUMPDEST DUP2 ISZERO PUSH2 0x60E JUMPI PUSH1 0x1 DUP9 SUB SWAP8 POP JUMPDEST DUP3 ISZERO PUSH2 0x61B 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 0x644 JUMPI PUSH1 0x0 NOT DUP4 ADD SWAP1 SWAP3 AND SWAP2 PUSH1 0x1 ADD PUSH2 0x62D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE2 DELEGATECALL DUP14 0xDB SLOAD 0xF8 0x2E 0xD3 CODESIZE DUP1 0x5E PUSH16 0xAD1A1732CF5E7FB9705F06730B1CD7D5 CALLER JUMPI CODECOPY PUSH16 0x64736F6C634300070600330000000000 ","sourceMap":"179:349:113:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;263:262;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;263:262:113;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;411:30;461:56;-1:-1:-1;;;;;461:33:113;;495:10;507:9;461:33;:56::i;:::-;454:63;263:262;-1:-1:-1;;;;263:262:113:o;642:3377:98:-;790:30;833:18;862:19;892:17;920:18;949:26;986:25;1143:13;1202:1;1179:4;-1:-1:-1;;;;;1179:16:98;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1179:18:98;1166:31;;;;;;;;;;;;;;1165:38;;;;1143:61;;1219:12;1276:3;1254:4;-1:-1:-1;;;;;1254:16:98;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1254:18:98;1241:31;;;;;;;;;;;;;;1240:39;;;;;;;;1219:61;;1297:18;1360:1;1337:4;-1:-1:-1;;;;;1337:16:98;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1337:18:98;1325:30;;;;;;;;;;;;;;1324:37;;;;1297:65;;1377:17;1438:3;1416:4;-1:-1:-1;;;;;1416:16:98;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1416:18:98;1404:30;;;;;;;;;;;;;;1403:38;;;;;;;;1377:65;;1924:1;1908:11;1903:16;;:1;:16;;1870:4;-1:-1:-1;;;;;1870:15:98;;1886:12;1870:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1870:29:98;:50;1869:56;1868:118;;;;;1961:4;-1:-1:-1;;;;;1961:16:98;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1961:18:98;1949:30;;;;;;;;;;;;;;1948:37;;;1868:118;:163;;;;;2021:9;2008:22;;:10;:22;;;1868:163;1828:203;;2346:1;2335:6;2330:11;;:1;:11;;2302:4;-1:-1:-1;;;;;2302:15:98;;2318:7;2302:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2302:24:98;:40;2301:46;2300:109;;;;;2384:4;-1:-1:-1;;;;;2384:16:98;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2384:18:98;2371:31;;;;;;;;;;;;;;2370:38;;;2300:109;:154;;;;;2444:9;2431:22;;:10;:22;;;2300:154;2259:195;;2485:12;2475:22;;:7;:22;;;:76;;;;2513:12;2502:23;;:7;:23;;;:48;;;;;2539:11;2529:21;;:6;:21;;;;2502:48;2471:464;;;2587:7;2572:22;;2627:6;2613:20;;2668:12;2652:28;;2714:11;2699:26;;2471:464;;;2781:12;2766:27;;2826:11;2812:25;;2872:7;2856:23;;2913:6;2898:21;;2471:464;-1:-1:-1;;;;3154:32:98;;;;;-1:-1:-1;;3197:585:98;3220:13;3204:29;;:12;:29;;;3197:585;;3386:13;3370:29;;:12;:29;;;3366:127;;;-1:-1:-1;;3457:3:98;:18;;;3435:41;;3427:50;3366:127;3509:14;3558:4;3526;-1:-1:-1;;;;;3526:15:98;;3542:12;3526:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3526:29:98;:36;;-1:-1:-1;3604:20:98;3526:36;3604:12;:20::i;:::-;3577:47;;;;;;;-1:-1:-1;;3639:14:98;;;;;-1:-1:-1;;3197:585:98;;;3798:20;3794:81;;;3862:1;3835:28;;;;3794:81;3891:21;3887:82;;;3956:1;3929:28;;;;3887:82;3981:30;;;;;;;642:3377;;;;;:::o;4027:204::-;4082:6;;4127:75;4134:6;;4127:75;;-1:-1:-1;;4184:5:98;;4178:12;;;;4157:6;;4127:75;;;4219:4;4027:204;-1:-1:-1;;4027:204:98:o"},"methodIdentifiers":{"countInitializedTicksCrossed(address,int24,int24)":"4c5b941c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IElixirPool\",\"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/elixir-periphery/test/PoolTicksCounterTest.sol\":\"PoolTicksCounterTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-periphery/libraries/PoolTicksCounter.sol\":{\"keccak256\":\"0x456f3dbcf2c93f5ee21722ebde8ff82158e8f3eaa77b0c2c6e41cabe6670773f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ee4ff5211dad34f51f33d0928fcd3e91d6114af9c2702df48f2e71276bc31d1c\",\"dweb:/ipfs/QmVcFSQpJANGigQm77xr7UWKr32rXzVNwPx3XVWxbEb6vH\"]},\"contracts/elixir-periphery/test/PoolTicksCounterTest.sol\":{\"keccak256\":\"0xfb35fff144ca4c19138a63d1107da07663668b5d71204113db2f820c33179f67\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6eca8e0a234ebc36c8737f36dcacd848fbbf92b3acd968f88a67191bdd73cbbd\",\"dweb:/ipfs/Qmev5Saj3jWamTzLzg8ptusWvnkJ6F9vNAXDRREDrLmG9t\"]}},\"version\":1}"}},"contracts/elixir-periphery/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":"608060405234801561001057600080fd5b50610f44806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80635b6dc092116100505780635b6dc0921461013057806390594f9114610166578063ee4e9ba31461019c57610072565b80632263539714610077578063263a5362146100c65780633803770c146100f2575b600080fd5b6100ad6004803603606081101561008d57600080fd5b506001600160a01b038135811691602081013591604090910135166101d2565b6040805192835260208301919091528051918290030190f35b6100ad600480360360408110156100dc57600080fd5b506001600160a01b0381351690602001356101ec565b61011e6004803603604081101561010857600080fd5b506001600160a01b038135169060200135610204565b60408051918252519081900360200190f35b6100ad6004803603606081101561014657600080fd5b506001600160a01b03813581169160208101359160409091013516610220565b61011e6004803603606081101561017c57600080fd5b506001600160a01b0381358116916020810135916040909101351661022e565b61011e600480360360608110156101b257600080fd5b506001600160a01b0381358116916020810135916040909101351661024e565b6000806101e085858561025b565b91509150935093915050565b6000806101f98484610317565b915091509250929050565b6000805a90506102148484610317565b50505a90039392505050565b6000806101e08585856104ca565b6000805a905061023f8585856104ca565b50505a900390505b9392505050565b6000805a905061023f8585855b6000806000806000876001600160a01b03166399fbab88886040518263ffffffff1660e01b8152600401808281526020019150506101806040518083038186803b1580156102a857600080fd5b505afa1580156102bc573d6000803e3d6000fd5b505050506040513d6101808110156102d357600080fd5b5060a081015160c082015160e0909201519094509092509050610308866102f9856104fd565b610302856104fd565b8461082f565b94509450505050935093915050565b6000806000806000806000806000806000808d6001600160a01b03166399fbab888e6040518263ffffffff1660e01b8152600401808281526020019150506101806040518083038186803b15801561036e57600080fd5b505afa158015610382573d6000803e3d6000fd5b505050506040513d61018081101561039957600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050506001600160801b03169b506001600160801b03169b509b509b509b509b509b509b509b509b5050506104b58e6040518061014001604052808d6001600160a01b031681526020018c6001600160a01b031681526020018b62ffffff1681526020018a60020b81526020018960020b8152602001886001600160801b03168152602001878152602001868152602001858152602001848152506108cb565b9b509b50505050505050505050509250929050565b6000806000806104db87878761025b565b915091506000806104ec8989610317565b940195505050019050935093915050565b60008060008360020b12610514578260020b61051c565b8260020b6000035b9050620d89e881111561055a576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b60006001821661056e57600160801b610580565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156105b4576ffff97272373d413259a46990580e213a0260801c5b60048216156105d3576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156105f2576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615610611576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615610630576fff973b41fa98c081472e6896dfb254c00260801c5b604082161561064f576fff2ea16466c96a3843ec78b326b528610260801c5b608082161561066e576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561068e576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156106ae576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156106ce576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156106ee576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561070e576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561072e576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161561074e576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561076e576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561078f576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156107af576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156107ce576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156107eb576b048a170391f7dc42444e8fa20260801c5b60008460020b131561080657806000198161080257fe5b0490505b64010000000081061561081a57600161081d565b60005b60ff16602082901c0192505050919050565b600080836001600160a01b0316856001600160a01b03161115610850579293925b846001600160a01b0316866001600160a01b03161161087b576108748585856109e9565b91506108c2565b836001600160a01b0316866001600160a01b031610156108b4576108a08685856109e9565b91506108ad858785610a52565b90506108c2565b6108bf858585610a52565b90505b94509492505050565b600080600080610986610977876001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561091057600080fd5b505afa158015610924573d6000803e3d6000fd5b505050506040513d602081101561093a57600080fd5b50516040805160608101825289516001600160a01b03908116825260208b810151909116908201528982015162ffffff1691810191909152610aa6565b86606001518760800151610ba2565b915091508461010001516109b28660c0015184038760a001516001600160801b0316600160801b610e5f565b0193508461012001516109dd8660e0015183038760a001516001600160801b0316600160801b610e5f565b01925050509250929050565b6000826001600160a01b0316846001600160a01b03161115610a09579192915b836001600160a01b0316610a42606060ff16846001600160801b0316901b8686036001600160a01b0316866001600160a01b0316610e5f565b81610a4957fe5b04949350505050565b6000826001600160a01b0316846001600160a01b03161115610a72579192915b610a9e826001600160801b03168585036001600160a01b03166c01000000000000000000000000610e5f565b949350505050565b600081602001516001600160a01b031682600001516001600160a01b031610610ace57600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f5909101909152805191012090565b6000806000856001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610be057600080fd5b505afa158015610bf4573d6000803e3d6000fd5b505050506040513d60e0811015610c0a57600080fd5b50602001516040805163f30dba9360e01b8152600288900b6004820152905191925060009182916001600160a01b038a169163f30dba939160248082019261012092909190829003018186803b158015610c6357600080fd5b505afa158015610c77573d6000803e3d6000fd5b505050506040513d610120811015610c8e57600080fd5b50604080820151606090920151815163f30dba9360e01b815260028a900b60048201529151929450925060009182916001600160a01b038c169163f30dba939160248082019261012092909190829003018186803b158015610cef57600080fd5b505afa158015610d03573d6000803e3d6000fd5b505050506040513d610120811015610d1a57600080fd5b5060408101516060909101519092509050600289810b9086900b1215610d495781840396508083039550610e52565b8760020b8560020b1215610e475760008a6001600160a01b031663f30583996040518163ffffffff1660e01b815260040160206040518083038186803b158015610d9257600080fd5b505afa158015610da6573d6000803e3d6000fd5b505050506040513d6020811015610dbc57600080fd5b505160408051634614131960e01b815290519192506000916001600160a01b038e16916346141319916004808301926020929190829003018186803b158015610e0457600080fd5b505afa158015610e18573d6000803e3d6000fd5b505050506040513d6020811015610e2e57600080fd5b5051918690038490039850508390038190039550610e52565b838203965082810395505b5050505050935093915050565b6000808060001985870986860292508281109083900303905080610e955760008411610e8a57600080fd5b508290049050610247565b808411610ea157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a0290910302918190038190046001018684119095039490940291909403929092049190911791909102915050939250505056fea264697066735822122089ba45bfa331e01a0f9c52fbd940e356b1b1a0bfe8d5bc5f728fa3fdb8bb31b464736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF44 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 0x130 JUMPI DUP1 PUSH4 0x90594F91 EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0xEE4E9BA3 EQ PUSH2 0x19C JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x22635397 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x263A5362 EQ PUSH2 0xC6 JUMPI DUP1 PUSH4 0x3803770C EQ PUSH2 0xF2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x1D2 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 0xAD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1EC JUMP JUMPDEST PUSH2 0x11E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x204 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x220 JUMP JUMPDEST PUSH2 0x11E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x22E JUMP JUMPDEST PUSH2 0x11E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x24E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E0 DUP6 DUP6 DUP6 PUSH2 0x25B JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F9 DUP5 DUP5 PUSH2 0x317 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x214 DUP5 DUP5 PUSH2 0x317 JUMP JUMPDEST POP POP GAS SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E0 DUP6 DUP6 DUP6 PUSH2 0x4CA JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x23F DUP6 DUP6 DUP6 PUSH2 0x4CA JUMP JUMPDEST POP POP GAS SWAP1 SUB SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x23F DUP6 DUP6 DUP6 JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BC 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 0x2D3 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 0x308 DUP7 PUSH2 0x2F9 DUP6 PUSH2 0x4FD JUMP JUMPDEST PUSH2 0x302 DUP6 PUSH2 0x4FD JUMP JUMPDEST DUP5 PUSH2 0x82F 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x36E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x382 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 0x399 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP12 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP POP POP PUSH2 0x4B5 DUP15 PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB 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 0x8CB 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 0x4DB DUP8 DUP8 DUP8 PUSH2 0x25B JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x4EC DUP10 DUP10 PUSH2 0x317 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 0x514 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x51C JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x55A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x56E JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x580 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x5B4 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x5D3 JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x5F2 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x611 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x630 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x64F JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x66E JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x68E JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x6AE JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x6CE JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x6EE JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x70E JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x72E JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x74E JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x76E JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x78F JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x7AF JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x7CE JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x7EB JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x806 JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x802 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x81A JUMPI PUSH1 0x1 PUSH2 0x81D 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x850 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x87B JUMPI PUSH2 0x874 DUP6 DUP6 DUP6 PUSH2 0x9E9 JUMP JUMPDEST SWAP2 POP PUSH2 0x8C2 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x8B4 JUMPI PUSH2 0x8A0 DUP7 DUP6 DUP6 PUSH2 0x9E9 JUMP JUMPDEST SWAP2 POP PUSH2 0x8AD DUP6 DUP8 DUP6 PUSH2 0xA52 JUMP JUMPDEST SWAP1 POP PUSH2 0x8C2 JUMP JUMPDEST PUSH2 0x8BF DUP6 DUP6 DUP6 PUSH2 0xA52 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x986 PUSH2 0x977 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x910 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x924 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 0x93A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xAA6 JUMP JUMPDEST DUP7 PUSH1 0x60 ADD MLOAD DUP8 PUSH1 0x80 ADD MLOAD PUSH2 0xBA2 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP5 PUSH2 0x100 ADD MLOAD PUSH2 0x9B2 DUP7 PUSH1 0xC0 ADD MLOAD DUP5 SUB DUP8 PUSH1 0xA0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0xE5F JUMP JUMPDEST ADD SWAP4 POP DUP5 PUSH2 0x120 ADD MLOAD PUSH2 0x9DD DUP7 PUSH1 0xE0 ADD MLOAD DUP4 SUB DUP8 PUSH1 0xA0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0xE5F JUMP JUMPDEST ADD SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0xA09 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA42 PUSH1 0x60 PUSH1 0xFF AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 SHL DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE5F JUMP JUMPDEST DUP2 PUSH2 0xA49 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0xA72 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0xA9E DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP6 DUP6 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH13 0x1000000000000000000000000 PUSH2 0xE5F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0xACE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x41A723F9E6457830B1B7A44DF4435FAB88581D073226894B33131815DD674C22 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xBE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBF4 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 0xC0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xF30DBA93 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x2 DUP9 SWAP1 SIGNEXTEND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP2 PUSH4 0xF30DBA93 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH2 0x120 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC77 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH2 0x120 DUP2 LT ISZERO PUSH2 0xC8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD DUP2 MLOAD PUSH4 0xF30DBA93 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x2 DUP11 SWAP1 SIGNEXTEND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP2 PUSH4 0xF30DBA93 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH2 0x120 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD03 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH2 0x120 DUP2 LT ISZERO PUSH2 0xD1A 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 0xD49 JUMPI DUP2 DUP5 SUB SWAP7 POP DUP1 DUP4 SUB SWAP6 POP PUSH2 0xE52 JUMP JUMPDEST DUP8 PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0xE47 JUMPI PUSH1 0x0 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xD92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDA6 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 0xDBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x46141319 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xE04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE18 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 0xE2E 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 0xE52 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 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0xE95 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0xE8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x247 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0xEA1 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP10 0xBA GASLIMIT 0xBF LOG3 BALANCE 0xE0 BYTE 0xF SWAP13 MSTORE 0xFB 0xD9 BLOCKHASH 0xE3 JUMP 0xB1 0xB1 LOG0 0xBF 0xE8 0xD5 0xBC 0x5F PUSH19 0x8FA3FDB8BB31B464736F6C6343000706003300 ","sourceMap":"168:1637:114:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80635b6dc092116100505780635b6dc0921461013057806390594f9114610166578063ee4e9ba31461019c57610072565b80632263539714610077578063263a5362146100c65780633803770c146100f2575b600080fd5b6100ad6004803603606081101561008d57600080fd5b506001600160a01b038135811691602081013591604090910135166101d2565b6040805192835260208301919091528051918290030190f35b6100ad600480360360408110156100dc57600080fd5b506001600160a01b0381351690602001356101ec565b61011e6004803603604081101561010857600080fd5b506001600160a01b038135169060200135610204565b60408051918252519081900360200190f35b6100ad6004803603606081101561014657600080fd5b506001600160a01b03813581169160208101359160409091013516610220565b61011e6004803603606081101561017c57600080fd5b506001600160a01b0381358116916020810135916040909101351661022e565b61011e600480360360608110156101b257600080fd5b506001600160a01b0381358116916020810135916040909101351661024e565b6000806101e085858561025b565b91509150935093915050565b6000806101f98484610317565b915091509250929050565b6000805a90506102148484610317565b50505a90039392505050565b6000806101e08585856104ca565b6000805a905061023f8585856104ca565b50505a900390505b9392505050565b6000805a905061023f8585855b6000806000806000876001600160a01b03166399fbab88886040518263ffffffff1660e01b8152600401808281526020019150506101806040518083038186803b1580156102a857600080fd5b505afa1580156102bc573d6000803e3d6000fd5b505050506040513d6101808110156102d357600080fd5b5060a081015160c082015160e0909201519094509092509050610308866102f9856104fd565b610302856104fd565b8461082f565b94509450505050935093915050565b6000806000806000806000806000806000808d6001600160a01b03166399fbab888e6040518263ffffffff1660e01b8152600401808281526020019150506101806040518083038186803b15801561036e57600080fd5b505afa158015610382573d6000803e3d6000fd5b505050506040513d61018081101561039957600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050506001600160801b03169b506001600160801b03169b509b509b509b509b509b509b509b509b5050506104b58e6040518061014001604052808d6001600160a01b031681526020018c6001600160a01b031681526020018b62ffffff1681526020018a60020b81526020018960020b8152602001886001600160801b03168152602001878152602001868152602001858152602001848152506108cb565b9b509b50505050505050505050509250929050565b6000806000806104db87878761025b565b915091506000806104ec8989610317565b940195505050019050935093915050565b60008060008360020b12610514578260020b61051c565b8260020b6000035b9050620d89e881111561055a576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b60006001821661056e57600160801b610580565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156105b4576ffff97272373d413259a46990580e213a0260801c5b60048216156105d3576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156105f2576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615610611576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615610630576fff973b41fa98c081472e6896dfb254c00260801c5b604082161561064f576fff2ea16466c96a3843ec78b326b528610260801c5b608082161561066e576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561068e576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156106ae576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156106ce576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156106ee576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561070e576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561072e576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161561074e576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561076e576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561078f576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156107af576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156107ce576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156107eb576b048a170391f7dc42444e8fa20260801c5b60008460020b131561080657806000198161080257fe5b0490505b64010000000081061561081a57600161081d565b60005b60ff16602082901c0192505050919050565b600080836001600160a01b0316856001600160a01b03161115610850579293925b846001600160a01b0316866001600160a01b03161161087b576108748585856109e9565b91506108c2565b836001600160a01b0316866001600160a01b031610156108b4576108a08685856109e9565b91506108ad858785610a52565b90506108c2565b6108bf858585610a52565b90505b94509492505050565b600080600080610986610977876001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561091057600080fd5b505afa158015610924573d6000803e3d6000fd5b505050506040513d602081101561093a57600080fd5b50516040805160608101825289516001600160a01b03908116825260208b810151909116908201528982015162ffffff1691810191909152610aa6565b86606001518760800151610ba2565b915091508461010001516109b28660c0015184038760a001516001600160801b0316600160801b610e5f565b0193508461012001516109dd8660e0015183038760a001516001600160801b0316600160801b610e5f565b01925050509250929050565b6000826001600160a01b0316846001600160a01b03161115610a09579192915b836001600160a01b0316610a42606060ff16846001600160801b0316901b8686036001600160a01b0316866001600160a01b0316610e5f565b81610a4957fe5b04949350505050565b6000826001600160a01b0316846001600160a01b03161115610a72579192915b610a9e826001600160801b03168585036001600160a01b03166c01000000000000000000000000610e5f565b949350505050565b600081602001516001600160a01b031682600001516001600160a01b031610610ace57600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f5909101909152805191012090565b6000806000856001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610be057600080fd5b505afa158015610bf4573d6000803e3d6000fd5b505050506040513d60e0811015610c0a57600080fd5b50602001516040805163f30dba9360e01b8152600288900b6004820152905191925060009182916001600160a01b038a169163f30dba939160248082019261012092909190829003018186803b158015610c6357600080fd5b505afa158015610c77573d6000803e3d6000fd5b505050506040513d610120811015610c8e57600080fd5b50604080820151606090920151815163f30dba9360e01b815260028a900b60048201529151929450925060009182916001600160a01b038c169163f30dba939160248082019261012092909190829003018186803b158015610cef57600080fd5b505afa158015610d03573d6000803e3d6000fd5b505050506040513d610120811015610d1a57600080fd5b5060408101516060909101519092509050600289810b9086900b1215610d495781840396508083039550610e52565b8760020b8560020b1215610e475760008a6001600160a01b031663f30583996040518163ffffffff1660e01b815260040160206040518083038186803b158015610d9257600080fd5b505afa158015610da6573d6000803e3d6000fd5b505050506040513d6020811015610dbc57600080fd5b505160408051634614131960e01b815290519192506000916001600160a01b038e16916346141319916004808301926020929190829003018186803b158015610e0457600080fd5b505afa158015610e18573d6000803e3d6000fd5b505050506040513d6020811015610e2e57600080fd5b5051918690038490039850508390038190039550610e52565b838203965082810395505b5050505050935093915050565b6000808060001985870986860292508281109083900303905080610e955760008411610e8a57600080fd5b508290049050610247565b808411610ea157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a0290910302918190038190046001018684119095039490940291909403929092049190911791909102915050939250505056fea264697066735822122089ba45bfa331e01a0f9c52fbd940e356b1b1a0bfe8d5bc5f728fa3fdb8bb31b464736f6c63430007060033","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 0x130 JUMPI DUP1 PUSH4 0x90594F91 EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0xEE4E9BA3 EQ PUSH2 0x19C JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x22635397 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x263A5362 EQ PUSH2 0xC6 JUMPI DUP1 PUSH4 0x3803770C EQ PUSH2 0xF2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x1D2 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 0xAD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1EC JUMP JUMPDEST PUSH2 0x11E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x204 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x220 JUMP JUMPDEST PUSH2 0x11E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x22E JUMP JUMPDEST PUSH2 0x11E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x24E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E0 DUP6 DUP6 DUP6 PUSH2 0x25B JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F9 DUP5 DUP5 PUSH2 0x317 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x214 DUP5 DUP5 PUSH2 0x317 JUMP JUMPDEST POP POP GAS SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E0 DUP6 DUP6 DUP6 PUSH2 0x4CA JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x23F DUP6 DUP6 DUP6 PUSH2 0x4CA JUMP JUMPDEST POP POP GAS SWAP1 SUB SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x23F DUP6 DUP6 DUP6 JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BC 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 0x2D3 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 0x308 DUP7 PUSH2 0x2F9 DUP6 PUSH2 0x4FD JUMP JUMPDEST PUSH2 0x302 DUP6 PUSH2 0x4FD JUMP JUMPDEST DUP5 PUSH2 0x82F 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x36E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x382 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 0x399 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP12 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP POP POP PUSH2 0x4B5 DUP15 PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB 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 0x8CB 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 0x4DB DUP8 DUP8 DUP8 PUSH2 0x25B JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x4EC DUP10 DUP10 PUSH2 0x317 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 0x514 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x51C JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x55A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x56E JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x580 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x5B4 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x5D3 JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x5F2 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x611 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x630 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x64F JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x66E JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x68E JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x6AE JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x6CE JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x6EE JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x70E JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x72E JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x74E JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x76E JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x78F JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x7AF JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x7CE JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x7EB JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x806 JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x802 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x81A JUMPI PUSH1 0x1 PUSH2 0x81D 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x850 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x87B JUMPI PUSH2 0x874 DUP6 DUP6 DUP6 PUSH2 0x9E9 JUMP JUMPDEST SWAP2 POP PUSH2 0x8C2 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x8B4 JUMPI PUSH2 0x8A0 DUP7 DUP6 DUP6 PUSH2 0x9E9 JUMP JUMPDEST SWAP2 POP PUSH2 0x8AD DUP6 DUP8 DUP6 PUSH2 0xA52 JUMP JUMPDEST SWAP1 POP PUSH2 0x8C2 JUMP JUMPDEST PUSH2 0x8BF DUP6 DUP6 DUP6 PUSH2 0xA52 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x986 PUSH2 0x977 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x910 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x924 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 0x93A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xAA6 JUMP JUMPDEST DUP7 PUSH1 0x60 ADD MLOAD DUP8 PUSH1 0x80 ADD MLOAD PUSH2 0xBA2 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP5 PUSH2 0x100 ADD MLOAD PUSH2 0x9B2 DUP7 PUSH1 0xC0 ADD MLOAD DUP5 SUB DUP8 PUSH1 0xA0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0xE5F JUMP JUMPDEST ADD SWAP4 POP DUP5 PUSH2 0x120 ADD MLOAD PUSH2 0x9DD DUP7 PUSH1 0xE0 ADD MLOAD DUP4 SUB DUP8 PUSH1 0xA0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0xE5F JUMP JUMPDEST ADD SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0xA09 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA42 PUSH1 0x60 PUSH1 0xFF AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 SHL DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE5F JUMP JUMPDEST DUP2 PUSH2 0xA49 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0xA72 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0xA9E DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP6 DUP6 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH13 0x1000000000000000000000000 PUSH2 0xE5F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0xACE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x41A723F9E6457830B1B7A44DF4435FAB88581D073226894B33131815DD674C22 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xBE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBF4 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 0xC0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xF30DBA93 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x2 DUP9 SWAP1 SIGNEXTEND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP2 PUSH4 0xF30DBA93 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH2 0x120 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC77 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH2 0x120 DUP2 LT ISZERO PUSH2 0xC8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD DUP2 MLOAD PUSH4 0xF30DBA93 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x2 DUP11 SWAP1 SIGNEXTEND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP2 PUSH4 0xF30DBA93 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH2 0x120 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD03 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH2 0x120 DUP2 LT ISZERO PUSH2 0xD1A 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 0xD49 JUMPI DUP2 DUP5 SUB SWAP7 POP DUP1 DUP4 SUB SWAP6 POP PUSH2 0xE52 JUMP JUMPDEST DUP8 PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0xE47 JUMPI PUSH1 0x0 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xD92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDA6 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 0xDBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x46141319 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xE04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE18 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 0xE2E 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 0xE52 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 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0xE95 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0xE8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x247 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0xEA1 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP10 0xBA GASLIMIT 0xBF LOG3 BALANCE 0xE0 BYTE 0xF SWAP13 MSTORE 0xFB 0xD9 BLOCKHASH 0xE3 JUMP 0xB1 0xB1 LOG0 0xBF 0xE8 0xD5 0xBC 0x5F PUSH19 0x8FA3FDB8BB31B464736F6C6343000706003300 ","sourceMap":"168:1637:114:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;461:259;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;461:259:114;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;728:211;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;728:211:114;;;;;;;;:::i;1573:229::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1573:229:114;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;202:251;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;202:251:114;;;;;;;;;;;;;;;;;:::i;947:301::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;947:301:114;;;;;;;;;;;;;;;;;:::i;1256:309::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1256:309:114;;;;;;;;;;;;;;;;;:::i;461:259::-;609:15;626;661:51;685:3;690:7;699:12;661:23;:51::i;:::-;654:58;;;;461:259;;;;;;:::o;728:211::-;842:15;859;899:32;918:3;923:7;899:18;:32::i;:::-;892:39;;;;728:211;;;;;:::o;1573:229::-;1663:7;1683:17;1703:9;1683:29;;1723:32;1742:3;1747:7;1723:18;:32::i;:::-;;;1785:9;1773:21;;;1573:229;-1:-1:-1;;;1573:229:114:o;202:251::-;346:15;363;398:47;418:3;423:7;432:12;398:19;:47::i;947:301::-;1094:7;1114:17;1134:9;1114:29;;1154:47;1174:3;1179:7;1188:12;1154:19;:47::i;:::-;;;1231:9;1219:21;;;-1:-1:-1;947:301:114;;;;;;:::o;1256:309::-;1407:7;1427:17;1447:9;1427:29;;1467:51;1491:3;1496:7;1505:12;2135:581:100;2295:15;2312;2351;2368;2385:17;2414:15;-1:-1:-1;;;;;2414:25:100;;2440:7;2414:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2414:34:100;;;;;;;;;;;;;;;-1:-1:-1;2414:34:100;;-1:-1:-1;2414:34:100;-1:-1:-1;2481:227:100;2539:12;2570:38;2414:34;2570:27;:38::i;:::-;2627;2655:9;2627:27;:38::i;:::-;2684:9;2481:39;:227::i;:::-;2461:247;;;;;;;2135:581;;;;;;:::o;3411:1257::-;3537:15;3554;3632:14;3661;3690:10;3715:15;3745;3775:17;3807:40;3862;3917:19;3951;3984:15;-1:-1:-1;;;;;3984:25:100;;4010:7;3984:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3587:431:100;;;-1:-1:-1;;;;;3587:431:100;;;;;;;;;;;;;;;;;;;;;4051:609;4075:15;4109:536;;;;;;;;4150:6;-1:-1:-1;;;;;4109:536:100;;;;;4187:6;-1:-1:-1;;;;;4109:536:100;;;;;4221:3;4109:536;;;;;;4258:9;4109:536;;;;;;4301:9;4109:536;;;;;;4344:9;-1:-1:-1;;;;;4109:536:100;;;;;4410:32;4109:536;;;;4499:32;4109:536;;;;4567:11;4109:536;;;;4614:11;4109:536;;;4051:5;:609::i;:::-;4031:629;;;;;;;;;;;;;;3411:1257;;;;;:::o;1129:477::-;1285:15;1302;1331:24;1357;1385:49;1395:15;1412:7;1421:12;1385:9;:49::i;:::-;1330:104;;;;1446:18;1466;1488:30;1493:15;1510:7;1488:4;:30::i;:::-;1537:29;;;-1:-1:-1;;;1568:29:100;;-1:-1:-1;1129:477:100;;;;;;:::o;1384:2611:28:-;1447:20;1480:15;1505:1;1498:4;:8;;;:57;;1549:4;1542:12;;1498:57;;;1525:4;1518:12;;1517:13;;1498:57;1480:75;-1:-1:-1;654:9:28;1574:28;;;1566:42;;;;;-1:-1:-1;;;1566:42:28;;;;;;;;;;;;-1:-1:-1;;;1566:42:28;;;;;;;;;;;;;;;1621:13;1647:3;1637:13;;:93;;-1:-1:-1;;;1637:93:28;;;1658:34;1637:93;1621:109;;;-1:-1:-1;1755:3:28;1745:13;;:18;1741:83;;1782:34;1774:42;1821:3;1773:51;1741:83;1849:3;1839:13;;:18;1835:83;;1876:34;1868:42;1915:3;1867:51;1835:83;1943:3;1933:13;;:18;1929:83;;1970:34;1962:42;2009:3;1961:51;1929:83;2037:4;2027:14;;:19;2023:84;;2065:34;2057:42;2104:3;2056:51;2023:84;2132:4;2122:14;;:19;2118:84;;2160:34;2152:42;2199:3;2151:51;2118:84;2227:4;2217:14;;:19;2213:84;;2255:34;2247:42;2294:3;2246:51;2213:84;2322:4;2312:14;;:19;2308:84;;2350:34;2342:42;2389:3;2341:51;2308:84;2417:5;2407:15;;:20;2403:85;;2446:34;2438:42;2485:3;2437:51;2403:85;2513:5;2503:15;;:20;2499:85;;2542:34;2534:42;2581:3;2533:51;2499:85;2609:5;2599:15;;:20;2595:85;;2638:34;2630:42;2677:3;2629:51;2595:85;2705:5;2695:15;;:20;2691:85;;2734:34;2726:42;2773:3;2725:51;2691:85;2801:6;2791:16;;:21;2787:86;;2831:34;2823:42;2870:3;2822:51;2787:86;2898:6;2888:16;;:21;2884:86;;2928:34;2920:42;2967:3;2919:51;2884:86;2995:6;2985:16;;:21;2981:86;;3025:34;3017:42;3064:3;3016:51;2981:86;3092:6;3082:16;;:21;3078:86;;3122:34;3114:42;3161:3;3113:51;3078:86;3189:7;3179:17;;:22;3175:86;;3220:33;3212:41;3258:3;3211:50;3175:86;3286:7;3276:17;;:22;3272:85;;3317:32;3309:40;3354:3;3308:49;3272:85;3382:7;3372:17;;:22;3368:83;;3413:30;3405:38;3448:3;3404:47;3368:83;3476:7;3466:17;;:22;3462:78;;3507:25;3499:33;3537:3;3498:42;3462:78;3564:1;3557:4;:8;;;3553:47;;;3595:5;-1:-1:-1;;3575:25:28;;;;;;3567:33;;3553:47;3964:7;3955:5;:17;:22;:30;;3984:1;3955:30;;;3980:1;3955:30;3938:48;;3948:2;3939:5;:11;;3938:48;3915:72;;1384:2611;;;;;:::o;6114:815:93:-;6299:15;6316;6364:13;-1:-1:-1;;;;;6348:29:93;:13;-1:-1:-1;;;;;6348:29:93;;6344:98;;;6413:13;;6428;6344:98;6475:13;-1:-1:-1;;;;;6459:29:93;:12;-1:-1:-1;;;;;6459:29:93;;6455:467;;6515:63;6538:13;6553;6568:9;6515:22;:63::i;:::-;6505:73;;6455:467;;;6615:13;-1:-1:-1;;;;;6600:28:93;:12;-1:-1:-1;;;;;6600:28:93;;6596:326;;;6655:62;6678:12;6692:13;6707:9;6655:22;:62::i;:::-;6645:72;;6742:62;6765:13;6780:12;6794:9;6742:22;:62::i;:::-;6732:72;;6596:326;;;6847:63;6870:13;6885;6900:9;6847:22;:63::i;:::-;6837:73;;6596:326;6114:815;;;;;;;:::o;4676:1230:100:-;4813:15;4830;4864:36;4902;4955:403;5027:221;5080:15;-1:-1:-1;;;;;5080:23:100;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5080:25:100;5132:93;;;;;;;;5161:16;;-1:-1:-1;;;;;5132:93:100;;;;;5080:25;5187:16;;;;5132:93;;;;;;;5210:13;;;;5132:93;;;;;;;;;5027:26;:221::i;:::-;5286:9;:19;;;5324:9;:19;;;4955;:403::i;:::-;4863:495;;;;5607:9;:21;;;5394:197;5459:9;:42;;;5428:28;:73;5520:9;:19;;;-1:-1:-1;;;;;5394:197:100;-1:-1:-1;;;5394:15:100;:197::i;:::-;:234;5371:257;;5877:9;:21;;;5664:197;5729:9;:42;;;5698:28;:73;5790:9;:19;;;-1:-1:-1;;;;;5664:197:100;-1:-1:-1;;;5664:15:100;:197::i;:::-;:234;5641:257;;4676:1230;;;;;;;:::o;4304:511:93:-;4458:15;4506:13;-1:-1:-1;;;;;4490:29:93;:13;-1:-1:-1;;;;;4490:29:93;;4486:98;;;4555:13;;4570;4486:98;4794:13;-1:-1:-1;;;;;4617:190:93;:174;316:2:17;4651:45:93;;4659:9;-1:-1:-1;;;;;4651:18:93;:45;;4731:13;4715;:29;-1:-1:-1;;;;;4617:174:93;4763:13;-1:-1:-1;;;;;4617:174:93;:15;:174::i;:::-;:190;;;;;;;4304:511;-1:-1:-1;;;;4304:511:93:o;5180:383::-;5334:15;5382:13;-1:-1:-1;;;;;5366:29:93;:13;-1:-1:-1;;;;;5366:29:93;;5362:98;;;5431:13;;5446;5362:98;5480:75;5496:9;-1:-1:-1;;;;;5480:75:93;5523:13;5507;:29;-1:-1:-1;;;;;5480:75:93;357:27:17;5480:15:93;:75::i;:::-;5473:82;5180:383;-1:-1:-1;;;;5180:383:93:o;1749:526:97:-;1833:12;1879:3;:10;;;-1:-1:-1;;;;;1866:23:97;:3;:10;;;-1:-1:-1;;;;;1866:23:97;;1858:32;;;;;;-1:-1:-1;2120:10:97;;2132;;;;;2144:7;;;;;2109:43;;-1:-1:-1;;;;;2109:43:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:54;;;;;;1988:234;;;;;;;;-1:-1:-1;;1988:234:97;;;;;;;;;;;;658:66;1988:234;;;;;;;;;;;;;;;;;;;;;;;;;1956:285;;;;;;1749:526::o;5914:1372:100:-;6051:28;6081;6125:17;6156:4;-1:-1:-1;;;;;6156:10:100;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:12:100;;;;6268:21;;-1:-1:-1;;;6268:21:100;;;;;;;;;;;;6156:12;;-1:-1:-1;6184:34:100;;;;-1:-1:-1;;;;;6268:10:100;;;;;:21;;;;;;;;;;;;;;;:10;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6268:21:100;;;;;;;;;;6389;;-1:-1:-1;;;6389:21:100;;;;;;;;;;;;6268;;-1:-1:-1;6268:21:100;-1:-1:-1;6305:34:100;;;;-1:-1:-1;;;;;6389:10:100;;;;;:21;;;;;6268;;6389;;;;;;;;:10;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6389:21:100;;;;;;;;;;;-1:-1:-1;6389:21:100;-1:-1:-1;6427:23:100;;;;;;;;;6423:856;;;6519:26;6490;:55;6467:78;;6612:26;6583;:55;6560:78;;6423:856;;;6674:9;6660:23;;:11;:23;;;6656:623;;;6700:28;6731:4;-1:-1:-1;;;;;6731:25:100;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6731:27:100;6804;;;-1:-1:-1;;;6804:27:100;;;;6731;;-1:-1:-1;6773:28:100;;-1:-1:-1;;;;;6804:25:100;;;;;:27;;;;;6731;;6804;;;;;;;:25;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6804:27:100;6869:49;;;;:78;;;;-1:-1:-1;;6985:49:100;;;:78;;;;-1:-1:-1;6656:623:100;;;7148:26;7119;:55;7096:78;;7241:26;7212;:55;7189:78;;6656:623;5914:1372;;;;;;;;;;;:::o;762:3868:18:-;878:14;;;-1:-1:-1;;1394:1:18;1391;1384:20;1427:9;;;;-1:-1:-1;1479:13:18;;;1463:14;;;;1459:34;;-1:-1:-1;1579:10:18;1575:185;;1628:1;1614:11;:15;1606:24;;;;;;-1:-1:-1;1683:23:18;;;;-1:-1:-1;1735:13:18;;1575:185;1891:5;1877:11;:19;1869:28;;;;;;2182:17;2260:11;2257:1;2254;2247:25;2623:12;2638;;;:26;;2761:22;;;;;3584:1;3565;:15;;3564:21;;3815:17;;;3811:21;;3804:28;3874:17;;;3870:21;;3863:28;3934:17;;;3930:21;;3923:28;3994:17;;;3990:21;;3983:28;4054:17;;;4050:21;;4043:28;4115:17;;;4111:21;;;4104:28;3144:12;;;;3140:23;;;3165:1;3136:31;2393:20;;;2382:32;;;3197:12;;;;2437:21;;;;2894:16;;;;3188:21;;;;4587:11;;;;;-1:-1:-1;;762:3868:18;;;;;:::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/elixir-periphery/test/PositionValueTest.sol\":\"PositionValueTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-core/libraries/FixedPoint128.sol\":{\"keccak256\":\"0x558d30194d1a7f76eb5e983633625efd87b13ac0862792a69a305ce69003ab14\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89bca54921a13c0c863c055f18b3108582491fcc091d7188b58e05786c7f2b55\",\"dweb:/ipfs/QmfS5jM1WxULWx4FNB3CJC7KAWDpMpzRgFSGV5dp8RaCJr\"]},\"contracts/elixir-core/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xa32f3be89d31e1641fc6fe7d0fca23412e2c49156e5e98ed8aa7673a0cac96c8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://89a87db593c07d1099f7d24548925f96e7f5203da78a30ac591b7ea3a2d219dd\",\"dweb:/ipfs/QmS7n2iZaC16H2nBsjw7EwtAtoWwDinGGgrYS3SDPm3MNo\"]},\"contracts/elixir-core/libraries/FullMath.sol\":{\"keccak256\":\"0xc958aae9a1e79aeee6116c59e1554312d142b426c13c8d9cf875b139798b5d6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682b72dfc38a7fbf176d175453b4c7c2539ade82558e5f56243657ab3a047182\",\"dweb:/ipfs/QmcMZpsMnPbWFfK4joJ2TfLEd6xwsFiYeGBxASeGN7ShbY\"]},\"contracts/elixir-core/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x3ec938fd1b7cc8751df9e2ed90fd0abf32ffacc42cf4b6edbf7138629d747944\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a741475c8a3b5ae8eac7d328170c5a6811920dac22d3800197e39abe0ba42e01\",\"dweb:/ipfs/Qmc2fs5kxp437hWxtLZ6CB8g7vt3bkwKLxE7MMo9D5TAF9\"]},\"contracts/elixir-core/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xace198277a90cabd10817b1226718204a297e3ff70a9937b6a4bea60e7978e1f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e5a79a038cd3b2d5475d2a6ff5d46f28e0d65d1c2cce085d8bf100d7e026a9fa\",\"dweb:/ipfs/QmVDAK77ydqRK74AFV14Z5uEtdoZoKvQNyh2z4C2RNFf7V\"]},\"contracts/elixir-core/libraries/SafeCast.sol\":{\"keccak256\":\"0x2ce167ecfd192faccc43e6ab3eadf5dcaa4b57bc53215abea354e55b9149bd08\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7b2699166ead0922ec7ef5c15aa0f931d9211e98f5d23408e5565a1539c7fd13\",\"dweb:/ipfs/QmURByWGxXgSydaC5KdkCyef8twwZRMTAS1WQv2uJBoAL6\"]},\"contracts/elixir-core/libraries/Tick.sol\":{\"keccak256\":\"0x20ddf3dd595491c899fde27706d0cd1d10ba2785589bd5e3d5f0830062254c3b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8d706f8b5bf653ac9cd4b5bbdfd6867eb072821b920141a283466c67f0fdf26\",\"dweb:/ipfs/QmfBZFTVNZhN4tNssH9en4Qz93tWovTijou5i6N8k9kZJM\"]},\"contracts/elixir-core/libraries/TickMath.sol\":{\"keccak256\":\"0xfa4feac39e3d2d34f7b2893e4b73ff0f64625fa909dcf11af40688d220f78c83\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://780d7fd2c1468f9dd2ffff1fe98251f4aa985eec20d6ee0b20612390a13e73c7\",\"dweb:/ipfs/Qmabr69tjsqq297fACkSUHpEK3GZh35zbFtdpQRUUJb1ta\"]},\"contracts/elixir-periphery/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x1731f38308b9364d3d18a34a4da72afe434ad49f99939d81300dab93a940c458\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1cf9728098907ca0140ddf5398b7cebb2e6b8a0487bb1cf8338a4da603989be7\",\"dweb:/ipfs/QmPt5nvaLrdbXLxzJNhX4fM8s2akbdUPTmxZQaN2ierJPA\"]},\"contracts/elixir-periphery/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0xf968ea5f5b29c4407b3337051b0fb2ea786b8a6e3f476d40cdde1cb9415b1735\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c92f629ddeb1a6bcec8b154e6619a492053a375db3a28b37bbcd49b35d4b171\",\"dweb:/ipfs/QmYRNQmFQ8gD3dkTQz85cEHwEkBuXW4F64HQB9MUUHHYse\"]},\"contracts/elixir-periphery/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0xb032090b9d309eede30e16611165cd610c8435070eaa75fc1a21c5fcf48a9b2e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2332c0868b99ceefb78b9358dffcb5f9074f8ce513c134996e691156e1a7d5cc\",\"dweb:/ipfs/QmZz7BdDszmJG9FNQoC3yYUsfiwBntyxetBhmn7qeEPKnq\"]},\"contracts/elixir-periphery/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x8e0cdb6280728619c44a8220996512b81e85f6fa7bc5373db742ea953a81eda8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0748123e32874d0e1e405a463fafcf98f686fac0055da2e13bfdaa0db917766\",\"dweb:/ipfs/QmRZPF69X1e6T3yT2z8HTgzEtXHTVScqzoEMbfvp5Niggq\"]},\"contracts/elixir-periphery/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x0d3371b28c765f2ad1231c212ce395c91c925738f54e2280298bfd08b50a2c97\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://18a3777dc86b84fb192cf54fbefd444058f5a5adc13b1080f393ada3ee0a5a08\",\"dweb:/ipfs/QmabPex6ctJszwwNGGnS9Va6xqsN6MpcQC3M869rbwcGCo\"]},\"contracts/elixir-periphery/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x8ed6cb25c14c41756086367d76eba826250da3a8621ace0c8657fce32e68fad7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06d92752a75efdd197ef39740e3e266bda1fbd0361c40bb9c014a608ade17b31\",\"dweb:/ipfs/QmRPhnmoNz9s2ZvJDomKtKMrYJXPvD6J6LGDtTQ8KeTDMY\"]},\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]},\"contracts/elixir-periphery/libraries/PositionKey.sol\":{\"keccak256\":\"0x0a532dba371aed58c383f4e5b8d4ecc7de60eba8c14ef69e40b6e83401ccf74d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://992d7b2eb0bb01fdbd8169fea0f1c30938023267008cc8c7ab057487858a48b7\",\"dweb:/ipfs/QmZCxsgbiCsPmw4fk3ZRPcot9MSmWqndGP1TGMRsjztjcH\"]},\"contracts/elixir-periphery/libraries/PositionValue.sol\":{\"keccak256\":\"0x250746fad75fa258a85dfc2a119bdaef87f9e03c1eb6d4dd7f0bda0dfaf1e8c1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://428744f1e5302b16489232969a45b141b62bfb02128ca22dd18dc0ca85afe1c9\",\"dweb:/ipfs/QmXW8iaaEZ8qyVv9JwYktLVCTT69rHSWgEJjbjgPTuU5w6\"]},\"contracts/elixir-periphery/test/PositionValueTest.sol\":{\"keccak256\":\"0xc0b18435e9b4ddec968cc659d1249f6e377ea8e43e09ca700c0063b99f741af0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://dc74f89e373a17234673ac2c9a553ffbd910b510b8edea5eda907c9452b1d513\",\"dweb:/ipfs/QmWq9NhqK2vSRuRU5ML8dAqGRZdgSEngPVUrCWy4ji1Gnb\"]},\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]}},\"version\":1}"}},"contracts/elixir-periphery/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":"608060405234801561001057600080fd5b506103c8806100206000396000f3fe60806040526004361061003f5760003560e01c80634659a49414610044578063a4a78f0c1461008d578063c2e3140a146100d4578063f3995c671461011b575b600080fd5b61008b600480360360c081101561005a57600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135610162565b005b61008b600480360360c08110156100a357600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a001356101fc565b61008b600480360360c08110156100ea57600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135610295565b61008b600480360360c081101561013157600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135610320565b604080516323f2ebc360e21b815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b1580156101dc57600080fd5b505af11580156101f0573d6000803e3d6000fd5b50505050505050505050565b60408051636eb1769f60e11b81523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b15801561024d57600080fd5b505afa158015610261573d6000803e3d6000fd5b505050506040513d602081101561027757600080fd5b5051101561028d5761028d868686868686610162565b505050505050565b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b1580156102e457600080fd5b505afa1580156102f8573d6000803e3d6000fd5b505050506040513d602081101561030e57600080fd5b5051101561028d5761028d8686868686865b6040805163d505accf60e01b8152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b1580156101dc57600080fdfea264697066735822122079ea51627f140d7036e6582eec6a13e2c609c1a956b86d879abfe4e767e1d78d64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C8 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 0x8D JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x11B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x162 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x8B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1FC JUMP JUMPDEST PUSH2 0x8B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x295 JUMP JUMPDEST PUSH2 0x8B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x320 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23F2EBC3 PUSH1 0xE2 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F0 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 PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 NOT SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x261 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 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x28D JUMPI PUSH2 0x28D DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x162 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x2E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F8 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 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x28D JUMPI PUSH2 0x28D DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1DC JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH26 0xEA51627F140D7036E6582EEC6A13E2C609C1A956B86D879ABFE4 0xE7 PUSH8 0xE1D78D64736F6C63 NUMBER STOP SMOD MOD STOP CALLER ","sourceMap":"149:44:115:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061003f5760003560e01c80634659a49414610044578063a4a78f0c1461008d578063c2e3140a146100d4578063f3995c671461011b575b600080fd5b61008b600480360360c081101561005a57600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135610162565b005b61008b600480360360c08110156100a357600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a001356101fc565b61008b600480360360c08110156100ea57600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135610295565b61008b600480360360c081101561013157600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135610320565b604080516323f2ebc360e21b815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b1580156101dc57600080fd5b505af11580156101f0573d6000803e3d6000fd5b50505050505050505050565b60408051636eb1769f60e11b81523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b15801561024d57600080fd5b505afa158015610261573d6000803e3d6000fd5b505050506040513d602081101561027757600080fd5b5051101561028d5761028d868686868686610162565b505050505050565b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b1580156102e457600080fd5b505afa1580156102f8573d6000803e3d6000fd5b505050506040513d602081101561030e57600080fd5b5051101561028d5761028d8686868686865b6040805163d505accf60e01b8152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b1580156101dc57600080fdfea264697066735822122079ea51627f140d7036e6582eec6a13e2c609c1a956b86d879abfe4e767e1d78d64736f6c63430007060033","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 0x8D JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x11B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x162 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x8B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1FC JUMP JUMPDEST PUSH2 0x8B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x295 JUMP JUMPDEST PUSH2 0x8B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x320 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23F2EBC3 PUSH1 0xE2 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F0 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 PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 NOT SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x261 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 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x28D JUMPI PUSH2 0x28D DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x162 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x2E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F8 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 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x28D JUMPI PUSH2 0x28D DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1DC JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH26 0xEA51627F140D7036E6582EEC6A13E2C609C1A956B86D879ABFE4 0xE7 PUSH8 0xE1D78D64736F6C63 NUMBER STOP SMOD MOD STOP CALLER ","sourceMap":"149:44:115:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1380:298:69;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1380:298:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1719:358;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1719:358:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1016:323::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1016:323:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;693:282::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;693:282:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1380:298::-;1580:90;;;-1:-1:-1;;;1580:90:69;;1614:10;1580:90;;;;1634:4;1580:90;;;;;;;;;;;;;;;;1656:4;1580:90;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1580:33:69;;;;;:90;;;;;-1:-1:-1;;1580:90:69;;;;;;;-1:-1:-1;1580:33:69;:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1380:298;;;;;;:::o;1719:358::-;1936:50;;;-1:-1:-1;;;1936:50:69;;1960:10;1936:50;;;;1980:4;1936:50;;;;;;-1:-1:-1;;1989:17:69;-1:-1:-1;;;;;1936:23:69;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1936:50:69;:70;1932:137;;;2021:48;2039:5;2046;2053:6;2061:1;2064;2067;2021:17;:48::i;:::-;1719:358;;;;;;:::o;1016:323::-;1228:50;;;-1:-1:-1;;;1228:50:69;;1252:10;1228:50;;;;1272:4;1228:50;;;;;;1281:5;;-1:-1:-1;;;;;1228:23:69;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1228:50:69;:58;1224:107;;;1288:43;1299:5;1306;1313:8;1323:1;1326;1329;693:282;888:79;;;-1:-1:-1;;;888:79:69;;915:10;888:79;;;;935:4;888:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;888:26:69;;;;;:79;;;;;-1:-1:-1;;888:79:69;;;;;;;-1:-1:-1;888:26:69;: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/elixir-periphery/test/SelfPermitTest.sol\":\"SelfPermitTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/base/SelfPermit.sol\":{\"keccak256\":\"0x93b6b25fba6b55918c18fd5d55ddb8a85336dcbb4773c3d7ab6d486960c9a665\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://fd2a053076cdd2a7fbd4ba498c9a493cd173cba860ead6139eb9e5c3fe60f067\",\"dweb:/ipfs/QmQwpbEx5aMbJAXeKGeA43qNGcCAYMz8ng1vwG5z4SCqv1\"]},\"contracts/elixir-periphery/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0xb442ad31c8fef5c47ebb82b3b3f906d0a5dbca8eb26db90b287a4825bf53d595\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6e36e6e894083ad07e2ba62977a06db0874b8ed1f6eac705f4c9d89a410f54ea\",\"dweb:/ipfs/QmWLWTuKrcCzxZeedLpUG3c8jjFLs5gLmvt35Ysp2uc9c6\"]},\"contracts/elixir-periphery/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x1495f5068f2b892668447889f379d87decb18c9369f4506df9d23edba9ccb4b7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6f322bead944abc1da0e75aba72c9e02b22f02c15712f49b212bb65869b406ca\",\"dweb:/ipfs/QmTZAqfg4EwuFAX61ZW4nA55sUbn3o2Qy3W55C3ghPUAWM\"]},\"contracts/elixir-periphery/test/SelfPermitTest.sol\":{\"keccak256\":\"0xa02fb74804a30cd4716ab50e2f09e8ebd309d2eb4f611943789f449ddcab57bb\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f132e284324a22efcd102d0c4390dbe04d03f98edb3a078a2f26d959c58ded99\",\"dweb:/ipfs/QmeYWayFZXwKQRKmJ8K27CYFmkd1oYg5KmWvibfndMhZkc\"]},\"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]},\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}"}},"contracts/elixir-periphery/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 IElixirPool","name":"pool","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061028c806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80638bdb192514610030575b600080fd5b6100726004803603608081101561004657600080fd5b5080356001600160a01b03908116916020810135821691604082013516906060013562ffffff1661008e565b604080516001600160a01b039092168252519081900360200190f35b600061009c858585856100a5565b95945050505050565b600061009c856100b68686866100bb565b610111565b6100c3610236565b826001600160a01b0316846001600160a01b031611156100e1579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b600061011d838361013a565b9050336001600160a01b0382161461013457600080fd5b92915050565b600081602001516001600160a01b031682600001516001600160a01b03161061016257600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f5909101909152805191012090565b60408051606081018252600080825260208201819052918101919091529056fea2646970667358221220d28162f277c632727c8134b5b0858d2fc35528dbb53305472d9f4fb679d0051f64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C 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 0x72 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x8E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x9C DUP6 DUP6 DUP6 DUP6 PUSH2 0xA5 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9C DUP6 PUSH2 0xB6 DUP7 DUP7 DUP7 PUSH2 0xBB JUMP JUMPDEST PUSH2 0x111 JUMP JUMPDEST PUSH2 0xC3 PUSH2 0x236 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0xE1 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x11D DUP4 DUP4 PUSH2 0x13A JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x41A723F9E6457830B1B7A44DF4435FAB88581D073226894B33131815DD674C22 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD2 DUP2 PUSH3 0xF277C6 ORIGIN PUSH19 0x7C8134B5B0858D2FC35528DBB53305472D9F4F 0xB6 PUSH26 0xD0051F64736F6C63430007060033000000000000000000000000 ","sourceMap":"116:300:116:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061002b5760003560e01c80638bdb192514610030575b600080fd5b6100726004803603608081101561004657600080fd5b5080356001600160a01b03908116916020810135821691604082013516906060013562ffffff1661008e565b604080516001600160a01b039092168252519081900360200190f35b600061009c858585856100a5565b95945050505050565b600061009c856100b68686866100bb565b610111565b6100c3610236565b826001600160a01b0316846001600160a01b031611156100e1579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b600061011d838361013a565b9050336001600160a01b0382161461013457600080fd5b92915050565b600081602001516001600160a01b031682600001516001600160a01b03161061016257600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f5909101909152805191012090565b60408051606081018252600080825260208201819052918101919091529056fea2646970667358221220d28162f277c632727c8134b5b0858d2fc35528dbb53305472d9f4fb679d0051f64736f6c63430007060033","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 0x72 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x8E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x9C DUP6 DUP6 DUP6 DUP6 PUSH2 0xA5 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9C DUP6 PUSH2 0xB6 DUP7 DUP7 DUP7 PUSH2 0xBB JUMP JUMPDEST PUSH2 0x111 JUMP JUMPDEST PUSH2 0xC3 PUSH2 0x236 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0xE1 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x11D DUP4 DUP4 PUSH2 0x13A JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x41A723F9E6457830B1B7A44DF4435FAB88581D073226894B33131815DD674C22 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD2 DUP2 PUSH3 0xF277C6 ORIGIN PUSH19 0x7C8134B5B0858D2FC35528DBB53305472D9F4F 0xB6 PUSH26 0xD0051F64736F6C63430007060033000000000000000000000000 ","sourceMap":"116:300:116:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;155:258;;;;;;;;;;;;;;;;-1:-1:-1;155:258:116;;-1:-1:-1;;;;;155:258:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;155:258:116;;;;;;;;;;;;;;;306:16;342:63;376:7;385:6;393;401:3;342:33;:63::i;:::-;335:70;155:258;-1:-1:-1;;;;;155:258:116:o;677:263:90:-;828:16;864:68;879:7;888:43;911:6;919;927:3;888:22;:43::i;:::-;864:14;:68::i;1215:281:97:-;1336:14;;:::i;:::-;1376:6;-1:-1:-1;;;;;1367:15:97;:6;-1:-1:-1;;;;;1367:15:97;;1363:56;;;1404:6;;1412;1363:56;-1:-1:-1;1437:51:97;;;;;;;;-1:-1:-1;;;;;1437:51:97;;;;;;;;;;;;;;;;;;;;;;;1215:281::o;1193:280:90:-;1320:16;1373:44;1400:7;1409;1373:26;:44::i;:::-;1354:64;-1:-1:-1;1437:10:90;-1:-1:-1;;;;;1437:27:90;;;1429:36;;;;;;1193:280;;;;:::o;1749:526:97:-;1833:12;1879:3;:10;;;-1:-1:-1;;;;;1866:23:97;:3;:10;;;-1:-1:-1;;;;;1866:23:97;;1858:32;;;;;;-1:-1:-1;2120:10:97;;2132;;;;;2144:7;;;;;2109:43;;-1:-1:-1;;;;;2109:43:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:54;;;;;;1988:234;;;;;;;;-1:-1:-1;;1988:234:97;;;;;;;;;;;;658:66;1988:234;;;;;;;;;;;;;;;;;;;;;;;;;1956:285;;;;;;1749:526::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 IElixirPool\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/elixir-periphery/test/TestCallbackValidation.sol\":\"TestCallbackValidation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-periphery/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xb2c39ec43afd1140b765a183017c52d02763f6ad1732cc8bd15b424cf60addf3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4991a734b128dee4821aaaca11279e2caa458128a436ee4b64ddd2483962223a\",\"dweb:/ipfs/QmbLtcN47cGXxbAua61GDp9PGz9bqru7UQPH2CJSgF1cjC\"]},\"contracts/elixir-periphery/libraries/PoolAddress.sol\":{\"keccak256\":\"0xe4db08605b41c670ea3ec42ae41afd91f042d0ce5299471b737bf4207553e2fe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1284dedb962d823b2ad725852a355bddef3041d2d761082df031fc3187a386a\",\"dweb:/ipfs/QmYHpaVCdKA2VVoc1MgHgSAyTe1G8vZwda3Msofoxzoa67\"]},\"contracts/elixir-periphery/test/TestCallbackValidation.sol\":{\"keccak256\":\"0xfe023b5d82ecf58a019cf9499af00f1d6128c3c25d8db634bff9a50e1eafb2a9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://d341f4af6b333be2e225125b15a6a5dd1bb595a2c2c82d1532bc4345b589fbab\",\"dweb:/ipfs/QmTDCAW54oy7cCv9vsE4fBvxDcfc4GPDHQ1PhQQ39FeGfG\"]}},\"version\":1}"}},"contracts/elixir-periphery/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":"608060405234801561001057600080fd5b5061064b806100206000396000f3fe6080604052600436106100655760003560e01c80635170a9d0116100435780635170a9d0146100e4578063ac9650d814610106578063f3e222971461012657610065565b8063295b4e171461006a57806334621235146100955780633b16a6a3146100b7575b600080fd5b34801561007657600080fd5b5061007f61012e565b60405161008c919061054a565b60405180910390f35b3480156100a157600080fd5b506100b56100b036600461034f565b610134565b005b3480156100c357600080fd5b506100d76100d236600461043b565b610157565b60405161008c9190610533565b3480156100f057600080fd5b506100f9610178565b60405161008c9190610498565b6101196101143660046102e0565b61017c565b60405161008c91906104b9565b6100b56102bc565b60005481565b8060405162461bcd60e51b815260040161014e9190610519565b60405180910390fd5b61015f6102c6565b5060408051808201909152908152602081019190915290565b3390565b60608167ffffffffffffffff8111801561019557600080fd5b506040519080825280602002602001820160405280156101c957816020015b60608152602001906001900390816101b45790505b50905060005b828110156102b557600080308686858181106101e757fe5b90506020028101906101f99190610553565b604051610207929190610488565b600060405180830381855af49150503d8060008114610242576040519150601f19603f3d011682016040523d82523d6000602084013e610247565b606091505b5091509150816102935760448151101561026057600080fd5b6004810190508080602001905181019061027a91906103c8565b60405162461bcd60e51b815260040161014e9190610519565b808484815181106102a057fe5b602090810291909101015250506001016101cf565b5092915050565b6000805434019055565b604051806040016040528060008152602001600081525090565b600080602083850312156102f2578182fd5b823567ffffffffffffffff80821115610309578384fd5b818501915085601f83011261031c578384fd5b81358181111561032a578485fd5b866020808302850101111561033d578485fd5b60209290920196919550909350505050565b600060208284031215610360578081fd5b813567ffffffffffffffff811115610376578182fd5b8201601f81018413610386578182fd5b8035610399610394826105c3565b61059f565b8181528560208385010111156103ad578384fd5b81602084016020830137908101602001929092525092915050565b6000602082840312156103d9578081fd5b815167ffffffffffffffff8111156103ef578182fd5b8201601f810184136103ff578182fd5b805161040d610394826105c3565b818152856020838501011115610421578384fd5b6104328260208301602086016105e5565b95945050505050565b6000806040838503121561044d578182fd5b50508035926020909101359150565b600081518084526104748160208601602086016105e5565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b8281101561050c57603f198886030184526104fa85835161045c565b945092850192908501906001016104de565b5092979650505050505050565b60006020825261052c602083018461045c565b9392505050565b815181526020918201519181019190915260400190565b90815260200190565b6000808335601e19843603018112610569578283fd5b83018035915067ffffffffffffffff821115610583578283fd5b60200191503681900382131561059857600080fd5b9250929050565b60405181810167ffffffffffffffff811182821017156105bb57fe5b604052919050565b600067ffffffffffffffff8211156105d757fe5b50601f01601f191660200190565b60005b838110156106005781810151838201526020016105e8565b8381111561060f576000848401525b5050505056fea2646970667358221220b13d4213db839a1febd7a14be2530dceed743435eed5999e4e8d9e9290a227f964736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x64B 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 0x54A 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 0x34F 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 0x43B JUMP JUMPDEST PUSH2 0x157 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x533 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF9 PUSH2 0x178 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x498 JUMP JUMPDEST PUSH2 0x119 PUSH2 0x114 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E0 JUMP JUMPDEST PUSH2 0x17C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x4B9 JUMP JUMPDEST PUSH2 0xB5 PUSH2 0x2BC JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14E SWAP2 SWAP1 PUSH2 0x519 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x15F PUSH2 0x2C6 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 0x195 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 0x1C9 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1B4 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x1E7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1F9 SWAP2 SWAP1 PUSH2 0x553 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x207 SWAP3 SWAP2 SWAP1 PUSH2 0x488 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x242 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 0x247 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x293 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x27A SWAP2 SWAP1 PUSH2 0x3C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14E SWAP2 SWAP1 PUSH2 0x519 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2A0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x1CF 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 0x2F2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x309 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x31C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x32A JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x33D 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 0x360 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x376 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x386 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x399 PUSH2 0x394 DUP3 PUSH2 0x5C3 JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x3AD 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 0x3D9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3EF JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x3FF JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x40D PUSH2 0x394 DUP3 PUSH2 0x5C3 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x421 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x432 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5E5 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x44D 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 0x474 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5E5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT 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 0x50C JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x4FA DUP6 DUP4 MLOAD PUSH2 0x45C JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4DE JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x52C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x45C 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 PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x569 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x583 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x598 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 0x5BB JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5D7 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x600 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5E8 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x60F JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB1 RETURNDATASIZE TIMESTAMP SGT 0xDB DUP4 SWAP11 0x1F 0xEB 0xD7 LOG1 0x4B 0xE2 MSTORE8 0xD 0xCE 0xED PUSH21 0x3435EED5999E4E8D9E9290A227F964736F6C634300 SMOD MOD STOP CALLER ","sourceMap":"123:578:117:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:5889:178","statements":[{"nodeType":"YulBlock","src":"6:3:178","statements":[]},{"body":{"nodeType":"YulBlock","src":"130:561:178","statements":[{"body":{"nodeType":"YulBlock","src":"176:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"185:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"193:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"178:6:178"},"nodeType":"YulFunctionCall","src":"178:22:178"},"nodeType":"YulExpressionStatement","src":"178:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"151:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"160:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"147:3:178"},"nodeType":"YulFunctionCall","src":"147:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"172:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"143:3:178"},"nodeType":"YulFunctionCall","src":"143:32:178"},"nodeType":"YulIf","src":"140:2:178"},{"nodeType":"YulVariableDeclaration","src":"211:37:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"238:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"225:12:178"},"nodeType":"YulFunctionCall","src":"225:23:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"215:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"257:28:178","value":{"kind":"number","nodeType":"YulLiteral","src":"267:18:178","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"261:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"312:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"321:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"329:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"314:6:178"},"nodeType":"YulFunctionCall","src":"314:22:178"},"nodeType":"YulExpressionStatement","src":"314:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"308:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"297:2:178"},"nodeType":"YulFunctionCall","src":"297:14:178"},"nodeType":"YulIf","src":"294:2:178"},{"nodeType":"YulVariableDeclaration","src":"347:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"361:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"372:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"357:3:178"},"nodeType":"YulFunctionCall","src":"357:22:178"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"351:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"427:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"436:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"444:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"429:6:178"},"nodeType":"YulFunctionCall","src":"429:22:178"},"nodeType":"YulExpressionStatement","src":"429:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"406:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"410:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"402:3:178"},"nodeType":"YulFunctionCall","src":"402:13:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"417:7:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"398:3:178"},"nodeType":"YulFunctionCall","src":"398:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"391:6:178"},"nodeType":"YulFunctionCall","src":"391:35:178"},"nodeType":"YulIf","src":"388:2:178"},{"nodeType":"YulVariableDeclaration","src":"462:30:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"489:2:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"476:12:178"},"nodeType":"YulFunctionCall","src":"476:16:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"466:6:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"519:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"528:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"536:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"521:6:178"},"nodeType":"YulFunctionCall","src":"521:22:178"},"nodeType":"YulExpressionStatement","src":"521:22:178"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"507:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"515:2:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"504:2:178"},"nodeType":"YulFunctionCall","src":"504:14:178"},"nodeType":"YulIf","src":"501:2:178"},{"body":{"nodeType":"YulBlock","src":"604:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"613:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"621:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"606:6:178"},"nodeType":"YulFunctionCall","src":"606:22:178"},"nodeType":"YulExpressionStatement","src":"606:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"568:2:178"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"576:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"584:2:178","type":"","value":"32"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"572:3:178"},"nodeType":"YulFunctionCall","src":"572:15:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"564:3:178"},"nodeType":"YulFunctionCall","src":"564:24:178"},{"kind":"number","nodeType":"YulLiteral","src":"590:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"560:3:178"},"nodeType":"YulFunctionCall","src":"560:33:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"595:7:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"557:2:178"},"nodeType":"YulFunctionCall","src":"557:46:178"},"nodeType":"YulIf","src":"554:2:178"},{"nodeType":"YulAssignment","src":"639:21:178","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"653:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"657:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"649:3:178"},"nodeType":"YulFunctionCall","src":"649:11:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"639:6:178"}]},{"nodeType":"YulAssignment","src":"669:16:178","value":{"name":"length","nodeType":"YulIdentifier","src":"679:6:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"669:6:178"}]}]},"name":"abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"88:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"99:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"111:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"119:6:178","type":""}],"src":"14:677:178"},{"body":{"nodeType":"YulBlock","src":"776:639:178","statements":[{"body":{"nodeType":"YulBlock","src":"822:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"831:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"839:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"824:6:178"},"nodeType":"YulFunctionCall","src":"824:22:178"},"nodeType":"YulExpressionStatement","src":"824:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"797:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"806:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"793:3:178"},"nodeType":"YulFunctionCall","src":"793:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"818:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"789:3:178"},"nodeType":"YulFunctionCall","src":"789:32:178"},"nodeType":"YulIf","src":"786:2:178"},{"nodeType":"YulVariableDeclaration","src":"857:37:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"884:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"871:12:178"},"nodeType":"YulFunctionCall","src":"871:23:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"861:6:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"937:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"946:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"954:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"939:6:178"},"nodeType":"YulFunctionCall","src":"939:22:178"},"nodeType":"YulExpressionStatement","src":"939:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"909:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"917:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"906:2:178"},"nodeType":"YulFunctionCall","src":"906:30:178"},"nodeType":"YulIf","src":"903:2:178"},{"nodeType":"YulVariableDeclaration","src":"972:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"986:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"997:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"982:3:178"},"nodeType":"YulFunctionCall","src":"982:22:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"976:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"1052:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1061:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1069:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1054:6:178"},"nodeType":"YulFunctionCall","src":"1054:22:178"},"nodeType":"YulExpressionStatement","src":"1054:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1031:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"1035:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1027:3:178"},"nodeType":"YulFunctionCall","src":"1027:13:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1042:7:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1023:3:178"},"nodeType":"YulFunctionCall","src":"1023:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1016:6:178"},"nodeType":"YulFunctionCall","src":"1016:35:178"},"nodeType":"YulIf","src":"1013:2:178"},{"nodeType":"YulVariableDeclaration","src":"1087:26:178","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1110:2:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1097:12:178"},"nodeType":"YulFunctionCall","src":"1097:16:178"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"1091:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1122:63:178","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1181:2:178"}],"functionName":{"name":"array_allocation_size_t_string","nodeType":"YulIdentifier","src":"1150:30:178"},"nodeType":"YulFunctionCall","src":"1150:34:178"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"1135:14:178"},"nodeType":"YulFunctionCall","src":"1135:50:178"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"1126:5:178","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"1201:5:178"},{"name":"_2","nodeType":"YulIdentifier","src":"1208:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1194:6:178"},"nodeType":"YulFunctionCall","src":"1194:17:178"},"nodeType":"YulExpressionStatement","src":"1194:17:178"},{"body":{"nodeType":"YulBlock","src":"1257:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1266:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1274:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1259:6:178"},"nodeType":"YulFunctionCall","src":"1259:22:178"},"nodeType":"YulExpressionStatement","src":"1259:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1234:2:178"},{"name":"_2","nodeType":"YulIdentifier","src":"1238:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1230:3:178"},"nodeType":"YulFunctionCall","src":"1230:11:178"},{"kind":"number","nodeType":"YulLiteral","src":"1243:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1226:3:178"},"nodeType":"YulFunctionCall","src":"1226:20:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1248:7:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1223:2:178"},"nodeType":"YulFunctionCall","src":"1223:33:178"},"nodeType":"YulIf","src":"1220:2:178"},{"expression":{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"1309:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"1316:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1305:3:178"},"nodeType":"YulFunctionCall","src":"1305:14:178"},{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1325:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"1329:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1321:3:178"},"nodeType":"YulFunctionCall","src":"1321:11:178"},{"name":"_2","nodeType":"YulIdentifier","src":"1334:2:178"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"1292:12:178"},"nodeType":"YulFunctionCall","src":"1292:45:178"},"nodeType":"YulExpressionStatement","src":"1292:45:178"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"1361:5:178"},{"name":"_2","nodeType":"YulIdentifier","src":"1368:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1357:3:178"},"nodeType":"YulFunctionCall","src":"1357:14:178"},{"kind":"number","nodeType":"YulLiteral","src":"1373:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1353:3:178"},"nodeType":"YulFunctionCall","src":"1353:23:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1378:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1346:6:178"},"nodeType":"YulFunctionCall","src":"1346:39:178"},"nodeType":"YulExpressionStatement","src":"1346:39:178"},{"nodeType":"YulAssignment","src":"1394:15:178","value":{"name":"array","nodeType":"YulIdentifier","src":"1404:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1394:6:178"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"742:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"753:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"765:6:178","type":""}],"src":"696:719:178"},{"body":{"nodeType":"YulBlock","src":"1511:586:178","statements":[{"body":{"nodeType":"YulBlock","src":"1557:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1566:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1574:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1559:6:178"},"nodeType":"YulFunctionCall","src":"1559:22:178"},"nodeType":"YulExpressionStatement","src":"1559:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1532:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"1541:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1528:3:178"},"nodeType":"YulFunctionCall","src":"1528:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"1553:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1524:3:178"},"nodeType":"YulFunctionCall","src":"1524:32:178"},"nodeType":"YulIf","src":"1521:2:178"},{"nodeType":"YulVariableDeclaration","src":"1592:30:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1612:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1606:5:178"},"nodeType":"YulFunctionCall","src":"1606:16:178"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1596:6:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"1665:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1674:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1682:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1667:6:178"},"nodeType":"YulFunctionCall","src":"1667:22:178"},"nodeType":"YulExpressionStatement","src":"1667:22:178"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1637:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"1645:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1634:2:178"},"nodeType":"YulFunctionCall","src":"1634:30:178"},"nodeType":"YulIf","src":"1631:2:178"},{"nodeType":"YulVariableDeclaration","src":"1700:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1714:9:178"},{"name":"offset","nodeType":"YulIdentifier","src":"1725:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1710:3:178"},"nodeType":"YulFunctionCall","src":"1710:22:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1704:2:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"1780:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1789:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1797:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1782:6:178"},"nodeType":"YulFunctionCall","src":"1782:22:178"},"nodeType":"YulExpressionStatement","src":"1782:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1759:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"1763:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1755:3:178"},"nodeType":"YulFunctionCall","src":"1755:13:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1770:7:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1751:3:178"},"nodeType":"YulFunctionCall","src":"1751:27:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1744:6:178"},"nodeType":"YulFunctionCall","src":"1744:35:178"},"nodeType":"YulIf","src":"1741:2:178"},{"nodeType":"YulVariableDeclaration","src":"1815:19:178","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1831:2:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1825:5:178"},"nodeType":"YulFunctionCall","src":"1825:9:178"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"1819:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1843:63:178","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1902:2:178"}],"functionName":{"name":"array_allocation_size_t_string","nodeType":"YulIdentifier","src":"1871:30:178"},"nodeType":"YulFunctionCall","src":"1871:34:178"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"1856:14:178"},"nodeType":"YulFunctionCall","src":"1856:50:178"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"1847:5:178","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"1922:5:178"},{"name":"_2","nodeType":"YulIdentifier","src":"1929:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1915:6:178"},"nodeType":"YulFunctionCall","src":"1915:17:178"},"nodeType":"YulExpressionStatement","src":"1915:17:178"},{"body":{"nodeType":"YulBlock","src":"1978:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1987:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1995:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1980:6:178"},"nodeType":"YulFunctionCall","src":"1980:22:178"},"nodeType":"YulExpressionStatement","src":"1980:22:178"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1955:2:178"},{"name":"_2","nodeType":"YulIdentifier","src":"1959:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1951:3:178"},"nodeType":"YulFunctionCall","src":"1951:11:178"},{"kind":"number","nodeType":"YulLiteral","src":"1964:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1947:3:178"},"nodeType":"YulFunctionCall","src":"1947:20:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1969:7:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1944:2:178"},"nodeType":"YulFunctionCall","src":"1944:33:178"},"nodeType":"YulIf","src":"1941:2:178"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2039:2:178"},{"kind":"number","nodeType":"YulLiteral","src":"2043:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2035:3:178"},"nodeType":"YulFunctionCall","src":"2035:11:178"},{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2052:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"2059:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2048:3:178"},"nodeType":"YulFunctionCall","src":"2048:14:178"},{"name":"_2","nodeType":"YulIdentifier","src":"2064:2:178"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2013:21:178"},"nodeType":"YulFunctionCall","src":"2013:54:178"},"nodeType":"YulExpressionStatement","src":"2013:54:178"},{"nodeType":"YulAssignment","src":"2076:15:178","value":{"name":"array","nodeType":"YulIdentifier","src":"2086:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2076:6:178"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1477:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1488:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1500:6:178","type":""}],"src":"1420:677:178"},{"body":{"nodeType":"YulBlock","src":"2189:171:178","statements":[{"body":{"nodeType":"YulBlock","src":"2235:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2244:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2252:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2237:6:178"},"nodeType":"YulFunctionCall","src":"2237:22:178"},"nodeType":"YulExpressionStatement","src":"2237:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2210:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"2219:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2206:3:178"},"nodeType":"YulFunctionCall","src":"2206:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"2231:2:178","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2202:3:178"},"nodeType":"YulFunctionCall","src":"2202:32:178"},"nodeType":"YulIf","src":"2199:2:178"},{"nodeType":"YulAssignment","src":"2270:33:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2293:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2280:12:178"},"nodeType":"YulFunctionCall","src":"2280:23:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2270:6:178"}]},{"nodeType":"YulAssignment","src":"2312:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2339:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2350:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2335:3:178"},"nodeType":"YulFunctionCall","src":"2335:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2322:12:178"},"nodeType":"YulFunctionCall","src":"2322:32:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2312:6:178"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2147:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2158:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2170:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2178:6:178","type":""}],"src":"2102:258:178"},{"body":{"nodeType":"YulBlock","src":"2416:208:178","statements":[{"nodeType":"YulVariableDeclaration","src":"2426:26:178","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2446:5:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2440:5:178"},"nodeType":"YulFunctionCall","src":"2440:12:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2430:6:178","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2468:3:178"},{"name":"length","nodeType":"YulIdentifier","src":"2473:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2461:6:178"},"nodeType":"YulFunctionCall","src":"2461:19:178"},"nodeType":"YulExpressionStatement","src":"2461:19:178"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2515:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"2522:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2511:3:178"},"nodeType":"YulFunctionCall","src":"2511:16:178"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2533:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"2538:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2529:3:178"},"nodeType":"YulFunctionCall","src":"2529:14:178"},{"name":"length","nodeType":"YulIdentifier","src":"2545:6:178"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2489:21:178"},"nodeType":"YulFunctionCall","src":"2489:63:178"},"nodeType":"YulExpressionStatement","src":"2489:63:178"},{"nodeType":"YulAssignment","src":"2561:57:178","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2576:3:178"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2589:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"2597:2:178","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2585:3:178"},"nodeType":"YulFunctionCall","src":"2585:15:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2606:2:178","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2602:3:178"},"nodeType":"YulFunctionCall","src":"2602:7:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2581:3:178"},"nodeType":"YulFunctionCall","src":"2581:29:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2572:3:178"},"nodeType":"YulFunctionCall","src":"2572:39:178"},{"kind":"number","nodeType":"YulLiteral","src":"2613:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2568:3:178"},"nodeType":"YulFunctionCall","src":"2568:50:178"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2561:3:178"}]}]},"name":"abi_encode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2393:5:178","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2400:3:178","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2408:3:178","type":""}],"src":"2365:259:178"},{"body":{"nodeType":"YulBlock","src":"2776:126:178","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2799:3:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2804:6:178"},{"name":"value1","nodeType":"YulIdentifier","src":"2812:6:178"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"2786:12:178"},"nodeType":"YulFunctionCall","src":"2786:33:178"},"nodeType":"YulExpressionStatement","src":"2786:33:178"},{"nodeType":"YulVariableDeclaration","src":"2828:26:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2842:3:178"},{"name":"value1","nodeType":"YulIdentifier","src":"2847:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2838:3:178"},"nodeType":"YulFunctionCall","src":"2838:16:178"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2832:2:178","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2870:2:178"},{"name":"end","nodeType":"YulIdentifier","src":"2874:3:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2863:6:178"},"nodeType":"YulFunctionCall","src":"2863:15:178"},"nodeType":"YulExpressionStatement","src":"2863:15:178"},{"nodeType":"YulAssignment","src":"2887:9:178","value":{"name":"_1","nodeType":"YulIdentifier","src":"2894:2:178"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2887:3:178"}]}]},"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":"2744:3:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2749:6:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2757:6:178","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2768:3:178","type":""}],"src":"2629:273:178"},{"body":{"nodeType":"YulBlock","src":"3008:125:178","statements":[{"nodeType":"YulAssignment","src":"3018:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3030:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3041:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3026:3:178"},"nodeType":"YulFunctionCall","src":"3026:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3018:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3060:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3075:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"3083:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3071:3:178"},"nodeType":"YulFunctionCall","src":"3071:55:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3053:6:178"},"nodeType":"YulFunctionCall","src":"3053:74:178"},"nodeType":"YulExpressionStatement","src":"3053:74:178"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2977:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2988:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2999:4:178","type":""}],"src":"2907:226:178"},{"body":{"nodeType":"YulBlock","src":"3307:637:178","statements":[{"nodeType":"YulVariableDeclaration","src":"3317:12:178","value":{"kind":"number","nodeType":"YulLiteral","src":"3327:2:178","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3321:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3338:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3356:9:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3367:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3352:3:178"},"nodeType":"YulFunctionCall","src":"3352:18:178"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3342:6:178","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3386:9:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3397:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3379:6:178"},"nodeType":"YulFunctionCall","src":"3379:21:178"},"nodeType":"YulExpressionStatement","src":"3379:21:178"},{"nodeType":"YulVariableDeclaration","src":"3409:17:178","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3420:6:178"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3413:3:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3435:27:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3455:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3449:5:178"},"nodeType":"YulFunctionCall","src":"3449:13:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3439:6:178","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3478:6:178"},{"name":"length","nodeType":"YulIdentifier","src":"3486:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3471:6:178"},"nodeType":"YulFunctionCall","src":"3471:22:178"},"nodeType":"YulExpressionStatement","src":"3471:22:178"},{"nodeType":"YulAssignment","src":"3502:25:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3513:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3524:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3509:3:178"},"nodeType":"YulFunctionCall","src":"3509:18:178"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3502:3:178"}]},{"nodeType":"YulVariableDeclaration","src":"3536:54:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3558:9:178"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3573:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3581:2:178"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3569:3:178"},"nodeType":"YulFunctionCall","src":"3569:15:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3554:3:178"},"nodeType":"YulFunctionCall","src":"3554:31:178"},{"kind":"number","nodeType":"YulLiteral","src":"3587:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3550:3:178"},"nodeType":"YulFunctionCall","src":"3550:40:178"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"3540:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3599:29:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3617:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3625:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3613:3:178"},"nodeType":"YulFunctionCall","src":"3613:15:178"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3603:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3637:13:178","value":{"name":"tail","nodeType":"YulIdentifier","src":"3646:4:178"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3641:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3708:207:178","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3729:3:178"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"3742:6:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"3750:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3738:3:178"},"nodeType":"YulFunctionCall","src":"3738:22:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3766:2:178","type":"","value":"63"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3762:3:178"},"nodeType":"YulFunctionCall","src":"3762:7:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3734:3:178"},"nodeType":"YulFunctionCall","src":"3734:36:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3722:6:178"},"nodeType":"YulFunctionCall","src":"3722:49:178"},"nodeType":"YulExpressionStatement","src":"3722:49:178"},{"nodeType":"YulAssignment","src":"3784:51:178","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3819:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3813:5:178"},"nodeType":"YulFunctionCall","src":"3813:13:178"},{"name":"tail_2","nodeType":"YulIdentifier","src":"3828:6:178"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"3794:18:178"},"nodeType":"YulFunctionCall","src":"3794:41:178"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"3784:6:178"}]},{"nodeType":"YulAssignment","src":"3848:25:178","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3862:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3870:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3858:3:178"},"nodeType":"YulFunctionCall","src":"3858:15:178"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3848:6:178"}]},{"nodeType":"YulAssignment","src":"3886:19:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3897:3:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3902:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3893:3:178"},"nodeType":"YulFunctionCall","src":"3893:12:178"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3886:3:178"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3670:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"3673:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3667:2:178"},"nodeType":"YulFunctionCall","src":"3667:13:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3681:18:178","statements":[{"nodeType":"YulAssignment","src":"3683:14:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3692:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"3695:1:178","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3688:3:178"},"nodeType":"YulFunctionCall","src":"3688:9:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3683:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"3663:3:178","statements":[]},"src":"3659:256:178"},{"nodeType":"YulAssignment","src":"3924:14:178","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"3932:6:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3924:4:178"}]}]},"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":"3276:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3287:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3298:4:178","type":""}],"src":"3138:806:178"},{"body":{"nodeType":"YulBlock","src":"4070:100:178","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4087:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4098:2:178","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4080:6:178"},"nodeType":"YulFunctionCall","src":"4080:21:178"},"nodeType":"YulExpressionStatement","src":"4080:21:178"},{"nodeType":"YulAssignment","src":"4110:54:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4137:6:178"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4149:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4160:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4145:3:178"},"nodeType":"YulFunctionCall","src":"4145:18:178"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"4118:18:178"},"nodeType":"YulFunctionCall","src":"4118:46:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4110:4:178"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4039:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4050:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4061:4:178","type":""}],"src":"3949:221:178"},{"body":{"nodeType":"YulBlock","src":"4324:146:178","statements":[{"nodeType":"YulAssignment","src":"4334:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4346:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4357:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4342:3:178"},"nodeType":"YulFunctionCall","src":"4342:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4334:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4376:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4393:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4387:5:178"},"nodeType":"YulFunctionCall","src":"4387:13:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4369:6:178"},"nodeType":"YulFunctionCall","src":"4369:32:178"},"nodeType":"YulExpressionStatement","src":"4369:32:178"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4421:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4432:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4417:3:178"},"nodeType":"YulFunctionCall","src":"4417:20:178"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4449:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"4457:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4445:3:178"},"nodeType":"YulFunctionCall","src":"4445:17:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4439:5:178"},"nodeType":"YulFunctionCall","src":"4439:24:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4410:6:178"},"nodeType":"YulFunctionCall","src":"4410:54:178"},"nodeType":"YulExpressionStatement","src":"4410:54:178"}]},"name":"abi_encode_tuple_t_struct$_Tuple_$21949_memory_ptr__to_t_struct$_Tuple_$21949_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4293:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4304:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4315:4:178","type":""}],"src":"4175:295:178"},{"body":{"nodeType":"YulBlock","src":"4576:76:178","statements":[{"nodeType":"YulAssignment","src":"4586:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4598:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4609:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4594:3:178"},"nodeType":"YulFunctionCall","src":"4594:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4586:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4628:9:178"},{"name":"value0","nodeType":"YulIdentifier","src":"4639:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4621:6:178"},"nodeType":"YulFunctionCall","src":"4621:25:178"},"nodeType":"YulExpressionStatement","src":"4621:25:178"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4545:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4556:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4567:4:178","type":""}],"src":"4475:177:178"},{"body":{"nodeType":"YulBlock","src":"4751:439:178","statements":[{"nodeType":"YulVariableDeclaration","src":"4761:51:178","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"4800:11:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4787:12:178"},"nodeType":"YulFunctionCall","src":"4787:25:178"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"4765:18:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"4901:22:178","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"4910:4:178"},{"name":"addr","nodeType":"YulIdentifier","src":"4916:4:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4903:6:178"},"nodeType":"YulFunctionCall","src":"4903:18:178"},"nodeType":"YulExpressionStatement","src":"4903:18:178"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"4835:18:178"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"4863:12:178"},"nodeType":"YulFunctionCall","src":"4863:14:178"},{"name":"base_ref","nodeType":"YulIdentifier","src":"4879:8:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4859:3:178"},"nodeType":"YulFunctionCall","src":"4859:29:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4894:2:178","type":"","value":"30"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4890:3:178"},"nodeType":"YulFunctionCall","src":"4890:7:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4855:3:178"},"nodeType":"YulFunctionCall","src":"4855:43:178"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4831:3:178"},"nodeType":"YulFunctionCall","src":"4831:68:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4824:6:178"},"nodeType":"YulFunctionCall","src":"4824:76:178"},"nodeType":"YulIf","src":"4821:2:178"},{"nodeType":"YulVariableDeclaration","src":"4932:47:178","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"4950:8:178"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"4960:18:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4946:3:178"},"nodeType":"YulFunctionCall","src":"4946:33:178"},"variables":[{"name":"addr_1","nodeType":"YulTypedName","src":"4936:6:178","type":""}]},{"nodeType":"YulAssignment","src":"4988:30:178","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"5011:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4998:12:178"},"nodeType":"YulFunctionCall","src":"4998:20:178"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4988:6:178"}]},{"body":{"nodeType":"YulBlock","src":"5061:22:178","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"5070:4:178"},{"name":"addr","nodeType":"YulIdentifier","src":"5076:4:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5063:6:178"},"nodeType":"YulFunctionCall","src":"5063:18:178"},"nodeType":"YulExpressionStatement","src":"5063:18:178"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5033:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"5041:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5030:2:178"},"nodeType":"YulFunctionCall","src":"5030:30:178"},"nodeType":"YulIf","src":"5027:2:178"},{"nodeType":"YulAssignment","src":"5092:25:178","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"5104:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"5112:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5100:3:178"},"nodeType":"YulFunctionCall","src":"5100:17:178"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"5092:4:178"}]},{"body":{"nodeType":"YulBlock","src":"5168:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5177:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5180:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5170:6:178"},"nodeType":"YulFunctionCall","src":"5170:12:178"},"nodeType":"YulExpressionStatement","src":"5170:12:178"}]},"condition":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"5133:4:178"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"5143:12:178"},"nodeType":"YulFunctionCall","src":"5143:14:178"},{"name":"length","nodeType":"YulIdentifier","src":"5159:6:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5139:3:178"},"nodeType":"YulFunctionCall","src":"5139:27:178"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"5129:3:178"},"nodeType":"YulFunctionCall","src":"5129:38:178"},"nodeType":"YulIf","src":"5126:2:178"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"4708:8:178","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"4718:11:178","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"4734:4:178","type":""},{"name":"length","nodeType":"YulTypedName","src":"4740:6:178","type":""}],"src":"4657:533:178"},{"body":{"nodeType":"YulBlock","src":"5239:198:178","statements":[{"nodeType":"YulAssignment","src":"5249:19:178","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5265:2:178","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5259:5:178"},"nodeType":"YulFunctionCall","src":"5259:9:178"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5249:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"5277:35:178","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5299:6:178"},{"name":"size","nodeType":"YulIdentifier","src":"5307:4:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5295:3:178"},"nodeType":"YulFunctionCall","src":"5295:17:178"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"5281:10:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"5387:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"5389:7:178"},"nodeType":"YulFunctionCall","src":"5389:9:178"},"nodeType":"YulExpressionStatement","src":"5389:9:178"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5330:10:178"},{"kind":"number","nodeType":"YulLiteral","src":"5342:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5327:2:178"},"nodeType":"YulFunctionCall","src":"5327:34:178"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5366:10:178"},{"name":"memPtr","nodeType":"YulIdentifier","src":"5378:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5363:2:178"},"nodeType":"YulFunctionCall","src":"5363:22:178"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5324:2:178"},"nodeType":"YulFunctionCall","src":"5324:62:178"},"nodeType":"YulIf","src":"5321:2:178"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5416:2:178","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5420:10:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5409:6:178"},"nodeType":"YulFunctionCall","src":"5409:22:178"},"nodeType":"YulExpressionStatement","src":"5409:22:178"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"5219:4:178","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5228:6:178","type":""}],"src":"5195:242:178"},{"body":{"nodeType":"YulBlock","src":"5502:122:178","statements":[{"body":{"nodeType":"YulBlock","src":"5546:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"5548:7:178"},"nodeType":"YulFunctionCall","src":"5548:9:178"},"nodeType":"YulExpressionStatement","src":"5548:9:178"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5518:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"5526:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5515:2:178"},"nodeType":"YulFunctionCall","src":"5515:30:178"},"nodeType":"YulIf","src":"5512:2:178"},{"nodeType":"YulAssignment","src":"5568:50:178","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5588:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"5596:4:178","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5584:3:178"},"nodeType":"YulFunctionCall","src":"5584:17:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5607:2:178","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"5603:3:178"},"nodeType":"YulFunctionCall","src":"5603:7:178"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5580:3:178"},"nodeType":"YulFunctionCall","src":"5580:31:178"},{"kind":"number","nodeType":"YulLiteral","src":"5613:4:178","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5576:3:178"},"nodeType":"YulFunctionCall","src":"5576:42:178"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"5568:4:178"}]}]},"name":"array_allocation_size_t_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"5482:6:178","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"5493:4:178","type":""}],"src":"5442:182:178"},{"body":{"nodeType":"YulBlock","src":"5682:205:178","statements":[{"nodeType":"YulVariableDeclaration","src":"5692:10:178","value":{"kind":"number","nodeType":"YulLiteral","src":"5701:1:178","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5696:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"5761:63:178","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5786:3:178"},{"name":"i","nodeType":"YulIdentifier","src":"5791:1:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5782:3:178"},"nodeType":"YulFunctionCall","src":"5782:11:178"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5805:3:178"},{"name":"i","nodeType":"YulIdentifier","src":"5810:1:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5801:3:178"},"nodeType":"YulFunctionCall","src":"5801:11:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5795:5:178"},"nodeType":"YulFunctionCall","src":"5795:18:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5775:6:178"},"nodeType":"YulFunctionCall","src":"5775:39:178"},"nodeType":"YulExpressionStatement","src":"5775:39:178"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5722:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"5725:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5719:2:178"},"nodeType":"YulFunctionCall","src":"5719:13:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5733:19:178","statements":[{"nodeType":"YulAssignment","src":"5735:15:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5744:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"5747:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5740:3:178"},"nodeType":"YulFunctionCall","src":"5740:10:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5735:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"5715:3:178","statements":[]},"src":"5711:113:178"},{"body":{"nodeType":"YulBlock","src":"5850:31:178","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5863:3:178"},{"name":"length","nodeType":"YulIdentifier","src":"5868:6:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5859:3:178"},"nodeType":"YulFunctionCall","src":"5859:16:178"},{"kind":"number","nodeType":"YulLiteral","src":"5877:1:178","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5852:6:178"},"nodeType":"YulFunctionCall","src":"5852:27:178"},"nodeType":"YulExpressionStatement","src":"5852:27:178"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5839:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"5842:6:178"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5836:2:178"},"nodeType":"YulFunctionCall","src":"5836:13:178"},"nodeType":"YulIf","src":"5833:2:178"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"5660:3:178","type":""},{"name":"dst","nodeType":"YulTypedName","src":"5665:3:178","type":""},{"name":"length","nodeType":"YulTypedName","src":"5670:6:178","type":""}],"src":"5629:258:178"}]},"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), not(31))), 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), not(63)))\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_$21949_memory_ptr__to_t_struct$_Tuple_$21949_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), not(30)))) { 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), not(31)), 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":178,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100655760003560e01c80635170a9d0116100435780635170a9d0146100e4578063ac9650d814610106578063f3e222971461012657610065565b8063295b4e171461006a57806334621235146100955780633b16a6a3146100b7575b600080fd5b34801561007657600080fd5b5061007f61012e565b60405161008c919061054a565b60405180910390f35b3480156100a157600080fd5b506100b56100b036600461034f565b610134565b005b3480156100c357600080fd5b506100d76100d236600461043b565b610157565b60405161008c9190610533565b3480156100f057600080fd5b506100f9610178565b60405161008c9190610498565b6101196101143660046102e0565b61017c565b60405161008c91906104b9565b6100b56102bc565b60005481565b8060405162461bcd60e51b815260040161014e9190610519565b60405180910390fd5b61015f6102c6565b5060408051808201909152908152602081019190915290565b3390565b60608167ffffffffffffffff8111801561019557600080fd5b506040519080825280602002602001820160405280156101c957816020015b60608152602001906001900390816101b45790505b50905060005b828110156102b557600080308686858181106101e757fe5b90506020028101906101f99190610553565b604051610207929190610488565b600060405180830381855af49150503d8060008114610242576040519150601f19603f3d011682016040523d82523d6000602084013e610247565b606091505b5091509150816102935760448151101561026057600080fd5b6004810190508080602001905181019061027a91906103c8565b60405162461bcd60e51b815260040161014e9190610519565b808484815181106102a057fe5b602090810291909101015250506001016101cf565b5092915050565b6000805434019055565b604051806040016040528060008152602001600081525090565b600080602083850312156102f2578182fd5b823567ffffffffffffffff80821115610309578384fd5b818501915085601f83011261031c578384fd5b81358181111561032a578485fd5b866020808302850101111561033d578485fd5b60209290920196919550909350505050565b600060208284031215610360578081fd5b813567ffffffffffffffff811115610376578182fd5b8201601f81018413610386578182fd5b8035610399610394826105c3565b61059f565b8181528560208385010111156103ad578384fd5b81602084016020830137908101602001929092525092915050565b6000602082840312156103d9578081fd5b815167ffffffffffffffff8111156103ef578182fd5b8201601f810184136103ff578182fd5b805161040d610394826105c3565b818152856020838501011115610421578384fd5b6104328260208301602086016105e5565b95945050505050565b6000806040838503121561044d578182fd5b50508035926020909101359150565b600081518084526104748160208601602086016105e5565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b8281101561050c57603f198886030184526104fa85835161045c565b945092850192908501906001016104de565b5092979650505050505050565b60006020825261052c602083018461045c565b9392505050565b815181526020918201519181019190915260400190565b90815260200190565b6000808335601e19843603018112610569578283fd5b83018035915067ffffffffffffffff821115610583578283fd5b60200191503681900382131561059857600080fd5b9250929050565b60405181810167ffffffffffffffff811182821017156105bb57fe5b604052919050565b600067ffffffffffffffff8211156105d757fe5b50601f01601f191660200190565b60005b838110156106005781810151838201526020016105e8565b8381111561060f576000848401525b5050505056fea2646970667358221220b13d4213db839a1febd7a14be2530dceed743435eed5999e4e8d9e9290a227f964736f6c63430007060033","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 0x54A 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 0x34F 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 0x43B JUMP JUMPDEST PUSH2 0x157 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x533 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF9 PUSH2 0x178 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x498 JUMP JUMPDEST PUSH2 0x119 PUSH2 0x114 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E0 JUMP JUMPDEST PUSH2 0x17C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x4B9 JUMP JUMPDEST PUSH2 0xB5 PUSH2 0x2BC JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14E SWAP2 SWAP1 PUSH2 0x519 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x15F PUSH2 0x2C6 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 0x195 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 0x1C9 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1B4 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x1E7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1F9 SWAP2 SWAP1 PUSH2 0x553 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x207 SWAP3 SWAP2 SWAP1 PUSH2 0x488 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x242 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 0x247 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x293 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x27A SWAP2 SWAP1 PUSH2 0x3C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14E SWAP2 SWAP1 PUSH2 0x519 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2A0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x1CF 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 0x2F2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x309 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x31C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x32A JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x33D 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 0x360 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x376 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x386 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x399 PUSH2 0x394 DUP3 PUSH2 0x5C3 JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x3AD 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 0x3D9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3EF JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x3FF JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x40D PUSH2 0x394 DUP3 PUSH2 0x5C3 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x421 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x432 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5E5 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x44D 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 0x474 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5E5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT 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 0x50C JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x4FA DUP6 DUP4 MLOAD PUSH2 0x45C JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4DE JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x52C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x45C 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 PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x569 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x583 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x598 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 0x5BB JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5D7 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x600 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5E8 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x60F JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB1 RETURNDATASIZE TIMESTAMP SGT 0xDB DUP4 SWAP11 0x1F 0xEB 0xD7 LOG1 0x4B 0xE2 MSTORE8 0xD 0xCE 0xED PUSH21 0x3435EED5999E4E8D9E9290A227F964736F6C634300 SMOD MOD STOP CALLER ","sourceMap":"123:578:117:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;501:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;166:105;;;;;;;;;;-1:-1:-1;166:105:117;;;;;:::i;:::-;;:::i;:::-;;348:145;;;;;;;;;;-1:-1:-1;348:145:117;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;606:92::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;318:669:63:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;529:69:117:-;;;:::i;501:19::-;;;;:::o;166:105::-;257:5;250:13;;-1:-1:-1;;;250:13:117;;;;;;;;:::i;:::-;;;;;;;;348:145;427:18;;:::i;:::-;-1:-1:-1;466:19:117;;;;;;;;;;;;;;;;;;;;348:145::o;606:92::-;680:10;606:92;:::o;318:669:63:-;393:22;450:4;438:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;428:34;;478:9;473:507;493:15;;;473:507;;;531:12;;576:4;595;;600:1;595:7;;;;;;;;;;;;;;;;;;:::i;:::-;568:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;530:73;;;;625:7;620:313;;754:2;738:6;:13;:18;734:32;;;758:8;;;734:32;839:4;831:6;827:17;817:27;;899:6;888:28;;;;;;;;;;;;:::i;:::-;881:36;;-1:-1:-1;;;881:36:63;;;;;;;;:::i;620:313::-;962:6;949:7;957:1;949:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;510:3:63;;473:507;;;;318:669;;;;:::o;529:69:117:-;573:4;:17;;581:9;573:17;;;529:69::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;14:677:178:-;;;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:178;;-1:-1:-1;;;;130:561:178: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:178;;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:178;776:639;-1:-1:-1;;776:639:178: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:178;;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:178: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:178;;;2350:2;2335:18;;;2322:32;;-1:-1:-1;2189:171:178:o;2365:259::-;;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;:::-;2606:2;2585:15;-1:-1:-1;;2581:29:178;2572:39;;;;2613:4;2568:50;;2416:208;-1:-1:-1;;2416:208:178:o;2629:273::-;;2812:6;2804;2799:3;2786:33;2838:16;;2863:15;;;2838:16;2776:126;-1:-1:-1;2776:126:178:o;2907:226::-;3083:42;3071:55;;;;3053:74;;3041:2;3026:18;;3008:125::o;3138:806::-;;3327:2;3367;3356:9;3352:18;3397:2;3386:9;3379:21;3420:6;3455;3449:13;3486:6;3478;3471:22;3524:2;3513:9;3509:18;3502:25;;3587:2;3581;3573:6;3569:15;3558:9;3554:31;3550:40;3536:54;;3625:2;3617:6;3613:15;3646:4;3659:256;3673:6;3670:1;3667:13;3659:256;;;3766:2;3762:7;3750:9;3742:6;3738:22;3734:36;3729:3;3722:49;3794:41;3828:6;3819;3813:13;3794:41;:::i;:::-;3784:51;-1:-1:-1;3893:12:178;;;;3858:15;;;;3695:1;3688:9;3659:256;;;-1:-1:-1;3932:6:178;;3307:637;-1:-1:-1;;;;;;;3307:637:178:o;3949:221::-;;4098:2;4087:9;4080:21;4118:46;4160:2;4149:9;4145:18;4137:6;4118:46;:::i;:::-;4110:54;4070:100;-1:-1:-1;;;4070:100:178:o;4175:295::-;4387:13;;4369:32;;4457:4;4445:17;;;4439:24;4417:20;;;4410:54;;;;4357:2;4342:18;;4324:146::o;4475:177::-;4621:25;;;4609:2;4594:18;;4576:76::o;4657:533::-;;;4800:11;4787:25;4894:2;4890:7;4879:8;4863:14;4859:29;4855:43;4835:18;4831:68;4821:2;;4916:4;4910;4903:18;4821:2;4946:33;;4998:20;;;-1:-1:-1;5041:18:178;5030:30;;5027:2;;;5076:4;5070;5063:18;5027:2;5112:4;5100:17;;-1:-1:-1;5143:14:178;5139:27;;;5129:38;;5126:2;;;5180:1;5177;5170:12;5126:2;4751:439;;;;;:::o;5195:242::-;5265:2;5259:9;5295:17;;;5342:18;5327:34;;5363:22;;;5324:62;5321:2;;;5389:9;5321:2;5416;5409:22;5239:198;;-1:-1:-1;5239:198:178:o;5442:182::-;;5526:18;5518:6;5515:30;5512:2;;;5548:9;5512:2;-1:-1:-1;5607:2:178;5584:17;-1:-1:-1;;5580:31:178;5613:4;5576:42;;5502:122::o;5629:258::-;5701:1;5711:113;5725:6;5722:1;5719:13;5711:113;;;5801:11;;;5795:18;5782:11;;;5775:39;5747:2;5740:10;5711:113;;;5842:6;5839:1;5836:13;5833:2;;;5877:1;5868:6;5863:3;5859:16;5852:27;5833:2;;5682: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/elixir-periphery/test/TestMulticall.sol\":\"TestMulticall\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/base/Multicall.sol\":{\"keccak256\":\"0x3acc1acf20b9f218e68706d90f71b28d63fbca91b8a6b5445613e12d5c98aac6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c4414bcad1d2971596866d1dc95790954fac1ca9e772d9864785496348083839\",\"dweb:/ipfs/QmXeTSwz3446DddKoZSaY1vZ4mNsMvdF4zAeX4ANoMxhjT\"]},\"contracts/elixir-periphery/interfaces/IMulticall.sol\":{\"keccak256\":\"0x76aeef8a8cd237f1bd8fb67f21e1734ba5c294b522c1932ce336f72fe41e5355\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b577b8f8e1b2767f218d0a1d78f7cc4d7b24ccd01ed7422a7129f9ae465edff\",\"dweb:/ipfs/QmVUzqSeAXf9Urwc1tseh1sW3pNz6z36vEYYYAGTNAnDWf\"]},\"contracts/elixir-periphery/test/TestMulticall.sol\":{\"keccak256\":\"0xb8a594dcc1875887ba9551ed522507794843606b40f053c4ee2026f5611ba63f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://cfbfd5802427581b3004b724f5a009a4cdab682c4e56a60dd36eccafe4675857\",\"dweb:/ipfs/QmSgqVnmivwFp6ADFrXAnGJnCmCPSRjmpx6f2TtubhLRvd\"]}},\"version\":1}"}},"contracts/elixir-periphery/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":"608060405234801561001057600080fd5b506102aa806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806313af4035146100465780631626ba7e1461006e5780638da5cb5b14610150575b600080fd5b61006c6004803603602081101561005c57600080fd5b50356001600160a01b0316610174565b005b61011b6004803603604081101561008457600080fd5b813591908101906040810160208201356401000000008111156100a657600080fd5b8201836020820111156100b857600080fd5b803590602001918460018302840111640100000000831117156100da57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506101ae945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b610158610265565b604080516001600160a01b039092168252519081900360200190f35b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6020818101516040808401516060808601516000805485518281528089018088528b905292821a8387018190529383018790526080830185905294519096939492936001600160a01b039093169260019260a080820193601f1981019281900390910190855afa158015610226573d6000803e3d6000fd5b505050602060405103516001600160a01b031614156102525750630b135d3f60e11b925061025f915050565b506000925061025f915050565b92915050565b6000546001600160a01b03168156fea2646970667358221220e84015fbefc69554f314e1b6f8f344797d9a1d7c2f6b3129dbaa94dca6e9cd5f64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA 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 0x6E JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x150 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x174 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x84 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 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB8 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 0xDA 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 0x1AE 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 0x158 PUSH2 0x265 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 PUSH1 0x1 SWAP3 PUSH1 0xA0 DUP1 DUP3 ADD SWAP4 PUSH1 0x1F NOT DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x226 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x252 JUMPI POP PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP3 POP PUSH2 0x25F SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x25F SWAP2 POP POP JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE8 BLOCKHASH ISZERO 0xFB 0xEF 0xC6 SWAP6 SLOAD RETURN EQ 0xE1 0xB6 0xF8 RETURN DIFFICULTY PUSH26 0x7D9A1D7C2F6B3129DBAA94DCA6E9CD5F64736F6C634300070600 CALLER ","sourceMap":"116:674:118:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c806313af4035146100465780631626ba7e1461006e5780638da5cb5b14610150575b600080fd5b61006c6004803603602081101561005c57600080fd5b50356001600160a01b0316610174565b005b61011b6004803603604081101561008457600080fd5b813591908101906040810160208201356401000000008111156100a657600080fd5b8201836020820111156100b857600080fd5b803590602001918460018302840111640100000000831117156100da57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506101ae945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b610158610265565b604080516001600160a01b039092168252519081900360200190f35b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6020818101516040808401516060808601516000805485518281528089018088528b905292821a8387018190529383018790526080830185905294519096939492936001600160a01b039093169260019260a080820193601f1981019281900390910190855afa158015610226573d6000803e3d6000fd5b505050602060405103516001600160a01b031614156102525750630b135d3f60e11b925061025f915050565b506000925061025f915050565b92915050565b6000546001600160a01b03168156fea2646970667358221220e84015fbefc69554f314e1b6f8f344797d9a1d7c2f6b3129dbaa94dca6e9cd5f64736f6c63430007060033","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 0x6E JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x150 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x174 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x84 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 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB8 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 0xDA 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 0x1AE 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 0x158 PUSH2 0x265 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 PUSH1 0x1 SWAP3 PUSH1 0xA0 DUP1 DUP3 ADD SWAP4 PUSH1 0x1F NOT DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x226 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x252 JUMPI POP PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP3 POP PUSH2 0x25F SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x25F SWAP2 POP POP JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE8 BLOCKHASH ISZERO 0xFB 0xEF 0xC6 SWAP6 SLOAD RETURN EQ 0xE1 0xB6 0xF8 RETURN DIFFICULTY PUSH26 0x7D9A1D7C2F6B3129DBAA94DCA6E9CD5F64736F6C634300070600 CALLER ","sourceMap":"116:674:118:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;194:76;;;;;;;;;;;;;;;;-1:-1:-1;194:76:118;-1:-1:-1;;;;;194:76:118;;:::i;:::-;;278:509;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;278:509:118;;-1:-1:-1;278:509:118;;-1:-1:-1;;;;;278:509:118:i;:::-;;;;;;;;;;;;;;;;;;;165:20;;;:::i;:::-;;;;-1:-1:-1;;;;;165:20:118;;;;;;;;;;;;;;194:76;248:5;:14;;;;-1:-1:-1;;;;;248:14:118;;;;;;;;;;194:76::o;278:509::-;512:4;497:20;;;491:27;558:4;543:20;;;537:27;612:4;597:20;;;591:27;374:17;672:5;;644:24;;;;;;;;;;;;;;583:36;;;644:24;;;;;;;;;;;;;;;;;;;;374:17;;537:27;;583:36;;-1:-1:-1;;;;;672:5:118;;;;;;644:24;;;;;-1:-1:-1;;644:24:118;;;;;;;;;;672:5;644:24;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;644:33:118;;640:140;;;-1:-1:-1;;;;701:18:118;-1:-1:-1;694:25:118;;-1:-1:-1;;694:25:118;640:140;-1:-1:-1;766:1:118;;-1:-1:-1;752:16:118;;-1:-1:-1;;752:16:118;278:509;;;;;:::o;165:20::-;;;-1:-1:-1;;;;;165:20:118;;:::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/elixir-periphery/test/TestPositionNFTOwner.sol\":\"TestPositionNFTOwner\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-periphery/interfaces/external/IERC1271.sol\":{\"keccak256\":\"0xd9b5ac195482b3cd25c2b1d2bf7f8be6f69b8352df17e23111556fc436590bb8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://dfd4975c3a69938f6fa6189fe5e4428260bd8aaa3e1f202c934edafe09d3d5d2\",\"dweb:/ipfs/QmaW1ZYYhnozmccckXLcg99ZoJCwoURdhaEPd26LmYvSZV\"]},\"contracts/elixir-periphery/test/TestPositionNFTOwner.sol\":{\"keccak256\":\"0x00a6ff83b523e1557fbc8dc94235b2316288fffa4de52fabefa1ce48afba3de0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92019b0085a80d40bc0637860fb44a878d4a1cbc08a5881766fdda1e45e1daa6\",\"dweb:/ipfs/QmNytS2HT2E6ZQVfsVEQ9xssrRmbbvzrfirSKo2WWR7gtn\"]}},\"version\":1}"}},"contracts/elixir-periphery/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":"608060405234801561001057600080fd5b506105ce806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063351fb4781461003b578063f0c2e7bc14610064575b600080fd5b61004e6100493660046103ab565b610084565b60405161005b91906104ea565b60405180910390f35b6100776100723660046103ab565b610314565b60405161005b9190610577565b60606000836001600160a01b0316635339c296846040518263ffffffff1660e01b81526004016100b4919061055b565b60206040518083038186803b1580156100cc57600080fd5b505afa1580156100e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010491906104d2565b90506000805b61010081101561012e576001811b831615610126576001909101905b60010161010a565b506000856001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561016a57600080fd5b505afa15801561017e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a291906103e9565b90508167ffffffffffffffff811180156101bb57600080fd5b506040519080825280602002602001820160405280156101f557816020015b6101e261032f565b8152602001906001900390816101da5790505b50935060005b61010081101561030a576001811b8416156103025760405163f30dba9360e01b8152600187900b60020b60081b820183029060009081906001600160a01b038b169063f30dba9390610251908690600401610569565b6101206040518083038186803b15801561026a57600080fd5b505afa15801561027e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a29190610411565b505050505050509150915060405180606001604052808460020b815260200182600f0b8152602001836fffffffffffffffffffffffffffffffff16815250888760019003975087815181106102f357fe5b60200260200101819052505050505b6001016101fb565b5050505092915050565b6000805a90506103248484610084565b505a90039392505050565b604080516060810182526000808252602082018190529181019190915290565b8051801515811461035f57600080fd5b919050565b805161035f81610580565b805177ffffffffffffffffffffffffffffffffffffffffffffffff8116811461035f57600080fd5b805163ffffffff8116811461035f57600080fd5b600080604083850312156103bd578182fd5b82356103c881610580565b91506020830135600181900b81146103de578182fd5b809150509250929050565b6000602082840312156103fa578081fd5b81518060020b811461040a578182fd5b9392505050565b60008060008060008060008060006101208a8c03121561042f578485fd5b89516fffffffffffffffffffffffffffffffff8116811461044e578586fd5b8099505060208a015180600f0b8114610465578586fd5b8098505060408a0151965060608a0151955060808a01518060060b811461048a578586fd5b945061049860a08b01610364565b93506104a660c08b01610397565b92506104b460e08b0161034f565b91506104c36101008b0161036f565b90509295985092959850929598565b6000602082840312156104e3578081fd5b5051919050565b602080825282518282018190526000919060409081850190868401855b8281101561054e578151805160020b855286810151600f0b878601528501516fffffffffffffffffffffffffffffffff168585015260609093019290850190600101610507565b5091979650505050505050565b60019190910b815260200190565b60029190910b815260200190565b90815260200190565b6001600160a01b038116811461059557600080fd5b5056fea26469706673582212201e2e52540ca65f57fefa7e1a65006bfd37eaf65f396a1b928df8e994a233417764736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5CE 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 0x3AB JUMP JUMPDEST PUSH2 0x84 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x4EA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x77 PUSH2 0x72 CALLDATASIZE PUSH1 0x4 PUSH2 0x3AB JUMP JUMPDEST PUSH2 0x314 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x577 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5339C296 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB4 SWAP2 SWAP1 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE0 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 0x104 SWAP2 SWAP1 PUSH2 0x4D2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x12E JUMPI PUSH1 0x1 DUP2 SHL DUP4 AND ISZERO PUSH2 0x126 JUMPI PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x1 ADD PUSH2 0x10A JUMP JUMPDEST POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17E 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 0x1A2 SWAP2 SWAP1 PUSH2 0x3E9 JUMP JUMPDEST SWAP1 POP DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1BB 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 0x1F5 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1E2 PUSH2 0x32F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1DA JUMPI SWAP1 POP JUMPDEST POP SWAP4 POP PUSH1 0x0 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x30A JUMPI PUSH1 0x1 DUP2 SHL DUP5 AND ISZERO PUSH2 0x302 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF30DBA93 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 DUP8 SWAP1 SIGNEXTEND PUSH1 0x2 SIGNEXTEND PUSH1 0x8 SHL DUP3 ADD DUP4 MUL SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP1 PUSH4 0xF30DBA93 SWAP1 PUSH2 0x251 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x569 JUMP JUMPDEST PUSH2 0x120 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27E 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 0x2A2 SWAP2 SWAP1 PUSH2 0x411 JUMP JUMPDEST POP 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 0x2F3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1FB JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x324 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 0x35F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x35F DUP2 PUSH2 0x580 JUMP JUMPDEST DUP1 MLOAD PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x35F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x35F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3BD JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3C8 DUP2 PUSH2 0x580 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x3DE 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 0x3FA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x40A JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x42F JUMPI DUP5 DUP6 REVERT JUMPDEST DUP10 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x44E JUMPI DUP6 DUP7 REVERT JUMPDEST DUP1 SWAP10 POP POP PUSH1 0x20 DUP11 ADD MLOAD DUP1 PUSH1 0xF SIGNEXTEND DUP2 EQ PUSH2 0x465 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP1 SWAP9 POP POP PUSH1 0x40 DUP11 ADD MLOAD SWAP7 POP PUSH1 0x60 DUP11 ADD MLOAD SWAP6 POP PUSH1 0x80 DUP11 ADD MLOAD DUP1 PUSH1 0x6 SIGNEXTEND DUP2 EQ PUSH2 0x48A JUMPI DUP6 DUP7 REVERT JUMPDEST SWAP5 POP PUSH2 0x498 PUSH1 0xA0 DUP12 ADD PUSH2 0x364 JUMP JUMPDEST SWAP4 POP PUSH2 0x4A6 PUSH1 0xC0 DUP12 ADD PUSH2 0x397 JUMP JUMPDEST SWAP3 POP PUSH2 0x4B4 PUSH1 0xE0 DUP12 ADD PUSH2 0x34F JUMP JUMPDEST SWAP2 POP PUSH2 0x4C3 PUSH2 0x100 DUP12 ADD PUSH2 0x36F JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4E3 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 0x54E 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 0x507 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1E 0x2E MSTORE SLOAD 0xC 0xA6 0x5F JUMPI INVALID STATICCALL PUSH31 0x1A65006BFD37EAF65F396A1B928DF8E994A233417764736F6C634300070600 CALLER ","sourceMap":"216:327:119:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4472:178","statements":[{"nodeType":"YulBlock","src":"6:3:178","statements":[]},{"body":{"nodeType":"YulBlock","src":"73:107:178","statements":[{"nodeType":"YulAssignment","src":"83:22:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"98:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"92:5:178"},"nodeType":"YulFunctionCall","src":"92:13:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"83:5:178"}]},{"body":{"nodeType":"YulBlock","src":"158:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"167:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"170:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"160:6:178"},"nodeType":"YulFunctionCall","src":"160:12:178"},"nodeType":"YulExpressionStatement","src":"160:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"127:5:178"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"148:5:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"141:6:178"},"nodeType":"YulFunctionCall","src":"141:13:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"134:6:178"},"nodeType":"YulFunctionCall","src":"134:21:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"124:2:178"},"nodeType":"YulFunctionCall","src":"124:32:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"117:6:178"},"nodeType":"YulFunctionCall","src":"117:40:178"},"nodeType":"YulIf","src":"114:2:178"}]},"name":"abi_decode_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"52:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"63:5:178","type":""}],"src":"14:166:178"},{"body":{"nodeType":"YulBlock","src":"247:80:178","statements":[{"nodeType":"YulAssignment","src":"257:22:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"272:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"266:5:178"},"nodeType":"YulFunctionCall","src":"266:13:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"257:5:178"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"315:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"288:26:178"},"nodeType":"YulFunctionCall","src":"288:33:178"},"nodeType":"YulExpressionStatement","src":"288:33:178"}]},"name":"abi_decode_t_uint160_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"226:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"237:5:178","type":""}],"src":"185:142:178"},{"body":{"nodeType":"YulBlock","src":"394:148:178","statements":[{"nodeType":"YulAssignment","src":"404:22:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"419:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"413:5:178"},"nodeType":"YulFunctionCall","src":"413:13:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"404:5:178"}]},{"body":{"nodeType":"YulBlock","src":"520:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"529:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"532:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"522:6:178"},"nodeType":"YulFunctionCall","src":"522:12:178"},"nodeType":"YulExpressionStatement","src":"522:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"448:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"459:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"466:50:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"455:3:178"},"nodeType":"YulFunctionCall","src":"455:62:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"445:2:178"},"nodeType":"YulFunctionCall","src":"445:73:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"438:6:178"},"nodeType":"YulFunctionCall","src":"438:81:178"},"nodeType":"YulIf","src":"435:2:178"}]},"name":"abi_decode_t_uint192_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"373:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"384:5:178","type":""}],"src":"332:210:178"},{"body":{"nodeType":"YulBlock","src":"608:108:178","statements":[{"nodeType":"YulAssignment","src":"618:22:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"633:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"627:5:178"},"nodeType":"YulFunctionCall","src":"627:13:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"618:5:178"}]},{"body":{"nodeType":"YulBlock","src":"694:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"703:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"706:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"696:6:178"},"nodeType":"YulFunctionCall","src":"696:12:178"},"nodeType":"YulExpressionStatement","src":"696:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"662:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"673:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"680:10:178","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"669:3:178"},"nodeType":"YulFunctionCall","src":"669:22:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"659:2:178"},"nodeType":"YulFunctionCall","src":"659:33:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"652:6:178"},"nodeType":"YulFunctionCall","src":"652:41:178"},"nodeType":"YulIf","src":"649:2:178"}]},"name":"abi_decode_t_uint32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"587:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"598:5:178","type":""}],"src":"547:169:178"},{"body":{"nodeType":"YulBlock","src":"806:353:178","statements":[{"body":{"nodeType":"YulBlock","src":"852:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"861:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"869:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"854:6:178"},"nodeType":"YulFunctionCall","src":"854:22:178"},"nodeType":"YulExpressionStatement","src":"854:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"827:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"836:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"823:3:178"},"nodeType":"YulFunctionCall","src":"823:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"848:2:178","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"819:3:178"},"nodeType":"YulFunctionCall","src":"819:32:178"},"nodeType":"YulIf","src":"816:2:178"},{"nodeType":"YulVariableDeclaration","src":"887:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"913:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"900:12:178"},"nodeType":"YulFunctionCall","src":"900:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"891:5:178","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"959:5:178"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"932:26:178"},"nodeType":"YulFunctionCall","src":"932:33:178"},"nodeType":"YulExpressionStatement","src":"932:33:178"},{"nodeType":"YulAssignment","src":"974:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"984:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"974:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"998:47:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1030:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1041:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1026:3:178"},"nodeType":"YulFunctionCall","src":"1026:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1013:12:178"},"nodeType":"YulFunctionCall","src":"1013:32:178"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1002:7:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"1101:26:178","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1110:6:178"},{"name":"value1","nodeType":"YulIdentifier","src":"1118:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1103:6:178"},"nodeType":"YulFunctionCall","src":"1103:22:178"},"nodeType":"YulExpressionStatement","src":"1103:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1067:7:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1087:1:178","type":"","value":"1"},{"name":"value_1","nodeType":"YulIdentifier","src":"1090:7:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"1076:10:178"},"nodeType":"YulFunctionCall","src":"1076:22:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1064:2:178"},"nodeType":"YulFunctionCall","src":"1064:35:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1057:6:178"},"nodeType":"YulFunctionCall","src":"1057:43:178"},"nodeType":"YulIf","src":"1054:2:178"},{"nodeType":"YulAssignment","src":"1136:17:178","value":{"name":"value_1","nodeType":"YulIdentifier","src":"1146:7:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1136:6:178"}]}]},"name":"abi_decode_tuple_t_addresst_int16","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"764:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"775:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"787:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"795:6:178","type":""}],"src":"721:438:178"},{"body":{"nodeType":"YulBlock","src":"1243:218:178","statements":[{"body":{"nodeType":"YulBlock","src":"1289:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1298:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1306:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1291:6:178"},"nodeType":"YulFunctionCall","src":"1291:22:178"},"nodeType":"YulExpressionStatement","src":"1291:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1264:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"1273:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1260:3:178"},"nodeType":"YulFunctionCall","src":"1260:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"1285:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1256:3:178"},"nodeType":"YulFunctionCall","src":"1256:32:178"},"nodeType":"YulIf","src":"1253:2:178"},{"nodeType":"YulVariableDeclaration","src":"1324:29:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1343:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1337:5:178"},"nodeType":"YulFunctionCall","src":"1337:16:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1328:5:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"1405:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1414:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1422:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1407:6:178"},"nodeType":"YulFunctionCall","src":"1407:22:178"},"nodeType":"YulExpressionStatement","src":"1407:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1375:5:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1393:1:178","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"1396:5:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"1382:10:178"},"nodeType":"YulFunctionCall","src":"1382:20:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1372:2:178"},"nodeType":"YulFunctionCall","src":"1372:31:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1365:6:178"},"nodeType":"YulFunctionCall","src":"1365:39:178"},"nodeType":"YulIf","src":"1362:2:178"},{"nodeType":"YulAssignment","src":"1440:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"1450:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1440:6:178"}]}]},"name":"abi_decode_tuple_t_int24_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1209:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1220:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1232:6:178","type":""}],"src":"1164:297:178"},{"body":{"nodeType":"YulBlock","src":"1676:929:178","statements":[{"body":{"nodeType":"YulBlock","src":"1723:26:178","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1732:6:178"},{"name":"value4","nodeType":"YulIdentifier","src":"1740:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1725:6:178"},"nodeType":"YulFunctionCall","src":"1725:22:178"},"nodeType":"YulExpressionStatement","src":"1725:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1697:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"1706:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1693:3:178"},"nodeType":"YulFunctionCall","src":"1693:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"1718:3:178","type":"","value":"288"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1689:3:178"},"nodeType":"YulFunctionCall","src":"1689:33:178"},"nodeType":"YulIf","src":"1686:2:178"},{"nodeType":"YulVariableDeclaration","src":"1758:29:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1777:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1771:5:178"},"nodeType":"YulFunctionCall","src":"1771:16:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1762:5:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"1865:26:178","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1874:6:178"},{"name":"value4","nodeType":"YulIdentifier","src":"1882:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1867:6:178"},"nodeType":"YulFunctionCall","src":"1867:22:178"},"nodeType":"YulExpressionStatement","src":"1867:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1809:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1820:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"1827:34:178","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1816:3:178"},"nodeType":"YulFunctionCall","src":"1816:46:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1806:2:178"},"nodeType":"YulFunctionCall","src":"1806:57:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1799:6:178"},"nodeType":"YulFunctionCall","src":"1799:65:178"},"nodeType":"YulIf","src":"1796:2:178"},{"nodeType":"YulAssignment","src":"1900:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"1910:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1900:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"1924:40:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1949:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1960:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1945:3:178"},"nodeType":"YulFunctionCall","src":"1945:18:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1939:5:178"},"nodeType":"YulFunctionCall","src":"1939:25:178"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1928:7:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2021:26:178","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"2030:6:178"},{"name":"value4","nodeType":"YulIdentifier","src":"2038:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2023:6:178"},"nodeType":"YulFunctionCall","src":"2023:22:178"},"nodeType":"YulExpressionStatement","src":"2023:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1986:7:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2006:2:178","type":"","value":"15"},{"name":"value_1","nodeType":"YulIdentifier","src":"2010:7:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"1995:10:178"},"nodeType":"YulFunctionCall","src":"1995:23:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1983:2:178"},"nodeType":"YulFunctionCall","src":"1983:36:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1976:6:178"},"nodeType":"YulFunctionCall","src":"1976:44:178"},"nodeType":"YulIf","src":"1973:2:178"},{"nodeType":"YulAssignment","src":"2056:17:178","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2066:7:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2056:6:178"}]},{"nodeType":"YulAssignment","src":"2082:35:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2102:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2113:2:178","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2098:3:178"},"nodeType":"YulFunctionCall","src":"2098:18:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2092:5:178"},"nodeType":"YulFunctionCall","src":"2092:25:178"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2082:6:178"}]},{"nodeType":"YulAssignment","src":"2126:35:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2146:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2157:2:178","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2142:3:178"},"nodeType":"YulFunctionCall","src":"2142:18:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2136:5:178"},"nodeType":"YulFunctionCall","src":"2136:25:178"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"2126:6:178"}]},{"nodeType":"YulVariableDeclaration","src":"2170:41:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2195:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2206:3:178","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2191:3:178"},"nodeType":"YulFunctionCall","src":"2191:19:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2185:5:178"},"nodeType":"YulFunctionCall","src":"2185:26:178"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"2174:7:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2267:26:178","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"2276:6:178"},{"name":"value4","nodeType":"YulIdentifier","src":"2284:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2269:6:178"},"nodeType":"YulFunctionCall","src":"2269:22:178"},"nodeType":"YulExpressionStatement","src":"2269:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"2233:7:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2253:1:178","type":"","value":"6"},{"name":"value_2","nodeType":"YulIdentifier","src":"2256:7:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"2242:10:178"},"nodeType":"YulFunctionCall","src":"2242:22:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2230:2:178"},"nodeType":"YulFunctionCall","src":"2230:35:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2223:6:178"},"nodeType":"YulFunctionCall","src":"2223:43:178"},"nodeType":"YulIf","src":"2220:2:178"},{"nodeType":"YulAssignment","src":"2302:17:178","value":{"name":"value_2","nodeType":"YulIdentifier","src":"2312:7:178"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"2302:6:178"}]},{"nodeType":"YulAssignment","src":"2328:62:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2374:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2385:3:178","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2370:3:178"},"nodeType":"YulFunctionCall","src":"2370:19:178"}],"functionName":{"name":"abi_decode_t_uint160_fromMemory","nodeType":"YulIdentifier","src":"2338:31:178"},"nodeType":"YulFunctionCall","src":"2338:52:178"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"2328:6:178"}]},{"nodeType":"YulAssignment","src":"2399:61:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2444:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2455:3:178","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2440:3:178"},"nodeType":"YulFunctionCall","src":"2440:19:178"}],"functionName":{"name":"abi_decode_t_uint32_fromMemory","nodeType":"YulIdentifier","src":"2409:30:178"},"nodeType":"YulFunctionCall","src":"2409:51:178"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"2399:6:178"}]},{"nodeType":"YulAssignment","src":"2469:59:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2512:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2523:3:178","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2508:3:178"},"nodeType":"YulFunctionCall","src":"2508:19:178"}],"functionName":{"name":"abi_decode_t_bool_fromMemory","nodeType":"YulIdentifier","src":"2479:28:178"},"nodeType":"YulFunctionCall","src":"2479:49:178"},"variableNames":[{"name":"value7","nodeType":"YulIdentifier","src":"2469:6:178"}]},{"nodeType":"YulAssignment","src":"2537:62:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2583:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"2594:3:178","type":"","value":"256"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2579:3:178"},"nodeType":"YulFunctionCall","src":"2579:19:178"}],"functionName":{"name":"abi_decode_t_uint192_fromMemory","nodeType":"YulIdentifier","src":"2547:31:178"},"nodeType":"YulFunctionCall","src":"2547:52:178"},"variableNames":[{"name":"value8","nodeType":"YulIdentifier","src":"2537:6:178"}]}]},"name":"abi_decode_tuple_t_uint128t_int128t_uint256t_uint256t_int56t_uint160t_uint32t_boolt_uint192_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1578:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1589:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1601:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1609:6:178","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1617:6:178","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1625:6:178","type":""},{"name":"value4","nodeType":"YulTypedName","src":"1633:6:178","type":""},{"name":"value5","nodeType":"YulTypedName","src":"1641:6:178","type":""},{"name":"value6","nodeType":"YulTypedName","src":"1649:6:178","type":""},{"name":"value7","nodeType":"YulTypedName","src":"1657:6:178","type":""},{"name":"value8","nodeType":"YulTypedName","src":"1665:6:178","type":""}],"src":"1466:1139:178"},{"body":{"nodeType":"YulBlock","src":"2691:113:178","statements":[{"body":{"nodeType":"YulBlock","src":"2737:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2746:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2754:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2739:6:178"},"nodeType":"YulFunctionCall","src":"2739:22:178"},"nodeType":"YulExpressionStatement","src":"2739:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2712:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"2721:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2708:3:178"},"nodeType":"YulFunctionCall","src":"2708:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"2733:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2704:3:178"},"nodeType":"YulFunctionCall","src":"2704:32:178"},"nodeType":"YulIf","src":"2701:2:178"},{"nodeType":"YulAssignment","src":"2772:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2788:9:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2782:5:178"},"nodeType":"YulFunctionCall","src":"2782:16:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2772:6:178"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2657:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2668:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2680:6:178","type":""}],"src":"2610:194:178"},{"body":{"nodeType":"YulBlock","src":"3024:717:178","statements":[{"nodeType":"YulVariableDeclaration","src":"3034:12:178","value":{"kind":"number","nodeType":"YulLiteral","src":"3044:2:178","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3038:2:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3055:32:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3073:9:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3084:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3069:3:178"},"nodeType":"YulFunctionCall","src":"3069:18:178"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3059:6:178","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3103:9:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3114:2:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3096:6:178"},"nodeType":"YulFunctionCall","src":"3096:21:178"},"nodeType":"YulExpressionStatement","src":"3096:21:178"},{"nodeType":"YulVariableDeclaration","src":"3126:17:178","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3137:6:178"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3130:3:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3152:27:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3172:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3166:5:178"},"nodeType":"YulFunctionCall","src":"3166:13:178"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3156:6:178","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3195:6:178"},{"name":"length","nodeType":"YulIdentifier","src":"3203:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3188:6:178"},"nodeType":"YulFunctionCall","src":"3188:22:178"},"nodeType":"YulExpressionStatement","src":"3188:22:178"},{"nodeType":"YulVariableDeclaration","src":"3219:12:178","value":{"kind":"number","nodeType":"YulLiteral","src":"3229:2:178","type":"","value":"64"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3223:2:178","type":""}]},{"nodeType":"YulAssignment","src":"3240:25:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3251:9:178"},{"name":"_2","nodeType":"YulIdentifier","src":"3262:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3247:3:178"},"nodeType":"YulFunctionCall","src":"3247:18:178"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3240:3:178"}]},{"nodeType":"YulVariableDeclaration","src":"3274:29:178","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3292:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3300:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3288:3:178"},"nodeType":"YulFunctionCall","src":"3288:15:178"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3278:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3312:13:178","value":{"name":"tail","nodeType":"YulIdentifier","src":"3321:4:178"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3316:1:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3383:332:178","statements":[{"nodeType":"YulVariableDeclaration","src":"3397:23:178","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3413:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3407:5:178"},"nodeType":"YulFunctionCall","src":"3407:13:178"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"3401:2:178","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3440:3:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3456:1:178","type":"","value":"2"},{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3465:2:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3459:5:178"},"nodeType":"YulFunctionCall","src":"3459:9:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"3445:10:178"},"nodeType":"YulFunctionCall","src":"3445:24:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3433:6:178"},"nodeType":"YulFunctionCall","src":"3433:37:178"},"nodeType":"YulExpressionStatement","src":"3433:37:178"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3494:3:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3499:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3490:3:178"},"nodeType":"YulFunctionCall","src":"3490:12:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3515:2:178","type":"","value":"15"},{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3529:2:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3533:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3525:3:178"},"nodeType":"YulFunctionCall","src":"3525:11:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3519:5:178"},"nodeType":"YulFunctionCall","src":"3519:18:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"3504:10:178"},"nodeType":"YulFunctionCall","src":"3504:34:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3483:6:178"},"nodeType":"YulFunctionCall","src":"3483:56:178"},"nodeType":"YulExpressionStatement","src":"3483:56:178"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3563:3:178"},{"name":"_2","nodeType":"YulIdentifier","src":"3568:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3559:3:178"},"nodeType":"YulFunctionCall","src":"3559:12:178"},{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3587:2:178"},{"name":"_2","nodeType":"YulIdentifier","src":"3591:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3583:3:178"},"nodeType":"YulFunctionCall","src":"3583:11:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3577:5:178"},"nodeType":"YulFunctionCall","src":"3577:18:178"},{"kind":"number","nodeType":"YulLiteral","src":"3597:34:178","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3573:3:178"},"nodeType":"YulFunctionCall","src":"3573:59:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3552:6:178"},"nodeType":"YulFunctionCall","src":"3552:81:178"},"nodeType":"YulExpressionStatement","src":"3552:81:178"},{"nodeType":"YulAssignment","src":"3646:21:178","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3657:3:178"},{"kind":"number","nodeType":"YulLiteral","src":"3662:4:178","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3653:3:178"},"nodeType":"YulFunctionCall","src":"3653:14:178"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3646:3:178"}]},{"nodeType":"YulAssignment","src":"3680:25:178","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3694:6:178"},{"name":"_1","nodeType":"YulIdentifier","src":"3702:2:178"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3690:3:178"},"nodeType":"YulFunctionCall","src":"3690:15:178"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3680:6:178"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3345:1:178"},{"name":"length","nodeType":"YulIdentifier","src":"3348:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3342:2:178"},"nodeType":"YulFunctionCall","src":"3342:13:178"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3356:18:178","statements":[{"nodeType":"YulAssignment","src":"3358:14:178","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3367:1:178"},{"kind":"number","nodeType":"YulLiteral","src":"3370:1:178","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3363:3:178"},"nodeType":"YulFunctionCall","src":"3363:9:178"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3358:1:178"}]}]},"pre":{"nodeType":"YulBlock","src":"3338:3:178","statements":[]},"src":"3334:381:178"},{"nodeType":"YulAssignment","src":"3724:11:178","value":{"name":"pos","nodeType":"YulIdentifier","src":"3732:3:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3724:4:178"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_PopulatedTick_$16378_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_PopulatedTick_$16378_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2993:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3004:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3015:4:178","type":""}],"src":"2809:932:178"},{"body":{"nodeType":"YulBlock","src":"3843:91:178","statements":[{"nodeType":"YulAssignment","src":"3853:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3865:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3876:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3861:3:178"},"nodeType":"YulFunctionCall","src":"3861:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3853:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3895:9:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3917:1:178","type":"","value":"1"},{"name":"value0","nodeType":"YulIdentifier","src":"3920:6:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"3906:10:178"},"nodeType":"YulFunctionCall","src":"3906:21:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3888:6:178"},"nodeType":"YulFunctionCall","src":"3888:40:178"},"nodeType":"YulExpressionStatement","src":"3888:40:178"}]},"name":"abi_encode_tuple_t_int16__to_t_int16__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3812:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3823:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3834:4:178","type":""}],"src":"3746:188:178"},{"body":{"nodeType":"YulBlock","src":"4036:91:178","statements":[{"nodeType":"YulAssignment","src":"4046:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4058:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4069:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4054:3:178"},"nodeType":"YulFunctionCall","src":"4054:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4046:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4088:9:178"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4110:1:178","type":"","value":"2"},{"name":"value0","nodeType":"YulIdentifier","src":"4113:6:178"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"4099:10:178"},"nodeType":"YulFunctionCall","src":"4099:21:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4081:6:178"},"nodeType":"YulFunctionCall","src":"4081:40:178"},"nodeType":"YulExpressionStatement","src":"4081:40:178"}]},"name":"abi_encode_tuple_t_int24__to_t_int24__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4005:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4016:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4027:4:178","type":""}],"src":"3939:188:178"},{"body":{"nodeType":"YulBlock","src":"4233:76:178","statements":[{"nodeType":"YulAssignment","src":"4243:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4255:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4266:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4251:3:178"},"nodeType":"YulFunctionCall","src":"4251:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4243:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4285:9:178"},{"name":"value0","nodeType":"YulIdentifier","src":"4296:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4278:6:178"},"nodeType":"YulFunctionCall","src":"4278:25:178"},"nodeType":"YulExpressionStatement","src":"4278:25:178"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4202:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4213:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4224:4:178","type":""}],"src":"4132:177:178"},{"body":{"nodeType":"YulBlock","src":"4361:109:178","statements":[{"body":{"nodeType":"YulBlock","src":"4448:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4457:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4460:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4450:6:178"},"nodeType":"YulFunctionCall","src":"4450:12:178"},"nodeType":"YulExpressionStatement","src":"4450:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4384:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4395:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"4402:42:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4391:3:178"},"nodeType":"YulFunctionCall","src":"4391:54:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4381:2:178"},"nodeType":"YulFunctionCall","src":"4381:65:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4374:6:178"},"nodeType":"YulFunctionCall","src":"4374:73:178"},"nodeType":"YulIf","src":"4371:2:178"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4350:5:178","type":""}],"src":"4314:156:178"}]},"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_uint192_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\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_boolt_uint192_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8\n    {\n        if slt(sub(dataEnd, headStart), 288) { 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        value8 := abi_decode_t_uint192_fromMemory(add(headStart, 256))\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_$16378_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_PopulatedTick_$16378_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":178,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c8063351fb4781461003b578063f0c2e7bc14610064575b600080fd5b61004e6100493660046103ab565b610084565b60405161005b91906104ea565b60405180910390f35b6100776100723660046103ab565b610314565b60405161005b9190610577565b60606000836001600160a01b0316635339c296846040518263ffffffff1660e01b81526004016100b4919061055b565b60206040518083038186803b1580156100cc57600080fd5b505afa1580156100e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010491906104d2565b90506000805b61010081101561012e576001811b831615610126576001909101905b60010161010a565b506000856001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561016a57600080fd5b505afa15801561017e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a291906103e9565b90508167ffffffffffffffff811180156101bb57600080fd5b506040519080825280602002602001820160405280156101f557816020015b6101e261032f565b8152602001906001900390816101da5790505b50935060005b61010081101561030a576001811b8416156103025760405163f30dba9360e01b8152600187900b60020b60081b820183029060009081906001600160a01b038b169063f30dba9390610251908690600401610569565b6101206040518083038186803b15801561026a57600080fd5b505afa15801561027e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a29190610411565b505050505050509150915060405180606001604052808460020b815260200182600f0b8152602001836fffffffffffffffffffffffffffffffff16815250888760019003975087815181106102f357fe5b60200260200101819052505050505b6001016101fb565b5050505092915050565b6000805a90506103248484610084565b505a90039392505050565b604080516060810182526000808252602082018190529181019190915290565b8051801515811461035f57600080fd5b919050565b805161035f81610580565b805177ffffffffffffffffffffffffffffffffffffffffffffffff8116811461035f57600080fd5b805163ffffffff8116811461035f57600080fd5b600080604083850312156103bd578182fd5b82356103c881610580565b91506020830135600181900b81146103de578182fd5b809150509250929050565b6000602082840312156103fa578081fd5b81518060020b811461040a578182fd5b9392505050565b60008060008060008060008060006101208a8c03121561042f578485fd5b89516fffffffffffffffffffffffffffffffff8116811461044e578586fd5b8099505060208a015180600f0b8114610465578586fd5b8098505060408a0151965060608a0151955060808a01518060060b811461048a578586fd5b945061049860a08b01610364565b93506104a660c08b01610397565b92506104b460e08b0161034f565b91506104c36101008b0161036f565b90509295985092959850929598565b6000602082840312156104e3578081fd5b5051919050565b602080825282518282018190526000919060409081850190868401855b8281101561054e578151805160020b855286810151600f0b878601528501516fffffffffffffffffffffffffffffffff168585015260609093019290850190600101610507565b5091979650505050505050565b60019190910b815260200190565b60029190910b815260200190565b90815260200190565b6001600160a01b038116811461059557600080fd5b5056fea26469706673582212201e2e52540ca65f57fefa7e1a65006bfd37eaf65f396a1b928df8e994a233417764736f6c63430007060033","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 0x3AB JUMP JUMPDEST PUSH2 0x84 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x4EA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x77 PUSH2 0x72 CALLDATASIZE PUSH1 0x4 PUSH2 0x3AB JUMP JUMPDEST PUSH2 0x314 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x577 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5339C296 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB4 SWAP2 SWAP1 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE0 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 0x104 SWAP2 SWAP1 PUSH2 0x4D2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x12E JUMPI PUSH1 0x1 DUP2 SHL DUP4 AND ISZERO PUSH2 0x126 JUMPI PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x1 ADD PUSH2 0x10A JUMP JUMPDEST POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17E 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 0x1A2 SWAP2 SWAP1 PUSH2 0x3E9 JUMP JUMPDEST SWAP1 POP DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1BB 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 0x1F5 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1E2 PUSH2 0x32F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1DA JUMPI SWAP1 POP JUMPDEST POP SWAP4 POP PUSH1 0x0 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x30A JUMPI PUSH1 0x1 DUP2 SHL DUP5 AND ISZERO PUSH2 0x302 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF30DBA93 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 DUP8 SWAP1 SIGNEXTEND PUSH1 0x2 SIGNEXTEND PUSH1 0x8 SHL DUP3 ADD DUP4 MUL SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP1 PUSH4 0xF30DBA93 SWAP1 PUSH2 0x251 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x569 JUMP JUMPDEST PUSH2 0x120 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27E 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 0x2A2 SWAP2 SWAP1 PUSH2 0x411 JUMP JUMPDEST POP 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 0x2F3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1FB JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x324 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 0x35F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x35F DUP2 PUSH2 0x580 JUMP JUMPDEST DUP1 MLOAD PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x35F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x35F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3BD JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3C8 DUP2 PUSH2 0x580 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x3DE 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 0x3FA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x40A JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x42F JUMPI DUP5 DUP6 REVERT JUMPDEST DUP10 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x44E JUMPI DUP6 DUP7 REVERT JUMPDEST DUP1 SWAP10 POP POP PUSH1 0x20 DUP11 ADD MLOAD DUP1 PUSH1 0xF SIGNEXTEND DUP2 EQ PUSH2 0x465 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP1 SWAP9 POP POP PUSH1 0x40 DUP11 ADD MLOAD SWAP7 POP PUSH1 0x60 DUP11 ADD MLOAD SWAP6 POP PUSH1 0x80 DUP11 ADD MLOAD DUP1 PUSH1 0x6 SIGNEXTEND DUP2 EQ PUSH2 0x48A JUMPI DUP6 DUP7 REVERT JUMPDEST SWAP5 POP PUSH2 0x498 PUSH1 0xA0 DUP12 ADD PUSH2 0x364 JUMP JUMPDEST SWAP4 POP PUSH2 0x4A6 PUSH1 0xC0 DUP12 ADD PUSH2 0x397 JUMP JUMPDEST SWAP3 POP PUSH2 0x4B4 PUSH1 0xE0 DUP12 ADD PUSH2 0x34F JUMP JUMPDEST SWAP2 POP PUSH2 0x4C3 PUSH2 0x100 DUP12 ADD PUSH2 0x36F JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4E3 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 0x54E 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 0x507 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1E 0x2E MSTORE SLOAD 0xC 0xA6 0x5F JUMPI INVALID STATICCALL PUSH31 0x1A65006BFD37EAF65F396A1B928DF8E994A233417764736F6C634300070600 CALLER ","sourceMap":"216:327:119:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;301:1245:88;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;257:283:119;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;301:1245:88:-;437:37;517:14;546:4;-1:-1:-1;;;;;534:28:88;;563:15;534:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;517:62;-1:-1:-1;644:30:88;;685:112;709:3;705:1;:7;685:112;;;748:1;:6;;738:17;;:21;734:51;;761:24;;;;;734:51;714:3;;685:112;;;;847:17;879:4;-1:-1:-1;;;;;867:29:88;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;847:51;;946:22;926:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;909:60;;985:9;980:559;1004:3;1000:1;:7;980:559;;;1043:1;:6;;1033:17;;:21;1029:499;;1234:38;;-1:-1:-1;;;1234:38:88;;1099:22;;;;:27;;1125:1;1099:27;1098:40;;1097:56;;;1075:19;;;;-1:-1:-1;;;;;1234:23:88;;;;;:38;;1097:56;;1234:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1172:100;;;;;;;;;;;1334:178;;;;;;;;1377:13;1334:178;;;;;;1427:12;1334:178;;;;;;1478:14;1334:178;;;;;1291:14;1306:24;;;;;;;1291:40;;;;;;;;;;;;;:221;;;;1029:499;;;;1009:3;;980:559;;;;301:1245;;;;;;;:::o;257:283:119:-;387:7;407:17;427:9;407:29;;447:46;471:4;477:15;447:23;:46::i;:::-;;523:9;511:21;;;257:283;-1:-1:-1;;;257:283:119:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:166:178:-;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:210::-;413:13;;466:50;455:62;;445:73;;435:2;;532:1;529;522:12;547:169;627:13;;680:10;669:22;;659:33;;649:2;;706:1;703;696:12;721:438;;;848:2;836:9;827:7;823:23;819:32;816:2;;;869:6;861;854:22;816:2;913:9;900:23;932:33;959:5;932:33;:::i;:::-;984:5;-1:-1:-1;1041:2:178;1026:18;;1013:32;1087:1;1076:22;;;1064:35;;1054:2;;1118:6;1110;1103:22;1054:2;1146:7;1136:17;;;806:353;;;;;:::o;1164:297::-;;1285:2;1273:9;1264:7;1260:23;1256:32;1253:2;;;1306:6;1298;1291:22;1253:2;1343:9;1337:16;1396:5;1393:1;1382:20;1375:5;1372:31;1362:2;;1422:6;1414;1407:22;1362:2;1450:5;1243:218;-1:-1:-1;;;1243:218:178:o;1466:1139::-;;;;;;;;;;1718:3;1706:9;1697:7;1693:23;1689:33;1686:2;;;1740:6;1732;1725:22;1686:2;1777:9;1771:16;1827:34;1820:5;1816:46;1809:5;1806:57;1796:2;;1882:6;1874;1867:22;1796:2;1910:5;1900:15;;;1960:2;1949:9;1945:18;1939:25;2010:7;2006:2;1995:23;1986:7;1983:36;1973:2;;2038:6;2030;2023:22;1973:2;2066:7;2056:17;;;2113:2;2102:9;2098:18;2092:25;2082:35;;2157:2;2146:9;2142:18;2136:25;2126:35;;2206:3;2195:9;2191:19;2185:26;2256:7;2253:1;2242:22;2233:7;2230:35;2220:2;;2284:6;2276;2269:22;2220:2;2312:7;-1:-1:-1;2338:52:178;2385:3;2370:19;;2338:52;:::i;:::-;2328:62;;2409:51;2455:3;2444:9;2440:19;2409:51;:::i;:::-;2399:61;;2479:49;2523:3;2512:9;2508:19;2479:49;:::i;:::-;2469:59;;2547:52;2594:3;2583:9;2579:19;2547:52;:::i;:::-;2537:62;;1676:929;;;;;;;;;;;:::o;2610:194::-;;2733:2;2721:9;2712:7;2708:23;2704:32;2701:2;;;2754:6;2746;2739:22;2701:2;-1:-1:-1;2782:16:178;;2691:113;-1:-1:-1;2691:113:178:o;2809:932::-;3044:2;3096:21;;;3166:13;;3069:18;;;3188:22;;;2809:932;;3044:2;3229;;3247:18;;;;3288:15;;;2809:932;3334:381;3348:6;3345:1;3342:13;3334:381;;;3407:13;;3459:9;;3456:1;3445:24;3433:37;;3525:11;;;3519:18;3515:2;3504:34;3490:12;;;3483:56;3583:11;;3577:18;3597:34;3573:59;3559:12;;;3552:81;3662:4;3653:14;;;;3690:15;;;;3370:1;3363:9;3334:381;;;-1:-1:-1;3732:3:178;;3024:717;-1:-1:-1;;;;;;;3024:717:178:o;3746:188::-;3917:1;3906:21;;;;3888:40;;3876:2;3861:18;;3843:91::o;3939:188::-;4110:1;4099:21;;;;4081:40;;4069:2;4054:18;;4036:91::o;4132:177::-;4278:25;;;4266:2;4251:18;;4233:76::o;4314:156::-;-1:-1:-1;;;;;4395:5:178;4391:54;4384:5;4381:65;4371:2;;4460:1;4457;4450:12;4371:2;4361: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/elixir-periphery/test/TickLensTest.sol\":\"TickLensTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/elixir-core/interfaces/IElixirPool.sol\":{\"keccak256\":\"0xe36d7b559e6317d142439acc171552bfdebc1ead941e49fe81ba59410a4c1a35\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cd0daae92bfff442c917b7d1e3b5405ef75c34975365638c26831238018eba85\",\"dweb:/ipfs/QmZWBVV4frdKeRKk2KsrCatneHSdhXnEzwYS7PayayXFmA\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolActions.sol\":{\"keccak256\":\"0x10cdd1c2ea0e36953929691f9502ad8018ec83ff326975ef5392f225ad9360ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de47dfe54ab8b58b217533af1825458f8ab4a3aa497f4487fef6e0ba82c68cc8\",\"dweb:/ipfs/QmT7cXhFc9PCW8dCRBzPBHAuXeT4HCXHe6P6otdcxPCEYg\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolDerivedState.sol\":{\"keccak256\":\"0x37ae94710b3e103038411472fb129c343a217885fe1b631077f952a813ceab7a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef449e51d6a745b5bbaf0cc497ac34f6cc925578141f26b137be8abdf90bae77\",\"dweb:/ipfs/QmfFFvhM72LbZp5jAR5tybuZDwJnEcnFwA2YSRLPua9AEd\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolEvents.sol\":{\"keccak256\":\"0x6c2795fdb523409bd1fe32bebd51d3913acacec0ea1689f9e5b4e4fb6afd9ebb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://229813ac0acff5c0df32383b4c3eac17845bfb80e3aefc87103ac69e1551e533\",\"dweb:/ipfs/QmQYdCGXPjszQ7CXvSSvTCYA2zFx9uD8mwwg8E2u67GW5Q\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolImmutables.sol\":{\"keccak256\":\"0xa4feb36be5c62925bcd56ccb912ea01b7ec5b86c34e88c2eb40011c3c38be50a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://aa6701e6e4913aa47222d07df002574199a227e5cce7d407192a4839c016d6ca\",\"dweb:/ipfs/QmV2QmE79FVN8XwxfmKAnA4Wrn5q7yyQrWNUVDSkjcAKBf\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolOwnerActions.sol\":{\"keccak256\":\"0xa2810caf58d768a5a066920df22cc3ba9ff36469ebfda6bf8ad4bcc562d4f270\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06ab0a270f0671415fc007bd696e8eb77bb85a87e138a707af941d280cd206fa\",\"dweb:/ipfs/QmbtYYDxhnmcjT96oQBeUJCx4Ja5v7icqHQPu4NbRTGQUv\"]},\"contracts/elixir-core/interfaces/pool/IElixirPoolState.sol\":{\"keccak256\":\"0x4fd92c50b6eb5836243b348ceebde8723d29157274535268e2e5b8c4f1eafd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://de301937300c3c39b7013e59dfbcd69e1243556960cddd8d3a11f0938acdc3ff\",\"dweb:/ipfs/QmbAwzRCeoi6fdLnq7Cg2miLHhLpRbdjjP6W9Fn6hizz1V\"]},\"contracts/elixir-periphery/interfaces/ITickLens.sol\":{\"keccak256\":\"0x67c0150c097762d0f4dcd07e63425d96016aabcef4765119247c738d0727657b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://04c33ba992e14fefb5642f1b679d249105cd1e8a1c2ee54506692dbbe334a35c\",\"dweb:/ipfs/QmdUugSiLbXrGSJesH4SuDBtknM2evR5NSqisPQEmjPCfi\"]},\"contracts/elixir-periphery/lens/TickLens.sol\":{\"keccak256\":\"0x45c39a12b33c33d6b4975cfcce8c6d99dcb8bb32ef27877d502dea518f4162ad\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://43828e8fd91b4c75bd3a74eb53c166b969cc44faa8f565fabbd2d602c044260a\",\"dweb:/ipfs/QmbKByzQXYMja9k1bCZSMLTMzULtsghw1vPCexfZDG4qsV\"]},\"contracts/elixir-periphery/test/TickLensTest.sol\":{\"keccak256\":\"0xd7a2ba715ead55da9b0dfd66425dd6a0935b50c2ab415d9711e0387f6b0d20c2\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://382d7204db6c98ad673657c645cb8a8e5457332eb770e92505a22df7c8d4a94b\",\"dweb:/ipfs/QmRHprVgSJwD2C1gQLWAEaQaBM6d8RyiwWpUA9RetxzuM9\"]}},\"version\":1}"}},"contracts/governance/CommunityTreasury.sol":{"CommunityTreasury":{"abi":[{"inputs":[{"internalType":"address","name":"png_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"png","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"dest","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506040516108bc3803806108bc8339818101604052602081101561003357600080fd5b5051600061003f6100ae565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b0319166001600160a01b03929092169190911790556100b2565b3390565b6107fb806100c16000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063a9059cbb11610050578063a9059cbb146100ad578063b69ef8a8146100d9578063f2fde38b146100f357610072565b80635f77567814610077578063715018a61461009b5780638da5cb5b146100a5575b600080fd5b61007f610119565b604080516001600160a01b039092168252519081900360200190f35b6100a3610128565b005b61007f6101e9565b6100a3600480360360408110156100c357600080fd5b506001600160a01b0381351690602001356101f8565b6100e161027d565b60408051918252519081900360200190f35b6100a36004803603602081101561010957600080fd5b50356001600160a01b03166102f9565b6001546001600160a01b031681565b610130610410565b6000546001600160a01b03908116911614610192576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000546001600160a01b031690565b610200610410565b6000546001600160a01b03908116911614610262576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600154610279906001600160a01b03168383610414565b5050565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156102c857600080fd5b505afa1580156102dc573d6000803e3d6000fd5b505050506040513d60208110156102f257600080fd5b5051905090565b610301610410565b6000546001600160a01b03908116911614610363576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166103a85760405162461bcd60e51b81526004018080602001828103825260268152602001806107506026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b3390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b17905261047b908490610480565b505050565b60006104d5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166105319092919063ffffffff16565b80519091501561047b578080602001905160208110156104f457600080fd5b505161047b5760405162461bcd60e51b815260040180806020018281038252602a81526020018061079c602a913960400191505060405180910390fd5b6060610540848460008561054a565b90505b9392505050565b60608247101561058b5760405162461bcd60e51b81526004018080602001828103825260268152602001806107766026913960400191505060405180910390fd5b610594856106a5565b6105e5576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106106235780518252601f199092019160209182019101610604565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610685576040519150601f19603f3d011682016040523d82523d6000602084013e61068a565b606091505b509150915061069a8282866106ab565b979650505050505050565b3b151590565b606083156106ba575081610543565b8251156106ca5782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156107145781810151838201526020016106fc565b50505050905090810190601f1680156107415780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220d734fc49c431f2afd9c07e45d64a7f58bc159b1d0d2196ff2b23bd2dd45011df64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x8BC CODESIZE SUB DUP1 PUSH2 0x8BC DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 PUSH2 0x3F PUSH2 0xAE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xB2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x7FB DUP1 PUSH2 0xC1 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 0xA9059CBB GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0xAD JUMPI DUP1 PUSH4 0xB69EF8A8 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xF3 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x5F775678 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x9B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xA5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x119 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA3 PUSH2 0x128 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7F PUSH2 0x1E9 JUMP JUMPDEST PUSH2 0xA3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1F8 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x27D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2F9 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x130 PUSH2 0x410 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x192 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x200 PUSH2 0x410 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x262 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x279 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH2 0x414 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DC 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 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x301 PUSH2 0x410 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x363 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x750 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x47B SWAP1 DUP5 SWAP1 PUSH2 0x480 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D5 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x531 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x47B JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x47B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x79C PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH2 0x540 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x54A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x58B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x776 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x594 DUP6 PUSH2 0x6A5 JUMP JUMPDEST PUSH2 0x5E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x623 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x604 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 0x685 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 0x68A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x69A DUP3 DUP3 DUP7 PUSH2 0x6AB JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x6BA JUMPI POP DUP2 PUSH2 0x543 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x6CA JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x714 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6FC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x741 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 INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373416464726573733A20696E7375666669 PUSH4 0x69656E74 KECCAK256 PUSH3 0x616C61 PUSH15 0x636520666F722063616C6C53616665 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x756363656564A2646970667358221220D734FC49 0xC4 BALANCE CALLCODE 0xAF 0xD9 0xC0 PUSH31 0x45D64A7F58BC159B1D0D2196FF2B23BD2DD45011DF64736F6C634300070600 CALLER ","sourceMap":"447:597:120:-:0;;;578:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;578:63:120;882:17:152;902:12;:10;:12::i;:::-;924:6;:18;;-1:-1:-1;;;;;;924:18:152;-1:-1:-1;;;;;924:18:152;;;;;;;957:43;;924:18;;-1:-1:-1;924:18:152;957:43;;924:6;;957:43;-1:-1:-1;615:3:120;:18;;-1:-1:-1;;;;;;615:18:120;-1:-1:-1;;;;;615:18:120;;;;;;;;;;447:597;;598:104:151;685:10;598:104;:::o;447:597:120:-;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c8063a9059cbb11610050578063a9059cbb146100ad578063b69ef8a8146100d9578063f2fde38b146100f357610072565b80635f77567814610077578063715018a61461009b5780638da5cb5b146100a5575b600080fd5b61007f610119565b604080516001600160a01b039092168252519081900360200190f35b6100a3610128565b005b61007f6101e9565b6100a3600480360360408110156100c357600080fd5b506001600160a01b0381351690602001356101f8565b6100e161027d565b60408051918252519081900360200190f35b6100a36004803603602081101561010957600080fd5b50356001600160a01b03166102f9565b6001546001600160a01b031681565b610130610410565b6000546001600160a01b03908116911614610192576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000546001600160a01b031690565b610200610410565b6000546001600160a01b03908116911614610262576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600154610279906001600160a01b03168383610414565b5050565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156102c857600080fd5b505afa1580156102dc573d6000803e3d6000fd5b505050506040513d60208110156102f257600080fd5b5051905090565b610301610410565b6000546001600160a01b03908116911614610363576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166103a85760405162461bcd60e51b81526004018080602001828103825260268152602001806107506026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b3390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b17905261047b908490610480565b505050565b60006104d5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166105319092919063ffffffff16565b80519091501561047b578080602001905160208110156104f457600080fd5b505161047b5760405162461bcd60e51b815260040180806020018281038252602a81526020018061079c602a913960400191505060405180910390fd5b6060610540848460008561054a565b90505b9392505050565b60608247101561058b5760405162461bcd60e51b81526004018080602001828103825260268152602001806107766026913960400191505060405180910390fd5b610594856106a5565b6105e5576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106106235780518252601f199092019160209182019101610604565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610685576040519150601f19603f3d011682016040523d82523d6000602084013e61068a565b606091505b509150915061069a8282866106ab565b979650505050505050565b3b151590565b606083156106ba575081610543565b8251156106ca5782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156107145781810151838201526020016106fc565b50505050905090810190601f1680156107415780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220d734fc49c431f2afd9c07e45d64a7f58bc159b1d0d2196ff2b23bd2dd45011df64736f6c63430007060033","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 0xA9059CBB GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0xAD JUMPI DUP1 PUSH4 0xB69EF8A8 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xF3 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x5F775678 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x9B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xA5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x119 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA3 PUSH2 0x128 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7F PUSH2 0x1E9 JUMP JUMPDEST PUSH2 0xA3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1F8 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x27D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2F9 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x130 PUSH2 0x410 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x192 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x200 PUSH2 0x410 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x262 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x279 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH2 0x414 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DC 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 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x301 PUSH2 0x410 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x363 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x750 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x47B SWAP1 DUP5 SWAP1 PUSH2 0x480 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D5 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x531 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x47B JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x47B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x79C PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH2 0x540 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x54A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x58B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x776 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x594 DUP6 PUSH2 0x6A5 JUMP JUMPDEST PUSH2 0x5E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x623 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x604 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 0x685 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 0x68A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x69A DUP3 DUP3 DUP7 PUSH2 0x6AB JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x6BA JUMPI POP DUP2 PUSH2 0x543 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x6CA JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x714 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6FC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x741 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 INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373416464726573733A20696E7375666669 PUSH4 0x69656E74 KECCAK256 PUSH3 0x616C61 PUSH15 0x636520666F722063616C6C53616665 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x756363656564A2646970667358221220D734FC49 0xC4 BALANCE CALLCODE 0xAF 0xD9 0xC0 PUSH31 0x45D64A7F58BC159B1D0D2196FF2B23BD2DD45011DF64736F6C634300070600 CALLER ","sourceMap":"447:597:120:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;552:17;;;:::i;:::-;;;;-1:-1:-1;;;;;552:17:120;;;;;;;;;;;;;;1706:145:152;;;:::i;:::-;;1083:77;;;:::i;750:113:120:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;750:113:120;;;;;;;;:::i;938:101::-;;;:::i;:::-;;;;;;;;;;;;;;;;2000:240:152;;;;;;;;;;;;;;;;-1:-1:-1;2000:240:152;-1:-1:-1;;;;;2000:240:152;;:::i;552:17:120:-;;;-1:-1:-1;;;;;552:17:120;;:::o;1706:145:152:-;1297:12;:10;:12::i;:::-;1287:6;;-1:-1:-1;;;;;1287:6:152;;;:22;;;1279:67;;;;;-1:-1:-1;;;1279:67:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1812:1:::1;1796:6:::0;;1775:40:::1;::::0;-1:-1:-1;;;;;1796:6:152;;::::1;::::0;1775:40:::1;::::0;1812:1;;1775:40:::1;1842:1;1825:19:::0;;-1:-1:-1;;1825:19:152::1;::::0;;1706:145::o;1083:77::-;1121:7;1147:6;-1:-1:-1;;;;;1147:6:152;1083:77;:::o;750:113:120:-;1297:12:152;:10;:12::i;:::-;1287:6;;-1:-1:-1;;;;;1287:6:152;;;:22;;;1279:67;;;;;-1:-1:-1;;;1279:67:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;825:3:120::1;::::0;:30:::1;::::0;-1:-1:-1;;;;;825:3:120::1;842:4:::0;848:6;825:16:::1;:30::i;:::-;750:113:::0;;:::o;938:101::-;1003:3;;:28;;;-1:-1:-1;;;1003:28:120;;1025:4;1003:28;;;;;;979:4;;-1:-1:-1;;;;;1003:3:120;;:13;;:28;;;;;;;;;;;;;;:3;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1003:28:120;;-1:-1:-1;938:101:120;:::o;2000:240:152:-;1297:12;:10;:12::i;:::-;1287:6;;-1:-1:-1;;;;;1287:6:152;;;:22;;;1279:67;;;;;-1:-1:-1;;;1279:67:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2088:22:152;::::1;2080:73;;;;-1:-1:-1::0;;;2080:73:152::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2189:6;::::0;;2168:38:::1;::::0;-1:-1:-1;;;;;2168:38:152;;::::1;::::0;2189:6;::::1;::::0;2168:38:::1;::::0;::::1;2216:6;:17:::0;;-1:-1:-1;;2216:17:152::1;-1:-1:-1::0;;;;;2216:17:152;;;::::1;::::0;;;::::1;::::0;;2000:240::o;598:104:151:-;685:10;598:104;:::o;704:175:157:-;813:58;;;-1:-1:-1;;;;;813:58:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;813:58:157;;;786:86;;806:5;;786:19;:86::i;:::-;704:175;;;:::o;2967:751::-;3386:23;3412:69;3440:4;3412:69;;;;;;;;;;;;;;;;;3420:5;-1:-1:-1;;;;;3412:27:157;;;:69;;;;;:::i;:::-;3495:17;;3386:95;;-1:-1:-1;3495:21:157;3491:221;;3635:10;3624:30;;;;;;;;;;;;;;;-1:-1:-1;3624:30:157;3616:85;;;;-1:-1:-1;;;3616:85:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3581:193:158;3684:12;3715:52;3737:6;3745:4;3751:1;3754:12;3715:21;:52::i;:::-;3708:59;;3581:193;;;;;;:::o;4608:523::-;4735:12;4792:5;4767:21;:30;;4759:81;;;;-1:-1:-1;;;4759:81:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4858:18;4869:6;4858:10;:18::i;:::-;4850:60;;;;;-1:-1:-1;;;4850:60:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;4981:12;4995:23;5022:6;-1:-1:-1;;;;;5022:11:158;5042:5;5050:4;5022:33;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5022:33:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4980:75;;;;5072:52;5090:7;5099:10;5111:12;5072:17;:52::i;:::-;5065:59;4608:523;-1:-1:-1;;;;;;;4608:523:158:o;726:413::-;1086:20;1124:8;;;726:413::o;6111:725::-;6226:12;6254:7;6250:580;;;-1:-1:-1;6284:10:158;6277:17;;6250:580;6395:17;;:21;6391:429;;6653:10;6647:17;6713:15;6700:10;6696:2;6692:19;6685:44;6602:145;6792:12;6785:20;;-1:-1:-1;;;6785:20:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"balance()":"b69ef8a8","owner()":"8da5cb5b","png()":"5f775678","renounceOwnership()":"715018a6","transfer(address,uint256)":"a9059cbb","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"png_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"balance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"png\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dest\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"balance()\":{\"notice\":\"Return the PNG balance of this contract.\"},\"transfer(address,uint256)\":{\"notice\":\"Transfer PNG to the destination. Can only be called by the contract owner.\"}},\"notice\":\"Custodian of community's PNG. Deploy this contract, then change the owner to be a governance protocol. Send community treasury funds to the deployed contract, then spend them through governance proposals.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/governance/CommunityTreasury.sol\":\"CommunityTreasury\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/governance/CommunityTreasury.sol\":{\"keccak256\":\"0xf14ec06a63439dfd9185bd92aa8b34f00d737eefb84fca14fc5f037b074e1ec5\",\"urls\":[\"bzz-raw://cfafe723eddea4a0289b8551a9e7e85885db51e7f18cdd24c1c85efa9e085dc1\",\"dweb:/ipfs/QmQeFnoK4zcd6qqXqJfb3m5jNbYZ2AUXC6eoyku8YoRSF6\"]},\"openzeppelin-contracts-legacy/GSN/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"openzeppelin-contracts-legacy/access/Ownable.sol\":{\"keccak256\":\"0xf7c39c7e6d06ed3bda90cfefbcbf2ddc32c599c3d6721746546ad64946efccaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb57a28e189cd8b05748db44bdd51d608e6f1364dd1b35ad921e1bc82c10631e\",\"dweb:/ipfs/QmaWWTBbVu2pRR9XUbE4iC159NoP59cRF9ZJwhf4ghFN9i\"]},\"openzeppelin-contracts-legacy/math/SafeMath.sol\":{\"keccak256\":\"0x3b21f2c8d626de3b9925ae33e972d8bf5c8b1bffb3f4ee94daeed7d0679036e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f8d45329fecbf0836ad7543330c3ecd0f8d0ffa42d4016278c3eb2215fdcdfe\",\"dweb:/ipfs/QmXWLT7GcnHtA5NiD6MFi2CV3EWJY4wv5mLNnypqYDrxL3\"]},\"openzeppelin-contracts-legacy/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"openzeppelin-contracts-legacy/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0xf12dfbe97e6276980b83d2830bb0eb75e0cf4f3e626c2471137f82158ae6a0fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a849c2d95e85463909e5b5c920b13e7a11216ca14127085e16d22b9379d52a\",\"dweb:/ipfs/QmUg3CZDbCCcQdroEpexBy5ZFd5vD1UWijWQq9qHZjtJNQ\"]},\"openzeppelin-contracts-legacy/utils/Address.sol\":{\"keccak256\":\"0xa6a15ddddcbf29d2922a1e0d4151b5d2d33da24b93cc9ebc12390e0d855532f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c119bcaecfa853d564ac88d312777f75fa1126a3bca88a3371adb0ad9f35cb0\",\"dweb:/ipfs/QmY9UPuXeSKq86Zh38fE43VGQPhKMN34mkuFSFqPcr6nvZ\"]}},\"version\":1}"}},"contracts/pangolin-core/interfaces/IPangolinERC20.sol":{"IPangolinERC20":{"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":[],"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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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","PERMIT_TYPEHASH()":"30adf81f","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","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\":[],\"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\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"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\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"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/pangolin-core/interfaces/IPangolinERC20.sol\":\"IPangolinERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-core/interfaces/IPangolinERC20.sol\":{\"keccak256\":\"0x3ce703d39e5ec3349e39e10d4e44dda6789e76494c2b0e568ffe822a1abd516b\",\"urls\":[\"bzz-raw://47a7fb280649f6f6ce4696b6024b135c534c8cc7f7e0456e55858a22b2ab8ad8\",\"dweb:/ipfs/QmcR2VmC2Kp6hcYmZvLNDFzQqvYgQydrihSADsYpqSinwt\"]}},\"version\":1}"}},"contracts/pangolin-core/interfaces/IPangolinFactory.sol":{"IPangolinFactory":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"PairCreated","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allPairs","outputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allPairsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"createPair","outputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeToSetter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"getPair","outputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"setFeeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"setFeeToSetter","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allPairs(uint256)":"1e3dd18b","allPairsLength()":"574f2ba3","createPair(address,address)":"c9c65396","feeTo()":"017e7e58","feeToSetter()":"094b7415","getPair(address,address)":"e6a43905","setFeeTo(address)":"f46901ed","setFeeToSetter(address)":"a2e74af6"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeToSetter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pangolin-core/interfaces/IPangolinFactory.sol\":\"IPangolinFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-core/interfaces/IPangolinFactory.sol\":{\"keccak256\":\"0xb3fe51fccd8da7b99d23634d45ab5fc978496bc2763ae8436867c14d144a0b02\",\"urls\":[\"bzz-raw://076378342d9b196439c99464a818629babdb273daf7919b3a71e3b0531b4fb65\",\"dweb:/ipfs/QmPdVowLwaPrTu4yTNJdy1eBkKaAfH3uhU3Eu85ecmdNuC\"]}},\"version\":1}"}},"contracts/pangolin-core/interfaces/IPangolinPair.sol":{"IPangolinPair":{"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/pangolin-core/interfaces/IPangolinPair.sol\":\"IPangolinPair\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-core/interfaces/IPangolinPair.sol\":{\"keccak256\":\"0x0511ddea9c27b93469fea324ad29206830b559f6bfd16e9d033ba05edc37f1ab\",\"urls\":[\"bzz-raw://721a8c3595a7a7cc8ddf44a41a6db15b186e6e275990dc0e1790b61679b736a3\",\"dweb:/ipfs/QmU2UX4i5ZYtzv333x4FVjLQymC8rFmJ6Hsmi3Ka1HjFMu\"]}},\"version\":1}"}},"contracts/pangolin-lib/libraries/AddressStringUtil.sol":{"AddressStringUtil":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c6f032a1519c04d4760ae8652c4ba51f78698ec4021496e21afbbeddf5754b8d64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 CREATE ORIGIN LOG1 MLOAD SWAP13 DIV 0xD4 PUSH23 0xAE8652C4BA51F78698EC4021496E21AFBBEDDF5754B8D PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"83:1351:124:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c6f032a1519c04d4760ae8652c4ba51f78698ec4021496e21afbbeddf5754b8d64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 CREATE ORIGIN LOG1 MLOAD SWAP13 DIV 0xD4 PUSH23 0xAE8652C4BA51F78698EC4021496E21AFBBEDDF5754B8D PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"83:1351:124:-: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/pangolin-lib/libraries/AddressStringUtil.sol\":\"AddressStringUtil\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-lib/libraries/AddressStringUtil.sol\":{\"keccak256\":\"0x8050c1f9387ef9deae31ce36ec327ce96c3de4754d1e12616c335d2b17a7cc19\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b7af8608b31ba66bc5373201aaa36faba23411829783a1d94736dcd6a1767123\",\"dweb:/ipfs/QmZVJD2Bo5C8bm55tcPy2fKoPA6nCNHmEnL9E3xjuBM4Jp\"]}},\"version\":1}"}},"contracts/pangolin-lib/libraries/Babylonian.sol":{"Babylonian":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f7745c3d48dd0187d45e4175816dd11dd632c8a7b699eb432413fb3fab60365864736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF7 PUSH21 0x5C3D48DD0187D45E4175816DD11DD632C8A7B699EB NUMBER 0x24 SGT 0xFB EXTCODEHASH 0xAB PUSH1 0x36 PC PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"216:364:125:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f7745c3d48dd0187d45e4175816dd11dd632c8a7b699eb432413fb3fab60365864736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF7 PUSH21 0x5C3D48DD0187D45E4175816DD11DD632C8A7B699EB NUMBER 0x24 SGT 0xFB EXTCODEHASH 0xAB PUSH1 0x36 PC PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"216:364:125:-: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/pangolin-lib/libraries/Babylonian.sol\":\"Babylonian\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-lib/libraries/Babylonian.sol\":{\"keccak256\":\"0xb6d624c352f6609d59d4f9e88ef2e27cb449973642326ed50ea459b9496a8af1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://917eec6312b57cb09fbf6a0d24c4adf05469adca9383fd41e616734de26ab87d\",\"dweb:/ipfs/QmWx3ddm7mP9Q5TMy2YES8TV932PsESZengN8sdP5HNFbn\"]}},\"version\":1}"}},"contracts/pangolin-lib/libraries/FixedPoint.sol":{"FixedPoint":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122074754d914f4df82392b327287d10d4d5e7b010d44f6077d666f78dbf312e030a64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH21 0x754D914F4DF82392B327287D10D4D5E7B010D44F60 PUSH24 0xD666F78DBF312E030A64736F6C6343000706003300000000 ","sourceMap":"241:5591:126:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122074754d914f4df82392b327287d10d4d5e7b010d44f6077d666f78dbf312e030a64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH21 0x754D914F4DF82392B327287D10D4D5E7B010D44F60 PUSH24 0xD666F78DBF312E030A64736F6C6343000706003300000000 ","sourceMap":"241:5591:126:-: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/pangolin-lib/libraries/FixedPoint.sol\":\"FixedPoint\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-lib/libraries/Babylonian.sol\":{\"keccak256\":\"0xb6d624c352f6609d59d4f9e88ef2e27cb449973642326ed50ea459b9496a8af1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://917eec6312b57cb09fbf6a0d24c4adf05469adca9383fd41e616734de26ab87d\",\"dweb:/ipfs/QmWx3ddm7mP9Q5TMy2YES8TV932PsESZengN8sdP5HNFbn\"]},\"contracts/pangolin-lib/libraries/FixedPoint.sol\":{\"keccak256\":\"0xbe26ba3ca4362c0ec8a378c05270fb8e6dca60e5f039e8b8a188fdc7e56ca925\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b9b0b0bab61223410ee8ee0e18560a29426e354f324701a6b626def3c12e5f17\",\"dweb:/ipfs/QmYciZrLspAAQ64RTmrPmSTLMP4jsDNRBLD6iBvQ3v6ynJ\"]},\"contracts/pangolin-lib/libraries/FullMath.sol\":{\"keccak256\":\"0xcfc0c2167e2acb556aa5311665e2ac7d1afdcd22d319a0ce933cd398834d174b\",\"license\":\"CC-BY-4.0\",\"urls\":[\"bzz-raw://db0a7bfe02270ea4de528a2468713ff838e4da53554388659eab3a8571dbc0d5\",\"dweb:/ipfs/QmQKBD4Xj4ZgcnczkVjK6sAvM31nkgXpxiVRTbi8XS4y3G\"]}},\"version\":1}"}},"contracts/pangolin-lib/libraries/FullMath.sol":{"FullMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209c2897dc9ddbfcba00d45b372cc35bfac6c14cc8c472f2bba6b32e278d6779c264736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP13 0x28 SWAP8 0xDC SWAP14 0xDB 0xFC 0xBA STOP 0xD4 JUMPDEST CALLDATACOPY 0x2C 0xC3 JUMPDEST STATICCALL 0xC6 0xC1 0x4C 0xC8 0xC4 PUSH19 0xF2BBA6B32E278D6779C264736F6C6343000706 STOP CALLER ","sourceMap":"205:1082:127:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209c2897dc9ddbfcba00d45b372cc35bfac6c14cc8c472f2bba6b32e278d6779c264736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP13 0x28 SWAP8 0xDC SWAP14 0xDB 0xFC 0xBA STOP 0xD4 JUMPDEST CALLDATACOPY 0x2C 0xC3 JUMPDEST STATICCALL 0xC6 0xC1 0x4C 0xC8 0xC4 PUSH19 0xF2BBA6B32E278D6779C264736F6C6343000706 STOP CALLER ","sourceMap":"205:1082:127:-: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/pangolin-lib/libraries/FullMath.sol\":\"FullMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-lib/libraries/FullMath.sol\":{\"keccak256\":\"0xcfc0c2167e2acb556aa5311665e2ac7d1afdcd22d319a0ce933cd398834d174b\",\"license\":\"CC-BY-4.0\",\"urls\":[\"bzz-raw://db0a7bfe02270ea4de528a2468713ff838e4da53554388659eab3a8571dbc0d5\",\"dweb:/ipfs/QmQKBD4Xj4ZgcnczkVjK6sAvM31nkgXpxiVRTbi8XS4y3G\"]}},\"version\":1}"}},"contracts/pangolin-lib/libraries/PairNamer.sol":{"PairNamer":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122076b7f89cd69f3509cb45a2f78df86ce0f0589816b52f34377c558ff5d4a9172b64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH23 0xB7F89CD69F3509CB45A2F78DF86CE0F0589816B52F3437 PUSH29 0x558FF5D4A9172B64736F6C634300070600330000000000000000000000 ","sourceMap":"180:1302:128:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122076b7f89cd69f3509cb45a2f78df86ce0f0589816b52f34377c558ff5d4a9172b64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH23 0xB7F89CD69F3509CB45A2F78DF86CE0F0589816B52F3437 PUSH29 0x558FF5D4A9172B64736F6C634300070600330000000000000000000000 ","sourceMap":"180:1302:128:-: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/pangolin-lib/libraries/PairNamer.sol\":\"PairNamer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-lib/libraries/AddressStringUtil.sol\":{\"keccak256\":\"0x8050c1f9387ef9deae31ce36ec327ce96c3de4754d1e12616c335d2b17a7cc19\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b7af8608b31ba66bc5373201aaa36faba23411829783a1d94736dcd6a1767123\",\"dweb:/ipfs/QmZVJD2Bo5C8bm55tcPy2fKoPA6nCNHmEnL9E3xjuBM4Jp\"]},\"contracts/pangolin-lib/libraries/PairNamer.sol\":{\"keccak256\":\"0x5291ff5cbc95b3724786b88a78a61a462a73aff28535822128e5784293f5939d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://56a2ecf7a4a32d4500e5a9be8ede0e34873a7e6859903ddb0af2368b58af3f91\",\"dweb:/ipfs/Qmdd7myghDLt1jriNbqcUgkMB4B3hdHWPReegDBvdXHu55\"]},\"contracts/pangolin-lib/libraries/SafeERC20Namer.sol\":{\"keccak256\":\"0x3f45ecb47bdd77a08039006e7a64a242022d3ea82643aae8db29d3682ded87b8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://69a9efc9578003c3523398280203bac01c78897dd5245a4999d3ac2539774eb2\",\"dweb:/ipfs/QmRCD3FyTogFd5PKPzcWKKyGEzhZEC9JJV4wdKRU43E6MY\"]}},\"version\":1}"}},"contracts/pangolin-lib/libraries/SafeERC20Namer.sol":{"SafeERC20Namer":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122033a4adfac865ec9dd2d758a4df2e51d9fa078ca001dfd922edd65e9a3532870b64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLER LOG4 0xAD STATICCALL 0xC8 PUSH6 0xEC9DD2D758A4 0xDF 0x2E MLOAD 0xD9 STATICCALL SMOD DUP13 LOG0 ADD 0xDF 0xD9 0x22 0xED 0xD6 0x5E SWAP11 CALLDATALOAD ORIGIN DUP8 SIGNEXTEND PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"311:3609:129:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122033a4adfac865ec9dd2d758a4df2e51d9fa078ca001dfd922edd65e9a3532870b64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLER LOG4 0xAD STATICCALL 0xC8 PUSH6 0xEC9DD2D758A4 0xDF 0x2E MLOAD 0xD9 STATICCALL SMOD DUP13 LOG0 ADD 0xDF 0xD9 0x22 0xED 0xD6 0x5E SWAP11 CALLDATALOAD ORIGIN DUP8 SIGNEXTEND PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"311:3609:129:-: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/pangolin-lib/libraries/SafeERC20Namer.sol\":\"SafeERC20Namer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-lib/libraries/AddressStringUtil.sol\":{\"keccak256\":\"0x8050c1f9387ef9deae31ce36ec327ce96c3de4754d1e12616c335d2b17a7cc19\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b7af8608b31ba66bc5373201aaa36faba23411829783a1d94736dcd6a1767123\",\"dweb:/ipfs/QmZVJD2Bo5C8bm55tcPy2fKoPA6nCNHmEnL9E3xjuBM4Jp\"]},\"contracts/pangolin-lib/libraries/SafeERC20Namer.sol\":{\"keccak256\":\"0x3f45ecb47bdd77a08039006e7a64a242022d3ea82643aae8db29d3682ded87b8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://69a9efc9578003c3523398280203bac01c78897dd5245a4999d3ac2539774eb2\",\"dweb:/ipfs/QmRCD3FyTogFd5PKPzcWKKyGEzhZEC9JJV4wdKRU43E6MY\"]}},\"version\":1}"}},"contracts/pangolin-lib/libraries/TransferHelper.sol":{"TransferHelper":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e7bfbea1bd9a9f0f5d6d98b0390c2c6a9abdfa25a4ad84c64a531e992601765564736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 0xBF 0xBE LOG1 0xBD SWAP11 SWAP16 0xF 0x5D PUSH14 0x98B0390C2C6A9ABDFA25A4AD84C6 0x4A MSTORE8 0x1E SWAP10 0x26 ADD PUSH23 0x5564736F6C634300070600330000000000000000000000 ","sourceMap":"189:1500:130:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e7bfbea1bd9a9f0f5d6d98b0390c2c6a9abdfa25a4ad84c64a531e992601765564736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 0xBF 0xBE LOG1 0xBD SWAP11 SWAP16 0xF 0x5D PUSH14 0x98B0390C2C6A9ABDFA25A4AD84C6 0x4A MSTORE8 0x1E SWAP10 0x26 ADD PUSH23 0x5564736F6C634300070600330000000000000000000000 ","sourceMap":"189:1500:130:-: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/pangolin-lib/libraries/TransferHelper.sol\":\"TransferHelper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-lib/libraries/TransferHelper.sol\":{\"keccak256\":\"0xfc5b469642639405484afdba1d1ad1bdc70bd5cd4f01fe53c3be27c12a149f1f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad4c82e4d301a6bb7b9aac332299cb982dc8188d52942cc04796546dfb5cbd7a\",\"dweb:/ipfs/QmeeiUQrF2asciybNWEQyzeMsSkdavRABfZreMpCmKUpcG\"]}},\"version\":1}"}},"contracts/pangolin-lib/test/AddressStringUtilTest.sol":{"AddressStringUtilTest":{"abi":[{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"len","type":"uint256"}],"name":"toAsciiString","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506102f0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80635768786e14610030575b600080fd5b6100696004803603604081101561004657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356100de565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100a357818101518382015260200161008b565b50505050905090810190601f1680156100d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60606100ea83836100f1565b9392505050565b6060600282061580156101045750600082115b8015610111575060288211155b610162576040805162461bcd60e51b815260206004820152601e60248201527f41646472657373537472696e675574696c3a20494e56414c49445f4c454e0000604482015290519081900360640190fd5b60008267ffffffffffffffff8111801561017b57600080fd5b506040519080825280601f01601f1916602001820160405280156101a6576020820181803683370190505b50905073ffffffffffffffffffffffffffffffffffffffff841660005b6002850481101561028757600860138290030282901c600f600482901c1660f0821682036101f082610291565b8685600202815181106101ff57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061023781610291565b86856002026001018151811061024957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050600190920191506101c39050565b5090949350505050565b6000600a8260ff1610156102ac57506030810160f81b6102b5565b506037810160f81b5b91905056fea2646970667358221220acd2c4e7513c7f31ea0ebceebf2f03991bce947ff2a83d7923301d8a3048dca064736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 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 0x5768786E EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x69 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDE 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 0xA3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xD0 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 PUSH1 0x60 PUSH2 0xEA DUP4 DUP4 PUSH2 0xF1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MOD ISZERO DUP1 ISZERO PUSH2 0x104 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST DUP1 ISZERO PUSH2 0x111 JUMPI POP PUSH1 0x28 DUP3 GT ISZERO JUMPDEST PUSH2 0x162 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373537472696E675574696C3A20494E56414C49445F4C454E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x17B 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 0x1A6 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 JUMPDEST PUSH1 0x2 DUP6 DIV DUP2 LT ISZERO PUSH2 0x287 JUMPI PUSH1 0x8 PUSH1 0x13 DUP3 SWAP1 SUB MUL DUP3 SWAP1 SHR PUSH1 0xF PUSH1 0x4 DUP3 SWAP1 SHR AND PUSH1 0xF0 DUP3 AND DUP3 SUB PUSH2 0x1F0 DUP3 PUSH2 0x291 JUMP JUMPDEST DUP7 DUP6 PUSH1 0x2 MUL DUP2 MLOAD DUP2 LT PUSH2 0x1FF JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x237 DUP2 PUSH2 0x291 JUMP JUMPDEST DUP7 DUP6 PUSH1 0x2 MUL PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x249 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x1C3 SWAP1 POP JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA DUP3 PUSH1 0xFF AND LT ISZERO PUSH2 0x2AC JUMPI POP PUSH1 0x30 DUP2 ADD PUSH1 0xF8 SHL PUSH2 0x2B5 JUMP JUMPDEST POP PUSH1 0x37 DUP2 ADD PUSH1 0xF8 SHL JUMPDEST SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAC 0xD2 0xC4 0xE7 MLOAD EXTCODECOPY PUSH32 0x31EA0EBCEEBF2F03991BCE947FF2A83D7923301D8A3048DCA064736F6C634300 SMOD MOD STOP CALLER ","sourceMap":"124:197:131:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061002b5760003560e01c80635768786e14610030575b600080fd5b6100696004803603604081101561004657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356100de565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100a357818101518382015260200161008b565b50505050905090810190601f1680156100d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60606100ea83836100f1565b9392505050565b6060600282061580156101045750600082115b8015610111575060288211155b610162576040805162461bcd60e51b815260206004820152601e60248201527f41646472657373537472696e675574696c3a20494e56414c49445f4c454e0000604482015290519081900360640190fd5b60008267ffffffffffffffff8111801561017b57600080fd5b506040519080825280601f01601f1916602001820160405280156101a6576020820181803683370190505b50905073ffffffffffffffffffffffffffffffffffffffff841660005b6002850481101561028757600860138290030282901c600f600482901c1660f0821682036101f082610291565b8685600202815181106101ff57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061023781610291565b86856002026001018151811061024957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050600190920191506101c39050565b5090949350505050565b6000600a8260ff1610156102ac57506030810160f81b6102b5565b506037810160f81b5b91905056fea2646970667358221220acd2c4e7513c7f31ea0ebceebf2f03991bce947ff2a83d7923301d8a3048dca064736f6c63430007060033","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 0x5768786E EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x69 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDE 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 0xA3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xD0 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 PUSH1 0x60 PUSH2 0xEA DUP4 DUP4 PUSH2 0xF1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MOD ISZERO DUP1 ISZERO PUSH2 0x104 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST DUP1 ISZERO PUSH2 0x111 JUMPI POP PUSH1 0x28 DUP3 GT ISZERO JUMPDEST PUSH2 0x162 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373537472696E675574696C3A20494E56414C49445F4C454E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x17B 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 0x1A6 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 JUMPDEST PUSH1 0x2 DUP6 DIV DUP2 LT ISZERO PUSH2 0x287 JUMPI PUSH1 0x8 PUSH1 0x13 DUP3 SWAP1 SUB MUL DUP3 SWAP1 SHR PUSH1 0xF PUSH1 0x4 DUP3 SWAP1 SHR AND PUSH1 0xF0 DUP3 AND DUP3 SUB PUSH2 0x1F0 DUP3 PUSH2 0x291 JUMP JUMPDEST DUP7 DUP6 PUSH1 0x2 MUL DUP2 MLOAD DUP2 LT PUSH2 0x1FF JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x237 DUP2 PUSH2 0x291 JUMP JUMPDEST DUP7 DUP6 PUSH1 0x2 MUL PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x249 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x1C3 SWAP1 POP JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA DUP3 PUSH1 0xFF AND LT ISZERO PUSH2 0x2AC JUMPI POP PUSH1 0x30 DUP2 ADD PUSH1 0xF8 SHL PUSH2 0x2B5 JUMP JUMPDEST POP PUSH1 0x37 DUP2 ADD PUSH1 0xF8 SHL JUMPDEST SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAC 0xD2 0xC4 0xE7 MLOAD EXTCODECOPY PUSH32 0x31EA0EBCEEBF2F03991BCE947FF2A83D7923301D8A3048DCA064736F6C634300 SMOD MOD STOP CALLER ","sourceMap":"124:197:131:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;162:156;;;;;;;;;;;;;;;;-1:-1:-1;162:156:131;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;235:13;268:42;300:4;306:3;268:31;:42::i;:::-;261:49;162:156;-1:-1:-1;;;162:156:131:o;225:808:124:-;298:13;338:1;332:3;:7;:12;:23;;;;;354:1;348:3;:7;332:23;:36;;;;;366:2;359:3;:9;;332:36;324:79;;;;;-1:-1:-1;;;324:79:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;416:14;443:3;433:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;433:14:124;-1:-1:-1;416:31:124;-1:-1:-1;476:13:124;;;458:15;500:499;530:1;524:3;:7;520:1;:11;500:499;;;694:1;699:2;:6;;;694:12;682:25;;;801:6;806:1;801:6;;;;907:7;;;902:13;;941:8;801:6;941:4;:8::i;:::-;930:1;936;932;:5;930:8;;;;;;;;;;;:19;;;;;;;;;;;979:8;984:2;979:4;:8::i;:::-;964:1;970;966;:5;974:1;966:9;964:12;;;;;;;;;;;:23;;;;;;;;;;-1:-1:-1;;533:3:124;;;;;-1:-1:-1;500:499:124;;-1:-1:-1;500:499:124;;-1:-1:-1;1023:1:124;;225:808;-1:-1:-1;;;;225:808:124:o;1240:191::-;1285:8;1314:2;1310:1;:6;;;1306:118;;;-1:-1:-1;1351:4:124;1347:8;;1340:16;;1333:23;;1306:118;-1:-1:-1;1407:4:124;1403:8;;1396:16;;1306:118;1240:191;;;:::o"},"methodIdentifiers":{"toAsciiString(address,uint256)":"5768786e"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"len\",\"type\":\"uint256\"}],\"name\":\"toAsciiString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pangolin-lib/test/AddressStringUtilTest.sol\":\"AddressStringUtilTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-lib/libraries/AddressStringUtil.sol\":{\"keccak256\":\"0x8050c1f9387ef9deae31ce36ec327ce96c3de4754d1e12616c335d2b17a7cc19\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b7af8608b31ba66bc5373201aaa36faba23411829783a1d94736dcd6a1767123\",\"dweb:/ipfs/QmZVJD2Bo5C8bm55tcPy2fKoPA6nCNHmEnL9E3xjuBM4Jp\"]},\"contracts/pangolin-lib/test/AddressStringUtilTest.sol\":{\"keccak256\":\"0xb171b88a818c34cb4d33091ec2d1ee346786cdf5fa764eef16c014c13cfd505a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a9bc69395c800fa58f07c6cb92bbb3e5f56a1ff8c4939ee29b3221fbdd4d9a34\",\"dweb:/ipfs/QmUJ4vt1AmvbAaueGxAuU7ZKK6eWDfExpTP4PQpuGAHj8w\"]}},\"version\":1}"}},"contracts/pangolin-lib/test/FixedPointTest.sol":{"FixedPointTest":{"abi":[{"inputs":[{"components":[{"internalType":"uint224","name":"_x","type":"uint224"}],"internalType":"struct FixedPoint.uq112x112","name":"self","type":"tuple"}],"name":"decode","outputs":[{"internalType":"uint112","name":"","type":"uint112"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"_x","type":"uint256"}],"internalType":"struct FixedPoint.uq144x112","name":"self","type":"tuple"}],"name":"decode144","outputs":[{"internalType":"uint144","name":"","type":"uint144"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint224","name":"_x","type":"uint224"}],"internalType":"struct FixedPoint.uq112x112","name":"self","type":"tuple"},{"components":[{"internalType":"uint224","name":"_x","type":"uint224"}],"internalType":"struct FixedPoint.uq112x112","name":"other","type":"tuple"}],"name":"divuq","outputs":[{"components":[{"internalType":"uint224","name":"_x","type":"uint224"}],"internalType":"struct FixedPoint.uq112x112","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint112","name":"x","type":"uint112"}],"name":"encode","outputs":[{"components":[{"internalType":"uint224","name":"_x","type":"uint224"}],"internalType":"struct FixedPoint.uq112x112","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint144","name":"x","type":"uint144"}],"name":"encode144","outputs":[{"components":[{"internalType":"uint256","name":"_x","type":"uint256"}],"internalType":"struct FixedPoint.uq144x112","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint112","name":"numerator","type":"uint112"},{"internalType":"uint112","name":"denominator","type":"uint112"}],"name":"fraction","outputs":[{"components":[{"internalType":"uint224","name":"_x","type":"uint224"}],"internalType":"struct FixedPoint.uq112x112","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint224","name":"_x","type":"uint224"}],"internalType":"struct FixedPoint.uq112x112","name":"self","type":"tuple"},{"components":[{"internalType":"uint224","name":"_x","type":"uint224"}],"internalType":"struct FixedPoint.uq112x112","name":"other","type":"tuple"}],"name":"getGasCostOfDivuq","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint224","name":"_x","type":"uint224"}],"internalType":"struct FixedPoint.uq112x112","name":"self","type":"tuple"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"mul","outputs":[{"components":[{"internalType":"uint256","name":"_x","type":"uint256"}],"internalType":"struct FixedPoint.uq144x112","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint224","name":"_x","type":"uint224"}],"internalType":"struct FixedPoint.uq112x112","name":"self","type":"tuple"},{"internalType":"int256","name":"y","type":"int256"}],"name":"muli","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint224","name":"_x","type":"uint224"}],"internalType":"struct FixedPoint.uq112x112","name":"self","type":"tuple"},{"components":[{"internalType":"uint224","name":"_x","type":"uint224"}],"internalType":"struct FixedPoint.uq112x112","name":"other","type":"tuple"}],"name":"muluq","outputs":[{"components":[{"internalType":"uint224","name":"_x","type":"uint224"}],"internalType":"struct FixedPoint.uq112x112","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint224","name":"_x","type":"uint224"}],"internalType":"struct FixedPoint.uq112x112","name":"self","type":"tuple"}],"name":"reciprocal","outputs":[{"components":[{"internalType":"uint224","name":"_x","type":"uint224"}],"internalType":"struct FixedPoint.uq112x112","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint224","name":"_x","type":"uint224"}],"internalType":"struct FixedPoint.uq112x112","name":"self","type":"tuple"}],"name":"sqrt","outputs":[{"components":[{"internalType":"uint224","name":"_x","type":"uint224"}],"internalType":"struct FixedPoint.uq112x112","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610f8f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80638925845111610081578063ca2d02991161005b578063ca2d0299146101ce578063ca74fcc0146101e1578063d993d379146101f4576100d4565b8063892584511461017b578063af35b7691461019b578063c814e314146101bb576100d4565b80634fd04a40116100b25780634fd04a40146101285780635a606689146101485780635f9f4c3b1461015b576100d4565b806331f92b13146100d95780633f1626c8146101025780634de4cf9214610115575b600080fd5b6100ec6100e7366004610d39565b610207565b6040516100f99190610ed4565b60405180910390f35b6100ec610110366004610d39565b61022e565b6100ec610123366004610e69565b61024d565b61013b610136366004610d39565b610268565b6040516100f99190610ef1565b6100ec610156366004610d7e565b610281565b61016e610169366004610d39565b6102af565b6040516100f99190610f0c565b61018e610189366004610d54565b6102c8565b6040516100f99190610ecb565b6101ae6101a9366004610db2565b6102e2565b6040516100f99190610ee7565b6101ae6101c9366004610e92565b610302565b6100ec6101dc366004610e4f565b610313565b6100ec6101ef366004610d7e565b610324565b61018e610202366004610d7e565b610352565b61020f610cdf565b61022661022136849003840184610dc4565b610384565b90505b919050565b610236610cdf565b61022661024836849003840184610dc4565b610411565b610255610cdf565b61025f838361050b565b90505b92915050565b600061022661027c36849003840184610dc4565b6105d4565b610289610cdf565b61025f61029b36859003850185610dc4565b6102aa36859003850185610dc4565b6105eb565b60006102266102c336849003840184610e14565b610798565b600061025f6102dc36859003850185610dc4565b8361079f565b6102ea610cf1565b61025f6102fc36859003850185610dc4565b83610845565b61030a610cf1565b610226826108d9565b61031b610cdf565b61022682610909565b61032c610cdf565b61025f61033e36859003850185610dc4565b61034d36859003850185610dc4565b610946565b6000805a905061037961036a36869003860186610dc4565b61034d36869003860186610dc4565b505a90039392505050565b61038c610cdf565b600182600001516001600160e01b0316116103d85760405162461bcd60e51b815260040180806020018281038252602e815260200180610f2c602e913960400191505060405180910390fd5b604051806020016040528083600001516001600160e01b0316600160e01b816103fd57fe5b046001600160e01b03168152509050919050565b610419610cdf565b815171ffffffffffffffffffffffffffffffffffff6001600160e01b0390911611610475576040518060200160405280610463607085600001516001600160e01b0316901b610b51565b6001600160e01b031690529050610229565b60205b60708160ff1610156104bc578251600161ffff60011960ff85166101000301161b6001600160e01b0390911610156104b2576002016104b7565b6104bc565b610478565b604051806020016040528060028360700360ff16816104d757fe5b0460ff166104f78460ff1687600001516001600160e01b0316901b610b51565b901b6001600160e01b031690529392505050565b610513610cdf565b6000826dffffffffffffffffffffffffffff1611610578576040805162461bcd60e51b815260206004820181905260248201527f4669786564506f696e743a204449565f42595f5a45524f5f4652414354494f4e604482015290519081900360640190fd5b6040805160208101909152806dffffffffffffffffffffffffffff84167bffffffffffffffffffffffffffff0000000000000000000000000000607087901b16816105bf57fe5b046001600160e01b0316815250905092915050565b5160701c6dffffffffffffffffffffffffffff1690565b6105f3610cdf565b82516001600160e01b03161580610612575081516001600160e01b0316155b1561062c5750604080516020810190915260008152610262565b825182516dffffffffffffffffffffffffffff607083811c8216938216929081901c82169190811690828502908285029083870290858702906001600160e01b03851611156106c2576040805162461bcd60e51b815260206004820181905260248201527f4669786564506f696e743a204d554c55515f4f564552464c4f575f5550504552604482015290519081900360640190fd5b6000607060ff16846001600160e01b0316901c6001600160e01b0316826001600160e01b0316846001600160e01b0316607060ff16886001600160e01b0316901b6001600160e01b031601010190506000196001600160e01b0316811115610771576040805162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a204d554c55515f4f564552464c4f575f53554d0000604482015290519081900360640190fd5b60408051602081019091526001600160e01b0390911681529b9a5050505050505050505050565b5160701c90565b6000806107d084600001516001600160e01b0316600085126107c157846107c6565b846000035b600160701b610ba2565b9050600160ff1b811061082a576040805162461bcd60e51b815260206004820152601960248201527f4669786564506f696e743a204d554c495f4f564552464c4f5700000000000000604482015290519081900360640190fd5b60008312610838578061083d565b806000035b949350505050565b61084d610cf1565b600082158061087357505082516001600160e01b03168281029083828161087057fe5b04145b6108c4576040805162461bcd60e51b815260206004820152601860248201527f4669786564506f696e743a204d554c5f4f564552464c4f570000000000000000604482015290519081900360640190fd5b60408051602081019091529081529392505050565b6108e1610cf1565b50604080516020810190915260709190911b6dffffffffffffffffffffffffffff1916815290565b610911610cdf565b50604080516020810190915260709190911b7bffffffffffffffffffffffffffff000000000000000000000000000016815290565b61094e610cdf565b81516001600160e01b03166109aa576040805162461bcd60e51b815260206004820152601d60248201527f4669786564506f696e743a204449565f42595f5a45524f5f4449565551000000604482015290519081900360640190fd5b815183516001600160e01b03908116911614156109d957506040805160208101909152600160701b8152610262565b825171ffffffffffffffffffffffffffffffffffff6001600160e01b0390911611610aa957815183516000916001600160e01b03169060701b6dffffffffffffffffffffffffffff191681610a2a57fe5b0490506001600160e01b03811115610a89576040805162461bcd60e51b815260206004820152601a60248201527f4669786564506f696e743a2044495655515f4f564552464c4f57000000000000604482015290519081900360640190fd5b6040518060200160405280826001600160e01b0316815250915050610262565b6000610ad4600160701b85600001516001600160e01b031685600001516001600160e01b0316610ba2565b90506001600160e01b03811115610b32576040805162461bcd60e51b815260206004820152601a60248201527f4669786564506f696e743a2044495655515f4f564552464c4f57000000000000604482015290519081900360640190fd5b60408051602081019091526001600160e01b0390911681529392505050565b60006003821115610b94575080600160028204015b81811015610b8e57809150600281828581610b7d57fe5b040181610b8657fe5b049050610b66565b50610229565b811561022957506001919050565b6000806000610bb18686610c42565b9150915060008480610bbf57fe5b868809905082811115610bd3576001820391505b8083039250848210610c2c576040805162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610c37838387610c6f565b979650505050505050565b6000808060001984860990508385029250828103915082811015610c67576001820391505b509250929050565b60008181038216808381610c7f57fe5b049250808581610c8b57fe5b049450808160000381610c9a57fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b60408051602081019091526000815290565b6040518060200160405280600081525090565b600060208284031215610d15578081fd5b50919050565b80356dffffffffffffffffffffffffffff8116811461022957600080fd5b600060208284031215610d4a578081fd5b61025f8383610d04565b60008060408385031215610d66578081fd5b610d708484610d04565b946020939093013593505050565b60008060408385031215610d90578182fd5b610d9a8484610d04565b9150610da98460208501610d04565b90509250929050565b60008060408385031215610d66578182fd5b600060208284031215610dd5578081fd5b6040516020810181811067ffffffffffffffff82111715610df257fe5b60405282356001600160e01b0381168114610e0b578283fd5b81529392505050565b600060208284031215610e25578081fd5b6040516020810181811067ffffffffffffffff82111715610e4257fe5b6040529135825250919050565b600060208284031215610e60578081fd5b61025f82610d1b565b60008060408385031215610e7b578182fd5b610e8483610d1b565b9150610da960208401610d1b565b600060208284031215610ea3578081fd5b813571ffffffffffffffffffffffffffffffffffff81168114610ec4578182fd5b9392505050565b90815260200190565b90516001600160e01b0316815260200190565b9051815260200190565b6dffffffffffffffffffffffffffff91909116815260200190565b71ffffffffffffffffffffffffffffffffffff9190911681526020019056fe4669786564506f696e743a204449565f42595f5a45524f5f5245434950524f43414c5f4f525f4f564552464c4f57a2646970667358221220bb3099f1e956ee2f79cdec73c4147ac641305cbe897340d226039efdc01cf59a64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF8F 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 0x89258451 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xCA2D0299 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xCA2D0299 EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0xCA74FCC0 EQ PUSH2 0x1E1 JUMPI DUP1 PUSH4 0xD993D379 EQ PUSH2 0x1F4 JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x89258451 EQ PUSH2 0x17B JUMPI DUP1 PUSH4 0xAF35B769 EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0xC814E314 EQ PUSH2 0x1BB JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x4FD04A40 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x4FD04A40 EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0x5A606689 EQ PUSH2 0x148 JUMPI DUP1 PUSH4 0x5F9F4C3B EQ PUSH2 0x15B JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x31F92B13 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x3F1626C8 EQ PUSH2 0x102 JUMPI DUP1 PUSH4 0x4DE4CF92 EQ PUSH2 0x115 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0xE7 CALLDATASIZE PUSH1 0x4 PUSH2 0xD39 JUMP JUMPDEST PUSH2 0x207 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0xED4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEC PUSH2 0x110 CALLDATASIZE PUSH1 0x4 PUSH2 0xD39 JUMP JUMPDEST PUSH2 0x22E JUMP JUMPDEST PUSH2 0xEC PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0xE69 JUMP JUMPDEST PUSH2 0x24D JUMP JUMPDEST PUSH2 0x13B PUSH2 0x136 CALLDATASIZE PUSH1 0x4 PUSH2 0xD39 JUMP JUMPDEST PUSH2 0x268 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0xEF1 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x156 CALLDATASIZE PUSH1 0x4 PUSH2 0xD7E JUMP JUMPDEST PUSH2 0x281 JUMP JUMPDEST PUSH2 0x16E PUSH2 0x169 CALLDATASIZE PUSH1 0x4 PUSH2 0xD39 JUMP JUMPDEST PUSH2 0x2AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0xF0C JUMP JUMPDEST PUSH2 0x18E PUSH2 0x189 CALLDATASIZE PUSH1 0x4 PUSH2 0xD54 JUMP JUMPDEST PUSH2 0x2C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0xECB JUMP JUMPDEST PUSH2 0x1AE PUSH2 0x1A9 CALLDATASIZE PUSH1 0x4 PUSH2 0xDB2 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0xEE7 JUMP JUMPDEST PUSH2 0x1AE PUSH2 0x1C9 CALLDATASIZE PUSH1 0x4 PUSH2 0xE92 JUMP JUMPDEST PUSH2 0x302 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x1DC CALLDATASIZE PUSH1 0x4 PUSH2 0xE4F JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x1EF CALLDATASIZE PUSH1 0x4 PUSH2 0xD7E JUMP JUMPDEST PUSH2 0x324 JUMP JUMPDEST PUSH2 0x18E PUSH2 0x202 CALLDATASIZE PUSH1 0x4 PUSH2 0xD7E JUMP JUMPDEST PUSH2 0x352 JUMP JUMPDEST PUSH2 0x20F PUSH2 0xCDF JUMP JUMPDEST PUSH2 0x226 PUSH2 0x221 CALLDATASIZE DUP5 SWAP1 SUB DUP5 ADD DUP5 PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x384 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x236 PUSH2 0xCDF JUMP JUMPDEST PUSH2 0x226 PUSH2 0x248 CALLDATASIZE DUP5 SWAP1 SUB DUP5 ADD DUP5 PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x411 JUMP JUMPDEST PUSH2 0x255 PUSH2 0xCDF JUMP JUMPDEST PUSH2 0x25F DUP4 DUP4 PUSH2 0x50B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x226 PUSH2 0x27C CALLDATASIZE DUP5 SWAP1 SUB DUP5 ADD DUP5 PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x5D4 JUMP JUMPDEST PUSH2 0x289 PUSH2 0xCDF JUMP JUMPDEST PUSH2 0x25F PUSH2 0x29B CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x2AA CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x5EB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x226 PUSH2 0x2C3 CALLDATASIZE DUP5 SWAP1 SUB DUP5 ADD DUP5 PUSH2 0xE14 JUMP JUMPDEST PUSH2 0x798 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25F PUSH2 0x2DC CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0xDC4 JUMP JUMPDEST DUP4 PUSH2 0x79F JUMP JUMPDEST PUSH2 0x2EA PUSH2 0xCF1 JUMP JUMPDEST PUSH2 0x25F PUSH2 0x2FC CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0xDC4 JUMP JUMPDEST DUP4 PUSH2 0x845 JUMP JUMPDEST PUSH2 0x30A PUSH2 0xCF1 JUMP JUMPDEST PUSH2 0x226 DUP3 PUSH2 0x8D9 JUMP JUMPDEST PUSH2 0x31B PUSH2 0xCDF JUMP JUMPDEST PUSH2 0x226 DUP3 PUSH2 0x909 JUMP JUMPDEST PUSH2 0x32C PUSH2 0xCDF JUMP JUMPDEST PUSH2 0x25F PUSH2 0x33E CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x34D CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x946 JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x379 PUSH2 0x36A CALLDATASIZE DUP7 SWAP1 SUB DUP7 ADD DUP7 PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x34D CALLDATASIZE DUP7 SWAP1 SUB DUP7 ADD DUP7 PUSH2 0xDC4 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x38C PUSH2 0xCDF JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND GT PUSH2 0x3D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF2C PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0xE0 SHL DUP2 PUSH2 0x3FD JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x419 PUSH2 0xCDF JUMP JUMPDEST DUP2 MLOAD PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP2 AND GT PUSH2 0x475 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x463 PUSH1 0x70 DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 SHL PUSH2 0xB51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 MSTORE SWAP1 POP PUSH2 0x229 JUMP JUMPDEST PUSH1 0x20 JUMPDEST PUSH1 0x70 DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0x4BC JUMPI DUP3 MLOAD PUSH1 0x1 PUSH2 0xFFFF PUSH1 0x1 NOT PUSH1 0xFF DUP6 AND PUSH2 0x100 SUB ADD AND SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP2 AND LT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x2 ADD PUSH2 0x4B7 JUMP JUMPDEST PUSH2 0x4BC JUMP JUMPDEST PUSH2 0x478 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP4 PUSH1 0x70 SUB PUSH1 0xFF AND DUP2 PUSH2 0x4D7 JUMPI INVALID JUMPDEST DIV PUSH1 0xFF AND PUSH2 0x4F7 DUP5 PUSH1 0xFF AND DUP8 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 SHL PUSH2 0xB51 JUMP JUMPDEST SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x513 PUSH2 0xCDF JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT PUSH2 0x578 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A204449565F42595F5A45524F5F4652414354494F4E PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 PUSH1 0x70 DUP8 SWAP1 SHL AND DUP2 PUSH2 0x5BF JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE POP SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST MLOAD PUSH1 0x70 SHR PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x5F3 PUSH2 0xCDF JUMP JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND ISZERO DUP1 PUSH2 0x612 JUMPI POP DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND ISZERO JUMPDEST ISZERO PUSH2 0x62C JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x262 JUMP JUMPDEST DUP3 MLOAD DUP3 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x70 DUP4 DUP2 SHR DUP3 AND SWAP4 DUP3 AND SWAP3 SWAP1 DUP2 SWAP1 SHR DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP3 DUP6 MUL SWAP1 DUP3 DUP6 MUL SWAP1 DUP4 DUP8 MUL SWAP1 DUP6 DUP8 MUL SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP6 AND GT ISZERO PUSH2 0x6C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A204D554C55515F4F564552464C4F575F5550504552 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x70 PUSH1 0xFF AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x70 PUSH1 0xFF AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND ADD ADD ADD SWAP1 POP PUSH1 0x0 NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 GT ISZERO PUSH2 0x771 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A204D554C55515F4F564552464C4F575F53554D0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST MLOAD PUSH1 0x70 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7D0 DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x0 DUP6 SLT PUSH2 0x7C1 JUMPI DUP5 PUSH2 0x7C6 JUMP JUMPDEST DUP5 PUSH1 0x0 SUB JUMPDEST PUSH1 0x1 PUSH1 0x70 SHL PUSH2 0xBA2 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0xFF SHL DUP2 LT PUSH2 0x82A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A204D554C495F4F564552464C4F5700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 SLT PUSH2 0x838 JUMPI DUP1 PUSH2 0x83D JUMP JUMPDEST DUP1 PUSH1 0x0 SUB JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x84D PUSH2 0xCF1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x873 JUMPI POP POP DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP3 DUP2 MUL SWAP1 DUP4 DUP3 DUP2 PUSH2 0x870 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x8C4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A204D554C5F4F564552464C4F570000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x8E1 PUSH2 0xCF1 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x70 SWAP2 SWAP1 SWAP2 SHL PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x911 PUSH2 0xCDF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x70 SWAP2 SWAP1 SWAP2 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x94E PUSH2 0xCDF JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH2 0x9AA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A204449565F42595F5A45524F5F4449565551000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x9D9 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x70 SHL DUP2 MSTORE PUSH2 0x262 JUMP JUMPDEST DUP3 MLOAD PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP2 AND GT PUSH2 0xAA9 JUMPI DUP2 MLOAD DUP4 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 PUSH1 0x70 SHL PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH2 0xA2A JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 GT ISZERO PUSH2 0xA89 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A2044495655515F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE POP SWAP2 POP POP PUSH2 0x262 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAD4 PUSH1 0x1 PUSH1 0x70 SHL DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH2 0xBA2 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 GT ISZERO PUSH2 0xB32 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A2044495655515F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0xB94 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x2 DUP3 DIV ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB8E JUMPI DUP1 SWAP2 POP PUSH1 0x2 DUP2 DUP3 DUP6 DUP2 PUSH2 0xB7D JUMPI INVALID JUMPDEST DIV ADD DUP2 PUSH2 0xB86 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0xB66 JUMP JUMPDEST POP PUSH2 0x229 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x229 JUMPI POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xBB1 DUP7 DUP7 PUSH2 0xC42 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0xBBF JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0xBD3 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST DUP1 DUP4 SUB SWAP3 POP DUP5 DUP3 LT PUSH2 0xC2C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xC37 DUP4 DUP4 DUP8 PUSH2 0xC6F JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0xC67 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0xC7F JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0xC8B JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0xC9A JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD15 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD4A JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x25F DUP4 DUP4 PUSH2 0xD04 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD66 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xD70 DUP5 DUP5 PUSH2 0xD04 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD90 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xD9A DUP5 DUP5 PUSH2 0xD04 JUMP JUMPDEST SWAP2 POP PUSH2 0xDA9 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xD04 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD66 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDD5 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xDF2 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xE0B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE25 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xE42 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 CALLDATALOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE60 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x25F DUP3 PUSH2 0xD1B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE7B JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xE84 DUP4 PUSH2 0xD1B JUMP JUMPDEST SWAP2 POP PUSH2 0xDA9 PUSH1 0x20 DUP5 ADD PUSH2 0xD1B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEA3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xEC4 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID CHAINID PUSH10 0x786564506F696E743A20 DIFFICULTY 0x49 JUMP 0x5F TIMESTAMP MSIZE 0x5F GAS GASLIMIT MSTORE 0x4F 0x5F MSTORE GASLIMIT NUMBER 0x49 POP MSTORE 0x4F NUMBER COINBASE 0x4C 0x5F 0x4F MSTORE 0x5F 0x4F JUMP GASLIMIT MSTORE CHAINID 0x4C 0x4F JUMPI LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB ADDRESS SWAP10 CALL 0xE9 JUMP 0xEE 0x2F PUSH26 0xCDEC73C4147AC641305CBE897340D226039EFDC01CF59A64736F PUSH13 0x63430007060033000000000000 ","sourceMap":"152:2186:132:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:5173:178","statements":[{"nodeType":"YulBlock","src":"6:3:178","statements":[]},{"body":{"nodeType":"YulBlock","src":"89:93:178","statements":[{"body":{"nodeType":"YulBlock","src":"128:24:178","statements":[{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"137:5:178"},{"name":"value","nodeType":"YulIdentifier","src":"144:5:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"130:6:178"},"nodeType":"YulFunctionCall","src":"130:20:178"},"nodeType":"YulExpressionStatement","src":"130:20:178"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"110:3:178"},{"name":"offset","nodeType":"YulIdentifier","src":"115:6:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"106:3:178"},"nodeType":"YulFunctionCall","src":"106:16:178"},{"kind":"number","nodeType":"YulLiteral","src":"124:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"102:3:178"},"nodeType":"YulFunctionCall","src":"102:25:178"},"nodeType":"YulIf","src":"99:2:178"},{"nodeType":"YulAssignment","src":"161:15:178","value":{"name":"offset","nodeType":"YulIdentifier","src":"170:6:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"161:5:178"}]}]},"name":"abi_decode_t_struct$_uq112x112_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"63:6:178","type":""},{"name":"end","nodeType":"YulTypedName","src":"71:3:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"79:5:178","type":""}],"src":"14:168:178"},{"body":{"nodeType":"YulBlock","src":"238:135:178","statements":[{"nodeType":"YulAssignment","src":"248:29:178","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"270:6:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"257:12:178"},"nodeType":"YulFunctionCall","src":"257:20:178"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"248:5:178"}]},{"body":{"nodeType":"YulBlock","src":"351:16:178","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"360:1:178","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"363:1:178","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"353:6:178"},"nodeType":"YulFunctionCall","src":"353:12:178"},"nodeType":"YulExpressionStatement","src":"353:12:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"299:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"310:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"317:30:178","type":"","value":"0xffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"306:3:178"},"nodeType":"YulFunctionCall","src":"306:42:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"296:2:178"},"nodeType":"YulFunctionCall","src":"296:53:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"289:6:178"},"nodeType":"YulFunctionCall","src":"289:61:178"},"nodeType":"YulIf","src":"286:2:178"}]},"name":"abi_decode_t_uint112","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"217:6:178","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"228:5:178","type":""}],"src":"187:186:178"},{"body":{"nodeType":"YulBlock","src":"478:156:178","statements":[{"body":{"nodeType":"YulBlock","src":"524:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"533:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"541:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"526:6:178"},"nodeType":"YulFunctionCall","src":"526:22:178"},"nodeType":"YulExpressionStatement","src":"526:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"499:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"508:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"495:3:178"},"nodeType":"YulFunctionCall","src":"495:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"520:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"491:3:178"},"nodeType":"YulFunctionCall","src":"491:32:178"},"nodeType":"YulIf","src":"488:2:178"},{"nodeType":"YulAssignment","src":"559:69:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"609:9:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"620:7:178"}],"functionName":{"name":"abi_decode_t_struct$_uq112x112_calldata","nodeType":"YulIdentifier","src":"569:39:178"},"nodeType":"YulFunctionCall","src":"569:59:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"559:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_uq112x112_$22770_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"444:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"455:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"467:6:178","type":""}],"src":"378:256:178"},{"body":{"nodeType":"YulBlock","src":"755:207:178","statements":[{"body":{"nodeType":"YulBlock","src":"801:26:178","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"810:6:178"},{"name":"value1","nodeType":"YulIdentifier","src":"818:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"803:6:178"},"nodeType":"YulFunctionCall","src":"803:22:178"},"nodeType":"YulExpressionStatement","src":"803:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"776:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"785:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"772:3:178"},"nodeType":"YulFunctionCall","src":"772:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"797:2:178","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"768:3:178"},"nodeType":"YulFunctionCall","src":"768:32:178"},"nodeType":"YulIf","src":"765:2:178"},{"nodeType":"YulAssignment","src":"836:69:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"886:9:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"897:7:178"}],"functionName":{"name":"abi_decode_t_struct$_uq112x112_calldata","nodeType":"YulIdentifier","src":"846:39:178"},"nodeType":"YulFunctionCall","src":"846:59:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"836:6:178"}]},{"nodeType":"YulAssignment","src":"914:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"941:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"952:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"937:3:178"},"nodeType":"YulFunctionCall","src":"937:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"924:12:178"},"nodeType":"YulFunctionCall","src":"924:32:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"914:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_uq112x112_$22770_calldata_ptrt_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"713:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"724:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"736:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"744:6:178","type":""}],"src":"639:323:178"},{"body":{"nodeType":"YulBlock","src":"1114:243:178","statements":[{"body":{"nodeType":"YulBlock","src":"1160:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1169:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1177:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1162:6:178"},"nodeType":"YulFunctionCall","src":"1162:22:178"},"nodeType":"YulExpressionStatement","src":"1162:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1135:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"1144:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1131:3:178"},"nodeType":"YulFunctionCall","src":"1131:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"1156:2:178","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1127:3:178"},"nodeType":"YulFunctionCall","src":"1127:32:178"},"nodeType":"YulIf","src":"1124:2:178"},{"nodeType":"YulAssignment","src":"1195:69:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1245:9:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1256:7:178"}],"functionName":{"name":"abi_decode_t_struct$_uq112x112_calldata","nodeType":"YulIdentifier","src":"1205:39:178"},"nodeType":"YulFunctionCall","src":"1205:59:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1195:6:178"}]},{"nodeType":"YulAssignment","src":"1273:78:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1327:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1338:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1323:3:178"},"nodeType":"YulFunctionCall","src":"1323:18:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1343:7:178"}],"functionName":{"name":"abi_decode_t_struct$_uq112x112_calldata","nodeType":"YulIdentifier","src":"1283:39:178"},"nodeType":"YulFunctionCall","src":"1283:68:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1273:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_uq112x112_$22770_calldata_ptrt_struct$_uq112x112_$22770_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1072:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1083:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1095:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1103:6:178","type":""}],"src":"967:390:178"},{"body":{"nodeType":"YulBlock","src":"1479:207:178","statements":[{"body":{"nodeType":"YulBlock","src":"1525:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1534:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1542:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1527:6:178"},"nodeType":"YulFunctionCall","src":"1527:22:178"},"nodeType":"YulExpressionStatement","src":"1527:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1500:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"1509:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1496:3:178"},"nodeType":"YulFunctionCall","src":"1496:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"1521:2:178","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1492:3:178"},"nodeType":"YulFunctionCall","src":"1492:32:178"},"nodeType":"YulIf","src":"1489:2:178"},{"nodeType":"YulAssignment","src":"1560:69:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1610:9:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1621:7:178"}],"functionName":{"name":"abi_decode_t_struct$_uq112x112_calldata","nodeType":"YulIdentifier","src":"1570:39:178"},"nodeType":"YulFunctionCall","src":"1570:59:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1560:6:178"}]},{"nodeType":"YulAssignment","src":"1638:42:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1665:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"1676:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1661:3:178"},"nodeType":"YulFunctionCall","src":"1661:18:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1648:12:178"},"nodeType":"YulFunctionCall","src":"1648:32:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1638:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_uq112x112_$22770_calldata_ptrt_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1437:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1448:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1460:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1468:6:178","type":""}],"src":"1362:324:178"},{"body":{"nodeType":"YulBlock","src":"1789:499:178","statements":[{"body":{"nodeType":"YulBlock","src":"1835:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1844:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"1852:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1837:6:178"},"nodeType":"YulFunctionCall","src":"1837:22:178"},"nodeType":"YulExpressionStatement","src":"1837:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1810:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"1819:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1806:3:178"},"nodeType":"YulFunctionCall","src":"1806:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"1831:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1802:3:178"},"nodeType":"YulFunctionCall","src":"1802:32:178"},"nodeType":"YulIf","src":"1799:2:178"},{"nodeType":"YulVariableDeclaration","src":"1870:23:178","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1890:2:178","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1884:5:178"},"nodeType":"YulFunctionCall","src":"1884:9:178"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1874:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1902:33:178","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1924:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"1932:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1920:3:178"},"nodeType":"YulFunctionCall","src":"1920:15:178"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1906:10:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2010:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"2012:7:178"},"nodeType":"YulFunctionCall","src":"2012:9:178"},"nodeType":"YulExpressionStatement","src":"2012:9:178"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1953:10:178"},{"kind":"number","nodeType":"YulLiteral","src":"1965:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1950:2:178"},"nodeType":"YulFunctionCall","src":"1950:34:178"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1989:10:178"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2001:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1986:2:178"},"nodeType":"YulFunctionCall","src":"1986:22:178"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1947:2:178"},"nodeType":"YulFunctionCall","src":"1947:62:178"},"nodeType":"YulIf","src":"1944:2:178"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2039:2:178","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2043:10:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2032:6:178"},"nodeType":"YulFunctionCall","src":"2032:22:178"},"nodeType":"YulExpressionStatement","src":"2032:22:178"},{"nodeType":"YulVariableDeclaration","src":"2063:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2089:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2076:12:178"},"nodeType":"YulFunctionCall","src":"2076:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2067:5:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2201:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2210:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2218:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2203:6:178"},"nodeType":"YulFunctionCall","src":"2203:22:178"},"nodeType":"YulExpressionStatement","src":"2203:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2121:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2132:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"2139:58:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2128:3:178"},"nodeType":"YulFunctionCall","src":"2128:70:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2118:2:178"},"nodeType":"YulFunctionCall","src":"2118:81:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2111:6:178"},"nodeType":"YulFunctionCall","src":"2111:89:178"},"nodeType":"YulIf","src":"2108:2:178"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2243:6:178"},{"name":"value","nodeType":"YulIdentifier","src":"2251:5:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2236:6:178"},"nodeType":"YulFunctionCall","src":"2236:21:178"},"nodeType":"YulExpressionStatement","src":"2236:21:178"},{"nodeType":"YulAssignment","src":"2266:16:178","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"2276:6:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2266:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_uq112x112_$22770_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1755:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1766:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1778:6:178","type":""}],"src":"1691:597:178"},{"body":{"nodeType":"YulBlock","src":"2393:156:178","statements":[{"body":{"nodeType":"YulBlock","src":"2439:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2448:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2456:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2441:6:178"},"nodeType":"YulFunctionCall","src":"2441:22:178"},"nodeType":"YulExpressionStatement","src":"2441:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2414:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"2423:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2410:3:178"},"nodeType":"YulFunctionCall","src":"2410:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"2435:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2406:3:178"},"nodeType":"YulFunctionCall","src":"2406:32:178"},"nodeType":"YulIf","src":"2403:2:178"},{"nodeType":"YulAssignment","src":"2474:69:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2524:9:178"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2535:7:178"}],"functionName":{"name":"abi_decode_t_struct$_uq112x112_calldata","nodeType":"YulIdentifier","src":"2484:39:178"},"nodeType":"YulFunctionCall","src":"2484:59:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2474:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_uq144x112_$22773_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2359:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2370:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2382:6:178","type":""}],"src":"2293:256:178"},{"body":{"nodeType":"YulBlock","src":"2652:344:178","statements":[{"body":{"nodeType":"YulBlock","src":"2698:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2707:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"2715:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2700:6:178"},"nodeType":"YulFunctionCall","src":"2700:22:178"},"nodeType":"YulExpressionStatement","src":"2700:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2673:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"2682:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2669:3:178"},"nodeType":"YulFunctionCall","src":"2669:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"2694:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2665:3:178"},"nodeType":"YulFunctionCall","src":"2665:32:178"},"nodeType":"YulIf","src":"2662:2:178"},{"nodeType":"YulVariableDeclaration","src":"2733:23:178","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2753:2:178","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2747:5:178"},"nodeType":"YulFunctionCall","src":"2747:9:178"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"2737:6:178","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2765:33:178","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2787:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"2795:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2783:3:178"},"nodeType":"YulFunctionCall","src":"2783:15:178"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"2769:10:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"2873:13:178","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"2875:7:178"},"nodeType":"YulFunctionCall","src":"2875:9:178"},"nodeType":"YulExpressionStatement","src":"2875:9:178"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2816:10:178"},{"kind":"number","nodeType":"YulLiteral","src":"2828:18:178","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2813:2:178"},"nodeType":"YulFunctionCall","src":"2813:34:178"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2852:10:178"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2864:6:178"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2849:2:178"},"nodeType":"YulFunctionCall","src":"2849:22:178"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2810:2:178"},"nodeType":"YulFunctionCall","src":"2810:62:178"},"nodeType":"YulIf","src":"2807:2:178"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2902:2:178","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2906:10:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2895:6:178"},"nodeType":"YulFunctionCall","src":"2895:22:178"},"nodeType":"YulExpressionStatement","src":"2895:22:178"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2933:6:178"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2954:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2941:12:178"},"nodeType":"YulFunctionCall","src":"2941:23:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2926:6:178"},"nodeType":"YulFunctionCall","src":"2926:39:178"},"nodeType":"YulExpressionStatement","src":"2926:39:178"},{"nodeType":"YulAssignment","src":"2974:16:178","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"2984:6:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2974:6:178"}]}]},"name":"abi_decode_tuple_t_struct$_uq144x112_$22773_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2618:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2629:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2641:6:178","type":""}],"src":"2554:442:178"},{"body":{"nodeType":"YulBlock","src":"3071:128:178","statements":[{"body":{"nodeType":"YulBlock","src":"3117:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3126:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3134:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3119:6:178"},"nodeType":"YulFunctionCall","src":"3119:22:178"},"nodeType":"YulExpressionStatement","src":"3119:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3092:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"3101:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3088:3:178"},"nodeType":"YulFunctionCall","src":"3088:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"3113:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3084:3:178"},"nodeType":"YulFunctionCall","src":"3084:32:178"},"nodeType":"YulIf","src":"3081:2:178"},{"nodeType":"YulAssignment","src":"3152:41:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3183:9:178"}],"functionName":{"name":"abi_decode_t_uint112","nodeType":"YulIdentifier","src":"3162:20:178"},"nodeType":"YulFunctionCall","src":"3162:31:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3152:6:178"}]}]},"name":"abi_decode_tuple_t_uint112","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3037:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3048:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3060:6:178","type":""}],"src":"3001:198:178"},{"body":{"nodeType":"YulBlock","src":"3291:187:178","statements":[{"body":{"nodeType":"YulBlock","src":"3337:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3346:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3354:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3339:6:178"},"nodeType":"YulFunctionCall","src":"3339:22:178"},"nodeType":"YulExpressionStatement","src":"3339:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3312:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"3321:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3308:3:178"},"nodeType":"YulFunctionCall","src":"3308:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"3333:2:178","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3304:3:178"},"nodeType":"YulFunctionCall","src":"3304:32:178"},"nodeType":"YulIf","src":"3301:2:178"},{"nodeType":"YulAssignment","src":"3372:41:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3403:9:178"}],"functionName":{"name":"abi_decode_t_uint112","nodeType":"YulIdentifier","src":"3382:20:178"},"nodeType":"YulFunctionCall","src":"3382:31:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3372:6:178"}]},{"nodeType":"YulAssignment","src":"3422:50:178","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3457:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3468:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3453:3:178"},"nodeType":"YulFunctionCall","src":"3453:18:178"}],"functionName":{"name":"abi_decode_t_uint112","nodeType":"YulIdentifier","src":"3432:20:178"},"nodeType":"YulFunctionCall","src":"3432:40:178"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3422:6:178"}]}]},"name":"abi_decode_tuple_t_uint112t_uint112","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3249:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3260:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3272:6:178","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3280:6:178","type":""}],"src":"3204:274:178"},{"body":{"nodeType":"YulBlock","src":"3553:255:178","statements":[{"body":{"nodeType":"YulBlock","src":"3599:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3608:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3616:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3601:6:178"},"nodeType":"YulFunctionCall","src":"3601:22:178"},"nodeType":"YulExpressionStatement","src":"3601:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3574:7:178"},{"name":"headStart","nodeType":"YulIdentifier","src":"3583:9:178"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3570:3:178"},"nodeType":"YulFunctionCall","src":"3570:23:178"},{"kind":"number","nodeType":"YulLiteral","src":"3595:2:178","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3566:3:178"},"nodeType":"YulFunctionCall","src":"3566:32:178"},"nodeType":"YulIf","src":"3563:2:178"},{"nodeType":"YulVariableDeclaration","src":"3634:36:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3660:9:178"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3647:12:178"},"nodeType":"YulFunctionCall","src":"3647:23:178"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3638:5:178","type":""}]},{"body":{"nodeType":"YulBlock","src":"3752:26:178","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3761:6:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3769:6:178"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3754:6:178"},"nodeType":"YulFunctionCall","src":"3754:22:178"},"nodeType":"YulExpressionStatement","src":"3754:22:178"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3692:5:178"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3703:5:178"},{"kind":"number","nodeType":"YulLiteral","src":"3710:38:178","type":"","value":"0xffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3699:3:178"},"nodeType":"YulFunctionCall","src":"3699:50:178"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3689:2:178"},"nodeType":"YulFunctionCall","src":"3689:61:178"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3682:6:178"},"nodeType":"YulFunctionCall","src":"3682:69:178"},"nodeType":"YulIf","src":"3679:2:178"},{"nodeType":"YulAssignment","src":"3787:15:178","value":{"name":"value","nodeType":"YulIdentifier","src":"3797:5:178"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3787:6:178"}]}]},"name":"abi_decode_tuple_t_uint144","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3519:9:178","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3530:7:178","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3542:6:178","type":""}],"src":"3483:325:178"},{"body":{"nodeType":"YulBlock","src":"3912:76:178","statements":[{"nodeType":"YulAssignment","src":"3922:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3934:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"3945:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3930:3:178"},"nodeType":"YulFunctionCall","src":"3930:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3922:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3964:9:178"},{"name":"value0","nodeType":"YulIdentifier","src":"3975:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3957:6:178"},"nodeType":"YulFunctionCall","src":"3957:25:178"},"nodeType":"YulExpressionStatement","src":"3957:25:178"}]},"name":"abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3881:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3892:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3903:4:178","type":""}],"src":"3813:175:178"},{"body":{"nodeType":"YulBlock","src":"4150:148:178","statements":[{"nodeType":"YulAssignment","src":"4160:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4172:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4183:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4168:3:178"},"nodeType":"YulFunctionCall","src":"4168:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4160:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4202:9:178"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4223:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4217:5:178"},"nodeType":"YulFunctionCall","src":"4217:13:178"},{"kind":"number","nodeType":"YulLiteral","src":"4232:58:178","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4213:3:178"},"nodeType":"YulFunctionCall","src":"4213:78:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4195:6:178"},"nodeType":"YulFunctionCall","src":"4195:97:178"},"nodeType":"YulExpressionStatement","src":"4195:97:178"}]},"name":"abi_encode_tuple_t_struct$_uq112x112_$22770_memory_ptr__to_t_struct$_uq112x112_$22770_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4119:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4130:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4141:4:178","type":""}],"src":"3993:305:178"},{"body":{"nodeType":"YulBlock","src":"4460:83:178","statements":[{"nodeType":"YulAssignment","src":"4470:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4482:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4493:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4478:3:178"},"nodeType":"YulFunctionCall","src":"4478:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4470:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4512:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4529:6:178"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4523:5:178"},"nodeType":"YulFunctionCall","src":"4523:13:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4505:6:178"},"nodeType":"YulFunctionCall","src":"4505:32:178"},"nodeType":"YulExpressionStatement","src":"4505:32:178"}]},"name":"abi_encode_tuple_t_struct$_uq144x112_$22773_memory_ptr__to_t_struct$_uq144x112_$22773_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4429:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4440:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4451:4:178","type":""}],"src":"4303:240:178"},{"body":{"nodeType":"YulBlock","src":"4649:113:178","statements":[{"nodeType":"YulAssignment","src":"4659:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4671:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4682:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4667:3:178"},"nodeType":"YulFunctionCall","src":"4667:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4659:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4701:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4716:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"4724:30:178","type":"","value":"0xffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4712:3:178"},"nodeType":"YulFunctionCall","src":"4712:43:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4694:6:178"},"nodeType":"YulFunctionCall","src":"4694:62:178"},"nodeType":"YulExpressionStatement","src":"4694:62:178"}]},"name":"abi_encode_tuple_t_uint112__to_t_uint112__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4618:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4629:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4640:4:178","type":""}],"src":"4548:214:178"},{"body":{"nodeType":"YulBlock","src":"4868:121:178","statements":[{"nodeType":"YulAssignment","src":"4878:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4890:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"4901:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4886:3:178"},"nodeType":"YulFunctionCall","src":"4886:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4878:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4920:9:178"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4935:6:178"},{"kind":"number","nodeType":"YulLiteral","src":"4943:38:178","type":"","value":"0xffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4931:3:178"},"nodeType":"YulFunctionCall","src":"4931:51:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4913:6:178"},"nodeType":"YulFunctionCall","src":"4913:70:178"},"nodeType":"YulExpressionStatement","src":"4913:70:178"}]},"name":"abi_encode_tuple_t_uint144__to_t_uint144__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4837:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4848:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4859:4:178","type":""}],"src":"4767:222:178"},{"body":{"nodeType":"YulBlock","src":"5095:76:178","statements":[{"nodeType":"YulAssignment","src":"5105:26:178","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5117:9:178"},{"kind":"number","nodeType":"YulLiteral","src":"5128:2:178","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5113:3:178"},"nodeType":"YulFunctionCall","src":"5113:18:178"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5105:4:178"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5147:9:178"},{"name":"value0","nodeType":"YulIdentifier","src":"5158:6:178"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5140:6:178"},"nodeType":"YulFunctionCall","src":"5140:25:178"},"nodeType":"YulExpressionStatement","src":"5140:25:178"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5064:9:178","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5075:6:178","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5086:4:178","type":""}],"src":"4994:177:178"}]},"contents":"{\n    { }\n    function abi_decode_t_struct$_uq112x112_calldata(offset, end) -> value\n    {\n        if slt(sub(end, offset), 32) { revert(value, value) }\n        value := offset\n    }\n    function abi_decode_t_uint112(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_struct$_uq112x112_$22770_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := abi_decode_t_struct$_uq112x112_calldata(headStart, dataEnd)\n    }\n    function abi_decode_tuple_t_struct$_uq112x112_$22770_calldata_ptrt_int256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n        value0 := abi_decode_t_struct$_uq112x112_calldata(headStart, dataEnd)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_struct$_uq112x112_$22770_calldata_ptrt_struct$_uq112x112_$22770_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_struct$_uq112x112_calldata(headStart, dataEnd)\n        value1 := abi_decode_t_struct$_uq112x112_calldata(add(headStart, 32), dataEnd)\n    }\n    function abi_decode_tuple_t_struct$_uq112x112_$22770_calldata_ptrt_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_struct$_uq112x112_calldata(headStart, dataEnd)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_struct$_uq112x112_$22770_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 32)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff))) { revert(value0, value0) }\n        mstore(memPtr, value)\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_struct$_uq144x112_$22773_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := abi_decode_t_struct$_uq112x112_calldata(headStart, dataEnd)\n    }\n    function abi_decode_tuple_t_struct$_uq144x112_$22773_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 32)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, calldataload(headStart))\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_uint112(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := abi_decode_t_uint112(headStart)\n    }\n    function abi_decode_tuple_t_uint112t_uint112(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_uint112(headStart)\n        value1 := abi_decode_t_uint112(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint144(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, 0xffffffffffffffffffffffffffffffffffff))) { revert(value0, value0) }\n        value0 := value\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_struct$_uq112x112_$22770_memory_ptr__to_t_struct$_uq112x112_$22770_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(mload(value0), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_struct$_uq144x112_$22773_memory_ptr__to_t_struct$_uq144x112_$22773_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, mload(value0))\n    }\n    function abi_encode_tuple_t_uint112__to_t_uint112__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint144__to_t_uint144__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffff))\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}","id":178,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100d45760003560e01c80638925845111610081578063ca2d02991161005b578063ca2d0299146101ce578063ca74fcc0146101e1578063d993d379146101f4576100d4565b8063892584511461017b578063af35b7691461019b578063c814e314146101bb576100d4565b80634fd04a40116100b25780634fd04a40146101285780635a606689146101485780635f9f4c3b1461015b576100d4565b806331f92b13146100d95780633f1626c8146101025780634de4cf9214610115575b600080fd5b6100ec6100e7366004610d39565b610207565b6040516100f99190610ed4565b60405180910390f35b6100ec610110366004610d39565b61022e565b6100ec610123366004610e69565b61024d565b61013b610136366004610d39565b610268565b6040516100f99190610ef1565b6100ec610156366004610d7e565b610281565b61016e610169366004610d39565b6102af565b6040516100f99190610f0c565b61018e610189366004610d54565b6102c8565b6040516100f99190610ecb565b6101ae6101a9366004610db2565b6102e2565b6040516100f99190610ee7565b6101ae6101c9366004610e92565b610302565b6100ec6101dc366004610e4f565b610313565b6100ec6101ef366004610d7e565b610324565b61018e610202366004610d7e565b610352565b61020f610cdf565b61022661022136849003840184610dc4565b610384565b90505b919050565b610236610cdf565b61022661024836849003840184610dc4565b610411565b610255610cdf565b61025f838361050b565b90505b92915050565b600061022661027c36849003840184610dc4565b6105d4565b610289610cdf565b61025f61029b36859003850185610dc4565b6102aa36859003850185610dc4565b6105eb565b60006102266102c336849003840184610e14565b610798565b600061025f6102dc36859003850185610dc4565b8361079f565b6102ea610cf1565b61025f6102fc36859003850185610dc4565b83610845565b61030a610cf1565b610226826108d9565b61031b610cdf565b61022682610909565b61032c610cdf565b61025f61033e36859003850185610dc4565b61034d36859003850185610dc4565b610946565b6000805a905061037961036a36869003860186610dc4565b61034d36869003860186610dc4565b505a90039392505050565b61038c610cdf565b600182600001516001600160e01b0316116103d85760405162461bcd60e51b815260040180806020018281038252602e815260200180610f2c602e913960400191505060405180910390fd5b604051806020016040528083600001516001600160e01b0316600160e01b816103fd57fe5b046001600160e01b03168152509050919050565b610419610cdf565b815171ffffffffffffffffffffffffffffffffffff6001600160e01b0390911611610475576040518060200160405280610463607085600001516001600160e01b0316901b610b51565b6001600160e01b031690529050610229565b60205b60708160ff1610156104bc578251600161ffff60011960ff85166101000301161b6001600160e01b0390911610156104b2576002016104b7565b6104bc565b610478565b604051806020016040528060028360700360ff16816104d757fe5b0460ff166104f78460ff1687600001516001600160e01b0316901b610b51565b901b6001600160e01b031690529392505050565b610513610cdf565b6000826dffffffffffffffffffffffffffff1611610578576040805162461bcd60e51b815260206004820181905260248201527f4669786564506f696e743a204449565f42595f5a45524f5f4652414354494f4e604482015290519081900360640190fd5b6040805160208101909152806dffffffffffffffffffffffffffff84167bffffffffffffffffffffffffffff0000000000000000000000000000607087901b16816105bf57fe5b046001600160e01b0316815250905092915050565b5160701c6dffffffffffffffffffffffffffff1690565b6105f3610cdf565b82516001600160e01b03161580610612575081516001600160e01b0316155b1561062c5750604080516020810190915260008152610262565b825182516dffffffffffffffffffffffffffff607083811c8216938216929081901c82169190811690828502908285029083870290858702906001600160e01b03851611156106c2576040805162461bcd60e51b815260206004820181905260248201527f4669786564506f696e743a204d554c55515f4f564552464c4f575f5550504552604482015290519081900360640190fd5b6000607060ff16846001600160e01b0316901c6001600160e01b0316826001600160e01b0316846001600160e01b0316607060ff16886001600160e01b0316901b6001600160e01b031601010190506000196001600160e01b0316811115610771576040805162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a204d554c55515f4f564552464c4f575f53554d0000604482015290519081900360640190fd5b60408051602081019091526001600160e01b0390911681529b9a5050505050505050505050565b5160701c90565b6000806107d084600001516001600160e01b0316600085126107c157846107c6565b846000035b600160701b610ba2565b9050600160ff1b811061082a576040805162461bcd60e51b815260206004820152601960248201527f4669786564506f696e743a204d554c495f4f564552464c4f5700000000000000604482015290519081900360640190fd5b60008312610838578061083d565b806000035b949350505050565b61084d610cf1565b600082158061087357505082516001600160e01b03168281029083828161087057fe5b04145b6108c4576040805162461bcd60e51b815260206004820152601860248201527f4669786564506f696e743a204d554c5f4f564552464c4f570000000000000000604482015290519081900360640190fd5b60408051602081019091529081529392505050565b6108e1610cf1565b50604080516020810190915260709190911b6dffffffffffffffffffffffffffff1916815290565b610911610cdf565b50604080516020810190915260709190911b7bffffffffffffffffffffffffffff000000000000000000000000000016815290565b61094e610cdf565b81516001600160e01b03166109aa576040805162461bcd60e51b815260206004820152601d60248201527f4669786564506f696e743a204449565f42595f5a45524f5f4449565551000000604482015290519081900360640190fd5b815183516001600160e01b03908116911614156109d957506040805160208101909152600160701b8152610262565b825171ffffffffffffffffffffffffffffffffffff6001600160e01b0390911611610aa957815183516000916001600160e01b03169060701b6dffffffffffffffffffffffffffff191681610a2a57fe5b0490506001600160e01b03811115610a89576040805162461bcd60e51b815260206004820152601a60248201527f4669786564506f696e743a2044495655515f4f564552464c4f57000000000000604482015290519081900360640190fd5b6040518060200160405280826001600160e01b0316815250915050610262565b6000610ad4600160701b85600001516001600160e01b031685600001516001600160e01b0316610ba2565b90506001600160e01b03811115610b32576040805162461bcd60e51b815260206004820152601a60248201527f4669786564506f696e743a2044495655515f4f564552464c4f57000000000000604482015290519081900360640190fd5b60408051602081019091526001600160e01b0390911681529392505050565b60006003821115610b94575080600160028204015b81811015610b8e57809150600281828581610b7d57fe5b040181610b8657fe5b049050610b66565b50610229565b811561022957506001919050565b6000806000610bb18686610c42565b9150915060008480610bbf57fe5b868809905082811115610bd3576001820391505b8083039250848210610c2c576040805162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610c37838387610c6f565b979650505050505050565b6000808060001984860990508385029250828103915082811015610c67576001820391505b509250929050565b60008181038216808381610c7f57fe5b049250808581610c8b57fe5b049450808160000381610c9a57fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b60408051602081019091526000815290565b6040518060200160405280600081525090565b600060208284031215610d15578081fd5b50919050565b80356dffffffffffffffffffffffffffff8116811461022957600080fd5b600060208284031215610d4a578081fd5b61025f8383610d04565b60008060408385031215610d66578081fd5b610d708484610d04565b946020939093013593505050565b60008060408385031215610d90578182fd5b610d9a8484610d04565b9150610da98460208501610d04565b90509250929050565b60008060408385031215610d66578182fd5b600060208284031215610dd5578081fd5b6040516020810181811067ffffffffffffffff82111715610df257fe5b60405282356001600160e01b0381168114610e0b578283fd5b81529392505050565b600060208284031215610e25578081fd5b6040516020810181811067ffffffffffffffff82111715610e4257fe5b6040529135825250919050565b600060208284031215610e60578081fd5b61025f82610d1b565b60008060408385031215610e7b578182fd5b610e8483610d1b565b9150610da960208401610d1b565b600060208284031215610ea3578081fd5b813571ffffffffffffffffffffffffffffffffffff81168114610ec4578182fd5b9392505050565b90815260200190565b90516001600160e01b0316815260200190565b9051815260200190565b6dffffffffffffffffffffffffffff91909116815260200190565b71ffffffffffffffffffffffffffffffffffff9190911681526020019056fe4669786564506f696e743a204449565f42595f5a45524f5f5245434950524f43414c5f4f525f4f564552464c4f57a2646970667358221220bb3099f1e956ee2f79cdec73c4147ac641305cbe897340d226039efdc01cf59a64736f6c63430007060033","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 0x89258451 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xCA2D0299 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xCA2D0299 EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0xCA74FCC0 EQ PUSH2 0x1E1 JUMPI DUP1 PUSH4 0xD993D379 EQ PUSH2 0x1F4 JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x89258451 EQ PUSH2 0x17B JUMPI DUP1 PUSH4 0xAF35B769 EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0xC814E314 EQ PUSH2 0x1BB JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x4FD04A40 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x4FD04A40 EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0x5A606689 EQ PUSH2 0x148 JUMPI DUP1 PUSH4 0x5F9F4C3B EQ PUSH2 0x15B JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x31F92B13 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x3F1626C8 EQ PUSH2 0x102 JUMPI DUP1 PUSH4 0x4DE4CF92 EQ PUSH2 0x115 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0xE7 CALLDATASIZE PUSH1 0x4 PUSH2 0xD39 JUMP JUMPDEST PUSH2 0x207 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0xED4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEC PUSH2 0x110 CALLDATASIZE PUSH1 0x4 PUSH2 0xD39 JUMP JUMPDEST PUSH2 0x22E JUMP JUMPDEST PUSH2 0xEC PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0xE69 JUMP JUMPDEST PUSH2 0x24D JUMP JUMPDEST PUSH2 0x13B PUSH2 0x136 CALLDATASIZE PUSH1 0x4 PUSH2 0xD39 JUMP JUMPDEST PUSH2 0x268 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0xEF1 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x156 CALLDATASIZE PUSH1 0x4 PUSH2 0xD7E JUMP JUMPDEST PUSH2 0x281 JUMP JUMPDEST PUSH2 0x16E PUSH2 0x169 CALLDATASIZE PUSH1 0x4 PUSH2 0xD39 JUMP JUMPDEST PUSH2 0x2AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0xF0C JUMP JUMPDEST PUSH2 0x18E PUSH2 0x189 CALLDATASIZE PUSH1 0x4 PUSH2 0xD54 JUMP JUMPDEST PUSH2 0x2C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0xECB JUMP JUMPDEST PUSH2 0x1AE PUSH2 0x1A9 CALLDATASIZE PUSH1 0x4 PUSH2 0xDB2 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0xEE7 JUMP JUMPDEST PUSH2 0x1AE PUSH2 0x1C9 CALLDATASIZE PUSH1 0x4 PUSH2 0xE92 JUMP JUMPDEST PUSH2 0x302 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x1DC CALLDATASIZE PUSH1 0x4 PUSH2 0xE4F JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x1EF CALLDATASIZE PUSH1 0x4 PUSH2 0xD7E JUMP JUMPDEST PUSH2 0x324 JUMP JUMPDEST PUSH2 0x18E PUSH2 0x202 CALLDATASIZE PUSH1 0x4 PUSH2 0xD7E JUMP JUMPDEST PUSH2 0x352 JUMP JUMPDEST PUSH2 0x20F PUSH2 0xCDF JUMP JUMPDEST PUSH2 0x226 PUSH2 0x221 CALLDATASIZE DUP5 SWAP1 SUB DUP5 ADD DUP5 PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x384 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x236 PUSH2 0xCDF JUMP JUMPDEST PUSH2 0x226 PUSH2 0x248 CALLDATASIZE DUP5 SWAP1 SUB DUP5 ADD DUP5 PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x411 JUMP JUMPDEST PUSH2 0x255 PUSH2 0xCDF JUMP JUMPDEST PUSH2 0x25F DUP4 DUP4 PUSH2 0x50B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x226 PUSH2 0x27C CALLDATASIZE DUP5 SWAP1 SUB DUP5 ADD DUP5 PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x5D4 JUMP JUMPDEST PUSH2 0x289 PUSH2 0xCDF JUMP JUMPDEST PUSH2 0x25F PUSH2 0x29B CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x2AA CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x5EB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x226 PUSH2 0x2C3 CALLDATASIZE DUP5 SWAP1 SUB DUP5 ADD DUP5 PUSH2 0xE14 JUMP JUMPDEST PUSH2 0x798 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25F PUSH2 0x2DC CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0xDC4 JUMP JUMPDEST DUP4 PUSH2 0x79F JUMP JUMPDEST PUSH2 0x2EA PUSH2 0xCF1 JUMP JUMPDEST PUSH2 0x25F PUSH2 0x2FC CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0xDC4 JUMP JUMPDEST DUP4 PUSH2 0x845 JUMP JUMPDEST PUSH2 0x30A PUSH2 0xCF1 JUMP JUMPDEST PUSH2 0x226 DUP3 PUSH2 0x8D9 JUMP JUMPDEST PUSH2 0x31B PUSH2 0xCDF JUMP JUMPDEST PUSH2 0x226 DUP3 PUSH2 0x909 JUMP JUMPDEST PUSH2 0x32C PUSH2 0xCDF JUMP JUMPDEST PUSH2 0x25F PUSH2 0x33E CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x34D CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x946 JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x379 PUSH2 0x36A CALLDATASIZE DUP7 SWAP1 SUB DUP7 ADD DUP7 PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x34D CALLDATASIZE DUP7 SWAP1 SUB DUP7 ADD DUP7 PUSH2 0xDC4 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x38C PUSH2 0xCDF JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND GT PUSH2 0x3D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF2C PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0xE0 SHL DUP2 PUSH2 0x3FD JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x419 PUSH2 0xCDF JUMP JUMPDEST DUP2 MLOAD PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP2 AND GT PUSH2 0x475 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x463 PUSH1 0x70 DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 SHL PUSH2 0xB51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 MSTORE SWAP1 POP PUSH2 0x229 JUMP JUMPDEST PUSH1 0x20 JUMPDEST PUSH1 0x70 DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0x4BC JUMPI DUP3 MLOAD PUSH1 0x1 PUSH2 0xFFFF PUSH1 0x1 NOT PUSH1 0xFF DUP6 AND PUSH2 0x100 SUB ADD AND SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP2 AND LT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x2 ADD PUSH2 0x4B7 JUMP JUMPDEST PUSH2 0x4BC JUMP JUMPDEST PUSH2 0x478 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP4 PUSH1 0x70 SUB PUSH1 0xFF AND DUP2 PUSH2 0x4D7 JUMPI INVALID JUMPDEST DIV PUSH1 0xFF AND PUSH2 0x4F7 DUP5 PUSH1 0xFF AND DUP8 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 SHL PUSH2 0xB51 JUMP JUMPDEST SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x513 PUSH2 0xCDF JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT PUSH2 0x578 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A204449565F42595F5A45524F5F4652414354494F4E PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 PUSH1 0x70 DUP8 SWAP1 SHL AND DUP2 PUSH2 0x5BF JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE POP SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST MLOAD PUSH1 0x70 SHR PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x5F3 PUSH2 0xCDF JUMP JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND ISZERO DUP1 PUSH2 0x612 JUMPI POP DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND ISZERO JUMPDEST ISZERO PUSH2 0x62C JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x262 JUMP JUMPDEST DUP3 MLOAD DUP3 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x70 DUP4 DUP2 SHR DUP3 AND SWAP4 DUP3 AND SWAP3 SWAP1 DUP2 SWAP1 SHR DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP3 DUP6 MUL SWAP1 DUP3 DUP6 MUL SWAP1 DUP4 DUP8 MUL SWAP1 DUP6 DUP8 MUL SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP6 AND GT ISZERO PUSH2 0x6C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A204D554C55515F4F564552464C4F575F5550504552 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x70 PUSH1 0xFF AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x70 PUSH1 0xFF AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND ADD ADD ADD SWAP1 POP PUSH1 0x0 NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 GT ISZERO PUSH2 0x771 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A204D554C55515F4F564552464C4F575F53554D0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST MLOAD PUSH1 0x70 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7D0 DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x0 DUP6 SLT PUSH2 0x7C1 JUMPI DUP5 PUSH2 0x7C6 JUMP JUMPDEST DUP5 PUSH1 0x0 SUB JUMPDEST PUSH1 0x1 PUSH1 0x70 SHL PUSH2 0xBA2 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0xFF SHL DUP2 LT PUSH2 0x82A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A204D554C495F4F564552464C4F5700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 SLT PUSH2 0x838 JUMPI DUP1 PUSH2 0x83D JUMP JUMPDEST DUP1 PUSH1 0x0 SUB JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x84D PUSH2 0xCF1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x873 JUMPI POP POP DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP3 DUP2 MUL SWAP1 DUP4 DUP3 DUP2 PUSH2 0x870 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x8C4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A204D554C5F4F564552464C4F570000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x8E1 PUSH2 0xCF1 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x70 SWAP2 SWAP1 SWAP2 SHL PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x911 PUSH2 0xCDF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x70 SWAP2 SWAP1 SWAP2 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x94E PUSH2 0xCDF JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH2 0x9AA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A204449565F42595F5A45524F5F4449565551000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x9D9 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x70 SHL DUP2 MSTORE PUSH2 0x262 JUMP JUMPDEST DUP3 MLOAD PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP2 AND GT PUSH2 0xAA9 JUMPI DUP2 MLOAD DUP4 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 PUSH1 0x70 SHL PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH2 0xA2A JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 GT ISZERO PUSH2 0xA89 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A2044495655515F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE POP SWAP2 POP POP PUSH2 0x262 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAD4 PUSH1 0x1 PUSH1 0x70 SHL DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH2 0xBA2 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 GT ISZERO PUSH2 0xB32 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A2044495655515F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0xB94 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x2 DUP3 DIV ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB8E JUMPI DUP1 SWAP2 POP PUSH1 0x2 DUP2 DUP3 DUP6 DUP2 PUSH2 0xB7D JUMPI INVALID JUMPDEST DIV ADD DUP2 PUSH2 0xB86 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0xB66 JUMP JUMPDEST POP PUSH2 0x229 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x229 JUMPI POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xBB1 DUP7 DUP7 PUSH2 0xC42 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0xBBF JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0xBD3 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST DUP1 DUP4 SUB SWAP3 POP DUP5 DUP3 LT PUSH2 0xC2C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xC37 DUP4 DUP4 DUP8 PUSH2 0xC6F JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0xC67 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0xC7F JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0xC8B JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0xC9A JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD15 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD4A JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x25F DUP4 DUP4 PUSH2 0xD04 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD66 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xD70 DUP5 DUP5 PUSH2 0xD04 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD90 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xD9A DUP5 DUP5 PUSH2 0xD04 JUMP JUMPDEST SWAP2 POP PUSH2 0xDA9 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xD04 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD66 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDD5 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xDF2 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xE0B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE25 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xE42 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 CALLDATALOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE60 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x25F DUP3 PUSH2 0xD1B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE7B JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xE84 DUP4 PUSH2 0xD1B JUMP JUMPDEST SWAP2 POP PUSH2 0xDA9 PUSH1 0x20 DUP5 ADD PUSH2 0xD1B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEA3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xEC4 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID CHAINID PUSH10 0x786564506F696E743A20 DIFFICULTY 0x49 JUMP 0x5F TIMESTAMP MSIZE 0x5F GAS GASLIMIT MSTORE 0x4F 0x5F MSTORE GASLIMIT NUMBER 0x49 POP MSTORE 0x4F NUMBER COINBASE 0x4C 0x5F 0x4F MSTORE 0x5F 0x4F JUMP GASLIMIT MSTORE CHAINID 0x4C 0x4F JUMPI LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB ADDRESS SWAP10 CALL 0xE9 JUMP 0xEE 0x2F PUSH26 0xCDEC73C4147AC641305CBE897340D226039EFDC01CF59A64736F PUSH13 0x63430007060033000000000000 ","sourceMap":"152:2186:132:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2017:161;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2186:149;;;;;;:::i;:::-;;:::i;1830:179::-;;;;;;:::i;:::-;;:::i;455:133::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1061:227::-;;;;;;:::i;:::-;;:::i;596:139::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;912:141::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;743:161::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;316:131::-;;;;;;:::i;:::-;;:::i;183:125::-;;;;;;:::i;:::-;;:::i;1296:227::-;;;;;;:::i;:::-;;:::i;1531:291::-;;;;;;:::i;:::-;;:::i;2017:161::-;2096:27;;:::i;:::-;2143;;;;;;;;2165:4;2143:27;:::i;:::-;:21;:27::i;:::-;2136:34;;2017:161;;;;:::o;2186:149::-;2259:27;;:::i;:::-;2306:21;;;;;;;;2322:4;2306:21;:::i;:::-;:15;:21::i;1830:179::-;1911:27;;:::i;:::-;1958:43;1978:9;1989:11;1958:19;:43::i;:::-;1951:50;;1830:179;;;;;:::o;455:133::-;530:7;557:23;;;;;;;;575:4;557:23;:::i;:::-;:17;:23::i;1061:227::-;1199:27;;:::i;:::-;1251:29;;;;;;;;1268:4;1251:29;:::i;:::-;;;;;;;;1274:5;1251:29;:::i;:::-;:16;:29::i;596:139::-;674:7;701:26;;;;;;;;722:4;701:26;:::i;:::-;:20;:26::i;912:141::-;995:6;1021:24;;;;;;;;1037:4;1021:24;:::i;:::-;1043:1;1021:15;:24::i;743:161::-;826:27;;:::i;:::-;873:23;;;;;;;;888:4;873:23;:::i;:::-;894:1;873:14;:23::i;316:131::-;369:27;;:::i;:::-;416:23;437:1;416:20;:23::i;183:125::-;233:27;;:::i;:::-;280:20;298:1;280:17;:20::i;1296:227::-;1434:27;;:::i;:::-;1486:29;;;;;;;;1503:4;1486:29;:::i;:::-;;;;;;;;1509:5;1486:29;:::i;:::-;:16;:29::i;1531:291::-;1681:7;1706:17;1726:9;1706:29;-1:-1:-1;1746:29:132;;;;;;;;1763:4;1746:29;:::i;:::-;;;;;;;;1769:5;1746:29;:::i;:::-;;1805:9;1793:21;;;1531:291;-1:-1:-1;;;1531:291:132:o;4929:225:126:-;4995:16;;:::i;:::-;5042:1;5032:4;:7;;;-1:-1:-1;;;;;5032:11:126;;5024:70;;;;-1:-1:-1;;;5024:70:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5112:34;;;;;;;;5137:4;:7;;;-1:-1:-1;;;;;5130:14:126;-1:-1:-1;;;5130:14:126;;;;;;-1:-1:-1;;;;;5112:34:126;;;;5105:41;;4929:225;;;:::o;5235:594::-;5295:16;;:::i;:::-;5328:7;;:22;-1:-1:-1;;;;;5328:22:126;;;;5324:122;;5374:60;;;;;;;;5392:40;5428:3;5416:4;:7;;;-1:-1:-1;;;;;5408:16:126;:23;;5392:15;:40::i;:::-;-1:-1:-1;;;;;5374:60:126;;;5367:67;-1:-1:-1;5367:67:126;;5324:122;5480:2;5493:210;5516:3;5500:13;:19;;;5493:210;;;5540:7;;5559:1;5551:39;-1:-1:-1;;5566:19:126;;;:3;:19;:23;5551:39;;-1:-1:-1;;;;;5540:51:126;;;;5536:156;;;5629:1;5612:18;5536:156;;;5671:5;;5536:156;5493:210;;;5720:101;;;;;;;;5817:1;5800:13;5794:3;:19;5793:25;;;;;;;;5738:81;;:50;5774:13;5754:33;;5762:4;:7;;;-1:-1:-1;;;;;5754:16:126;:33;;5738:15;:50::i;:::-;:81;;-1:-1:-1;;;;;5720:101:126;;;5713:108;5235:594;-1:-1:-1;;;5235:594:126:o;4581:255::-;4662:16;;:::i;:::-;4713:1;4699:11;:15;;;4691:60;;;;;-1:-1:-1;;;4691:60:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4769:59;;;;;;;;;;4779:48;;;4780:32;535:3;4780:32;;;;4779:48;;;;;;-1:-1:-1;;;;;4769:59:126;;;;4762:66;;4581:255;;;;:::o;1265:127::-;1362:7;535:3;1362:21;;;;1265:127::o;2410:1286::-;2495:16;;:::i;:::-;2528:7;;-1:-1:-1;;;;;2528:12:126;;;:29;;-1:-1:-1;2544:8:126;;-1:-1:-1;;;;;2544:13:126;;2528:29;2524:81;;;-1:-1:-1;2581:12:126;;;;;;;;;-1:-1:-1;2581:12:126;;2574:19;;2524:81;2644:7;;2789:8;;2644:21;535:3;2644:21;;;;;;2715:20;;;2789:22;;;;;;;2862:21;;;;2954:33;;;;3023;;;;3103;;;;3183;;;;-1:-1:-1;;;;;3296:20:126;;;;3288:65;;;;;-1:-1:-1;;;3288:65:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3431:11;535:3;3509:19;;:5;-1:-1:-1;;;;;3509:19:126;;;-1:-1:-1;;;;;3445:84:126;3492:13;-1:-1:-1;;;;;3445:60:126;3476:13;-1:-1:-1;;;;;3445:44:126;535:3;3453:19;;:5;-1:-1:-1;;;;;3453:19:126;;;-1:-1:-1;;;;;3445:28:126;:44;:60;:84;3431:98;;-1:-1:-1;;;;;;;3592:18:126;:3;:18;;3584:61;;;;;-1:-1:-1;;;3584:61:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;3665:23;;;;;;;;;-1:-1:-1;;;;;3665:23:126;;;;;;2410:1286;-1:-1:-1;;;;;;;;;;;2410:1286:126:o;1478:130::-;1578:7;535:3;1578:21;;1478:130::o;2050:271::-;2120:6;2139:9;2151:55;2167:4;:7;;;-1:-1:-1;;;;;2151:55:126;2188:1;2184;:5;:14;;2197:1;2184:14;;;2193:1;2192:2;;2184:14;-1:-1:-1;;;2151:15:126;:55::i;:::-;2139:67;;-1:-1:-1;;;2225:1:126;:10;2217:48;;;;;-1:-1:-1;;;2217:48:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;2287:1;2283;:5;:30;;2311:1;2283:30;;;2299:1;2291:10;;2283:30;2276:37;2050:271;-1:-1:-1;;;;2050:271:126:o;1706:240::-;1776:16;;:::i;:::-;1805:9;1837:6;;;:42;;-1:-1:-1;;1872:7:126;;-1:-1:-1;;;;;1847:32:126;1852:11;;;;1867:1;1852:11;1867:1;1847:21;;;;;:32;1837:42;1829:79;;;;;-1:-1:-1;;;1829:79:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;1926:12;;;;;;;;;;;;;1706:240;-1:-1:-1;;;1706:240:126:o;1047:132::-;1100:16;;:::i;:::-;-1:-1:-1;1136:35:126;;;;;;;;;535:3;1146:24;;;;-1:-1:-1;;1146:24:126;1136:35;;;1047:132::o;869:129::-;919:16;;:::i;:::-;-1:-1:-1;955:35:126;;;;;;;;;535:3;965:24;;;;;;955:35;;;869:129::o;3769:699::-;3854:16;;:::i;:::-;3891:8;;-1:-1:-1;;;;;3891:12:126;3883:54;;;;;-1:-1:-1;;;3883:54:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;3963:8;;3952:7;;-1:-1:-1;;;;;3952:19:126;;;;;;3948:83;;;-1:-1:-1;3995:24:126;;;;;;;;;-1:-1:-1;;;3995:24:126;;3988:31;;3948:83;4045:7;;:22;-1:-1:-1;;;;;4045:22:126;;;;4041:235;;4135:8;;4109:7;;4084:13;;-1:-1:-1;;;;;4100:43:126;;535:3;4101:30;-1:-1:-1;;4101:30:126;4100:43;;;;;;;-1:-1:-1;;;;;;4166:20:126;;;4158:59;;;;;-1:-1:-1;;;4158:59:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;4239:25;;;;;;;;4257:5;-1:-1:-1;;;;;4239:25:126;;;;4232:32;;;;;4041:235;4288:14;4305:40;-1:-1:-1;;;4327:4:126;:7;;;-1:-1:-1;;;;;4305:40:126;4336:5;:8;;;-1:-1:-1;;;;;4305:40:126;:15;:40::i;:::-;4288:57;-1:-1:-1;;;;;;4364:21:126;;;4356:60;;;;;-1:-1:-1;;;4356:60:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;4434:26;;;;;;;;;-1:-1:-1;;;;;4434:26:126;;;;;;3769:699;-1:-1:-1;;;3769:699:126:o;242:335:125:-;290:9;320:1;316;:5;312:235;;;-1:-1:-1;342:1:125;378;374;370:5;;:9;394:92;405:1;401;:5;394:92;;;431:1;427:5;;469:1;464;460;456;:5;;;;;;:9;455:15;;;;;;451:19;;394:92;;;312:235;;;;507:6;;503:44;;-1:-1:-1;534:1:125;242:335;;;:::o;937:347:127:-;1043:7;1064:9;1075;1088:13;1096:1;1099;1088:7;:13::i;:::-;1063:38;;;;1112:10;1138:1;1125:15;;;;;1135:1;1132;1125:15;1112:28;;1160:1;1155:2;:6;1151:18;;;1168:1;1163:6;;;;1151:18;1185:2;1180:7;;;;1210:1;1206;:5;1198:44;;;;;-1:-1:-1;;;1198:44:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;1260:16;1268:1;1271;1274;1260:7;:16::i;:::-;1253:23;937:347;-1:-1:-1;;;;;;;937:347:127:o;229:210::-;290:9;;;-1:-1:-1;;346:1:127;343;336:25;323:38;;380:1;376;:5;372:9;;401:1;396:2;:6;392:10;;422:1;417:2;:6;413:18;;;430:1;425:6;;;;413:18;229:210;;;;;;:::o;447:482::-;553:7;592:2;;;588:6;;;593:1;588:6;605:9;;;;;;;630:4;625:9;;;;;;;;;665:4;657;656:5;;655:14;;;;;714:1;:9;;;743:5;;;739:9;;734:14;768:5;;;764:9;;759:14;793:5;;;789:9;;784:14;818:5;;;814:9;;809:14;843:5;;;839:9;;834:14;868:5;;;864:9;;859:14;893:5;;;889:9;;884:14;;;655;;672:1;655:18;650:24;;;;645:29;;;;916:5;;447:482;-1:-1:-1;;447:482:127:o;-1:-1:-1:-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;14:168:178:-;;124:2;115:6;110:3;106:16;102:25;99:2;;;144:5;137;130:20;99:2;-1:-1:-1;170:6:178;89:93;-1:-1:-1;89:93:178:o;187:186::-;257:20;;317:30;306:42;;296:53;;286:2;;363:1;360;353:12;378:256;;520:2;508:9;499:7;495:23;491:32;488:2;;;541:6;533;526:22;488:2;569:59;620:7;609:9;569:59;:::i;639:323::-;;;797:2;785:9;776:7;772:23;768:32;765:2;;;818:6;810;803:22;765:2;846:59;897:7;886:9;846:59;:::i;:::-;836:69;952:2;937:18;;;;924:32;;-1:-1:-1;;;755:207:178:o;967:390::-;;;1156:2;1144:9;1135:7;1131:23;1127:32;1124:2;;;1177:6;1169;1162:22;1124:2;1205:59;1256:7;1245:9;1205:59;:::i;:::-;1195:69;;1283:68;1343:7;1338:2;1327:9;1323:18;1283:68;:::i;:::-;1273:78;;1114:243;;;;;:::o;1362:324::-;;;1521:2;1509:9;1500:7;1496:23;1492:32;1489:2;;;1542:6;1534;1527:22;1691:597;;1831:2;1819:9;1810:7;1806:23;1802:32;1799:2;;;1852:6;1844;1837:22;1799:2;1890;1884:9;1932:2;1924:6;1920:15;2001:6;1989:10;1986:22;1965:18;1953:10;1950:34;1947:62;1944:2;;;2012:9;1944:2;2039;2032:22;2076:23;;-1:-1:-1;;;;;2128:70:178;;2118:81;;2108:2;;2218:6;2210;2203:22;2108:2;2236:21;;2243:6;1789:499;-1:-1:-1;;;1789:499:178:o;2554:442::-;;2694:2;2682:9;2673:7;2669:23;2665:32;2662:2;;;2715:6;2707;2700:22;2662:2;2753;2747:9;2795:2;2787:6;2783:15;2864:6;2852:10;2849:22;2828:18;2816:10;2813:34;2810:62;2807:2;;;2875:9;2807:2;2902;2895:22;2941:23;;2926:39;;-1:-1:-1;2933:6:178;2652:344;-1:-1:-1;2652:344:178:o;3001:198::-;;3113:2;3101:9;3092:7;3088:23;3084:32;3081:2;;;3134:6;3126;3119:22;3081:2;3162:31;3183:9;3162:31;:::i;3204:274::-;;;3333:2;3321:9;3312:7;3308:23;3304:32;3301:2;;;3354:6;3346;3339:22;3301:2;3382:31;3403:9;3382:31;:::i;:::-;3372:41;;3432:40;3468:2;3457:9;3453:18;3432:40;:::i;3483:325::-;;3595:2;3583:9;3574:7;3570:23;3566:32;3563:2;;;3616:6;3608;3601:22;3563:2;3660:9;3647:23;3710:38;3703:5;3699:50;3692:5;3689:61;3679:2;;3769:6;3761;3754:22;3679:2;3797:5;3553:255;-1:-1:-1;;;3553:255:178:o;3813:175::-;3957:25;;;3945:2;3930:18;;3912:76::o;3993:305::-;4217:13;;-1:-1:-1;;;;;4213:78:178;4195:97;;4183:2;4168:18;;4150:148::o;4303:240::-;4523:13;;4505:32;;4493:2;4478:18;;4460:83::o;4548:214::-;4724:30;4712:43;;;;4694:62;;4682:2;4667:18;;4649:113::o;4767:222::-;4943:38;4931:51;;;;4913:70;;4901:2;4886:18;;4868:121::o"},"methodIdentifiers":{"decode((uint224))":"4fd04a40","decode144((uint256))":"5f9f4c3b","divuq((uint224),(uint224))":"ca74fcc0","encode(uint112)":"ca2d0299","encode144(uint144)":"c814e314","fraction(uint112,uint112)":"4de4cf92","getGasCostOfDivuq((uint224),(uint224))":"d993d379","mul((uint224),uint256)":"af35b769","muli((uint224),int256)":"89258451","muluq((uint224),(uint224))":"5a606689","reciprocal((uint224))":"31f92b13","sqrt((uint224))":"3f1626c8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"self\",\"type\":\"tuple\"}],\"name\":\"decode\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"\",\"type\":\"uint112\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"_x\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPoint.uq144x112\",\"name\":\"self\",\"type\":\"tuple\"}],\"name\":\"decode144\",\"outputs\":[{\"internalType\":\"uint144\",\"name\":\"\",\"type\":\"uint144\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"self\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"other\",\"type\":\"tuple\"}],\"name\":\"divuq\",\"outputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint112\",\"name\":\"x\",\"type\":\"uint112\"}],\"name\":\"encode\",\"outputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint144\",\"name\":\"x\",\"type\":\"uint144\"}],\"name\":\"encode144\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"_x\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPoint.uq144x112\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint112\",\"name\":\"numerator\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"denominator\",\"type\":\"uint112\"}],\"name\":\"fraction\",\"outputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"self\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"other\",\"type\":\"tuple\"}],\"name\":\"getGasCostOfDivuq\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"self\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"name\":\"mul\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"_x\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPoint.uq144x112\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"self\",\"type\":\"tuple\"},{\"internalType\":\"int256\",\"name\":\"y\",\"type\":\"int256\"}],\"name\":\"muli\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"self\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"other\",\"type\":\"tuple\"}],\"name\":\"muluq\",\"outputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"self\",\"type\":\"tuple\"}],\"name\":\"reciprocal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"self\",\"type\":\"tuple\"}],\"name\":\"sqrt\",\"outputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pangolin-lib/test/FixedPointTest.sol\":\"FixedPointTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-lib/libraries/Babylonian.sol\":{\"keccak256\":\"0xb6d624c352f6609d59d4f9e88ef2e27cb449973642326ed50ea459b9496a8af1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://917eec6312b57cb09fbf6a0d24c4adf05469adca9383fd41e616734de26ab87d\",\"dweb:/ipfs/QmWx3ddm7mP9Q5TMy2YES8TV932PsESZengN8sdP5HNFbn\"]},\"contracts/pangolin-lib/libraries/FixedPoint.sol\":{\"keccak256\":\"0xbe26ba3ca4362c0ec8a378c05270fb8e6dca60e5f039e8b8a188fdc7e56ca925\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b9b0b0bab61223410ee8ee0e18560a29426e354f324701a6b626def3c12e5f17\",\"dweb:/ipfs/QmYciZrLspAAQ64RTmrPmSTLMP4jsDNRBLD6iBvQ3v6ynJ\"]},\"contracts/pangolin-lib/libraries/FullMath.sol\":{\"keccak256\":\"0xcfc0c2167e2acb556aa5311665e2ac7d1afdcd22d319a0ce933cd398834d174b\",\"license\":\"CC-BY-4.0\",\"urls\":[\"bzz-raw://db0a7bfe02270ea4de528a2468713ff838e4da53554388659eab3a8571dbc0d5\",\"dweb:/ipfs/QmQKBD4Xj4ZgcnczkVjK6sAvM31nkgXpxiVRTbi8XS4y3G\"]},\"contracts/pangolin-lib/test/FixedPointTest.sol\":{\"keccak256\":\"0x74c1f63d329fde2daf8e99f2f1f77febb45035348af4c90cf4519117e4057683\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9f1c7dc069ebfa3a335cbdb886ecc744ef83c0c9c282b8c1f108326163d1288\",\"dweb:/ipfs/QmSHimM9GkBPSE6rms3ozvVBqGymGVdHk9Cnrxkcg3xsG3\"]}},\"version\":1}"}},"contracts/pangolin-lib/test/FullMathTest.sol":{"FullMathTest":{"abi":[{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"},{"internalType":"uint256","name":"z","type":"uint256"}],"name":"mulDiv","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"},{"internalType":"uint256","name":"z","type":"uint256"}],"name":"mulDivRoundingUp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610261806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630af8b27f1461003b578063aa9a091214610076575b600080fd5b6100646004803603606081101561005157600080fd5b508035906020810135906040013561009f565b60408051918252519081900360200190f35b6100646004803603606081101561008c57600080fd5b50803590602081013590604001356100d9565b600080600083806100ac57fe5b858709119050806100be5760006100c1565b60015b60ff166100cf8686866100ee565b0195945050505050565b60006100e68484846100ee565b949350505050565b60008060006100fd868661018e565b915091506000848061010b57fe5b86880990508281111561011f576001820391505b8083039250848210610178576040805162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b6101838383876101bb565b979650505050505050565b60008080600019848609905083850292508281039150828110156101b3576001820391505b509250929050565b600081810382168083816101cb57fe5b0492508085816101d757fe5b0494508081600003816101e657fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fea26469706673582212201536bc2ad37e1fcc3b6352df7c356d461f1a05b6ea3c081d7ceb1e8bcfa71d2664736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x261 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 0xAF8B27F EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xAA9A0912 EQ PUSH2 0x76 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x9F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xD9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP1 PUSH2 0xAC JUMPI INVALID JUMPDEST DUP6 DUP8 MULMOD GT SWAP1 POP DUP1 PUSH2 0xBE JUMPI PUSH1 0x0 PUSH2 0xC1 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND PUSH2 0xCF DUP7 DUP7 DUP7 PUSH2 0xEE JUMP JUMPDEST ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE6 DUP5 DUP5 DUP5 PUSH2 0xEE JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xFD DUP7 DUP7 PUSH2 0x18E JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0x10B JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0x11F JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST DUP1 DUP4 SUB SWAP3 POP DUP5 DUP3 LT PUSH2 0x178 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x183 DUP4 DUP4 DUP8 PUSH2 0x1BB JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0x1B3 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0x1CB JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0x1D7 JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0x1E6 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ISZERO CALLDATASIZE 0xBC 0x2A 0xD3 PUSH31 0x1FCC3B6352DF7C356D461F1A05B6EA3C081D7CEB1E8BCFA71D2664736F6C63 NUMBER STOP SMOD MOD STOP CALLER ","sourceMap":"115:445:133:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c80630af8b27f1461003b578063aa9a091214610076575b600080fd5b6100646004803603606081101561005157600080fd5b508035906020810135906040013561009f565b60408051918252519081900360200190f35b6100646004803603606081101561008c57600080fd5b50803590602081013590604001356100d9565b600080600083806100ac57fe5b858709119050806100be5760006100c1565b60015b60ff166100cf8686866100ee565b0195945050505050565b60006100e68484846100ee565b949350505050565b60008060006100fd868661018e565b915091506000848061010b57fe5b86880990508281111561011f576001820391505b8083039250848210610178576040805162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b6101838383876101bb565b979650505050505050565b60008080600019848609905083850292508281039150828110156101b3576001820391505b509250929050565b600081810382168083816101cb57fe5b0492508085816101d757fe5b0494508081600003816101e657fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fea26469706673582212201536bc2ad37e1fcc3b6352df7c356d461f1a05b6ea3c081d7ceb1e8bcfa71d2664736f6c63430007060033","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 0xAF8B27F EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xAA9A0912 EQ PUSH2 0x76 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x9F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xD9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP1 PUSH2 0xAC JUMPI INVALID JUMPDEST DUP6 DUP8 MULMOD GT SWAP1 POP DUP1 PUSH2 0xBE JUMPI PUSH1 0x0 PUSH2 0xC1 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND PUSH2 0xCF DUP7 DUP7 DUP7 PUSH2 0xEE JUMP JUMPDEST ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE6 DUP5 DUP5 DUP5 PUSH2 0xEE JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xFD DUP7 DUP7 PUSH2 0x18E JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0x10B JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0x11F JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST DUP1 DUP4 SUB SWAP3 POP DUP5 DUP3 LT PUSH2 0x178 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x183 DUP4 DUP4 DUP8 PUSH2 0x1BB JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0x1B3 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0x1CB JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0x1D7 JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0x1E6 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ISZERO CALLDATASIZE 0xBC 0x2A 0xD3 PUSH31 0x1FCC3B6352DF7C356D461F1A05B6EA3C081D7CEB1E8BCFA71D2664736F6C63 NUMBER STOP SMOD MOD STOP CALLER ","sourceMap":"115:445:133:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:240;;;;;;;;;;;;;;;;-1:-1:-1;317:240:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;144:165;;;;;;;;;;;;;;;;-1:-1:-1;144:165:133;;;;;;;;;;;;:::i;317:240::-;433:7;453:12;486:1;481;468:15;;;;;478:1;475;468:15;:19;453:34;;533:7;:15;;547:1;533:15;;;543:1;533:15;505:44;;:24;521:1;524;527;505:15;:24::i;:::-;:44;;317:240;-1:-1:-1;;;;;317:240:133:o;144:165::-;250:7;277:24;293:1;296;299;277:15;:24::i;:::-;270:31;144:165;-1:-1:-1;;;;144:165:133:o;937:347:127:-;1043:7;1064:9;1075;1088:13;1096:1;1099;1088:7;:13::i;:::-;1063:38;;;;1112:10;1138:1;1125:15;;;;;1135:1;1132;1125:15;1112:28;;1160:1;1155:2;:6;1151:18;;;1168:1;1163:6;;;;1151:18;1185:2;1180:7;;;;1210:1;1206;:5;1198:44;;;;;-1:-1:-1;;;1198:44:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;1260:16;1268:1;1271;1274;1260:7;:16::i;:::-;1253:23;937:347;-1:-1:-1;;;;;;;937:347:127:o;229:210::-;290:9;;;-1:-1:-1;;346:1:127;343;336:25;323:38;;380:1;376;:5;372:9;;401:1;396:2;:6;392:10;;422:1;417:2;:6;413:18;;;430:1;425:6;;;;413:18;229:210;;;;;;:::o;447:482::-;553:7;592:2;;;588:6;;;593:1;588:6;605:9;;;;;;;630:4;625:9;;;;;;;;;665:4;657;656:5;;655:14;;;;;714:1;:9;;;743:5;;;739:9;;734:14;768:5;;;764:9;;759:14;793:5;;;789:9;;784:14;818:5;;;814:9;;809:14;843:5;;;839:9;;834:14;868:5;;;864:9;;859:14;893:5;;;889:9;;884:14;;;655;;672:1;655:18;650:24;;;;645:29;;;;916:5;;447:482;-1:-1:-1;;447:482:127:o"},"methodIdentifiers":{"mulDiv(uint256,uint256,uint256)":"aa9a0912","mulDivRoundingUp(uint256,uint256,uint256)":"0af8b27f"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"z\",\"type\":\"uint256\"}],\"name\":\"mulDiv\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"z\",\"type\":\"uint256\"}],\"name\":\"mulDivRoundingUp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pangolin-lib/test/FullMathTest.sol\":\"FullMathTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-lib/libraries/FullMath.sol\":{\"keccak256\":\"0xcfc0c2167e2acb556aa5311665e2ac7d1afdcd22d319a0ce933cd398834d174b\",\"license\":\"CC-BY-4.0\",\"urls\":[\"bzz-raw://db0a7bfe02270ea4de528a2468713ff838e4da53554388659eab3a8571dbc0d5\",\"dweb:/ipfs/QmQKBD4Xj4ZgcnczkVjK6sAvM31nkgXpxiVRTbi8XS4y3G\"]},\"contracts/pangolin-lib/test/FullMathTest.sol\":{\"keccak256\":\"0x9187d7b31ea16932ba536c584012645c48e0613c1e5b811b835a8ec5af6ae22f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://716bd556b46f900298333ca8204f1f3a5bd0d96818cbd62c406e85f8434f2da9\",\"dweb:/ipfs/QmWDKHGxVhsJZxx7fgfGBiYnTnS3seRVMvCXDE1rk4VQGk\"]}},\"version\":1}"}},"contracts/pangolin-lib/test/PairNamerTest.sol":{"PairNamerTest":{"abi":[{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"string","name":"prefix","type":"string"},{"internalType":"string","name":"suffix","type":"string"}],"name":"pairName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"string","name":"suffix","type":"string"}],"name":"pairSymbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610c5c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634c75e9181461003b578063e9f52d2314610139575b600080fd5b6100c46004803603606081101561005157600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561008557600080fd5b82018360208201111561009757600080fd5b803590602001918460018302840111640100000000831117156100b957600080fd5b509092509050610214565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fe5781810151838201526020016100e6565b50505050905090810190601f16801561012b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100c46004803603608081101561014f57600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561018357600080fd5b82018360208201111561019557600080fd5b803590602001918460018302840111640100000000831117156101b757600080fd5b9193909290916020810190356401000000008111156101d557600080fd5b8201836020820111156101e757600080fd5b8035906020019184600183028401116401000000008311171561020957600080fd5b509092509050610260565b6060610257858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102e292505050565b95945050505050565b60606102d7878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284376000920191909152506104c192505050565b979650505050505050565b6060604051806040016040528060048152602001632827239d60e11b81525061030a85610685565b604051806040016040528060018152602001601d60f91b81525061032d86610685565b856040516020018086805190602001908083835b602083106103605780518252601f199092019160209182019101610341565b51815160209384036101000a600019018019909216911617905288519190930192880191508083835b602083106103a85780518252601f199092019160209182019101610389565b51815160209384036101000a600019018019909216911617905287519190930192870191508083835b602083106103f05780518252601f1990920191602091820191016103d1565b51815160209384036101000a600019018019909216911617905286519190930192860191508083835b602083106104385780518252601f199092019160209182019101610419565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106104805780518252601f199092019160209182019101610461565b6001836020036101000a0380198251168184511680821785525050505050509050019550505050505060405160208183030381529060405290509392505050565b6060826104cd866106bf565b604051806040016040528060018152602001601d60f91b8152506104f0876106bf565b856040516020018086805190602001908083835b602083106105235780518252601f199092019160209182019101610504565b51815160209384036101000a600019018019909216911617905288519190930192880191508083835b6020831061056b5780518252601f19909201916020918201910161054c565b51815160209384036101000a600019018019909216911617905287519190930192870191508083835b602083106105b35780518252601f199092019160209182019101610594565b51815160209384036101000a600019018019909216911617905286519190930192860191508083835b602083106105fb5780518252601f1990920191602091820191016105dc565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106106435780518252601f199092019160209182019101610624565b6001836020036101000a038019825116818451168082178552505050505050905001955050505050506040516020818303038152906040529050949350505050565b6060600061069a836395d89b4160e01b6106e9565b90508051600014156106b7576106af83610941565b9150506106ba565b90505b919050565b606060006106d4836306fdde0360e01b6106e9565b90508051600014156106b7576106af8361094e565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000085161781529151815160609360009384936001600160a01b03891693919290918291908083835b602083106107825780518252601f199092019160209182019101610763565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146107e2576040519150601f19603f3d011682016040523d82523d6000602084013e6107e7565b606091505b50915091508115806107f857508051155b1561081657604051806020016040528060008152509250505061093b565b80516020141561084e57600081806020019051602081101561083757600080fd5b505190506108448161095b565b935050505061093b565b6040815111156109265780806020019051602081101561086d57600080fd5b810190808051604051939291908464010000000082111561088d57600080fd5b9083019060208201858111156108a257600080fd5b82516401000000008111828201881017156108bc57600080fd5b82525081516020918201929091019080838360005b838110156108e95781810151838201526020016108d1565b50505050905090810190601f1680156109165780820380516001836020036101000a031916815260200191505b506040525050509250505061093b565b60405180602001604052806000815250925050505b92915050565b60606106b7826006610a9b565b60606106b7826028610a9b565b604080516020808252818301909252606091600091906020820181803683370190505090506000805b60208110156109fd57600085826020811061099b57fe5b1a60f81b90507fff000000000000000000000000000000000000000000000000000000000000008116156109f457808484815181106109d657fe5b60200101906001600160f81b031916908160001a9053506001909201915b50600101610984565b5060008167ffffffffffffffff81118015610a1757600080fd5b506040519080825280601f01601f191660200182016040528015610a42576020820181803683370190505b50905060005b82811015610a9257838181518110610a5c57fe5b602001015160f81c60f81b828281518110610a7357fe5b60200101906001600160f81b031916908160001a905350600101610a48565b50949350505050565b606060028206158015610aae5750600082115b8015610abb575060288211155b610b0c576040805162461bcd60e51b815260206004820152601e60248201527f41646472657373537472696e675574696c3a20494e56414c49445f4c454e0000604482015290519081900360640190fd5b60008267ffffffffffffffff81118015610b2557600080fd5b506040519080825280601f01601f191660200182016040528015610b50576020820181803683370190505b5090506001600160a01b03841660005b60028504811015610bf457600860138290030282901c600f600482901c1660f082168203610b8d82610bfe565b868560020281518110610b9c57fe5b60200101906001600160f81b031916908160001a905350610bbc81610bfe565b868560020260010181518110610bce57fe5b60200101906001600160f81b031916908160001a9053505060019092019150610b609050565b5090949350505050565b6000600a8260ff161015610c1957506030810160f81b6106ba565b506037810160f81b6106ba56fea2646970667358221220c3478f2e2a4df59b959abbae6fdd9de11819ecf4b1d885a71ac5c9052aacfec064736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC5C 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 0x4C75E918 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xE9F52D23 EQ PUSH2 0x139 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x97 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 0xB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x214 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 0xFE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE6 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x12B 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 0xC4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x183 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x195 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 0x1B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1E7 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 0x209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x260 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x257 DUP6 DUP6 DUP6 DUP6 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 PUSH2 0x2E2 SWAP3 POP POP POP JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2D7 DUP8 DUP8 DUP8 DUP8 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 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F DUP12 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP10 DUP2 MSTORE SWAP3 POP DUP10 SWAP2 POP DUP9 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x4C1 SWAP3 POP POP POP JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH4 0x2827239D PUSH1 0xE1 SHL DUP2 MSTORE POP PUSH2 0x30A DUP6 PUSH2 0x685 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1D PUSH1 0xF9 SHL DUP2 MSTORE POP PUSH2 0x32D DUP7 PUSH2 0x685 JUMP JUMPDEST DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x360 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x341 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP9 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP9 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3A8 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x389 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP8 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP8 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3F0 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3D1 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP7 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP7 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x438 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x419 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT 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 0x480 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x461 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 SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x4CD DUP7 PUSH2 0x6BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1D PUSH1 0xF9 SHL DUP2 MSTORE POP PUSH2 0x4F0 DUP8 PUSH2 0x6BF JUMP JUMPDEST DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x523 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x504 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP9 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP9 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x56B JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x54C JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP8 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP8 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x5B3 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x594 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP7 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP7 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x5FB JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x5DC JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT 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 0x643 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x624 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 SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x69A DUP4 PUSH4 0x95D89B41 PUSH1 0xE0 SHL PUSH2 0x6E9 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x6B7 JUMPI PUSH2 0x6AF DUP4 PUSH2 0x941 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x6BA JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x6D4 DUP4 PUSH4 0x6FDDE03 PUSH1 0xE0 SHL PUSH2 0x6E9 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x6B7 JUMPI PUSH2 0x6AF DUP4 PUSH2 0x94E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP6 AND OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x60 SWAP4 PUSH1 0x0 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x782 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x763 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 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7E2 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 0x7E7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO DUP1 PUSH2 0x7F8 JUMPI POP DUP1 MLOAD ISZERO JUMPDEST ISZERO PUSH2 0x816 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP POP POP PUSH2 0x93B JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 EQ ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x837 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x844 DUP2 PUSH2 0x95B JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x93B JUMP JUMPDEST PUSH1 0x40 DUP2 MLOAD GT ISZERO PUSH2 0x926 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x86D 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 0x88D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x8A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x8BC 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 PUSH2 0x8E9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8D1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x916 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 SWAP3 POP POP POP PUSH2 0x93B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x6B7 DUP3 PUSH1 0x6 PUSH2 0xA9B JUMP JUMPDEST PUSH1 0x60 PUSH2 0x6B7 DUP3 PUSH1 0x28 PUSH2 0xA9B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9FD JUMPI PUSH1 0x0 DUP6 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x99B JUMPI INVALID JUMPDEST BYTE PUSH1 0xF8 SHL SWAP1 POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP2 AND ISZERO PUSH2 0x9F4 JUMPI DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x9D6 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x984 JUMP JUMPDEST POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xA17 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 0xA42 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xA92 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xA5C JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA73 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0xA48 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MOD ISZERO DUP1 ISZERO PUSH2 0xAAE JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST DUP1 ISZERO PUSH2 0xABB JUMPI POP PUSH1 0x28 DUP3 GT ISZERO JUMPDEST PUSH2 0xB0C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373537472696E675574696C3A20494E56414C49445F4C454E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xB25 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 0xB50 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 JUMPDEST PUSH1 0x2 DUP6 DIV DUP2 LT ISZERO PUSH2 0xBF4 JUMPI PUSH1 0x8 PUSH1 0x13 DUP3 SWAP1 SUB MUL DUP3 SWAP1 SHR PUSH1 0xF PUSH1 0x4 DUP3 SWAP1 SHR AND PUSH1 0xF0 DUP3 AND DUP3 SUB PUSH2 0xB8D DUP3 PUSH2 0xBFE JUMP JUMPDEST DUP7 DUP6 PUSH1 0x2 MUL DUP2 MLOAD DUP2 LT PUSH2 0xB9C JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0xBBC DUP2 PUSH2 0xBFE JUMP JUMPDEST DUP7 DUP6 PUSH1 0x2 MUL PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0xBCE JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0xB60 SWAP1 POP JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA DUP3 PUSH1 0xFF AND LT ISZERO PUSH2 0xC19 JUMPI POP PUSH1 0x30 DUP2 ADD PUSH1 0xF8 SHL PUSH2 0x6BA JUMP JUMPDEST POP PUSH1 0x37 DUP2 ADD PUSH1 0xF8 SHL PUSH2 0x6BA JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC3 SELFBALANCE DUP16 0x2E 0x2A 0x4D CREATE2 SWAP12 SWAP6 SWAP11 0xBB 0xAE PUSH16 0xDD9DE11819ECF4B1D885A71AC5C9052A 0xAC INVALID 0xC0 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"116:514:134:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c80634c75e9181461003b578063e9f52d2314610139575b600080fd5b6100c46004803603606081101561005157600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561008557600080fd5b82018360208201111561009757600080fd5b803590602001918460018302840111640100000000831117156100b957600080fd5b509092509050610214565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fe5781810151838201526020016100e6565b50505050905090810190601f16801561012b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100c46004803603608081101561014f57600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561018357600080fd5b82018360208201111561019557600080fd5b803590602001918460018302840111640100000000831117156101b757600080fd5b9193909290916020810190356401000000008111156101d557600080fd5b8201836020820111156101e757600080fd5b8035906020019184600183028401116401000000008311171561020957600080fd5b509092509050610260565b6060610257858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102e292505050565b95945050505050565b60606102d7878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284376000920191909152506104c192505050565b979650505050505050565b6060604051806040016040528060048152602001632827239d60e11b81525061030a85610685565b604051806040016040528060018152602001601d60f91b81525061032d86610685565b856040516020018086805190602001908083835b602083106103605780518252601f199092019160209182019101610341565b51815160209384036101000a600019018019909216911617905288519190930192880191508083835b602083106103a85780518252601f199092019160209182019101610389565b51815160209384036101000a600019018019909216911617905287519190930192870191508083835b602083106103f05780518252601f1990920191602091820191016103d1565b51815160209384036101000a600019018019909216911617905286519190930192860191508083835b602083106104385780518252601f199092019160209182019101610419565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106104805780518252601f199092019160209182019101610461565b6001836020036101000a0380198251168184511680821785525050505050509050019550505050505060405160208183030381529060405290509392505050565b6060826104cd866106bf565b604051806040016040528060018152602001601d60f91b8152506104f0876106bf565b856040516020018086805190602001908083835b602083106105235780518252601f199092019160209182019101610504565b51815160209384036101000a600019018019909216911617905288519190930192880191508083835b6020831061056b5780518252601f19909201916020918201910161054c565b51815160209384036101000a600019018019909216911617905287519190930192870191508083835b602083106105b35780518252601f199092019160209182019101610594565b51815160209384036101000a600019018019909216911617905286519190930192860191508083835b602083106105fb5780518252601f1990920191602091820191016105dc565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106106435780518252601f199092019160209182019101610624565b6001836020036101000a038019825116818451168082178552505050505050905001955050505050506040516020818303038152906040529050949350505050565b6060600061069a836395d89b4160e01b6106e9565b90508051600014156106b7576106af83610941565b9150506106ba565b90505b919050565b606060006106d4836306fdde0360e01b6106e9565b90508051600014156106b7576106af8361094e565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000085161781529151815160609360009384936001600160a01b03891693919290918291908083835b602083106107825780518252601f199092019160209182019101610763565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146107e2576040519150601f19603f3d011682016040523d82523d6000602084013e6107e7565b606091505b50915091508115806107f857508051155b1561081657604051806020016040528060008152509250505061093b565b80516020141561084e57600081806020019051602081101561083757600080fd5b505190506108448161095b565b935050505061093b565b6040815111156109265780806020019051602081101561086d57600080fd5b810190808051604051939291908464010000000082111561088d57600080fd5b9083019060208201858111156108a257600080fd5b82516401000000008111828201881017156108bc57600080fd5b82525081516020918201929091019080838360005b838110156108e95781810151838201526020016108d1565b50505050905090810190601f1680156109165780820380516001836020036101000a031916815260200191505b506040525050509250505061093b565b60405180602001604052806000815250925050505b92915050565b60606106b7826006610a9b565b60606106b7826028610a9b565b604080516020808252818301909252606091600091906020820181803683370190505090506000805b60208110156109fd57600085826020811061099b57fe5b1a60f81b90507fff000000000000000000000000000000000000000000000000000000000000008116156109f457808484815181106109d657fe5b60200101906001600160f81b031916908160001a9053506001909201915b50600101610984565b5060008167ffffffffffffffff81118015610a1757600080fd5b506040519080825280601f01601f191660200182016040528015610a42576020820181803683370190505b50905060005b82811015610a9257838181518110610a5c57fe5b602001015160f81c60f81b828281518110610a7357fe5b60200101906001600160f81b031916908160001a905350600101610a48565b50949350505050565b606060028206158015610aae5750600082115b8015610abb575060288211155b610b0c576040805162461bcd60e51b815260206004820152601e60248201527f41646472657373537472696e675574696c3a20494e56414c49445f4c454e0000604482015290519081900360640190fd5b60008267ffffffffffffffff81118015610b2557600080fd5b506040519080825280601f01601f191660200182016040528015610b50576020820181803683370190505b5090506001600160a01b03841660005b60028504811015610bf457600860138290030282901c600f600482901c1660f082168203610b8d82610bfe565b868560020281518110610b9c57fe5b60200101906001600160f81b031916908160001a905350610bbc81610bfe565b868560020260010181518110610bce57fe5b60200101906001600160f81b031916908160001a9053505060019092019150610b609050565b5090949350505050565b6000600a8260ff161015610c1957506030810160f81b6106ba565b506037810160f81b6106ba56fea2646970667358221220c3478f2e2a4df59b959abbae6fdd9de11819ecf4b1d885a71ac5c9052aacfec064736f6c63430007060033","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 0x4C75E918 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xE9F52D23 EQ PUSH2 0x139 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x97 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 0xB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x214 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 0xFE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE6 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x12B 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 0xC4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x183 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x195 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 0x1B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1E7 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 0x209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x260 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x257 DUP6 DUP6 DUP6 DUP6 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 PUSH2 0x2E2 SWAP3 POP POP POP JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2D7 DUP8 DUP8 DUP8 DUP8 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 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F DUP12 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP10 DUP2 MSTORE SWAP3 POP DUP10 SWAP2 POP DUP9 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x4C1 SWAP3 POP POP POP JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH4 0x2827239D PUSH1 0xE1 SHL DUP2 MSTORE POP PUSH2 0x30A DUP6 PUSH2 0x685 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1D PUSH1 0xF9 SHL DUP2 MSTORE POP PUSH2 0x32D DUP7 PUSH2 0x685 JUMP JUMPDEST DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x360 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x341 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP9 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP9 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3A8 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x389 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP8 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP8 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3F0 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3D1 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP7 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP7 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x438 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x419 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT 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 0x480 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x461 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 SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x4CD DUP7 PUSH2 0x6BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1D PUSH1 0xF9 SHL DUP2 MSTORE POP PUSH2 0x4F0 DUP8 PUSH2 0x6BF JUMP JUMPDEST DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x523 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x504 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP9 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP9 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x56B JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x54C JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP8 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP8 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x5B3 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x594 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP7 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP7 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x5FB JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x5DC JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT 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 0x643 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x624 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 SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x69A DUP4 PUSH4 0x95D89B41 PUSH1 0xE0 SHL PUSH2 0x6E9 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x6B7 JUMPI PUSH2 0x6AF DUP4 PUSH2 0x941 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x6BA JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x6D4 DUP4 PUSH4 0x6FDDE03 PUSH1 0xE0 SHL PUSH2 0x6E9 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x6B7 JUMPI PUSH2 0x6AF DUP4 PUSH2 0x94E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP6 AND OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x60 SWAP4 PUSH1 0x0 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x782 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x763 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 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7E2 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 0x7E7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO DUP1 PUSH2 0x7F8 JUMPI POP DUP1 MLOAD ISZERO JUMPDEST ISZERO PUSH2 0x816 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP POP POP PUSH2 0x93B JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 EQ ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x837 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x844 DUP2 PUSH2 0x95B JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x93B JUMP JUMPDEST PUSH1 0x40 DUP2 MLOAD GT ISZERO PUSH2 0x926 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x86D 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 0x88D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x8A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x8BC 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 PUSH2 0x8E9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8D1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x916 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 SWAP3 POP POP POP PUSH2 0x93B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x6B7 DUP3 PUSH1 0x6 PUSH2 0xA9B JUMP JUMPDEST PUSH1 0x60 PUSH2 0x6B7 DUP3 PUSH1 0x28 PUSH2 0xA9B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9FD JUMPI PUSH1 0x0 DUP6 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x99B JUMPI INVALID JUMPDEST BYTE PUSH1 0xF8 SHL SWAP1 POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP2 AND ISZERO PUSH2 0x9F4 JUMPI DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x9D6 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x984 JUMP JUMPDEST POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xA17 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 0xA42 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xA92 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xA5C JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA73 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0xA48 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MOD ISZERO DUP1 ISZERO PUSH2 0xAAE JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST DUP1 ISZERO PUSH2 0xABB JUMPI POP PUSH1 0x28 DUP3 GT ISZERO JUMPDEST PUSH2 0xB0C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373537472696E675574696C3A20494E56414C49445F4C454E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xB25 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 0xB50 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 JUMPDEST PUSH1 0x2 DUP6 DIV DUP2 LT ISZERO PUSH2 0xBF4 JUMPI PUSH1 0x8 PUSH1 0x13 DUP3 SWAP1 SUB MUL DUP3 SWAP1 SHR PUSH1 0xF PUSH1 0x4 DUP3 SWAP1 SHR AND PUSH1 0xF0 DUP3 AND DUP3 SUB PUSH2 0xB8D DUP3 PUSH2 0xBFE JUMP JUMPDEST DUP7 DUP6 PUSH1 0x2 MUL DUP2 MLOAD DUP2 LT PUSH2 0xB9C JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0xBBC DUP2 PUSH2 0xBFE JUMP JUMPDEST DUP7 DUP6 PUSH1 0x2 MUL PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0xBCE JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0xB60 SWAP1 POP JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA DUP3 PUSH1 0xFF AND LT ISZERO PUSH2 0xC19 JUMPI POP PUSH1 0x30 DUP2 ADD PUSH1 0xF8 SHL PUSH2 0x6BA JUMP JUMPDEST POP PUSH1 0x37 DUP2 ADD PUSH1 0xF8 SHL PUSH2 0x6BA JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC3 SELFBALANCE DUP16 0x2E 0x2A 0x4D CREATE2 SWAP12 SWAP6 SWAP11 0xBB 0xAE PUSH16 0xDD9DE11819ECF4B1D885A71AC5C9052A 0xAC INVALID 0xC0 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"116:514:134:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;409:218;;;;;;;;;;;;;;;;-1:-1:-1;;;;;409:218:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;409:218:134;;-1:-1:-1;409:218:134;-1:-1:-1;409:218:134;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;146:255;;;;;;;;;;;;;;;;-1:-1:-1;;;;;146:255:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;146:255:134;;-1:-1:-1;146:255:134;-1:-1:-1;146:255:134;:::i;409:218::-;542:13;575:44;596:6;604;612;;575:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;575:20:134;;-1:-1:-1;;;575:44:134:i;:::-;568:51;409:218;-1:-1:-1;;;;;409:218:134:o;146:255::-;310:13;343:50;362:6;370;378;;343:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;343:50:134;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;386:6:134;;-1:-1:-1;386:6:134;;;;343:50;;386:6;;;;343:50;;;;;;;;;-1:-1:-1;343:18:134;;-1:-1:-1;;;343:50:134:i;:::-;336:57;146:255;-1:-1:-1;;;;;;;146:255:134:o;996:483:128:-;1127:13;1237:19;;;;;;;;;;;;;-1:-1:-1;;;1237:19:128;;;1279:34;1306:6;1279:26;:34::i;:::-;1336:15;;;;;;;;;;;;;-1:-1:-1;;;1336:15:128;;;1374:34;1401:6;1374:26;:34::i;:::-;1431:6;1198:258;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1198:258:128;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1198:258:128;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1198:258:128;;;;;;;;;;;;;-1:-1:-1;;1198:258:128;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1198:258:128;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1198:258:128;;;;;;;;;;;;;-1:-1:-1;;1198:258:128;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1198:258:128;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1198:258:128;;;;;;;;;;;;;-1:-1:-1;;1198:258:128;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1198:258:128;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1198:258:128;;;;;;;;;;;;;-1:-1:-1;;1198:258:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1153:318;;996:483;;;;;:::o;408:495::-;568:13;678:6;707:32;732:6;707:24;:32::i;:::-;762:15;;;;;;;;;;;;;-1:-1:-1;;;762:15:128;;;800:32;825:6;800:24;:32::i;:::-;855:6;639:241;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;639:241:128;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;639:241:128;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;639:241:128;;;;;;;;;;;;;-1:-1:-1;;639:241:128;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;639:241:128;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;639:241:128;;;;;;;;;;;;;-1:-1:-1;;639:241:128;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;639:241:128;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;639:241:128;;;;;;;;;;;;;-1:-1:-1;;639:241:128;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;639:241:128;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;639:241:128;;;;;;;;;;;;;-1:-1:-1;;639:241:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;594:301;;408:495;;;;;;:::o;3033:390:129:-;3092:13;3173:20;3196:43;3221:5;-1:-1:-1;;;3196:24:129;:43::i;:::-;3173:66;;3260:6;3254:20;3278:1;3254:25;3250:142;;;3358:22;3374:5;3358:15;:22::i;:::-;3351:29;;;;;3250:142;3409:6;-1:-1:-1;3033:390:129;;;;:::o;3546:371::-;3603:13;3682:18;3703:43;3728:5;-1:-1:-1;;;3703:24:129;:43::i;:::-;3682:64;;3767:4;3761:18;3783:1;3761:23;3757:131;;;3856:20;3870:5;3856:13;:20::i;2236:668::-;2403:32;;;;;;;;;;;;;;;;;;;;;;;;2386:50;;;;2324:13;;2351:12;;;;-1:-1:-1;;;;;2386:16:129;;;2403:32;;2386:50;;;;2403:32;2386:50;;2403:32;2386:50;;;;;;;;;;-1:-1:-1;;2386:50:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2350:86;;;;2527:7;2526:8;:28;;;-1:-1:-1;2538:11:129;;:16;2526:28;2522:70;;;2571:9;;;;;;;;;;;;;;;;;;2522:70;2652:4;:11;2667:2;2652:17;2648:229;;;2686:15;2715:4;2704:27;;;;;;;;;;;;;;;-1:-1:-1;2704:27:129;;-1:-1:-1;2753:24:129;2704:27;2753:15;:24::i;:::-;2746:31;;;;;;;2648:229;2813:2;2799:4;:11;:16;2795:82;;;2850:4;2839:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2839:26:129;;;;;;;;;;-1:-1:-1;2839:26:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2832:33;;;;;;2795:82;2887:9;;;;;;;;;;;;;;;;2236:668;;;;;:::o;1964:144::-;2026:13;2059:41;2091:5;2098:1;2059:31;:41::i;1663:143::-;1723:13;1756:42;1788:5;1795:2;1756:31;:42::i;341:599::-;452:13;;;462:2;452:13;;;;;;;;;399;;425:24;;452:13;;;;;;;;;;;-1:-1:-1;452:13:129;425:40;;476:17;513:9;508:201;532:2;528:1;:6;508:201;;;556:11;570:1;572;570:4;;;;;;;;;;;-1:-1:-1;593:9:129;;;;589:109;;648:4;623:11;635:9;623:22;;;;;;;;;;;:29;-1:-1:-1;;;;;623:29:129;;;;;;;;-1:-1:-1;671:11:129;;;;;589:109;-1:-1:-1;536:3:129;;508:201;;;;719:31;763:9;753:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;753:20:129;;719:54;;789:9;784:105;808:9;804:1;:13;784:105;;;863:11;875:1;863:14;;;;;;;;;;;;;;;;839:18;858:1;839:21;;;;;;;;;;;:38;-1:-1:-1;;;;;839:38:129;;;;;;;;-1:-1:-1;819:3:129;;784:105;;;-1:-1:-1;913:18:129;341:599;-1:-1:-1;;;;341:599:129:o;225:808:124:-;298:13;338:1;332:3;:7;:12;:23;;;;;354:1;348:3;:7;332:23;:36;;;;;366:2;359:3;:9;;332:36;324:79;;;;;-1:-1:-1;;;324:79:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;416:14;443:3;433:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;433:14:124;-1:-1:-1;416:31:124;-1:-1:-1;;;;;;476:13:124;;458:15;500:499;530:1;524:3;:7;520:1;:11;500:499;;;694:1;699:2;:6;;;694:12;682:25;;;801:6;806:1;801:6;;;;907:7;;;902:13;;941:8;801:6;941:4;:8::i;:::-;930:1;936;932;:5;930:8;;;;;;;;;;;:19;-1:-1:-1;;;;;930:19:124;;;;;;;;;979:8;984:2;979:4;:8::i;:::-;964:1;970;966;:5;974:1;966:9;964:12;;;;;;;;;;;:23;-1:-1:-1;;;;;964:23:124;;;;;;;;-1:-1:-1;;533:3:124;;;;;-1:-1:-1;500:499:124;;-1:-1:-1;500:499:124;;-1:-1:-1;1023:1:124;;225:808;-1:-1:-1;;;;225:808:124:o;1240:191::-;1285:8;1314:2;1310:1;:6;;;1306:118;;;-1:-1:-1;1351:4:124;1347:8;;1340:16;;1333:23;;1306:118;-1:-1:-1;1407:4:124;1403:8;;1396:16;;1389:23;"},"methodIdentifiers":{"pairName(address,address,string,string)":"e9f52d23","pairSymbol(address,address,string)":"4c75e918"}},"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\":\"string\",\"name\":\"prefix\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"suffix\",\"type\":\"string\"}],\"name\":\"pairName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"suffix\",\"type\":\"string\"}],\"name\":\"pairSymbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pangolin-lib/test/PairNamerTest.sol\":\"PairNamerTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-lib/libraries/AddressStringUtil.sol\":{\"keccak256\":\"0x8050c1f9387ef9deae31ce36ec327ce96c3de4754d1e12616c335d2b17a7cc19\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b7af8608b31ba66bc5373201aaa36faba23411829783a1d94736dcd6a1767123\",\"dweb:/ipfs/QmZVJD2Bo5C8bm55tcPy2fKoPA6nCNHmEnL9E3xjuBM4Jp\"]},\"contracts/pangolin-lib/libraries/PairNamer.sol\":{\"keccak256\":\"0x5291ff5cbc95b3724786b88a78a61a462a73aff28535822128e5784293f5939d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://56a2ecf7a4a32d4500e5a9be8ede0e34873a7e6859903ddb0af2368b58af3f91\",\"dweb:/ipfs/Qmdd7myghDLt1jriNbqcUgkMB4B3hdHWPReegDBvdXHu55\"]},\"contracts/pangolin-lib/libraries/SafeERC20Namer.sol\":{\"keccak256\":\"0x3f45ecb47bdd77a08039006e7a64a242022d3ea82643aae8db29d3682ded87b8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://69a9efc9578003c3523398280203bac01c78897dd5245a4999d3ac2539774eb2\",\"dweb:/ipfs/QmRCD3FyTogFd5PKPzcWKKyGEzhZEC9JJV4wdKRU43E6MY\"]},\"contracts/pangolin-lib/test/PairNamerTest.sol\":{\"keccak256\":\"0xfca16c2f135df723d57af4b635945c70681a6b601b68f25f5c2260ee344c8c14\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://183cd95c17d0b6344b726fd8a2d319da271067c0b6f6bee445652edcc061183d\",\"dweb:/ipfs/QmZvmWQjcEvez432Uq9np9YffwLgWVbsvD1TJWv6Fj6mxq\"]}},\"version\":1}"},"PairNamerTestFakeToken":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060405161044c38038061044c8339818101604052604081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b90830190602082018581111561006857600080fd5b825164010000000081118282018810171561008257600080fd5b82525081516020918201929091019080838360005b838110156100af578181015183820152602001610097565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156100ff57600080fd5b90830190602082018581111561011457600080fd5b825164010000000081118282018810171561012e57600080fd5b82525081516020918201929091019080838360005b8381101561015b578181015183820152602001610143565b50505050905090810190601f1680156101885780820380516001836020036101000a031916815260200191505b50604052505082516101a2915060009060208501906101be565b5080516101b69060019060208401906101be565b50505061025f565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826101f4576000855561023a565b82601f1061020d57805160ff191683800117855561023a565b8280016001018555821561023a579182015b8281111561023a57825182559160200191906001019061021f565b5061024692915061024a565b5090565b5b80821115610246576000815560010161024b565b6101de8061026e6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806306fdde031461003b57806395d89b41146100b8575b600080fd5b6100436100c0565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561007d578181015183820152602001610065565b50505050905090810190601f1680156100aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61004361014e565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156101465780601f1061011b57610100808354040283529160200191610146565b820191906000526020600020905b81548152906001019060200180831161012957829003601f168201915b505050505081565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156101465780601f1061011b5761010080835404028352916020019161014656fea2646970667358221220e13fd9f458ac13e055f2bca168a7373e41ea5aa25cd6a8a0782bc3aa92a0263364736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x44C CODESIZE SUB DUP1 PUSH2 0x44C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 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 0x53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x82 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 PUSH2 0xAF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x97 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDC 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 PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x12E 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 PUSH2 0x15B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x143 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x188 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 PUSH2 0x1A2 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x1BE JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x1B6 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1BE JUMP JUMPDEST POP POP POP PUSH2 0x25F 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 PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x23A JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x20D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x23A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x23A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x23A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x21F JUMP JUMPDEST POP PUSH2 0x246 SWAP3 SWAP2 POP PUSH2 0x24A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x24B JUMP JUMPDEST PUSH2 0x1DE DUP1 PUSH2 0x26E 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 0x6FDDE03 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xB8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0xC0 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 0x7D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x65 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAA 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 0x43 PUSH2 0x14E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x146 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x11B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x146 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 0x129 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x146 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x11B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x146 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE1 EXTCODEHASH 0xD9 DELEGATECALL PC 0xAC SGT 0xE0 SSTORE CALLCODE 0xBC LOG1 PUSH9 0xA7373E41EA5AA25CD6 0xA8 LOG0 PUSH25 0x2BC3AA92A0263364736F6C6343000706003300000000000000 ","sourceMap":"732:217:134:-:0;;;825:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;825:121:134;;;;;;;;;;-1:-1:-1;825:121:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;825:121:134;;;;;;;;;;-1:-1:-1;825:121:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;825:121:134;;-1:-1:-1;;899:12:134;;;;-1:-1:-1;899:4:134;;:12;;;;;:::i;:::-;-1:-1:-1;922:16:134;;;;:6;;:16;;;;;:::i;:::-;;825:121;;732:217;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;732:217:134;;;-1:-1:-1;732:217:134;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c806306fdde031461003b57806395d89b41146100b8575b600080fd5b6100436100c0565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561007d578181015183820152602001610065565b50505050905090810190601f1680156100aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61004361014e565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156101465780601f1061011b57610100808354040283529160200191610146565b820191906000526020600020905b81548152906001019060200180831161012957829003601f168201915b505050505081565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156101465780601f1061011b5761010080835404028352916020019161014656fea2646970667358221220e13fd9f458ac13e055f2bca168a7373e41ea5aa25cd6a8a0782bc3aa92a0263364736f6c63430007060033","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 0x6FDDE03 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xB8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0xC0 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 0x7D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x65 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAA 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 0x43 PUSH2 0x14E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x146 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x11B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x146 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 0x129 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x146 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x11B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x146 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE1 EXTCODEHASH 0xD9 DELEGATECALL PC 0xAC SGT 0xE0 SSTORE CALLCODE 0xBC LOG1 PUSH9 0xA7373E41EA5AA25CD6 0xA8 LOG0 PUSH25 0x2BC3AA92A0263364736F6C6343000706003300000000000000 ","sourceMap":"732:217:134:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;771:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;796:20;;;:::i;771:18::-;;;;;;;;;;;;;;;-1:-1:-1;;771:18:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;796:20::-;;;;;;;;;;;;;;;-1:-1:-1;;796:20:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"name()":"06fdde03","symbol()":"95d89b41"}},"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\"},{\"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\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pangolin-lib/test/PairNamerTest.sol\":\"PairNamerTestFakeToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-lib/libraries/AddressStringUtil.sol\":{\"keccak256\":\"0x8050c1f9387ef9deae31ce36ec327ce96c3de4754d1e12616c335d2b17a7cc19\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b7af8608b31ba66bc5373201aaa36faba23411829783a1d94736dcd6a1767123\",\"dweb:/ipfs/QmZVJD2Bo5C8bm55tcPy2fKoPA6nCNHmEnL9E3xjuBM4Jp\"]},\"contracts/pangolin-lib/libraries/PairNamer.sol\":{\"keccak256\":\"0x5291ff5cbc95b3724786b88a78a61a462a73aff28535822128e5784293f5939d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://56a2ecf7a4a32d4500e5a9be8ede0e34873a7e6859903ddb0af2368b58af3f91\",\"dweb:/ipfs/Qmdd7myghDLt1jriNbqcUgkMB4B3hdHWPReegDBvdXHu55\"]},\"contracts/pangolin-lib/libraries/SafeERC20Namer.sol\":{\"keccak256\":\"0x3f45ecb47bdd77a08039006e7a64a242022d3ea82643aae8db29d3682ded87b8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://69a9efc9578003c3523398280203bac01c78897dd5245a4999d3ac2539774eb2\",\"dweb:/ipfs/QmRCD3FyTogFd5PKPzcWKKyGEzhZEC9JJV4wdKRU43E6MY\"]},\"contracts/pangolin-lib/test/PairNamerTest.sol\":{\"keccak256\":\"0xfca16c2f135df723d57af4b635945c70681a6b601b68f25f5c2260ee344c8c14\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://183cd95c17d0b6344b726fd8a2d319da271067c0b6f6bee445652edcc061183d\",\"dweb:/ipfs/QmZvmWQjcEvez432Uq9np9YffwLgWVbsvD1TJWv6Fj6mxq\"]}},\"version\":1}"}},"contracts/pangolin-lib/test/SafeERC20NamerTest.sol":{"NamerTestFakeCompliantERC20":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060405161044c38038061044c8339818101604052604081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b90830190602082018581111561006857600080fd5b825164010000000081118282018810171561008257600080fd5b82525081516020918201929091019080838360005b838110156100af578181015183820152602001610097565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156100ff57600080fd5b90830190602082018581111561011457600080fd5b825164010000000081118282018810171561012e57600080fd5b82525081516020918201929091019080838360005b8381101561015b578181015183820152602001610143565b50505050905090810190601f1680156101885780820380516001836020036101000a031916815260200191505b50604052505082516101a2915060009060208501906101be565b5080516101b69060019060208401906101be565b50505061025f565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826101f4576000855561023a565b82601f1061020d57805160ff191683800117855561023a565b8280016001018555821561023a579182015b8281111561023a57825182559160200191906001019061021f565b5061024692915061024a565b5090565b5b80821115610246576000815560010161024b565b6101de8061026e6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806306fdde031461003b57806395d89b41146100b8575b600080fd5b6100436100c0565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561007d578181015183820152602001610065565b50505050905090810190601f1680156100aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61004361014e565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156101465780601f1061011b57610100808354040283529160200191610146565b820191906000526020600020905b81548152906001019060200180831161012957829003601f168201915b505050505081565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156101465780601f1061011b5761010080835404028352916020019161014656fea26469706673582212205fd9b2b7c6ed40bfcdaaa1021b5914af2540840e341a4a373e9c96a116cd028964736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x44C CODESIZE SUB DUP1 PUSH2 0x44C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 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 0x53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x82 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 PUSH2 0xAF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x97 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDC 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 PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x12E 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 PUSH2 0x15B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x143 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x188 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 PUSH2 0x1A2 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x1BE JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x1B6 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1BE JUMP JUMPDEST POP POP POP PUSH2 0x25F 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 PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x23A JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x20D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x23A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x23A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x23A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x21F JUMP JUMPDEST POP PUSH2 0x246 SWAP3 SWAP2 POP PUSH2 0x24A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x24B JUMP JUMPDEST PUSH2 0x1DE DUP1 PUSH2 0x26E 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 0x6FDDE03 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xB8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0xC0 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 0x7D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x65 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAA 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 0x43 PUSH2 0x14E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x146 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x11B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x146 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 0x129 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x146 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x11B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x146 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5F 0xD9 0xB2 0xB7 0xC6 0xED BLOCKHASH 0xBF 0xCD 0xAA LOG1 MUL SHL MSIZE EQ 0xAF 0x25 BLOCKHASH DUP5 0xE CALLVALUE BYTE 0x4A CALLDATACOPY RETURNDATACOPY SWAP13 SWAP7 LOG1 AND 0xCD MUL DUP10 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"608:222:135:-:0;;;706:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;706:121:135;;;;;;;;;;-1:-1:-1;706:121:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;706:121:135;;;;;;;;;;-1:-1:-1;706:121:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;706:121:135;;-1:-1:-1;;780:12:135;;;;-1:-1:-1;780:4:135;;:12;;;;;:::i;:::-;-1:-1:-1;803:16:135;;;;:6;;:16;;;;;:::i;:::-;;706:121;;608:222;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;608:222:135;;;-1:-1:-1;608:222:135;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c806306fdde031461003b57806395d89b41146100b8575b600080fd5b6100436100c0565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561007d578181015183820152602001610065565b50505050905090810190601f1680156100aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61004361014e565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156101465780601f1061011b57610100808354040283529160200191610146565b820191906000526020600020905b81548152906001019060200180831161012957829003601f168201915b505050505081565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156101465780601f1061011b5761010080835404028352916020019161014656fea26469706673582212205fd9b2b7c6ed40bfcdaaa1021b5914af2540840e341a4a373e9c96a116cd028964736f6c63430007060033","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 0x6FDDE03 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xB8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0xC0 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 0x7D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x65 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAA 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 0x43 PUSH2 0x14E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x146 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x11B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x146 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 0x129 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x146 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x11B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x146 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5F 0xD9 0xB2 0xB7 0xC6 0xED BLOCKHASH 0xBF 0xCD 0xAA LOG1 MUL SHL MSIZE EQ 0xAF 0x25 BLOCKHASH DUP5 0xE CALLVALUE BYTE 0x4A CALLDATACOPY RETURNDATACOPY SWAP13 SWAP7 LOG1 AND 0xCD MUL DUP10 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"608:222:135:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;652:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;677:20;;;:::i;652:18::-;;;;;;;;;;;;;;;-1:-1:-1;;652:18:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;677:20::-;;;;;;;;;;;;;;;-1:-1:-1;;677:20:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"name()":"06fdde03","symbol()":"95d89b41"}},"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\"},{\"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\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pangolin-lib/test/SafeERC20NamerTest.sol\":\"NamerTestFakeCompliantERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-lib/libraries/AddressStringUtil.sol\":{\"keccak256\":\"0x8050c1f9387ef9deae31ce36ec327ce96c3de4754d1e12616c335d2b17a7cc19\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b7af8608b31ba66bc5373201aaa36faba23411829783a1d94736dcd6a1767123\",\"dweb:/ipfs/QmZVJD2Bo5C8bm55tcPy2fKoPA6nCNHmEnL9E3xjuBM4Jp\"]},\"contracts/pangolin-lib/libraries/SafeERC20Namer.sol\":{\"keccak256\":\"0x3f45ecb47bdd77a08039006e7a64a242022d3ea82643aae8db29d3682ded87b8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://69a9efc9578003c3523398280203bac01c78897dd5245a4999d3ac2539774eb2\",\"dweb:/ipfs/QmRCD3FyTogFd5PKPzcWKKyGEzhZEC9JJV4wdKRU43E6MY\"]},\"contracts/pangolin-lib/test/SafeERC20NamerTest.sol\":{\"keccak256\":\"0x5a5d8822a632625069dfd4f36794b22c1eca426cc84bc8c849cb23b89dfa2b4a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ee84c90f9f79e41d422824e31b6af1e922fc12423791fb1ee447d10048df9db0\",\"dweb:/ipfs/QmU89tkcRnzDdTi1cEVAEwW7CvvWoVriBHRARiHiUVrMwT\"]}},\"version\":1}"},"NamerTestFakeNoncompliantERC20":{"abi":[{"inputs":[{"internalType":"bytes32","name":"name_","type":"bytes32"},{"internalType":"bytes32","name":"symbol_","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"name","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506040516100ea3803806100ea8339818101604052604081101561003357600080fd5b5080516020909101516000919091556001556097806100536000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806306fdde0314603757806395d89b4114604f575b600080fd5b603d6055565b60408051918252519081900360200190f35b603d605b565b60005481565b6001548156fea2646970667358221220a8f2d1f940e75f7602d23350a027a5b1a59364fd667c2923e74360359268f2fe64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xEA CODESIZE SUB DUP1 PUSH2 0xEA 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 0x0 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x1 SSTORE PUSH1 0x97 DUP1 PUSH2 0x53 PUSH1 0x0 CODECOPY 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 0x6FDDE03 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH1 0x4F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x55 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x3D PUSH1 0x5B JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 CALLCODE 0xD1 0xF9 BLOCKHASH 0xE7 0x5F PUSH23 0x2D23350A027A5B1A59364FD667C2923E74360359268F2 INVALID PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"885:215:135:-:0;;;988:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;988:109:135;;;;;;;1050:4;:12;;;;1073:6;:16;885:215;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060325760003560e01c806306fdde0314603757806395d89b4114604f575b600080fd5b603d6055565b60408051918252519081900360200190f35b603d605b565b60005481565b6001548156fea2646970667358221220a8f2d1f940e75f7602d23350a027a5b1a59364fd667c2923e74360359268f2fe64736f6c63430007060033","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 0x6FDDE03 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH1 0x4F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x55 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x3D PUSH1 0x5B JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 CALLCODE 0xD1 0xF9 BLOCKHASH 0xE7 0x5F PUSH23 0x2D23350A027A5B1A59364FD667C2923E74360359268F2 INVALID PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"885:215:135:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;932:19;;;:::i;:::-;;;;;;;;;;;;;;;;958:21;;;:::i;932:19::-;;;;:::o;958:21::-;;;;:::o"},"methodIdentifiers":{"name()":"06fdde03","symbol()":"95d89b41"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"symbol_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pangolin-lib/test/SafeERC20NamerTest.sol\":\"NamerTestFakeNoncompliantERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-lib/libraries/AddressStringUtil.sol\":{\"keccak256\":\"0x8050c1f9387ef9deae31ce36ec327ce96c3de4754d1e12616c335d2b17a7cc19\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b7af8608b31ba66bc5373201aaa36faba23411829783a1d94736dcd6a1767123\",\"dweb:/ipfs/QmZVJD2Bo5C8bm55tcPy2fKoPA6nCNHmEnL9E3xjuBM4Jp\"]},\"contracts/pangolin-lib/libraries/SafeERC20Namer.sol\":{\"keccak256\":\"0x3f45ecb47bdd77a08039006e7a64a242022d3ea82643aae8db29d3682ded87b8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://69a9efc9578003c3523398280203bac01c78897dd5245a4999d3ac2539774eb2\",\"dweb:/ipfs/QmRCD3FyTogFd5PKPzcWKKyGEzhZEC9JJV4wdKRU43E6MY\"]},\"contracts/pangolin-lib/test/SafeERC20NamerTest.sol\":{\"keccak256\":\"0x5a5d8822a632625069dfd4f36794b22c1eca426cc84bc8c849cb23b89dfa2b4a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ee84c90f9f79e41d422824e31b6af1e922fc12423791fb1ee447d10048df9db0\",\"dweb:/ipfs/QmU89tkcRnzDdTi1cEVAEwW7CvvWoVriBHRARiHiUVrMwT\"]}},\"version\":1}"},"NamerTestFakeOptionalERC20":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212205df49f19fd4adf7278cfb26ece0b5a5331957391f1c8b30a0846eee068e2b24e64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D DELEGATECALL SWAP16 NOT REVERT 0x4A 0xDF PUSH19 0x78CFB26ECE0B5A5331957391F1C8B30A0846EE 0xE0 PUSH9 0xE2B24E64736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"518:42:135:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea26469706673582212205df49f19fd4adf7278cfb26ece0b5a5331957391f1c8b30a0846eee068e2b24e64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D DELEGATECALL SWAP16 NOT REVERT 0x4A 0xDF PUSH19 0x78CFB26ECE0B5A5331957391F1C8B30A0846EE 0xE0 PUSH9 0xE2B24E64736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"518:42:135:-: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/pangolin-lib/test/SafeERC20NamerTest.sol\":\"NamerTestFakeOptionalERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-lib/libraries/AddressStringUtil.sol\":{\"keccak256\":\"0x8050c1f9387ef9deae31ce36ec327ce96c3de4754d1e12616c335d2b17a7cc19\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b7af8608b31ba66bc5373201aaa36faba23411829783a1d94736dcd6a1767123\",\"dweb:/ipfs/QmZVJD2Bo5C8bm55tcPy2fKoPA6nCNHmEnL9E3xjuBM4Jp\"]},\"contracts/pangolin-lib/libraries/SafeERC20Namer.sol\":{\"keccak256\":\"0x3f45ecb47bdd77a08039006e7a64a242022d3ea82643aae8db29d3682ded87b8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://69a9efc9578003c3523398280203bac01c78897dd5245a4999d3ac2539774eb2\",\"dweb:/ipfs/QmRCD3FyTogFd5PKPzcWKKyGEzhZEC9JJV4wdKRU43E6MY\"]},\"contracts/pangolin-lib/test/SafeERC20NamerTest.sol\":{\"keccak256\":\"0x5a5d8822a632625069dfd4f36794b22c1eca426cc84bc8c849cb23b89dfa2b4a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ee84c90f9f79e41d422824e31b6af1e922fc12423791fb1ee447d10048df9db0\",\"dweb:/ipfs/QmU89tkcRnzDdTi1cEVAEwW7CvvWoVriBHRARiHiUVrMwT\"]}},\"version\":1}"},"SafeERC20NamerTest":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"tokenName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"tokenSymbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506106e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063033b9b4f1461003b578063e54f7522146100d6575b600080fd5b6100616004803603602081101561005157600080fd5b50356001600160a01b03166100fc565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561009b578181015183820152602001610083565b50505050905090810190601f1680156100c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610061600480360360208110156100ec57600080fd5b50356001600160a01b031661010f565b60606101078261011a565b90505b919050565b60606101078261014c565b6060600061012f836395d89b4160e01b610176565b905080516000141561010757610144836103ce565b91505061010a565b60606000610161836306fdde0360e01b610176565b905080516000141561010757610144836103db565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000085161781529151815160609360009384936001600160a01b03891693919290918291908083835b6020831061020f5780518252601f1990920191602091820191016101f0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461026f576040519150601f19603f3d011682016040523d82523d6000602084013e610274565b606091505b509150915081158061028557508051155b156102a35760405180602001604052806000815250925050506103c8565b8051602014156102db5760008180602001905160208110156102c457600080fd5b505190506102d1816103e8565b93505050506103c8565b6040815111156103b3578080602001905160208110156102fa57600080fd5b810190808051604051939291908464010000000082111561031a57600080fd5b90830190602082018581111561032f57600080fd5b825164010000000081118282018810171561034957600080fd5b82525081516020918201929091019080838360005b8381101561037657818101518382015260200161035e565b50505050905090810190601f1680156103a35780820380516001836020036101000a031916815260200191505b50604052505050925050506103c8565b60405180602001604052806000815250925050505b92915050565b6060610107826006610528565b6060610107826028610528565b604080516020808252818301909252606091600091906020820181803683370190505090506000805b602081101561048a57600085826020811061042857fe5b1a60f81b90507fff00000000000000000000000000000000000000000000000000000000000000811615610481578084848151811061046357fe5b60200101906001600160f81b031916908160001a9053506001909201915b50600101610411565b5060008167ffffffffffffffff811180156104a457600080fd5b506040519080825280601f01601f1916602001820160405280156104cf576020820181803683370190505b50905060005b8281101561051f578381815181106104e957fe5b602001015160f81c60f81b82828151811061050057fe5b60200101906001600160f81b031916908160001a9053506001016104d5565b50949350505050565b60606002820615801561053b5750600082115b8015610548575060288211155b610599576040805162461bcd60e51b815260206004820152601e60248201527f41646472657373537472696e675574696c3a20494e56414c49445f4c454e0000604482015290519081900360640190fd5b60008267ffffffffffffffff811180156105b257600080fd5b506040519080825280601f01601f1916602001820160405280156105dd576020820181803683370190505b5090506001600160a01b03841660005b6002850481101561068157600860138290030282901c600f600482901c1660f08216820361061a8261068b565b86856002028151811061062957fe5b60200101906001600160f81b031916908160001a9053506106498161068b565b86856002026001018151811061065b57fe5b60200101906001600160f81b031916908160001a90535050600190920191506105ed9050565b5090949350505050565b6000600a8260ff1610156106a657506030810160f81b61010a565b506037810160f81b61010a56fea264697066735822122041982abcbd3e5704dc8b627dfe1b3bdf34790aacb8ae99e422fd5d84984f8de364736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6E9 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 0x33B9B4F EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xE54F7522 EQ PUSH2 0xD6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x61 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFC 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 0x9B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x83 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC8 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 0x61 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10F JUMP JUMPDEST PUSH1 0x60 PUSH2 0x107 DUP3 PUSH2 0x11A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x107 DUP3 PUSH2 0x14C JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x12F DUP4 PUSH4 0x95D89B41 PUSH1 0xE0 SHL PUSH2 0x176 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x107 JUMPI PUSH2 0x144 DUP4 PUSH2 0x3CE JUMP JUMPDEST SWAP2 POP POP PUSH2 0x10A JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x161 DUP4 PUSH4 0x6FDDE03 PUSH1 0xE0 SHL PUSH2 0x176 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x107 JUMPI PUSH2 0x144 DUP4 PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP6 AND OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x60 SWAP4 PUSH1 0x0 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x20F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1F0 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 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x26F 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 0x274 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO DUP1 PUSH2 0x285 JUMPI POP DUP1 MLOAD ISZERO JUMPDEST ISZERO PUSH2 0x2A3 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP POP POP PUSH2 0x3C8 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 EQ ISZERO PUSH2 0x2DB JUMPI PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x2D1 DUP2 PUSH2 0x3E8 JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x3C8 JUMP JUMPDEST PUSH1 0x40 DUP2 MLOAD GT ISZERO PUSH2 0x3B3 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2FA 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 0x31A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x349 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 PUSH2 0x376 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x35E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3A3 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 SWAP3 POP POP POP PUSH2 0x3C8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x107 DUP3 PUSH1 0x6 PUSH2 0x528 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x107 DUP3 PUSH1 0x28 PUSH2 0x528 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x48A JUMPI PUSH1 0x0 DUP6 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x428 JUMPI INVALID JUMPDEST BYTE PUSH1 0xF8 SHL SWAP1 POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP2 AND ISZERO PUSH2 0x481 JUMPI DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x463 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x411 JUMP JUMPDEST POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4A4 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 0x4CF JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x51F JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x4E9 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x500 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x4D5 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MOD ISZERO DUP1 ISZERO PUSH2 0x53B JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST DUP1 ISZERO PUSH2 0x548 JUMPI POP PUSH1 0x28 DUP3 GT ISZERO JUMPDEST PUSH2 0x599 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373537472696E675574696C3A20494E56414C49445F4C454E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x5B2 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 0x5DD JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 JUMPDEST PUSH1 0x2 DUP6 DIV DUP2 LT ISZERO PUSH2 0x681 JUMPI PUSH1 0x8 PUSH1 0x13 DUP3 SWAP1 SUB MUL DUP3 SWAP1 SHR PUSH1 0xF PUSH1 0x4 DUP3 SWAP1 SHR AND PUSH1 0xF0 DUP3 AND DUP3 SUB PUSH2 0x61A DUP3 PUSH2 0x68B JUMP JUMPDEST DUP7 DUP6 PUSH1 0x2 MUL DUP2 MLOAD DUP2 LT PUSH2 0x629 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x649 DUP2 PUSH2 0x68B JUMP JUMPDEST DUP7 DUP6 PUSH1 0x2 MUL PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x65B JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x5ED SWAP1 POP JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA DUP3 PUSH1 0xFF AND LT ISZERO PUSH2 0x6A6 JUMPI POP PUSH1 0x30 DUP2 ADD PUSH1 0xF8 SHL PUSH2 0x10A JUMP JUMPDEST POP PUSH1 0x37 DUP2 ADD PUSH1 0xF8 SHL PUSH2 0x10A JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE SWAP9 0x2A 0xBC 0xBD RETURNDATACOPY JUMPI DIV 0xDC DUP12 PUSH3 0x7DFE1B EXTCODESIZE 0xDF CALLVALUE PUSH26 0xAACB8AE99E422FD5D84984F8DE364736F6C6343000706003300 ","sourceMap":"168:308:135:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c8063033b9b4f1461003b578063e54f7522146100d6575b600080fd5b6100616004803603602081101561005157600080fd5b50356001600160a01b03166100fc565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561009b578181015183820152602001610083565b50505050905090810190601f1680156100c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610061600480360360208110156100ec57600080fd5b50356001600160a01b031661010f565b60606101078261011a565b90505b919050565b60606101078261014c565b6060600061012f836395d89b4160e01b610176565b905080516000141561010757610144836103ce565b91505061010a565b60606000610161836306fdde0360e01b610176565b905080516000141561010757610144836103db565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000085161781529151815160609360009384936001600160a01b03891693919290918291908083835b6020831061020f5780518252601f1990920191602091820191016101f0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461026f576040519150601f19603f3d011682016040523d82523d6000602084013e610274565b606091505b509150915081158061028557508051155b156102a35760405180602001604052806000815250925050506103c8565b8051602014156102db5760008180602001905160208110156102c457600080fd5b505190506102d1816103e8565b93505050506103c8565b6040815111156103b3578080602001905160208110156102fa57600080fd5b810190808051604051939291908464010000000082111561031a57600080fd5b90830190602082018581111561032f57600080fd5b825164010000000081118282018810171561034957600080fd5b82525081516020918201929091019080838360005b8381101561037657818101518382015260200161035e565b50505050905090810190601f1680156103a35780820380516001836020036101000a031916815260200191505b50604052505050925050506103c8565b60405180602001604052806000815250925050505b92915050565b6060610107826006610528565b6060610107826028610528565b604080516020808252818301909252606091600091906020820181803683370190505090506000805b602081101561048a57600085826020811061042857fe5b1a60f81b90507fff00000000000000000000000000000000000000000000000000000000000000811615610481578084848151811061046357fe5b60200101906001600160f81b031916908160001a9053506001909201915b50600101610411565b5060008167ffffffffffffffff811180156104a457600080fd5b506040519080825280601f01601f1916602001820160405280156104cf576020820181803683370190505b50905060005b8281101561051f578381815181106104e957fe5b602001015160f81c60f81b82828151811061050057fe5b60200101906001600160f81b031916908160001a9053506001016104d5565b50949350505050565b60606002820615801561053b5750600082115b8015610548575060288211155b610599576040805162461bcd60e51b815260206004820152601e60248201527f41646472657373537472696e675574696c3a20494e56414c49445f4c454e0000604482015290519081900360640190fd5b60008267ffffffffffffffff811180156105b257600080fd5b506040519080825280601f01601f1916602001820160405280156105dd576020820181803683370190505b5090506001600160a01b03841660005b6002850481101561068157600860138290030282901c600f600482901c1660f08216820361061a8261068b565b86856002028151811061062957fe5b60200101906001600160f81b031916908160001a9053506106498161068b565b86856002026001018151811061065b57fe5b60200101906001600160f81b031916908160001a90535050600190920191506105ed9050565b5090949350505050565b6000600a8260ff1610156106a657506030810160f81b61010a565b506037810160f81b61010a56fea264697066735822122041982abcbd3e5704dc8b627dfe1b3bdf34790aacb8ae99e422fd5d84984f8de364736f6c63430007060033","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 0x33B9B4F EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xE54F7522 EQ PUSH2 0xD6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x61 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFC 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 0x9B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x83 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC8 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 0x61 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10F JUMP JUMPDEST PUSH1 0x60 PUSH2 0x107 DUP3 PUSH2 0x11A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x107 DUP3 PUSH2 0x14C JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x12F DUP4 PUSH4 0x95D89B41 PUSH1 0xE0 SHL PUSH2 0x176 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x107 JUMPI PUSH2 0x144 DUP4 PUSH2 0x3CE JUMP JUMPDEST SWAP2 POP POP PUSH2 0x10A JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x161 DUP4 PUSH4 0x6FDDE03 PUSH1 0xE0 SHL PUSH2 0x176 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x107 JUMPI PUSH2 0x144 DUP4 PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP6 AND OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x60 SWAP4 PUSH1 0x0 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x20F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1F0 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 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x26F 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 0x274 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO DUP1 PUSH2 0x285 JUMPI POP DUP1 MLOAD ISZERO JUMPDEST ISZERO PUSH2 0x2A3 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP POP POP PUSH2 0x3C8 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 EQ ISZERO PUSH2 0x2DB JUMPI PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x2D1 DUP2 PUSH2 0x3E8 JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x3C8 JUMP JUMPDEST PUSH1 0x40 DUP2 MLOAD GT ISZERO PUSH2 0x3B3 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2FA 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 0x31A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x349 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 PUSH2 0x376 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x35E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3A3 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 SWAP3 POP POP POP PUSH2 0x3C8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x107 DUP3 PUSH1 0x6 PUSH2 0x528 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x107 DUP3 PUSH1 0x28 PUSH2 0x528 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x48A JUMPI PUSH1 0x0 DUP6 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x428 JUMPI INVALID JUMPDEST BYTE PUSH1 0xF8 SHL SWAP1 POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP2 AND ISZERO PUSH2 0x481 JUMPI DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x463 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x411 JUMP JUMPDEST POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4A4 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 0x4CF JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x51F JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x4E9 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x500 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x4D5 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MOD ISZERO DUP1 ISZERO PUSH2 0x53B JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST DUP1 ISZERO PUSH2 0x548 JUMPI POP PUSH1 0x28 DUP3 GT ISZERO JUMPDEST PUSH2 0x599 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373537472696E675574696C3A20494E56414C49445F4C454E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x5B2 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 0x5DD JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 JUMPDEST PUSH1 0x2 DUP6 DIV DUP2 LT ISZERO PUSH2 0x681 JUMPI PUSH1 0x8 PUSH1 0x13 DUP3 SWAP1 SUB MUL DUP3 SWAP1 SHR PUSH1 0xF PUSH1 0x4 DUP3 SWAP1 SHR AND PUSH1 0xF0 DUP3 AND DUP3 SUB PUSH2 0x61A DUP3 PUSH2 0x68B JUMP JUMPDEST DUP7 DUP6 PUSH1 0x2 MUL DUP2 MLOAD DUP2 LT PUSH2 0x629 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x649 DUP2 PUSH2 0x68B JUMP JUMPDEST DUP7 DUP6 PUSH1 0x2 MUL PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x65B JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x5ED SWAP1 POP JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA DUP3 PUSH1 0xFF AND LT ISZERO PUSH2 0x6A6 JUMPI POP PUSH1 0x30 DUP2 ADD PUSH1 0xF8 SHL PUSH2 0x10A JUMP JUMPDEST POP PUSH1 0x37 DUP2 ADD PUSH1 0xF8 SHL PUSH2 0x10A JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE SWAP9 0x2A 0xBC 0xBD RETURNDATACOPY JUMPI DIV 0xDC DUP12 PUSH3 0x7DFE1B EXTCODESIZE 0xDF CALLVALUE PUSH26 0xAACB8AE99E422FD5D84984F8DE364736F6C6343000706003300 ","sourceMap":"168:308:135:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;203:133;;;;;;;;;;;;;;;;-1:-1:-1;203:133:135;-1:-1:-1;;;;;203:133:135;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:129;;;;;;;;;;;;;;;;-1:-1:-1;344:129:135;-1:-1:-1;;;;;344:129:135;;:::i;203:133::-;262:13;295:33;322:5;295:26;:33::i;:::-;288:40;;203:133;;;;:::o;344:129::-;401:13;434:31;459:5;434:24;:31::i;3033:390:129:-;3092:13;3173:20;3196:43;3221:5;-1:-1:-1;;;3196:24:129;:43::i;:::-;3173:66;;3260:6;3254:20;3278:1;3254:25;3250:142;;;3358:22;3374:5;3358:15;:22::i;:::-;3351:29;;;;;3546:371;3603:13;3682:18;3703:43;3728:5;-1:-1:-1;;;3703:24:129;:43::i;:::-;3682:64;;3767:4;3761:18;3783:1;3761:23;3757:131;;;3856:20;3870:5;3856:13;:20::i;2236:668::-;2403:32;;;;;;;;;;;;;;;;;;;;;;;;2386:50;;;;2324:13;;2351:12;;;;-1:-1:-1;;;;;2386:16:129;;;2403:32;;2386:50;;;;2403:32;2386:50;;2403:32;2386:50;;;;;;;;;;-1:-1:-1;;2386:50:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2350:86;;;;2527:7;2526:8;:28;;;-1:-1:-1;2538:11:129;;:16;2526:28;2522:70;;;2571:9;;;;;;;;;;;;;;;;;;2522:70;2652:4;:11;2667:2;2652:17;2648:229;;;2686:15;2715:4;2704:27;;;;;;;;;;;;;;;-1:-1:-1;2704:27:129;;-1:-1:-1;2753:24:129;2704:27;2753:15;:24::i;:::-;2746:31;;;;;;;2648:229;2813:2;2799:4;:11;:16;2795:82;;;2850:4;2839:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2839:26:129;;;;;;;;;;-1:-1:-1;2839:26:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2832:33;;;;;;2795:82;2887:9;;;;;;;;;;;;;;;;2236:668;;;;;:::o;1964:144::-;2026:13;2059:41;2091:5;2098:1;2059:31;:41::i;1663:143::-;1723:13;1756:42;1788:5;1795:2;1756:31;:42::i;341:599::-;452:13;;;462:2;452:13;;;;;;;;;399;;425:24;;452:13;;;;;;;;;;;-1:-1:-1;452:13:129;425:40;;476:17;513:9;508:201;532:2;528:1;:6;508:201;;;556:11;570:1;572;570:4;;;;;;;;;;;-1:-1:-1;593:9:129;;;;589:109;;648:4;623:11;635:9;623:22;;;;;;;;;;;:29;-1:-1:-1;;;;;623:29:129;;;;;;;;-1:-1:-1;671:11:129;;;;;589:109;-1:-1:-1;536:3:129;;508:201;;;;719:31;763:9;753:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;753:20:129;;719:54;;789:9;784:105;808:9;804:1;:13;784:105;;;863:11;875:1;863:14;;;;;;;;;;;;;;;;839:18;858:1;839:21;;;;;;;;;;;:38;-1:-1:-1;;;;;839:38:129;;;;;;;;-1:-1:-1;819:3:129;;784:105;;;-1:-1:-1;913:18:129;341:599;-1:-1:-1;;;;341:599:129:o;225:808:124:-;298:13;338:1;332:3;:7;:12;:23;;;;;354:1;348:3;:7;332:23;:36;;;;;366:2;359:3;:9;;332:36;324:79;;;;;-1:-1:-1;;;324:79:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;416:14;443:3;433:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;433:14:124;-1:-1:-1;416:31:124;-1:-1:-1;;;;;;476:13:124;;458:15;500:499;530:1;524:3;:7;520:1;:11;500:499;;;694:1;699:2;:6;;;694:12;682:25;;;801:6;806:1;801:6;;;;907:7;;;902:13;;941:8;801:6;941:4;:8::i;:::-;930:1;936;932;:5;930:8;;;;;;;;;;;:19;-1:-1:-1;;;;;930:19:124;;;;;;;;;979:8;984:2;979:4;:8::i;:::-;964:1;970;966;:5;974:1;966:9;964:12;;;;;;;;;;;:23;-1:-1:-1;;;;;964:23:124;;;;;;;;-1:-1:-1;;533:3:124;;;;;-1:-1:-1;500:499:124;;-1:-1:-1;500:499:124;;-1:-1:-1;1023:1:124;;225:808;-1:-1:-1;;;;225:808:124:o;1240:191::-;1285:8;1314:2;1310:1;:6;;;1306:118;;;-1:-1:-1;1351:4:124;1347:8;;1340:16;;1333:23;;1306:118;-1:-1:-1;1407:4:124;1403:8;;1396:16;;1389:23;"},"methodIdentifiers":{"tokenName(address)":"e54f7522","tokenSymbol(address)":"033b9b4f"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"tokenName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"tokenSymbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pangolin-lib/test/SafeERC20NamerTest.sol\":\"SafeERC20NamerTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-lib/libraries/AddressStringUtil.sol\":{\"keccak256\":\"0x8050c1f9387ef9deae31ce36ec327ce96c3de4754d1e12616c335d2b17a7cc19\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b7af8608b31ba66bc5373201aaa36faba23411829783a1d94736dcd6a1767123\",\"dweb:/ipfs/QmZVJD2Bo5C8bm55tcPy2fKoPA6nCNHmEnL9E3xjuBM4Jp\"]},\"contracts/pangolin-lib/libraries/SafeERC20Namer.sol\":{\"keccak256\":\"0x3f45ecb47bdd77a08039006e7a64a242022d3ea82643aae8db29d3682ded87b8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://69a9efc9578003c3523398280203bac01c78897dd5245a4999d3ac2539774eb2\",\"dweb:/ipfs/QmRCD3FyTogFd5PKPzcWKKyGEzhZEC9JJV4wdKRU43E6MY\"]},\"contracts/pangolin-lib/test/SafeERC20NamerTest.sol\":{\"keccak256\":\"0x5a5d8822a632625069dfd4f36794b22c1eca426cc84bc8c849cb23b89dfa2b4a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ee84c90f9f79e41d422824e31b6af1e922fc12423791fb1ee447d10048df9db0\",\"dweb:/ipfs/QmU89tkcRnzDdTi1cEVAEwW7CvvWoVriBHRARiHiUVrMwT\"]}},\"version\":1}"}},"contracts/pangolin-lib/test/TransferHelperTest.sol":{"TransferHelperTest":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"safeApprove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"safeTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"safeTransferAVAX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506106fa806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80637a03e80f14610051578063d1660f991461007f578063d9fc4b61146100b5578063eb5625d9146100f1575b600080fd5b61007d6004803603604081101561006757600080fd5b506001600160a01b038135169060200135610127565b005b61007d6004803603606081101561009557600080fd5b506001600160a01b03813581169160208101359091169060400135610135565b61007d600480360360808110156100cb57600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135610145565b61007d6004803603606081101561010757600080fd5b506001600160a01b03813581169160208101359091169060400135610157565b6101318282610162565b5050565b610140838383610255565b505050565b610151848484846103be565b50505050565b61014083838361051a565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106101ae5780518252601f19909201916020918201910161018f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610210576040519150601f19603f3d011682016040523d82523d6000602084013e610215565b606091505b50509050806101405760405162461bcd60e51b815260040180806020018281038252602481526020018061067d6024913960400191505060405180910390fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106102d15780518252601f1990920191602091820191016102b2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610333576040519150601f19603f3d011682016040523d82523d6000602084013e610338565b606091505b5091509150818015610366575080511580610366575080806020019051602081101561036357600080fd5b50515b6103b7576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000948594938a169392918291908083835b602083106104425780518252601f199092019160209182019101610423565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146104a4576040519150601f19603f3d011682016040523d82523d6000602084013e6104a9565b606091505b50915091508180156104d75750805115806104d757508080602001905160208110156104d457600080fd5b50515b6105125760405162461bcd60e51b81526004018080602001828103825260248152602001806106a16024913960400191505060405180910390fd5b505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b1781529251825160009485949389169392918291908083835b602083106105965780518252601f199092019160209182019101610577565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146105f8576040519150601f19603f3d011682016040523d82523d6000602084013e6105fd565b606091505b509150915081801561062b57508051158061062b575080806020019051602081101561062857600080fd5b50515b6103b7576040805162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604482015290519081900360640190fdfe5472616e7366657248656c7065723a20415641585f5452414e534645525f4641494c45445472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a26469706673582212208a8861957f1446c0a01841b9d8308da8b2d6618fedca642a897aff0af891b81964736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6FA 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 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7A03E80F EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0xD1660F99 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0xD9FC4B61 EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0xEB5625D9 EQ PUSH2 0xF1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x127 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x135 JUMP JUMPDEST PUSH2 0x7D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x145 JUMP JUMPDEST PUSH2 0x7D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x157 JUMP JUMPDEST PUSH2 0x131 DUP3 DUP3 PUSH2 0x162 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x140 DUP4 DUP4 DUP4 PUSH2 0x255 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x151 DUP5 DUP5 DUP5 DUP5 PUSH2 0x3BE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x140 DUP4 DUP4 DUP4 PUSH2 0x51A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1AE JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x18F 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 0x210 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 0x215 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x140 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x67D PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL 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 0x2D1 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2B2 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 0x333 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 0x338 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x366 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x366 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x363 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x3B7 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 0x5472616E7366657248656C7065723A205452414E534645525F4641494C454400 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 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL 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 0x442 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x423 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 0x4A4 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 0x4A9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4D7 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4D7 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x512 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x6A1 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL 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 0x596 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x577 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 0x5F8 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 0x5FD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x62B JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x62B JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x628 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x3B7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A20415050524F56455F4641494C45440000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID SLOAD PUSH19 0x616E7366657248656C7065723A20415641585F SLOAD MSTORE COINBASE 0x4E MSTORE8 CHAINID GASLIMIT MSTORE 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY SLOAD PUSH19 0x616E7366657248656C7065723A205452414E53 CHAINID GASLIMIT MSTORE 0x5F CHAINID MSTORE 0x4F 0x4D 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP11 DUP9 PUSH2 0x957F EQ CHAINID 0xC0 LOG0 XOR COINBASE 0xB9 0xD8 ADDRESS DUP14 0xA8 0xB2 0xD6 PUSH2 0x8FED 0xCA PUSH5 0x2A897AFF0A 0xF8 SWAP2 0xB8 NOT PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"158:733:136:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061004c5760003560e01c80637a03e80f14610051578063d1660f991461007f578063d9fc4b61146100b5578063eb5625d9146100f1575b600080fd5b61007d6004803603604081101561006757600080fd5b506001600160a01b038135169060200135610127565b005b61007d6004803603606081101561009557600080fd5b506001600160a01b03813581169160208101359091169060400135610135565b61007d600480360360808110156100cb57600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135610145565b61007d6004803603606081101561010757600080fd5b506001600160a01b03813581169160208101359091169060400135610157565b6101318282610162565b5050565b610140838383610255565b505050565b610151848484846103be565b50505050565b61014083838361051a565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106101ae5780518252601f19909201916020918201910161018f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610210576040519150601f19603f3d011682016040523d82523d6000602084013e610215565b606091505b50509050806101405760405162461bcd60e51b815260040180806020018281038252602481526020018061067d6024913960400191505060405180910390fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106102d15780518252601f1990920191602091820191016102b2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610333576040519150601f19603f3d011682016040523d82523d6000602084013e610338565b606091505b5091509150818015610366575080511580610366575080806020019051602081101561036357600080fd5b50515b6103b7576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000948594938a169392918291908083835b602083106104425780518252601f199092019160209182019101610423565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146104a4576040519150601f19603f3d011682016040523d82523d6000602084013e6104a9565b606091505b50915091508180156104d75750805115806104d757508080602001905160208110156104d457600080fd5b50515b6105125760405162461bcd60e51b81526004018080602001828103825260248152602001806106a16024913960400191505060405180910390fd5b505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b1781529251825160009485949389169392918291908083835b602083106105965780518252601f199092019160209182019101610577565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146105f8576040519150601f19603f3d011682016040523d82523d6000602084013e6105fd565b606091505b509150915081801561062b57508051158061062b575080806020019051602081101561062857600080fd5b50515b6103b7576040805162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604482015290519081900360640190fdfe5472616e7366657248656c7065723a20415641585f5452414e534645525f4641494c45445472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a26469706673582212208a8861957f1446c0a01841b9d8308da8b2d6618fedca642a897aff0af891b81964736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7A03E80F EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0xD1660F99 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0xD9FC4B61 EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0xEB5625D9 EQ PUSH2 0xF1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x127 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x135 JUMP JUMPDEST PUSH2 0x7D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x145 JUMP JUMPDEST PUSH2 0x7D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x157 JUMP JUMPDEST PUSH2 0x131 DUP3 DUP3 PUSH2 0x162 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x140 DUP4 DUP4 DUP4 PUSH2 0x255 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x151 DUP5 DUP5 DUP5 DUP5 PUSH2 0x3BE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x140 DUP4 DUP4 DUP4 PUSH2 0x51A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1AE JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x18F 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 0x210 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 0x215 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x140 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x67D PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL 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 0x2D1 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2B2 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 0x333 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 0x338 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x366 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x366 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x363 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x3B7 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 0x5472616E7366657248656C7065723A205452414E534645525F4641494C454400 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 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL 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 0x442 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x423 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 0x4A4 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 0x4A9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4D7 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4D7 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x512 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x6A1 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL 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 0x596 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x577 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 0x5F8 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 0x5FD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x62B JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x62B JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x628 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x3B7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A20415050524F56455F4641494C45440000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID SLOAD PUSH19 0x616E7366657248656C7065723A20415641585F SLOAD MSTORE COINBASE 0x4E MSTORE8 CHAINID GASLIMIT MSTORE 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY SLOAD PUSH19 0x616E7366657248656C7065723A205452414E53 CHAINID GASLIMIT MSTORE 0x5F CHAINID MSTORE 0x4F 0x4D 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP11 DUP9 PUSH2 0x957F EQ CHAINID 0xC0 LOG0 XOR COINBASE 0xB9 0xD8 ADDRESS DUP14 0xA8 0xB2 0xD6 PUSH2 0x8FED 0xCA PUSH5 0x2A897AFF0A 0xF8 SWAP2 0xB8 NOT PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"158:733:136:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;765:123;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;765:123:136;;;;;;;;:::i;:::-;;370:171;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;370:171:136;;;;;;;;;;;;;;;;;:::i;549:208::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;549:208:136;;;;;;;;;;;;;;;;;;;;;;:::i;193:169::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;193:169:136;;;;;;;;;;;;;;;;;:::i;765:123::-;838:42;870:2;874:5;838:31;:42::i;:::-;765:123;;:::o;370:171::-;488:45;516:5;523:2;527:5;488:27;:45::i;:::-;370:171;;;:::o;549:208::-;694:55;726:5;733:4;739:2;743:5;694:31;:55::i;:::-;549:208;;;;:::o;193:169::-;310:44;337:5;344:2;348:5;310:26;:44::i;1484:202:130:-;1598:12;;;1558;1598;;;;;;;;;-1:-1:-1;;;;;1576:7:130;;;1591:5;;1576:35;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1576:35:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1557:54;;;1630:7;1622:56;;;;-1:-1:-1;;;1622:56:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;622:398;854:45;;;-1:-1:-1;;;;;854:45:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;854:45:130;-1:-1:-1;;;854:45:130;;;843:57;;;;808:12;;;;843:10;;;;854:45;843:57;;;854:45;843:57;;854:45;843:57;;;;;;;;;;-1:-1:-1;;843:57:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;807:93;;;;919:7;:57;;;;-1:-1:-1;931:11:130;;:16;;:44;;;962:4;951:24;;;;;;;;;;;;;;;-1:-1:-1;951:24:130;931:44;911:101;;;;;-1:-1:-1;;;911:101:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;622:398;;;;;:::o;1028:448::-;1299:51;;;-1:-1:-1;;;;;1299:51:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1299:51:130;-1:-1:-1;;;1299:51:130;;;1288:63;;;;1253:12;;;;1288:10;;;;1299:51;1288:63;;;1299:51;1288:63;;1299:51;1288:63;;;;;;;;;;-1:-1:-1;;1288:63:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:99;;;;1370:7;:57;;;;-1:-1:-1;1382:11:130;;:16;;:44;;;1413:4;1402:24;;;;;;;;;;;;;;;-1:-1:-1;1402:24:130;1382:44;1362:106;;;;-1:-1:-1;;;1362:106:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1028:448;;;;;;:::o;219:395::-;449:45;;;-1:-1:-1;;;;;449:45:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;449:45:130;-1:-1:-1;;;449:45:130;;;438:57;;;;403:12;;;;438:10;;;;449:45;438:57;;;449:45;438:57;;449:45;438:57;;;;;;;;;;-1:-1:-1;;438:57:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;402:93;;;;514:7;:57;;;;-1:-1:-1;526:11:130;;:16;;:44;;;557:4;546:24;;;;;;;;;;;;;;;-1:-1:-1;546:24:130;526:44;506:100;;;;;-1:-1:-1;;;506:100:130;;;;;;;;;;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"safeApprove(address,address,uint256)":"eb5625d9","safeTransfer(address,address,uint256)":"d1660f99","safeTransferAVAX(address,uint256)":"7a03e80f","safeTransferFrom(address,address,address,uint256)":"d9fc4b61"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"safeApprove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"safeTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"safeTransferAVAX\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pangolin-lib/test/TransferHelperTest.sol\":\"TransferHelperTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-lib/libraries/TransferHelper.sol\":{\"keccak256\":\"0xfc5b469642639405484afdba1d1ad1bdc70bd5cd4f01fe53c3be27c12a149f1f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad4c82e4d301a6bb7b9aac332299cb982dc8188d52942cc04796546dfb5cbd7a\",\"dweb:/ipfs/QmeeiUQrF2asciybNWEQyzeMsSkdavRABfZreMpCmKUpcG\"]},\"contracts/pangolin-lib/test/TransferHelperTest.sol\":{\"keccak256\":\"0x364cc71d58a21d5e8bc1e1f7df6fc8b5776212bdb633d7c6549415a9ddc7a393\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://92bd5aa05b7ac8c7f23261246cfbc3634097abaf3682d2fc8279adcd297b5b0d\",\"dweb:/ipfs/Qmb8Jgshxn2H3Yx2SLsfAFbDysHAYS6q87sXTFXreQTTPE\"]}},\"version\":1}"},"TransferHelperTestFakeERC20Compliant":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"success_","type":"bool"},{"internalType":"bool","name":"shouldRevert_","type":"bool"}],"name":"setup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shouldRevert","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"success","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610259806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806323b872dd1161005057806323b872dd146100f5578063a9059cbb14610077578063d3072d821461013857610072565b8063095ea7b3146100775780630b93381b146100c457806315d98b40146100cc575b600080fd5b6100b06004803603604081101561008d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610140565b604080519115158252519081900360200190f35b6100b0610194565b6100f3600480360360408110156100e257600080fd5b50803515159060200135151561019d565b005b6100b06004803603606081101561010b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356101c0565b6100b0610215565b60008054610100900460ff1615610187576040805162461bcd60e51b815260206004820152600660248201526514915591549560d21b604482015290519081900360640190fd5b5060005460ff1692915050565b60005460ff1681565b6000805460ff19169215159290921761ff00191661010091151591909102179055565b60008054610100900460ff1615610207576040805162461bcd60e51b815260206004820152600660248201526514915591549560d21b604482015290519081900360640190fd5b5060005460ff169392505050565b600054610100900460ff168156fea2646970667358221220657680bd7e24ac1c679378702d90752af58f15bf9b0f6b523181b290d34333dc64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x259 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 0x23B872DD GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xF5 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0xD3072D82 EQ PUSH2 0x138 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0xB93381B EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x15D98B40 EQ PUSH2 0xCC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x140 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB0 PUSH2 0x194 JUMP JUMPDEST PUSH2 0xF3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x19D JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x10B 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 0x1C0 JUMP JUMPDEST PUSH2 0xB0 PUSH2 0x215 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x187 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x149155915495 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR PUSH2 0xFF00 NOT AND PUSH2 0x100 SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x207 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x149155915495 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH6 0x7680BD7E24AC SHR PUSH8 0x9378702D90752AF5 DUP16 ISZERO 0xBF SWAP12 0xF PUSH12 0x523181B290D34333DC64736F PUSH13 0x63430007060033000000000000 ","sourceMap":"952:743:136:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c806323b872dd1161005057806323b872dd146100f5578063a9059cbb14610077578063d3072d821461013857610072565b8063095ea7b3146100775780630b93381b146100c457806315d98b40146100cc575b600080fd5b6100b06004803603604081101561008d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610140565b604080519115158252519081900360200190f35b6100b0610194565b6100f3600480360360408110156100e257600080fd5b50803515159060200135151561019d565b005b6100b06004803603606081101561010b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356101c0565b6100b0610215565b60008054610100900460ff1615610187576040805162461bcd60e51b815260206004820152600660248201526514915591549560d21b604482015290519081900360640190fd5b5060005460ff1692915050565b60005460ff1681565b6000805460ff19169215159290921761ff00191661010091151591909102179055565b60008054610100900460ff1615610207576040805162461bcd60e51b815260206004820152600660248201526514915591549560d21b604482015290519081900360640190fd5b5060005460ff169392505050565b600054610100900460ff168156fea2646970667358221220657680bd7e24ac1c679378702d90752af58f15bf9b0f6b523181b290d34333dc64736f6c63430007060033","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 0x23B872DD GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xF5 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0xD3072D82 EQ PUSH2 0x138 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0xB93381B EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x15D98B40 EQ PUSH2 0xCC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x140 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB0 PUSH2 0x194 JUMP JUMPDEST PUSH2 0xF3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x19D JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x10B 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 0x1C0 JUMP JUMPDEST PUSH2 0xB0 PUSH2 0x215 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x187 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x149155915495 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR PUSH2 0xFF00 NOT AND PUSH2 0x100 SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x207 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x149155915495 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH6 0x7680BD7E24AC SHR PUSH8 0x9378702D90752AF5 DUP16 ISZERO 0xBF SWAP12 0xF PUSH12 0x523181B290D34333DC64736F PUSH13 0x63430007060033000000000000 ","sourceMap":"952:743:136:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1552:140;;;;;;;;;;;;;;;;-1:-1:-1;1552:140:136;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1005:19;;;:::i;1064:135::-;;;;;;;;;;;;;;;;-1:-1:-1;1064:135:136;;;;;;;;;;;:::i;:::-;;1356:188;;;;;;;;;;;;;;;;-1:-1:-1;1356:188:136;;;;;;;;;;;;;;;;;;:::i;1031:24::-;;;:::i;1552:140::-;1610:4;1636:12;;;;;;;1635:13;1627:32;;;;;-1:-1:-1;;;1627:32:136;;;;;;;;;;;;-1:-1:-1;;;1627:32:136;;;;;;;;;;;;;;;-1:-1:-1;1677:7:136;;;;1552:140;;;;:::o;1005:19::-;;;;;;:::o;1064:135::-;1134:7;:18;;-1:-1:-1;;1134:18:136;;;;;;;;-1:-1:-1;;1163:28:136;1134:18;1163:28;;;;;;;;;;1064:135::o;1356:188::-;1462:4;1488:12;;;;;;;1487:13;1479:32;;;;;-1:-1:-1;;;1479:32:136;;;;;;;;;;;;-1:-1:-1;;;1479:32:136;;;;;;;;;;;;;;;-1:-1:-1;1529:7:136;;;;1356:188;;;;;:::o;1031:24::-;;;;;;;;;:::o"},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","setup(bool,bool)":"15d98b40","shouldRevert()":"d3072d82","success()":"0b93381b","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"success_\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldRevert_\",\"type\":\"bool\"}],\"name\":\"setup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"shouldRevert\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"success\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pangolin-lib/test/TransferHelperTest.sol\":\"TransferHelperTestFakeERC20Compliant\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-lib/libraries/TransferHelper.sol\":{\"keccak256\":\"0xfc5b469642639405484afdba1d1ad1bdc70bd5cd4f01fe53c3be27c12a149f1f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad4c82e4d301a6bb7b9aac332299cb982dc8188d52942cc04796546dfb5cbd7a\",\"dweb:/ipfs/QmeeiUQrF2asciybNWEQyzeMsSkdavRABfZreMpCmKUpcG\"]},\"contracts/pangolin-lib/test/TransferHelperTest.sol\":{\"keccak256\":\"0x364cc71d58a21d5e8bc1e1f7df6fc8b5776212bdb633d7c6549415a9ddc7a393\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://92bd5aa05b7ac8c7f23261246cfbc3634097abaf3682d2fc8279adcd297b5b0d\",\"dweb:/ipfs/Qmb8Jgshxn2H3Yx2SLsfAFbDysHAYS6q87sXTFXreQTTPE\"]}},\"version\":1}"},"TransferHelperTestFakeERC20Noncompliant":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"shouldRevert_","type":"bool"}],"name":"setup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shouldRevert","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506101a0806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063a9059cbb11610050578063a9059cbb1461006c578063d3072d82146100ea578063e2c169ec1461010657610067565b8063095ea7b31461006c57806323b872dd146100a7575b600080fd5b6100a56004803603604081101561008257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610125565b005b6100a5600480360360608110156100bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610139565b6100f261014e565b604080519115158252519081900360200190f35b6100a56004803603602081101561011c57600080fd5b50351515610157565b60005460ff161561013557600080fd5b5050565b60005460ff161561014957600080fd5b505050565b60005460ff1681565b6000805460ff191691151591909117905556fea264697066735822122080ff834c57d1f049da5ad2b9e2d9c210209449616e7a02b3c3843982232fb5c464736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A0 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 0xA9059CBB GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0xD3072D82 EQ PUSH2 0xEA JUMPI DUP1 PUSH4 0xE2C169EC EQ PUSH2 0x106 JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xA7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x125 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xBD 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 0x139 JUMP JUMPDEST PUSH2 0xF2 PUSH2 0x14E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x157 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 SELFDESTRUCT DUP4 0x4C JUMPI 0xD1 CREATE 0x49 0xDA GAS 0xD2 0xB9 0xE2 0xD9 0xC2 LT KECCAK256 SWAP5 0x49 PUSH2 0x6E7A MUL 0xB3 0xC3 DUP5 CODECOPY DUP3 0x23 0x2F 0xB5 0xC4 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"1744:526:136:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c8063a9059cbb11610050578063a9059cbb1461006c578063d3072d82146100ea578063e2c169ec1461010657610067565b8063095ea7b31461006c57806323b872dd146100a7575b600080fd5b6100a56004803603604081101561008257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610125565b005b6100a5600480360360608110156100bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610139565b6100f261014e565b604080519115158252519081900360200190f35b6100a56004803603602081101561011c57600080fd5b50351515610157565b60005460ff161561013557600080fd5b5050565b60005460ff161561014957600080fd5b505050565b60005460ff1681565b6000805460ff191691151591909117905556fea264697066735822122080ff834c57d1f049da5ad2b9e2d9c210209449616e7a02b3c3843982232fb5c464736f6c63430007060033","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 0xA9059CBB GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0xD3072D82 EQ PUSH2 0xEA JUMPI DUP1 PUSH4 0xE2C169EC EQ PUSH2 0x106 JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xA7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x125 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xBD 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 0x139 JUMP JUMPDEST PUSH2 0xF2 PUSH2 0x14E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x157 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 SELFDESTRUCT DUP4 0x4C JUMPI 0xD1 CREATE 0x49 0xDA GAS 0xD2 0xB9 0xE2 0xD9 0xC2 LT KECCAK256 SWAP5 0x49 PUSH2 0x6E7A MUL 0xB3 0xC3 DUP5 CODECOPY DUP3 0x23 0x2F 0xB5 0xC4 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"1744:526:136:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2177:90;;;;;;;;;;;;;;;;-1:-1:-1;2177:90:136;;;;;;;;;:::i;:::-;;2031:138;;;;;;;;;;;;;;;;-1:-1:-1;2031:138:136;;;;;;;;;;;;;;;;;;:::i;1800:24::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;1833:91;;;;;;;;;;;;;;;;-1:-1:-1;1833:91:136;;;;:::i;2177:90::-;2246:12;;;;2245:13;2237:22;;;;;;2177:90;;:::o;2031:138::-;2148:12;;;;2147:13;2139:22;;;;;;2031:138;;;:::o;1800:24::-;;;;;;:::o;1833:91::-;1888:12;:28;;-1:-1:-1;;1888:28:136;;;;;;;;;;1833:91::o"},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","setup(bool)":"e2c169ec","shouldRevert()":"d3072d82","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"shouldRevert_\",\"type\":\"bool\"}],\"name\":\"setup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"shouldRevert\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pangolin-lib/test/TransferHelperTest.sol\":\"TransferHelperTestFakeERC20Noncompliant\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-lib/libraries/TransferHelper.sol\":{\"keccak256\":\"0xfc5b469642639405484afdba1d1ad1bdc70bd5cd4f01fe53c3be27c12a149f1f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad4c82e4d301a6bb7b9aac332299cb982dc8188d52942cc04796546dfb5cbd7a\",\"dweb:/ipfs/QmeeiUQrF2asciybNWEQyzeMsSkdavRABfZreMpCmKUpcG\"]},\"contracts/pangolin-lib/test/TransferHelperTest.sol\":{\"keccak256\":\"0x364cc71d58a21d5e8bc1e1f7df6fc8b5776212bdb633d7c6549415a9ddc7a393\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://92bd5aa05b7ac8c7f23261246cfbc3634097abaf3682d2fc8279adcd297b5b0d\",\"dweb:/ipfs/Qmb8Jgshxn2H3Yx2SLsfAFbDysHAYS6q87sXTFXreQTTPE\"]}},\"version\":1}"},"TransferHelperTestFakeFallback":{"abi":[{"inputs":[{"internalType":"bool","name":"shouldRevert_","type":"bool"}],"name":"setup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shouldRevert","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061012d806100206000396000f3fe60806040526004361060335760003560e01c80633ccfd60b14604d578063d3072d8214605f578063e2c169ec146085576048565b3660485760005460ff1615604657600080fd5b005b600080fd5b348015605857600080fd5b50604660ad565b348015606a57600080fd5b50607160db565b604080519115158252519081900360200190f35b348015609057600080fd5b5060466004803603602081101560a557600080fd5b5035151560e4565b60405133904780156108fc02916000818181858888f1935050505015801560d8573d6000803e3d6000fd5b50565b60005460ff1681565b6000805460ff191691151591909117905556fea2646970667358221220634ef51d6c5700dabce79004bce5c82b061dcc6b3b10215a9f41b819d8d94fbd64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3CCFD60B EQ PUSH1 0x4D JUMPI DUP1 PUSH4 0xD3072D82 EQ PUSH1 0x5F JUMPI DUP1 PUSH4 0xE2C169EC EQ PUSH1 0x85 JUMPI PUSH1 0x48 JUMP JUMPDEST CALLDATASIZE PUSH1 0x48 JUMPI PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH1 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x46 PUSH1 0xAD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x71 PUSH1 0xDB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x46 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0xA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH1 0xE4 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 SELFBALANCE DUP1 ISZERO PUSH2 0x8FC MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH1 0xD8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0x4EF51D6C JUMPI STOP 0xDA 0xBC 0xE7 SWAP1 DIV 0xBC 0xE5 0xC8 0x2B MOD SAR 0xCC PUSH12 0x3B10215A9F41B819D8D94FBD PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"2274:348:136:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361060335760003560e01c80633ccfd60b14604d578063d3072d8214605f578063e2c169ec146085576048565b3660485760005460ff1615604657600080fd5b005b600080fd5b348015605857600080fd5b50604660ad565b348015606a57600080fd5b50607160db565b604080519115158252519081900360200190f35b348015609057600080fd5b5060466004803603602081101560a557600080fd5b5035151560e4565b60405133904780156108fc02916000818181858888f1935050505015801560d8573d6000803e3d6000fd5b50565b60005460ff1681565b6000805460ff191691151591909117905556fea2646970667358221220634ef51d6c5700dabce79004bce5c82b061dcc6b3b10215a9f41b819d8d94fbd64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3CCFD60B EQ PUSH1 0x4D JUMPI DUP1 PUSH4 0xD3072D82 EQ PUSH1 0x5F JUMPI DUP1 PUSH4 0xE2C169EC EQ PUSH1 0x85 JUMPI PUSH1 0x48 JUMP JUMPDEST CALLDATASIZE PUSH1 0x48 JUMPI PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH1 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x46 PUSH1 0xAD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x71 PUSH1 0xDB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x46 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0xA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH1 0xE4 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 SELFBALANCE DUP1 ISZERO PUSH2 0x8FC MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH1 0xD8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0x4EF51D6C JUMPI STOP 0xDA 0xBC 0xE7 SWAP1 DIV 0xBC 0xE5 0xC8 0x2B MOD SAR 0xCC PUSH12 0x3B10215A9F41B819D8D94FBD PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"2274:348:136:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:12;;;;2499:13;2491:22;;;;;;2274:348;;;;;2529:90;;;;;;;;;;;;;:::i;2321:24::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2354:91;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2354:91:136;;;;:::i;2529:90::-;2569:42;;:10;;2589:21;2569:42;;;;;;;;;2589:21;2569:10;:42;;;;;;;;;;;;;;;;;;;;;2529:90::o;2321:24::-;;;;;;:::o;2354:91::-;2409:12;:28;;-1:-1:-1;;2409:28:136;;;;;;;;;;2354:91::o"},"methodIdentifiers":{"setup(bool)":"e2c169ec","shouldRevert()":"d3072d82","withdraw()":"3ccfd60b"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"shouldRevert_\",\"type\":\"bool\"}],\"name\":\"setup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"shouldRevert\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pangolin-lib/test/TransferHelperTest.sol\":\"TransferHelperTestFakeFallback\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-lib/libraries/TransferHelper.sol\":{\"keccak256\":\"0xfc5b469642639405484afdba1d1ad1bdc70bd5cd4f01fe53c3be27c12a149f1f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad4c82e4d301a6bb7b9aac332299cb982dc8188d52942cc04796546dfb5cbd7a\",\"dweb:/ipfs/QmeeiUQrF2asciybNWEQyzeMsSkdavRABfZreMpCmKUpcG\"]},\"contracts/pangolin-lib/test/TransferHelperTest.sol\":{\"keccak256\":\"0x364cc71d58a21d5e8bc1e1f7df6fc8b5776212bdb633d7c6549415a9ddc7a393\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://92bd5aa05b7ac8c7f23261246cfbc3634097abaf3682d2fc8279adcd297b5b0d\",\"dweb:/ipfs/Qmb8Jgshxn2H3Yx2SLsfAFbDysHAYS6q87sXTFXreQTTPE\"]}},\"version\":1}"}},"contracts/pangolin-periphery/PangolinBridgeMigrationRouter.sol":{"PangolinBridgeMigrationRouter":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"migratorAddress","type":"address"}],"name":"addMigrator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bridgeMigrator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityPairFrom","type":"address"},{"internalType":"address","name":"liquidityPairTo","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"calculateChargeBack","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityPairFrom","type":"address"},{"internalType":"address","name":"liquidityPairTo","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"migrateLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityPairFrom","type":"address"},{"internalType":"address","name":"liquidityPairTo","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"migrateLiquidityWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"migrateToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60806040523480156200001157600080fd5b506200002d3360006200003360201b62000b471790919060201c565b62000120565b6200003f8282620000b7565b1562000092576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216620001005760405162461bcd60e51b8152600401808060200182810382526022815260200180620028e16022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6127b180620001306000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637048027511610076578063b032fff71161005b578063b032fff7146101ef578063f057d23714610247578063ffc5059414610283576100a3565b8063704802751461017a57806399a0df82146101a0576100a3565b80631785f53c146100a857806324d7806c146100d0578063495952f51461010a5780634c389d261461014c575b600080fd5b6100ce600480360360208110156100be57600080fd5b50356001600160a01b03166102c5565b005b6100f6600480360360208110156100e657600080fd5b50356001600160a01b0316610361565b604080519115158252519081900360200190f35b6100ce600480360360a081101561012057600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135610373565b6100ce6004803603604081101561016257600080fd5b506001600160a01b03813581169160200135166103c7565b6100ce6004803603602081101561019057600080fd5b50356001600160a01b03166105a1565b6101d6600480360360608110156101b657600080fd5b506001600160a01b03813581169160208101359091169060400135610637565b6040805192835260208301919091528051918290030190f35b6100ce600480360361010081101561020657600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060ff60a0820135169060c08101359060e00135610972565b6100ce6004803603608081101561025d57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610a53565b6102a96004803603602081101561029957600080fd5b50356001600160a01b0316610b2c565b604080516001600160a01b039092168252519081900360200190f35b6102d0600033610bc8565b61030b5760405162461bcd60e51b815260040180806020018281038252602b81526020018061260e602b913960400191505060405180910390fd5b336001600160a01b03821614156103535760405162461bcd60e51b81526004018080602001828103825260388152602001806123656038913960400191505060405180910390fd5b61035e600082610c2f565b50565b600061036d8183610bc8565b92915050565b80428110156103b35760405162461bcd60e51b81526004018080602001828103825260268152602001806124076026913960400191505060405180910390fd5b6103bf86868686610c96565b505050505050565b6103d2600033610bc8565b61040d5760405162461bcd60e51b815260040180806020018281038252602b81526020018061260e602b913960400191505060405180910390fd5b6001600160a01b0382166104525760405162461bcd60e51b815260040180806020018281038252603b815260200180612539603b913960400191505060405180910390fd5b6001600160a01b0381166104975760405162461bcd60e51b815260040180806020018281038252603e815260200180612461603e913960400191505060405180910390fd5b6000816001600160a01b031663ab32dbb7846040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156104e657600080fd5b505afa1580156104fa573d6000803e3d6000fd5b505050506040513d602081101561051057600080fd5b50519050806105505760405162461bcd60e51b815260040180806020018281038252603481526020018061242d6034913960400191505060405180910390fd5b61055a8383611509565b506001600160a01b03918216600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b6105ac600033610bc8565b6105e75760405162461bcd60e51b815260040180806020018281038252602b81526020018061260e602b913960400191505060405180910390fd5b6001600160a01b03811661062c5760405162461bcd60e51b81526004018080602001828103825260348152602001806126816034913960400191505060405180910390fd5b61035e600082610b47565b6000806001600160a01b03851661067f5760405162461bcd60e51b81526004018080602001828103825260488152602001806126396048913960600191505060405180910390fd5b6001600160a01b0384166106c45760405162461bcd60e51b81526004018080602001828103825260468152602001806123c16046913960600191505060405180910390fd5b6000806106d18786611592565b91509150856001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561070e57600080fd5b505afa158015610722573d6000803e3d6000fd5b505050506040513d602081101561073857600080fd5b505160408051630dfe168160e01b815290516001600160a01b03928316928a1691630dfe1681916004808301926020929190829003018186803b15801561077e57600080fd5b505afa158015610792573d6000803e3d6000fd5b505050506040513d60208110156107a857600080fd5b50516001600160a01b03161480159061089d5750856001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156107f557600080fd5b505afa158015610809573d6000803e3d6000fd5b505050506040513d602081101561081f57600080fd5b50516040805163d21220a760e01b815290516001600160a01b03928316928a169163d21220a7916004808301926020929190829003018186803b15801561086557600080fd5b505afa158015610879573d6000803e3d6000fd5b505050506040513d602081101561088f57600080fd5b50516001600160a01b031614155b156108a457905b600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156108e057600080fd5b505afa1580156108f4573d6000803e3d6000fd5b505050506040513d606081101561090a57600080fd5b5080516020909101519092509050836000610932826001600160701b038087169086166116be565b90508481111561095f5784905061095c85846001600160701b0316866001600160701b03166116be565b91505b9403999390920397509195505050505050565b83428110156109b25760405162461bcd60e51b81526004018080602001828103825260268152602001806124076026913960400191505060405180910390fd5b6040805163d505accf60e01b8152336004820152306024820152604481018890526064810187905260ff8616608482015260a4810185905260c4810184905290516001600160a01b038b169163d505accf9160e480830192600092919082900301818387803b158015610a2457600080fd5b505af1158015610a38573d6000803e3d6000fd5b50505050610a4889898989610c96565b505050505050505050565b8042811015610a935760405162461bcd60e51b81526004018080602001828103825260268152602001806124076026913960400191505060405180910390fd5b6001600160a01b0385811660009081526001602052604090205416610ae95760405162461bcd60e51b815260040180806020018281038252603681526020018061249f6036913960400191505060405180910390fd5b610af585333086611764565b610aff85846118cd565b6001600160a01b03808616600090815260016020526040902054610b2591168585611a4d565b5050505050565b6001602052600090815260409020546001600160a01b031681565b610b518282610bc8565b15610ba3576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216610c0f5760405162461bcd60e51b81526004018080602001828103825260228152602001806125746022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610c398282610bc8565b610c745760405162461bcd60e51b81526004018080602001828103825260218152602001806124d56021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b610ca08484611bc4565b6000846001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610cdb57600080fd5b505afa158015610cef573d6000803e3d6000fd5b505050506040513d6020811015610d0557600080fd5b505160408051630dfe168160e01b815290519192506001600160a01b03861691630dfe168191600480820192602092909190829003018186803b158015610d4b57600080fd5b505afa158015610d5f573d6000803e3d6000fd5b505050506040513d6020811015610d7557600080fd5b505160408051630dfe168160e01b815290516001600160a01b0392831692881691630dfe1681916004808301926020929190829003018186803b158015610dbb57600080fd5b505afa158015610dcf573d6000803e3d6000fd5b505050506040513d6020811015610de557600080fd5b50516001600160a01b03161480610ed75750836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015610e3057600080fd5b505afa158015610e44573d6000803e3d6000fd5b505050506040513d6020811015610e5a57600080fd5b505160408051630dfe168160e01b815290516001600160a01b0392831692881691630dfe1681916004808301926020929190829003018186803b158015610ea057600080fd5b505afa158015610eb4573d6000803e3d6000fd5b505050506040513d6020811015610eca57600080fd5b50516001600160a01b0316145b15610f4457846001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1557600080fd5b505afa158015610f29573d6000803e3d6000fd5b505050506040513d6020811015610f3f57600080fd5b505190505b6001600160a01b038082166000908152600160205260409020541680610f9b5760405162461bcd60e51b81526004018080602001828103825260438152602001806124f66043913960600191505060405180910390fd5b846001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610fd457600080fd5b505afa158015610fe8573d6000803e3d6000fd5b505050506040513d6020811015610ffe57600080fd5b50516001600160a01b03828116911614806110885750846001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561104d57600080fd5b505afa158015611061573d6000803e3d6000fd5b505050506040513d602081101561107757600080fd5b50516001600160a01b038281169116145b6110c35760405162461bcd60e51b81526004018080602001828103825260458152602001806122d96045913960600191505060405180910390fd5b6000806110d0888661206b565b915091506000829050886001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561111257600080fd5b505afa158015611126573d6000803e3d6000fd5b505050506040513d602081101561113c57600080fd5b50516001600160a01b038681169116146111535750805b61115d85826118cd565b50866001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561119757600080fd5b505afa1580156111ab573d6000803e3d6000fd5b505050506040513d60208110156111c157600080fd5b505160408051630dfe168160e01b815290516001600160a01b03928316928b1691630dfe1681916004808301926020929190829003018186803b15801561120757600080fd5b505afa15801561121b573d6000803e3d6000fd5b505050506040513d602081101561123157600080fd5b50516001600160a01b0316148015906113265750866001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561127e57600080fd5b505afa158015611292573d6000803e3d6000fd5b505050506040513d60208110156112a857600080fd5b50516040805163d21220a760e01b815290516001600160a01b03928316928b169163d21220a7916004808301926020929190829003018186803b1580156112ee57600080fd5b505afa158015611302573d6000803e3d6000fd5b505050506040513d602081101561131857600080fd5b50516001600160a01b031614155b1561132d57905b60008061140d898a6001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561136d57600080fd5b505afa158015611381573d6000803e3d6000fd5b505050506040513d602081101561139757600080fd5b50516040805163d21220a760e01b815290516001600160a01b038e169163d21220a7916004808301926020929190829003018186803b1580156113d957600080fd5b505afa1580156113ed573d6000803e3d6000fd5b505050506040513d602081101561140357600080fd5b505187878d6120fc565b509092509050811561148857611488896001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561145557600080fd5b505afa158015611469573d6000803e3d6000fd5b505050506040513d602081101561147f57600080fd5b50518984611a4d565b80156114fd576114fd896001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156114ca57600080fd5b505afa1580156114de573d6000803e3d6000fd5b505050506040513d60208110156114f457600080fd5b50518983611a4d565b50505050505050505050565b816001600160a01b031663095ea7b3826000196040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561156257600080fd5b505af1158015611576573d6000803e3d6000fd5b505050506040513d602081101561158c57600080fd5b50505050565b600080600080856001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156115d157600080fd5b505afa1580156115e5573d6000803e3d6000fd5b505050506040513d60608110156115fb57600080fd5b508051602091820151604080516318160ddd60e01b815290519295509093506000926001600160a01b038a16926318160ddd926004808201939291829003018186803b15801561164a57600080fd5b505afa15801561165e573d6000803e3d6000fd5b505050506040513d602081101561167457600080fd5b505190508061168c876001600160701b03861661226c565b8161169357fe5b049450806116aa876001600160701b03851661226c565b816116b157fe5b0493505050509250929050565b60008084116116fe5760405162461bcd60e51b815260040180806020018281038252602481526020018061239d6024913960400191505060405180910390fd5b60008311801561170e5750600082115b6117495760405162461bcd60e51b81526004018080602001828103825260278152602001806127556027913960400191505060405180910390fd5b82611754858461226c565b8161175b57fe5b04949350505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b178152925182516000948594938a169392918291908083835b602083106117fd5780518252601f1990920191602091820191016117de565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461185f576040519150601f19603f3d011682016040523d82523d6000602084013e611864565b606091505b5091509150818015611892575080511580611892575080806020019051602081101561188f57600080fd5b50515b6103bf5760405162461bcd60e51b81526004018080602001828103825260248152602001806127316024913960400191505060405180910390fd5b6001600160a01b0382166119125760405162461bcd60e51b815260040180806020018281038252603b815260200180612539603b913960400191505060405180910390fd5b6001600160a01b0380831660008181526001602052604080822054815163d004f0f760e01b8152600481019490945260248401869052905193169263d004f0f792604480820193929182900301818387803b15801561197057600080fd5b505af1158015611984573d6000803e3d6000fd5b5050506001600160a01b038084166000908152600160209081526040918290205482516370a0823160e01b815230600482015292518695509316926370a08231926024808201939291829003018186803b1580156119e157600080fd5b505afa1580156119f5573d6000803e3d6000fd5b505050506040513d6020811015611a0b57600080fd5b505114611a495760405162461bcd60e51b815260040180806020018281038252603e8152602001806125d0603e913960400191505060405180910390fd5b5050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310611ade5780518252601f199092019160209182019101611abf565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611b40576040519150601f19603f3d011682016040523d82523d6000602084013e611b45565b606091505b5091509150818015611b73575080511580611b735750808060200190516020811015611b7057600080fd5b50515b610b25576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b6001600160a01b038216611c095760405162461bcd60e51b815260040180806020018281038252603a815260200180612596603a913960400191505060405180910390fd5b6001600160a01b038216611c4e5760405162461bcd60e51b81526004018080602001828103825260388152602001806126b56038913960400191505060405180910390fd5b806001600160a01b0316826001600160a01b03161415611c9f5760405162461bcd60e51b815260040180806020018281038252604781526020018061231e6047913960600191505060405180910390fd5b806001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611cd857600080fd5b505afa158015611cec573d6000803e3d6000fd5b505050506040513d6020811015611d0257600080fd5b505160408051630dfe168160e01b815290516001600160a01b0392831692851691630dfe1681916004808301926020929190829003018186803b158015611d4857600080fd5b505afa158015611d5c573d6000803e3d6000fd5b505050506040513d6020811015611d7257600080fd5b50516001600160a01b03161480611e645750806001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015611dbd57600080fd5b505afa158015611dd1573d6000803e3d6000fd5b505050506040513d6020811015611de757600080fd5b505160408051630dfe168160e01b815290516001600160a01b0392831692851691630dfe1681916004808301926020929190829003018186803b158015611e2d57600080fd5b505afa158015611e41573d6000803e3d6000fd5b505050506040513d6020811015611e5757600080fd5b50516001600160a01b0316145b80611f4a5750806001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611ea357600080fd5b505afa158015611eb7573d6000803e3d6000fd5b505050506040513d6020811015611ecd57600080fd5b50516040805163d21220a760e01b815290516001600160a01b039283169285169163d21220a7916004808301926020929190829003018186803b158015611f1357600080fd5b505afa158015611f27573d6000803e3d6000fd5b505050506040513d6020811015611f3d57600080fd5b50516001600160a01b0316145b806120305750806001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8957600080fd5b505afa158015611f9d573d6000803e3d6000fd5b505050506040513d6020811015611fb357600080fd5b50516040805163d21220a760e01b815290516001600160a01b039283169285169163d21220a7916004808301926020929190829003018186803b158015611ff957600080fd5b505afa15801561200d573d6000803e3d6000fd5b505050506040513d602081101561202357600080fd5b50516001600160a01b0316145b611a495760405162461bcd60e51b81526004018080602001828103825260448152602001806126ed6044913960600191505060405180910390fd5b60008061207a84338686611764565b6040805163226bf2d160e21b815230600482015281516001600160a01b038716926389afcb4492602480820193918290030181600087803b1580156120be57600080fd5b505af11580156120d2573d6000803e3d6000fd5b505050506040513d60408110156120e857600080fd5b508051602090910151909590945092505050565b60008060008060008a6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561213d57600080fd5b505afa158015612151573d6000803e3d6000fd5b505050506040513d606081101561216757600080fd5b508051602090910151909250905087600061218f826001600160701b038087169086166116be565b9050888111156121bc578890506121b989846001600160701b0316866001600160701b03166116be565b91505b6121c78c8e84611a4d565b6121d28b8e83611a4d565b818a03965080890395508c6001600160a01b0316636a627842896040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b15801561222b57600080fd5b505af115801561223f573d6000803e3d6000fd5b505050506040513d602081101561225557600080fd5b5051969d959c50959a509398505050505050505050565b60008115806122875750508082028282828161228457fe5b04145b61036d576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe50616e676f6c696e4272696467654d6967726174696f6e526f757465723a205061697220646f65736e2774206d6174636820746865206d6967726174696f6e20746f6b656e50616e676f6c696e4272696467654d6967726174696f6e526f757465723a2043616e7420636f6e7665727420746f207468652073616d65206c697175696469747920706169727350616e676f6c696e4272696467654d6967726174696f6e526f757465723a20596f752063616e27742064656d6f746520796f757273656c6650616e676f6c696e4c6962726172793a20494e53554646494349454e545f414d4f554e5450616e676f6c696e4272696467654d6967726174696f6e526f757465723a206c697175696469747950616972546f20616464726573732030206e6f7420737570706f7274656450616e676f6c696e4272696467654d6967726174696f6e526f757465723a2045585049524544546865206d69677261746f7220646f65736e27742068617665207377617020737570706c7920666f72207468697320746f6b656e50616e676f6c696e4272696467654d6967726174696f6e526f757465723a206d69677261746f72416464726573732030206e6f7420737570706f7274656450616e676f6c696e4272696467654d6967726174696f6e526f757465723a206d69677261746f72206e6f742072656769737465726564526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6550616e676f6c696e4272696467654d6967726174696f6e526f757465723a204d69677261746f72206e6f74207265676973746572656420666f7220746865207061697250616e676f6c696e4272696467654d6967726174696f6e526f757465723a20746f6b656e416464726573732030206e6f7420737570706f72746564526f6c65733a206163636f756e7420697320746865207a65726f206164647265737350616e676f6c696e4272696467654d6967726174696f6e526f757465723a206c69717569646974795061697246726f6d2061646472657373203050616e676f6c696e4272696467654d6967726174696f6e526f757465723a204469646e2774207969656c642074686520636f727265637420616d6f756e7450616e676f6c696e4272696467654d6967726174696f6e526f757465723a20556e617574686f72697a656450616e676f6c696e4272696467654d6967726174696f6e526f757465723a206c69717569646974795061697246726f6d20616464726573732030206e6f7420737570706f7274656450616e676f6c696e4272696467654d6967726174696f6e526f757465723a20416464726573732030206e6f7420616c6c6f77656450616e676f6c696e4272696467654d6967726174696f6e526f757465723a206c697175696469747950616972546f2061646472657373203050616e676f6c696e4272696467654d6967726174696f6e526f757465723a205061697220646f6573206e6f742068617665206f6e6520746f6b656e206d61746368696e675472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c454450616e676f6c696e4c6962726172793a20494e53554646494349454e545f4c4951554944495459a26469706673582212209115ed6d3895bb5381b3d4882fd70745e42603a90002fa7e94c6c6837bac324f64736f6c63430007060033526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D CALLER PUSH1 0x0 PUSH3 0x33 PUSH1 0x20 SHL PUSH3 0xB47 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x120 JUMP JUMPDEST PUSH3 0x3F DUP3 DUP3 PUSH3 0xB7 JUMP JUMPDEST ISZERO PUSH3 0x92 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 0x526F6C65733A206163636F756E7420616C72656164792068617320726F6C6500 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x100 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x28E1 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x27B1 DUP1 PUSH3 0x130 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 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70480275 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xB032FFF7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xB032FFF7 EQ PUSH2 0x1EF JUMPI DUP1 PUSH4 0xF057D237 EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0xFFC50594 EQ PUSH2 0x283 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x70480275 EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x99A0DF82 EQ PUSH2 0x1A0 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x1785F53C EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x24D7806C EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0x495952F5 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0x4C389D26 EQ PUSH2 0x14C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x361 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x373 JUMP JUMPDEST PUSH2 0xCE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x3C7 JUMP JUMPDEST PUSH2 0xCE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5A1 JUMP JUMPDEST PUSH2 0x1D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x637 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 0xCE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0xA0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x972 JUMP JUMPDEST PUSH2 0xCE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xA53 JUMP JUMPDEST PUSH2 0x2A9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB2C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2D0 PUSH1 0x0 CALLER PUSH2 0xBC8 JUMP JUMPDEST PUSH2 0x30B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x260E PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ ISZERO PUSH2 0x353 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2365 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x35E PUSH1 0x0 DUP3 PUSH2 0xC2F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36D DUP2 DUP4 PUSH2 0xBC8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2407 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3BF DUP7 DUP7 DUP7 DUP7 PUSH2 0xC96 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3D2 PUSH1 0x0 CALLER PUSH2 0xBC8 JUMP JUMPDEST PUSH2 0x40D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x260E PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x452 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2539 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x497 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2461 PUSH1 0x3E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAB32DBB7 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x4E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4FA 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 0x510 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x550 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x242D PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x55A DUP4 DUP4 PUSH2 0x1509 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x5AC PUSH1 0x0 CALLER PUSH2 0xBC8 JUMP JUMPDEST PUSH2 0x5E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x260E PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x62C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2681 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x35E PUSH1 0x0 DUP3 PUSH2 0xB47 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x67F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x48 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2639 PUSH1 0x48 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x6C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x46 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x23C1 PUSH1 0x46 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x6D1 DUP8 DUP7 PUSH2 0x1592 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x70E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x722 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 0x738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xDFE1681 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP11 AND SWAP2 PUSH4 0xDFE1681 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x77E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x792 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 0x7A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x89D JUMPI POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x7F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x809 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 0x81F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD21220A7 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP11 AND SWAP2 PUSH4 0xD21220A7 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x865 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x879 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 0x88F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x8A4 JUMPI SWAP1 JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8F4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x90A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP4 PUSH1 0x0 PUSH2 0x932 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP1 DUP8 AND SWAP1 DUP7 AND PUSH2 0x16BE JUMP JUMPDEST SWAP1 POP DUP5 DUP2 GT ISZERO PUSH2 0x95F JUMPI DUP5 SWAP1 POP PUSH2 0x95C DUP6 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH2 0x16BE JUMP JUMPDEST SWAP2 POP JUMPDEST SWAP5 SUB SWAP10 SWAP4 SWAP1 SWAP3 SUB SWAP8 POP SWAP2 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x9B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2407 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xFF DUP7 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 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 0xA24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA38 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xA48 DUP10 DUP10 DUP10 DUP10 PUSH2 0xC96 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0xA93 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2407 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND PUSH2 0xAE9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x249F PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAF5 DUP6 CALLER ADDRESS DUP7 PUSH2 0x1764 JUMP JUMPDEST PUSH2 0xAFF DUP6 DUP5 PUSH2 0x18CD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xB25 SWAP2 AND DUP6 DUP6 PUSH2 0x1A4D JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0xB51 DUP3 DUP3 PUSH2 0xBC8 JUMP JUMPDEST ISZERO PUSH2 0xBA3 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 0x526F6C65733A206163636F756E7420616C72656164792068617320726F6C6500 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xC0F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2574 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xC39 DUP3 DUP3 PUSH2 0xBC8 JUMP JUMPDEST PUSH2 0xC74 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x24D5 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xCA0 DUP5 DUP5 PUSH2 0x1BC4 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xCDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCEF 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 0xD05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xDFE1681 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0xDFE1681 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD5F 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 0xD75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xDFE1681 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP9 AND SWAP2 PUSH4 0xDFE1681 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDCF 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 0xDE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xED7 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xE30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE44 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 0xE5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xDFE1681 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP9 AND SWAP2 PUSH4 0xDFE1681 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEB4 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 0xECA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0xF44 JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xF15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF29 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 0xF3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND DUP1 PUSH2 0xF9B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x43 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x24F6 PUSH1 0x43 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xFD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFE8 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 0xFFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ DUP1 PUSH2 0x1088 JUMPI POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x104D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1061 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 0x1077 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ JUMPDEST PUSH2 0x10C3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x22D9 PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x10D0 DUP9 DUP7 PUSH2 0x206B JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 SWAP1 POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1112 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1126 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 0x113C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ PUSH2 0x1153 JUMPI POP DUP1 JUMPDEST PUSH2 0x115D DUP6 DUP3 PUSH2 0x18CD JUMP JUMPDEST POP DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11AB 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 0x11C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xDFE1681 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP12 AND SWAP2 PUSH4 0xDFE1681 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x121B 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 0x1231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x1326 JUMPI POP DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x127E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1292 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 0x12A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD21220A7 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP12 AND SWAP2 PUSH4 0xD21220A7 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1302 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 0x1318 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x132D JUMPI SWAP1 JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x140D DUP10 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x136D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1381 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 0x1397 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD21220A7 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND SWAP2 PUSH4 0xD21220A7 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13ED 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 0x1403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP8 DUP8 DUP14 PUSH2 0x20FC JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x1488 JUMPI PUSH2 0x1488 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1469 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 0x147F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP10 DUP5 PUSH2 0x1A4D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x14FD JUMPI PUSH2 0x14FD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x14CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14DE 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 0x14F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP10 DUP4 PUSH2 0x1A4D JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95EA7B3 DUP3 PUSH1 0x0 NOT PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1576 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 0x158C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x15FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x18160DDD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP3 PUSH4 0x18160DDD SWAP3 PUSH1 0x4 DUP1 DUP3 ADD SWAP4 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x164A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x165E 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 0x1674 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x168C DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP7 AND PUSH2 0x226C JUMP JUMPDEST DUP2 PUSH2 0x1693 JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 PUSH2 0x16AA DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP6 AND PUSH2 0x226C JUMP JUMPDEST DUP2 PUSH2 0x16B1 JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x16FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x239D PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x170E JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x1749 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2755 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x1754 DUP6 DUP5 PUSH2 0x226C JUMP JUMPDEST DUP2 PUSH2 0x175B JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH4 0x23B872DD PUSH1 0xE0 SHL 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 0x17FD JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x17DE 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 0x185F 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 0x1864 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1892 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1892 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x188F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x3BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2731 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1912 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2539 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD DUP2 MLOAD PUSH4 0xD004F0F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x24 DUP5 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD SWAP4 AND SWAP3 PUSH4 0xD004F0F7 SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1970 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1984 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP3 MLOAD DUP7 SWAP6 POP SWAP4 AND SWAP3 PUSH4 0x70A08231 SWAP3 PUSH1 0x24 DUP1 DUP3 ADD SWAP4 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19F5 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 0x1A0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x1A49 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x25D0 PUSH1 0x3E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH4 0xA9059CBB PUSH1 0xE0 SHL 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 0x1ADE JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1ABF 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 0x1B40 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 0x1B45 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1B73 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1B73 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1B70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0xB25 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 0x5472616E7366657248656C7065723A205452414E534645525F4641494C454400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1C09 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2596 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1C4E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x26B5 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1C9F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x47 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x231E PUSH1 0x47 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1CD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CEC 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 0x1D02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xDFE1681 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP6 AND SWAP2 PUSH4 0xDFE1681 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D5C 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 0x1D72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1E64 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1DBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DD1 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 0x1DE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xDFE1681 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP6 AND SWAP2 PUSH4 0xDFE1681 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E41 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 0x1E57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x1F4A JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1EA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EB7 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 0x1ECD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD21220A7 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP6 AND SWAP2 PUSH4 0xD21220A7 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F27 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 0x1F3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x2030 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1F89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F9D 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 0x1FB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD21220A7 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP6 AND SWAP2 PUSH4 0xD21220A7 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x200D 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 0x2023 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x1A49 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x44 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x26ED PUSH1 0x44 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x207A DUP5 CALLER DUP7 DUP7 PUSH2 0x1764 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x226BF2D1 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP3 PUSH4 0x89AFCB44 SWAP3 PUSH1 0x24 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20D2 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 0x20E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x213D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2151 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP8 PUSH1 0x0 PUSH2 0x218F DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP1 DUP8 AND SWAP1 DUP7 AND PUSH2 0x16BE JUMP JUMPDEST SWAP1 POP DUP9 DUP2 GT ISZERO PUSH2 0x21BC JUMPI DUP9 SWAP1 POP PUSH2 0x21B9 DUP10 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH2 0x16BE JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x21C7 DUP13 DUP15 DUP5 PUSH2 0x1A4D JUMP JUMPDEST PUSH2 0x21D2 DUP12 DUP15 DUP4 PUSH2 0x1A4D JUMP JUMPDEST DUP2 DUP11 SUB SWAP7 POP DUP1 DUP10 SUB SWAP6 POP DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6A627842 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x222B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x223F 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 0x2255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP7 SWAP14 SWAP6 SWAP13 POP SWAP6 SWAP11 POP SWAP4 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x2287 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x2284 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x36D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID POP PUSH2 0x6E67 PUSH16 0x6C696E4272696467654D696772617469 PUSH16 0x6E526F757465723A205061697220646F PUSH6 0x736E2774206D PUSH2 0x7463 PUSH9 0x20746865206D696772 PUSH2 0x7469 PUSH16 0x6E20746F6B656E50616E676F6C696E42 PUSH19 0x696467654D6967726174696F6E526F75746572 GASPRICE KECCAK256 NUMBER PUSH2 0x6E74 KECCAK256 PUSH4 0x6F6E7665 PUSH19 0x7420746F207468652073616D65206C69717569 PUSH5 0x6974792070 PUSH2 0x6972 PUSH20 0x50616E676F6C696E4272696467654D6967726174 PUSH10 0x6F6E526F757465723A20 MSIZE PUSH16 0x752063616E27742064656D6F74652079 PUSH16 0x757273656C6650616E676F6C696E4C69 PUSH3 0x726172 PUSH26 0x3A20494E53554646494349454E545F414D4F554E5450616E676F PUSH13 0x696E4272696467654D69677261 PUSH21 0x696F6E526F757465723A206C697175696469747950 PUSH2 0x6972 SLOAD PUSH16 0x20616464726573732030206E6F742073 PUSH22 0x70706F7274656450616E676F6C696E4272696467654D PUSH10 0x67726174696F6E526F75 PUSH21 0x65723A2045585049524544546865206D6967726174 PUSH16 0x7220646F65736E277420686176652073 PUSH24 0x617020737570706C7920666F72207468697320746F6B656E POP PUSH2 0x6E67 PUSH16 0x6C696E4272696467654D696772617469 PUSH16 0x6E526F757465723A206D69677261746F PUSH19 0x416464726573732030206E6F7420737570706F PUSH19 0x74656450616E676F6C696E4272696467654D69 PUSH8 0x726174696F6E526F PUSH22 0x7465723A206D69677261746F72206E6F742072656769 PUSH20 0x7465726564526F6C65733A206163636F756E7420 PUSH5 0x6F6573206E PUSH16 0x74206861766520726F6C6550616E676F PUSH13 0x696E4272696467654D69677261 PUSH21 0x696F6E526F757465723A204D69677261746F72206E PUSH16 0x74207265676973746572656420666F72 KECCAK256 PUSH21 0x6865207061697250616E676F6C696E427269646765 0x4D PUSH10 0x67726174696F6E526F75 PUSH21 0x65723A20746F6B656E416464726573732030206E6F PUSH21 0x20737570706F72746564526F6C65733A206163636F PUSH22 0x6E7420697320746865207A65726F2061646472657373 POP PUSH2 0x6E67 PUSH16 0x6C696E4272696467654D696772617469 PUSH16 0x6E526F757465723A206C697175696469 PUSH21 0x795061697246726F6D206164647265737320305061 PUSH15 0x676F6C696E4272696467654D696772 PUSH2 0x7469 PUSH16 0x6E526F757465723A204469646E277420 PUSH26 0x69656C642074686520636F727265637420616D6F756E7450616E PUSH8 0x6F6C696E42726964 PUSH8 0x654D696772617469 PUSH16 0x6E526F757465723A20556E617574686F PUSH19 0x697A656450616E676F6C696E4272696467654D PUSH10 0x67726174696F6E526F75 PUSH21 0x65723A206C69717569646974795061697246726F6D KECCAK256 PUSH2 0x6464 PUSH19 0x6573732030206E6F7420737570706F72746564 POP PUSH2 0x6E67 PUSH16 0x6C696E4272696467654D696772617469 PUSH16 0x6E526F757465723A2041646472657373 KECCAK256 ADDRESS KECCAK256 PUSH15 0x6F7420616C6C6F77656450616E676F PUSH13 0x696E4272696467654D69677261 PUSH21 0x696F6E526F757465723A206C697175696469747950 PUSH2 0x6972 SLOAD PUSH16 0x2061646472657373203050616E676F6C PUSH10 0x6E4272696467654D6967 PUSH19 0x6174696F6E526F757465723A20506169722064 PUSH16 0x6573206E6F742068617665206F6E6520 PUSH21 0x6F6B656E206D61746368696E675472616E73666572 0x48 PUSH6 0x6C7065723A20 SLOAD MSTORE COINBASE 0x4E MSTORE8 CHAINID GASLIMIT MSTORE 0x5F CHAINID MSTORE 0x4F 0x4D 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY POP PUSH2 0x6E67 PUSH16 0x6C696E4C6962726172793A20494E5355 CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 ISZERO 0xED PUSH14 0x3895BB5381B3D4882FD70745E426 SUB 0xA9 STOP MUL STATICCALL PUSH31 0x94C6C6837BAC324F64736F6C63430007060033526F6C65733A206163636F75 PUSH15 0x7420697320746865207A65726F2061 PUSH5 0x6472657373 ","sourceMap":"260:16559:137:-:0;;;464:65;;;;;;;;;;496:25;510:10;496:9;:13;;;;;;:25;;;;:::i;:::-;260:16559;;219:178:140;297:18;301:4;307:7;297:3;:18::i;:::-;296:19;288:63;;;;;-1:-1:-1;;;288:63:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;362:20:140;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;362:27:140;385:4;362:27;;;219:178::o;755:235::-;854:4;-1:-1:-1;;;;;884:21:140;;876:68;;;;-1:-1:-1;;;876:68:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;962:20:140;:11;:20;;;;;;;;;;;;;;;755:235::o;260:16559:137:-;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100a35760003560e01c80637048027511610076578063b032fff71161005b578063b032fff7146101ef578063f057d23714610247578063ffc5059414610283576100a3565b8063704802751461017a57806399a0df82146101a0576100a3565b80631785f53c146100a857806324d7806c146100d0578063495952f51461010a5780634c389d261461014c575b600080fd5b6100ce600480360360208110156100be57600080fd5b50356001600160a01b03166102c5565b005b6100f6600480360360208110156100e657600080fd5b50356001600160a01b0316610361565b604080519115158252519081900360200190f35b6100ce600480360360a081101561012057600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135610373565b6100ce6004803603604081101561016257600080fd5b506001600160a01b03813581169160200135166103c7565b6100ce6004803603602081101561019057600080fd5b50356001600160a01b03166105a1565b6101d6600480360360608110156101b657600080fd5b506001600160a01b03813581169160208101359091169060400135610637565b6040805192835260208301919091528051918290030190f35b6100ce600480360361010081101561020657600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060ff60a0820135169060c08101359060e00135610972565b6100ce6004803603608081101561025d57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610a53565b6102a96004803603602081101561029957600080fd5b50356001600160a01b0316610b2c565b604080516001600160a01b039092168252519081900360200190f35b6102d0600033610bc8565b61030b5760405162461bcd60e51b815260040180806020018281038252602b81526020018061260e602b913960400191505060405180910390fd5b336001600160a01b03821614156103535760405162461bcd60e51b81526004018080602001828103825260388152602001806123656038913960400191505060405180910390fd5b61035e600082610c2f565b50565b600061036d8183610bc8565b92915050565b80428110156103b35760405162461bcd60e51b81526004018080602001828103825260268152602001806124076026913960400191505060405180910390fd5b6103bf86868686610c96565b505050505050565b6103d2600033610bc8565b61040d5760405162461bcd60e51b815260040180806020018281038252602b81526020018061260e602b913960400191505060405180910390fd5b6001600160a01b0382166104525760405162461bcd60e51b815260040180806020018281038252603b815260200180612539603b913960400191505060405180910390fd5b6001600160a01b0381166104975760405162461bcd60e51b815260040180806020018281038252603e815260200180612461603e913960400191505060405180910390fd5b6000816001600160a01b031663ab32dbb7846040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156104e657600080fd5b505afa1580156104fa573d6000803e3d6000fd5b505050506040513d602081101561051057600080fd5b50519050806105505760405162461bcd60e51b815260040180806020018281038252603481526020018061242d6034913960400191505060405180910390fd5b61055a8383611509565b506001600160a01b03918216600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b6105ac600033610bc8565b6105e75760405162461bcd60e51b815260040180806020018281038252602b81526020018061260e602b913960400191505060405180910390fd5b6001600160a01b03811661062c5760405162461bcd60e51b81526004018080602001828103825260348152602001806126816034913960400191505060405180910390fd5b61035e600082610b47565b6000806001600160a01b03851661067f5760405162461bcd60e51b81526004018080602001828103825260488152602001806126396048913960600191505060405180910390fd5b6001600160a01b0384166106c45760405162461bcd60e51b81526004018080602001828103825260468152602001806123c16046913960600191505060405180910390fd5b6000806106d18786611592565b91509150856001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561070e57600080fd5b505afa158015610722573d6000803e3d6000fd5b505050506040513d602081101561073857600080fd5b505160408051630dfe168160e01b815290516001600160a01b03928316928a1691630dfe1681916004808301926020929190829003018186803b15801561077e57600080fd5b505afa158015610792573d6000803e3d6000fd5b505050506040513d60208110156107a857600080fd5b50516001600160a01b03161480159061089d5750856001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156107f557600080fd5b505afa158015610809573d6000803e3d6000fd5b505050506040513d602081101561081f57600080fd5b50516040805163d21220a760e01b815290516001600160a01b03928316928a169163d21220a7916004808301926020929190829003018186803b15801561086557600080fd5b505afa158015610879573d6000803e3d6000fd5b505050506040513d602081101561088f57600080fd5b50516001600160a01b031614155b156108a457905b600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156108e057600080fd5b505afa1580156108f4573d6000803e3d6000fd5b505050506040513d606081101561090a57600080fd5b5080516020909101519092509050836000610932826001600160701b038087169086166116be565b90508481111561095f5784905061095c85846001600160701b0316866001600160701b03166116be565b91505b9403999390920397509195505050505050565b83428110156109b25760405162461bcd60e51b81526004018080602001828103825260268152602001806124076026913960400191505060405180910390fd5b6040805163d505accf60e01b8152336004820152306024820152604481018890526064810187905260ff8616608482015260a4810185905260c4810184905290516001600160a01b038b169163d505accf9160e480830192600092919082900301818387803b158015610a2457600080fd5b505af1158015610a38573d6000803e3d6000fd5b50505050610a4889898989610c96565b505050505050505050565b8042811015610a935760405162461bcd60e51b81526004018080602001828103825260268152602001806124076026913960400191505060405180910390fd5b6001600160a01b0385811660009081526001602052604090205416610ae95760405162461bcd60e51b815260040180806020018281038252603681526020018061249f6036913960400191505060405180910390fd5b610af585333086611764565b610aff85846118cd565b6001600160a01b03808616600090815260016020526040902054610b2591168585611a4d565b5050505050565b6001602052600090815260409020546001600160a01b031681565b610b518282610bc8565b15610ba3576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216610c0f5760405162461bcd60e51b81526004018080602001828103825260228152602001806125746022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610c398282610bc8565b610c745760405162461bcd60e51b81526004018080602001828103825260218152602001806124d56021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b610ca08484611bc4565b6000846001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610cdb57600080fd5b505afa158015610cef573d6000803e3d6000fd5b505050506040513d6020811015610d0557600080fd5b505160408051630dfe168160e01b815290519192506001600160a01b03861691630dfe168191600480820192602092909190829003018186803b158015610d4b57600080fd5b505afa158015610d5f573d6000803e3d6000fd5b505050506040513d6020811015610d7557600080fd5b505160408051630dfe168160e01b815290516001600160a01b0392831692881691630dfe1681916004808301926020929190829003018186803b158015610dbb57600080fd5b505afa158015610dcf573d6000803e3d6000fd5b505050506040513d6020811015610de557600080fd5b50516001600160a01b03161480610ed75750836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015610e3057600080fd5b505afa158015610e44573d6000803e3d6000fd5b505050506040513d6020811015610e5a57600080fd5b505160408051630dfe168160e01b815290516001600160a01b0392831692881691630dfe1681916004808301926020929190829003018186803b158015610ea057600080fd5b505afa158015610eb4573d6000803e3d6000fd5b505050506040513d6020811015610eca57600080fd5b50516001600160a01b0316145b15610f4457846001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1557600080fd5b505afa158015610f29573d6000803e3d6000fd5b505050506040513d6020811015610f3f57600080fd5b505190505b6001600160a01b038082166000908152600160205260409020541680610f9b5760405162461bcd60e51b81526004018080602001828103825260438152602001806124f66043913960600191505060405180910390fd5b846001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610fd457600080fd5b505afa158015610fe8573d6000803e3d6000fd5b505050506040513d6020811015610ffe57600080fd5b50516001600160a01b03828116911614806110885750846001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561104d57600080fd5b505afa158015611061573d6000803e3d6000fd5b505050506040513d602081101561107757600080fd5b50516001600160a01b038281169116145b6110c35760405162461bcd60e51b81526004018080602001828103825260458152602001806122d96045913960600191505060405180910390fd5b6000806110d0888661206b565b915091506000829050886001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561111257600080fd5b505afa158015611126573d6000803e3d6000fd5b505050506040513d602081101561113c57600080fd5b50516001600160a01b038681169116146111535750805b61115d85826118cd565b50866001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561119757600080fd5b505afa1580156111ab573d6000803e3d6000fd5b505050506040513d60208110156111c157600080fd5b505160408051630dfe168160e01b815290516001600160a01b03928316928b1691630dfe1681916004808301926020929190829003018186803b15801561120757600080fd5b505afa15801561121b573d6000803e3d6000fd5b505050506040513d602081101561123157600080fd5b50516001600160a01b0316148015906113265750866001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561127e57600080fd5b505afa158015611292573d6000803e3d6000fd5b505050506040513d60208110156112a857600080fd5b50516040805163d21220a760e01b815290516001600160a01b03928316928b169163d21220a7916004808301926020929190829003018186803b1580156112ee57600080fd5b505afa158015611302573d6000803e3d6000fd5b505050506040513d602081101561131857600080fd5b50516001600160a01b031614155b1561132d57905b60008061140d898a6001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561136d57600080fd5b505afa158015611381573d6000803e3d6000fd5b505050506040513d602081101561139757600080fd5b50516040805163d21220a760e01b815290516001600160a01b038e169163d21220a7916004808301926020929190829003018186803b1580156113d957600080fd5b505afa1580156113ed573d6000803e3d6000fd5b505050506040513d602081101561140357600080fd5b505187878d6120fc565b509092509050811561148857611488896001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561145557600080fd5b505afa158015611469573d6000803e3d6000fd5b505050506040513d602081101561147f57600080fd5b50518984611a4d565b80156114fd576114fd896001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156114ca57600080fd5b505afa1580156114de573d6000803e3d6000fd5b505050506040513d60208110156114f457600080fd5b50518983611a4d565b50505050505050505050565b816001600160a01b031663095ea7b3826000196040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561156257600080fd5b505af1158015611576573d6000803e3d6000fd5b505050506040513d602081101561158c57600080fd5b50505050565b600080600080856001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156115d157600080fd5b505afa1580156115e5573d6000803e3d6000fd5b505050506040513d60608110156115fb57600080fd5b508051602091820151604080516318160ddd60e01b815290519295509093506000926001600160a01b038a16926318160ddd926004808201939291829003018186803b15801561164a57600080fd5b505afa15801561165e573d6000803e3d6000fd5b505050506040513d602081101561167457600080fd5b505190508061168c876001600160701b03861661226c565b8161169357fe5b049450806116aa876001600160701b03851661226c565b816116b157fe5b0493505050509250929050565b60008084116116fe5760405162461bcd60e51b815260040180806020018281038252602481526020018061239d6024913960400191505060405180910390fd5b60008311801561170e5750600082115b6117495760405162461bcd60e51b81526004018080602001828103825260278152602001806127556027913960400191505060405180910390fd5b82611754858461226c565b8161175b57fe5b04949350505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b178152925182516000948594938a169392918291908083835b602083106117fd5780518252601f1990920191602091820191016117de565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461185f576040519150601f19603f3d011682016040523d82523d6000602084013e611864565b606091505b5091509150818015611892575080511580611892575080806020019051602081101561188f57600080fd5b50515b6103bf5760405162461bcd60e51b81526004018080602001828103825260248152602001806127316024913960400191505060405180910390fd5b6001600160a01b0382166119125760405162461bcd60e51b815260040180806020018281038252603b815260200180612539603b913960400191505060405180910390fd5b6001600160a01b0380831660008181526001602052604080822054815163d004f0f760e01b8152600481019490945260248401869052905193169263d004f0f792604480820193929182900301818387803b15801561197057600080fd5b505af1158015611984573d6000803e3d6000fd5b5050506001600160a01b038084166000908152600160209081526040918290205482516370a0823160e01b815230600482015292518695509316926370a08231926024808201939291829003018186803b1580156119e157600080fd5b505afa1580156119f5573d6000803e3d6000fd5b505050506040513d6020811015611a0b57600080fd5b505114611a495760405162461bcd60e51b815260040180806020018281038252603e8152602001806125d0603e913960400191505060405180910390fd5b5050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310611ade5780518252601f199092019160209182019101611abf565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611b40576040519150601f19603f3d011682016040523d82523d6000602084013e611b45565b606091505b5091509150818015611b73575080511580611b735750808060200190516020811015611b7057600080fd5b50515b610b25576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b6001600160a01b038216611c095760405162461bcd60e51b815260040180806020018281038252603a815260200180612596603a913960400191505060405180910390fd5b6001600160a01b038216611c4e5760405162461bcd60e51b81526004018080602001828103825260388152602001806126b56038913960400191505060405180910390fd5b806001600160a01b0316826001600160a01b03161415611c9f5760405162461bcd60e51b815260040180806020018281038252604781526020018061231e6047913960600191505060405180910390fd5b806001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611cd857600080fd5b505afa158015611cec573d6000803e3d6000fd5b505050506040513d6020811015611d0257600080fd5b505160408051630dfe168160e01b815290516001600160a01b0392831692851691630dfe1681916004808301926020929190829003018186803b158015611d4857600080fd5b505afa158015611d5c573d6000803e3d6000fd5b505050506040513d6020811015611d7257600080fd5b50516001600160a01b03161480611e645750806001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015611dbd57600080fd5b505afa158015611dd1573d6000803e3d6000fd5b505050506040513d6020811015611de757600080fd5b505160408051630dfe168160e01b815290516001600160a01b0392831692851691630dfe1681916004808301926020929190829003018186803b158015611e2d57600080fd5b505afa158015611e41573d6000803e3d6000fd5b505050506040513d6020811015611e5757600080fd5b50516001600160a01b0316145b80611f4a5750806001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611ea357600080fd5b505afa158015611eb7573d6000803e3d6000fd5b505050506040513d6020811015611ecd57600080fd5b50516040805163d21220a760e01b815290516001600160a01b039283169285169163d21220a7916004808301926020929190829003018186803b158015611f1357600080fd5b505afa158015611f27573d6000803e3d6000fd5b505050506040513d6020811015611f3d57600080fd5b50516001600160a01b0316145b806120305750806001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8957600080fd5b505afa158015611f9d573d6000803e3d6000fd5b505050506040513d6020811015611fb357600080fd5b50516040805163d21220a760e01b815290516001600160a01b039283169285169163d21220a7916004808301926020929190829003018186803b158015611ff957600080fd5b505afa15801561200d573d6000803e3d6000fd5b505050506040513d602081101561202357600080fd5b50516001600160a01b0316145b611a495760405162461bcd60e51b81526004018080602001828103825260448152602001806126ed6044913960600191505060405180910390fd5b60008061207a84338686611764565b6040805163226bf2d160e21b815230600482015281516001600160a01b038716926389afcb4492602480820193918290030181600087803b1580156120be57600080fd5b505af11580156120d2573d6000803e3d6000fd5b505050506040513d60408110156120e857600080fd5b508051602090910151909590945092505050565b60008060008060008a6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561213d57600080fd5b505afa158015612151573d6000803e3d6000fd5b505050506040513d606081101561216757600080fd5b508051602090910151909250905087600061218f826001600160701b038087169086166116be565b9050888111156121bc578890506121b989846001600160701b0316866001600160701b03166116be565b91505b6121c78c8e84611a4d565b6121d28b8e83611a4d565b818a03965080890395508c6001600160a01b0316636a627842896040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b15801561222b57600080fd5b505af115801561223f573d6000803e3d6000fd5b505050506040513d602081101561225557600080fd5b5051969d959c50959a509398505050505050505050565b60008115806122875750508082028282828161228457fe5b04145b61036d576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe50616e676f6c696e4272696467654d6967726174696f6e526f757465723a205061697220646f65736e2774206d6174636820746865206d6967726174696f6e20746f6b656e50616e676f6c696e4272696467654d6967726174696f6e526f757465723a2043616e7420636f6e7665727420746f207468652073616d65206c697175696469747920706169727350616e676f6c696e4272696467654d6967726174696f6e526f757465723a20596f752063616e27742064656d6f746520796f757273656c6650616e676f6c696e4c6962726172793a20494e53554646494349454e545f414d4f554e5450616e676f6c696e4272696467654d6967726174696f6e526f757465723a206c697175696469747950616972546f20616464726573732030206e6f7420737570706f7274656450616e676f6c696e4272696467654d6967726174696f6e526f757465723a2045585049524544546865206d69677261746f7220646f65736e27742068617665207377617020737570706c7920666f72207468697320746f6b656e50616e676f6c696e4272696467654d6967726174696f6e526f757465723a206d69677261746f72416464726573732030206e6f7420737570706f7274656450616e676f6c696e4272696467654d6967726174696f6e526f757465723a206d69677261746f72206e6f742072656769737465726564526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6550616e676f6c696e4272696467654d6967726174696f6e526f757465723a204d69677261746f72206e6f74207265676973746572656420666f7220746865207061697250616e676f6c696e4272696467654d6967726174696f6e526f757465723a20746f6b656e416464726573732030206e6f7420737570706f72746564526f6c65733a206163636f756e7420697320746865207a65726f206164647265737350616e676f6c696e4272696467654d6967726174696f6e526f757465723a206c69717569646974795061697246726f6d2061646472657373203050616e676f6c696e4272696467654d6967726174696f6e526f757465723a204469646e2774207969656c642074686520636f727265637420616d6f756e7450616e676f6c696e4272696467654d6967726174696f6e526f757465723a20556e617574686f72697a656450616e676f6c696e4272696467654d6967726174696f6e526f757465723a206c69717569646974795061697246726f6d20616464726573732030206e6f7420737570706f7274656450616e676f6c696e4272696467654d6967726174696f6e526f757465723a20416464726573732030206e6f7420616c6c6f77656450616e676f6c696e4272696467654d6967726174696f6e526f757465723a206c697175696469747950616972546f2061646472657373203050616e676f6c696e4272696467654d6967726174696f6e526f757465723a205061697220646f6573206e6f742068617665206f6e6520746f6b656e206d61746368696e675472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c454450616e676f6c696e4c6962726172793a20494e53554646494349454e545f4c4951554944495459a26469706673582212209115ed6d3895bb5381b3d4882fd70745e42603a90002fa7e94c6c6837bac324f64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70480275 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xB032FFF7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xB032FFF7 EQ PUSH2 0x1EF JUMPI DUP1 PUSH4 0xF057D237 EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0xFFC50594 EQ PUSH2 0x283 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x70480275 EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x99A0DF82 EQ PUSH2 0x1A0 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x1785F53C EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x24D7806C EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0x495952F5 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0x4C389D26 EQ PUSH2 0x14C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x361 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x373 JUMP JUMPDEST PUSH2 0xCE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x3C7 JUMP JUMPDEST PUSH2 0xCE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5A1 JUMP JUMPDEST PUSH2 0x1D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x637 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 0xCE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0xA0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x972 JUMP JUMPDEST PUSH2 0xCE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xA53 JUMP JUMPDEST PUSH2 0x2A9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB2C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2D0 PUSH1 0x0 CALLER PUSH2 0xBC8 JUMP JUMPDEST PUSH2 0x30B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x260E PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ ISZERO PUSH2 0x353 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2365 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x35E PUSH1 0x0 DUP3 PUSH2 0xC2F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36D DUP2 DUP4 PUSH2 0xBC8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2407 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3BF DUP7 DUP7 DUP7 DUP7 PUSH2 0xC96 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3D2 PUSH1 0x0 CALLER PUSH2 0xBC8 JUMP JUMPDEST PUSH2 0x40D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x260E PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x452 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2539 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x497 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2461 PUSH1 0x3E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAB32DBB7 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x4E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4FA 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 0x510 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x550 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x242D PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x55A DUP4 DUP4 PUSH2 0x1509 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x5AC PUSH1 0x0 CALLER PUSH2 0xBC8 JUMP JUMPDEST PUSH2 0x5E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x260E PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x62C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2681 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x35E PUSH1 0x0 DUP3 PUSH2 0xB47 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x67F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x48 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2639 PUSH1 0x48 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x6C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x46 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x23C1 PUSH1 0x46 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x6D1 DUP8 DUP7 PUSH2 0x1592 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x70E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x722 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 0x738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xDFE1681 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP11 AND SWAP2 PUSH4 0xDFE1681 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x77E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x792 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 0x7A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x89D JUMPI POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x7F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x809 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 0x81F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD21220A7 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP11 AND SWAP2 PUSH4 0xD21220A7 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x865 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x879 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 0x88F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x8A4 JUMPI SWAP1 JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8F4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x90A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP4 PUSH1 0x0 PUSH2 0x932 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP1 DUP8 AND SWAP1 DUP7 AND PUSH2 0x16BE JUMP JUMPDEST SWAP1 POP DUP5 DUP2 GT ISZERO PUSH2 0x95F JUMPI DUP5 SWAP1 POP PUSH2 0x95C DUP6 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH2 0x16BE JUMP JUMPDEST SWAP2 POP JUMPDEST SWAP5 SUB SWAP10 SWAP4 SWAP1 SWAP3 SUB SWAP8 POP SWAP2 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x9B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2407 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xFF DUP7 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 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 0xA24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA38 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xA48 DUP10 DUP10 DUP10 DUP10 PUSH2 0xC96 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0xA93 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2407 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND PUSH2 0xAE9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x249F PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAF5 DUP6 CALLER ADDRESS DUP7 PUSH2 0x1764 JUMP JUMPDEST PUSH2 0xAFF DUP6 DUP5 PUSH2 0x18CD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xB25 SWAP2 AND DUP6 DUP6 PUSH2 0x1A4D JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0xB51 DUP3 DUP3 PUSH2 0xBC8 JUMP JUMPDEST ISZERO PUSH2 0xBA3 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 0x526F6C65733A206163636F756E7420616C72656164792068617320726F6C6500 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xC0F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2574 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xC39 DUP3 DUP3 PUSH2 0xBC8 JUMP JUMPDEST PUSH2 0xC74 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x24D5 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xCA0 DUP5 DUP5 PUSH2 0x1BC4 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xCDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCEF 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 0xD05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xDFE1681 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0xDFE1681 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD5F 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 0xD75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xDFE1681 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP9 AND SWAP2 PUSH4 0xDFE1681 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDCF 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 0xDE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xED7 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xE30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE44 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 0xE5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xDFE1681 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP9 AND SWAP2 PUSH4 0xDFE1681 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEB4 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 0xECA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0xF44 JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xF15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF29 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 0xF3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND DUP1 PUSH2 0xF9B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x43 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x24F6 PUSH1 0x43 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0xFD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFE8 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 0xFFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ DUP1 PUSH2 0x1088 JUMPI POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x104D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1061 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 0x1077 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ JUMPDEST PUSH2 0x10C3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x22D9 PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x10D0 DUP9 DUP7 PUSH2 0x206B JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 SWAP1 POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1112 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1126 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 0x113C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ PUSH2 0x1153 JUMPI POP DUP1 JUMPDEST PUSH2 0x115D DUP6 DUP3 PUSH2 0x18CD JUMP JUMPDEST POP DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11AB 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 0x11C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xDFE1681 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP12 AND SWAP2 PUSH4 0xDFE1681 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x121B 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 0x1231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x1326 JUMPI POP DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x127E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1292 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 0x12A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD21220A7 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP12 AND SWAP2 PUSH4 0xD21220A7 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1302 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 0x1318 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x132D JUMPI SWAP1 JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x140D DUP10 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x136D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1381 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 0x1397 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD21220A7 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND SWAP2 PUSH4 0xD21220A7 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13ED 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 0x1403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP8 DUP8 DUP14 PUSH2 0x20FC JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x1488 JUMPI PUSH2 0x1488 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1469 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 0x147F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP10 DUP5 PUSH2 0x1A4D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x14FD JUMPI PUSH2 0x14FD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x14CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14DE 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 0x14F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP10 DUP4 PUSH2 0x1A4D JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95EA7B3 DUP3 PUSH1 0x0 NOT PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1576 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 0x158C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x15FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x18160DDD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP3 PUSH4 0x18160DDD SWAP3 PUSH1 0x4 DUP1 DUP3 ADD SWAP4 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x164A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x165E 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 0x1674 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x168C DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP7 AND PUSH2 0x226C JUMP JUMPDEST DUP2 PUSH2 0x1693 JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 PUSH2 0x16AA DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP6 AND PUSH2 0x226C JUMP JUMPDEST DUP2 PUSH2 0x16B1 JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x16FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x239D PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x170E JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x1749 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2755 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x1754 DUP6 DUP5 PUSH2 0x226C JUMP JUMPDEST DUP2 PUSH2 0x175B JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH4 0x23B872DD PUSH1 0xE0 SHL 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 0x17FD JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x17DE 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 0x185F 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 0x1864 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1892 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1892 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x188F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x3BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2731 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1912 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2539 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD DUP2 MLOAD PUSH4 0xD004F0F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x24 DUP5 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD SWAP4 AND SWAP3 PUSH4 0xD004F0F7 SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1970 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1984 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP3 MLOAD DUP7 SWAP6 POP SWAP4 AND SWAP3 PUSH4 0x70A08231 SWAP3 PUSH1 0x24 DUP1 DUP3 ADD SWAP4 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19F5 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 0x1A0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x1A49 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x25D0 PUSH1 0x3E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH4 0xA9059CBB PUSH1 0xE0 SHL 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 0x1ADE JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1ABF 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 0x1B40 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 0x1B45 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1B73 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1B73 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1B70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0xB25 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 0x5472616E7366657248656C7065723A205452414E534645525F4641494C454400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1C09 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2596 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1C4E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x26B5 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1C9F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x47 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x231E PUSH1 0x47 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1CD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CEC 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 0x1D02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xDFE1681 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP6 AND SWAP2 PUSH4 0xDFE1681 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D5C 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 0x1D72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1E64 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1DBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DD1 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 0x1DE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xDFE1681 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP6 AND SWAP2 PUSH4 0xDFE1681 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E41 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 0x1E57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x1F4A JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1EA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EB7 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 0x1ECD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD21220A7 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP6 AND SWAP2 PUSH4 0xD21220A7 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F27 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 0x1F3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x2030 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1F89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F9D 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 0x1FB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD21220A7 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP6 AND SWAP2 PUSH4 0xD21220A7 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x200D 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 0x2023 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x1A49 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x44 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x26ED PUSH1 0x44 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x207A DUP5 CALLER DUP7 DUP7 PUSH2 0x1764 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x226BF2D1 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP3 PUSH4 0x89AFCB44 SWAP3 PUSH1 0x24 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20D2 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 0x20E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x213D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2151 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP8 PUSH1 0x0 PUSH2 0x218F DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP1 DUP8 AND SWAP1 DUP7 AND PUSH2 0x16BE JUMP JUMPDEST SWAP1 POP DUP9 DUP2 GT ISZERO PUSH2 0x21BC JUMPI DUP9 SWAP1 POP PUSH2 0x21B9 DUP10 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH2 0x16BE JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x21C7 DUP13 DUP15 DUP5 PUSH2 0x1A4D JUMP JUMPDEST PUSH2 0x21D2 DUP12 DUP15 DUP4 PUSH2 0x1A4D JUMP JUMPDEST DUP2 DUP11 SUB SWAP7 POP DUP1 DUP10 SUB SWAP6 POP DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6A627842 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x222B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x223F 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 0x2255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP7 SWAP14 SWAP6 SWAP13 POP SWAP6 SWAP11 POP SWAP4 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x2287 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x2284 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x36D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID POP PUSH2 0x6E67 PUSH16 0x6C696E4272696467654D696772617469 PUSH16 0x6E526F757465723A205061697220646F PUSH6 0x736E2774206D PUSH2 0x7463 PUSH9 0x20746865206D696772 PUSH2 0x7469 PUSH16 0x6E20746F6B656E50616E676F6C696E42 PUSH19 0x696467654D6967726174696F6E526F75746572 GASPRICE KECCAK256 NUMBER PUSH2 0x6E74 KECCAK256 PUSH4 0x6F6E7665 PUSH19 0x7420746F207468652073616D65206C69717569 PUSH5 0x6974792070 PUSH2 0x6972 PUSH20 0x50616E676F6C696E4272696467654D6967726174 PUSH10 0x6F6E526F757465723A20 MSIZE PUSH16 0x752063616E27742064656D6F74652079 PUSH16 0x757273656C6650616E676F6C696E4C69 PUSH3 0x726172 PUSH26 0x3A20494E53554646494349454E545F414D4F554E5450616E676F PUSH13 0x696E4272696467654D69677261 PUSH21 0x696F6E526F757465723A206C697175696469747950 PUSH2 0x6972 SLOAD PUSH16 0x20616464726573732030206E6F742073 PUSH22 0x70706F7274656450616E676F6C696E4272696467654D PUSH10 0x67726174696F6E526F75 PUSH21 0x65723A2045585049524544546865206D6967726174 PUSH16 0x7220646F65736E277420686176652073 PUSH24 0x617020737570706C7920666F72207468697320746F6B656E POP PUSH2 0x6E67 PUSH16 0x6C696E4272696467654D696772617469 PUSH16 0x6E526F757465723A206D69677261746F PUSH19 0x416464726573732030206E6F7420737570706F PUSH19 0x74656450616E676F6C696E4272696467654D69 PUSH8 0x726174696F6E526F PUSH22 0x7465723A206D69677261746F72206E6F742072656769 PUSH20 0x7465726564526F6C65733A206163636F756E7420 PUSH5 0x6F6573206E PUSH16 0x74206861766520726F6C6550616E676F PUSH13 0x696E4272696467654D69677261 PUSH21 0x696F6E526F757465723A204D69677261746F72206E PUSH16 0x74207265676973746572656420666F72 KECCAK256 PUSH21 0x6865207061697250616E676F6C696E427269646765 0x4D PUSH10 0x67726174696F6E526F75 PUSH21 0x65723A20746F6B656E416464726573732030206E6F PUSH21 0x20737570706F72746564526F6C65733A206163636F PUSH22 0x6E7420697320746865207A65726F2061646472657373 POP PUSH2 0x6E67 PUSH16 0x6C696E4272696467654D696772617469 PUSH16 0x6E526F757465723A206C697175696469 PUSH21 0x795061697246726F6D206164647265737320305061 PUSH15 0x676F6C696E4272696467654D696772 PUSH2 0x7469 PUSH16 0x6E526F757465723A204469646E277420 PUSH26 0x69656C642074686520636F727265637420616D6F756E7450616E PUSH8 0x6F6C696E42726964 PUSH8 0x654D696772617469 PUSH16 0x6E526F757465723A20556E617574686F PUSH19 0x697A656450616E676F6C696E4272696467654D PUSH10 0x67726174696F6E526F75 PUSH21 0x65723A206C69717569646974795061697246726F6D KECCAK256 PUSH2 0x6464 PUSH19 0x6573732030206E6F7420737570706F72746564 POP PUSH2 0x6E67 PUSH16 0x6C696E4272696467654D696772617469 PUSH16 0x6E526F757465723A2041646472657373 KECCAK256 ADDRESS KECCAK256 PUSH15 0x6F7420616C6C6F77656450616E676F PUSH13 0x696E4272696467654D69677261 PUSH21 0x696F6E526F757465723A206C697175696469747950 PUSH2 0x6972 SLOAD PUSH16 0x2061646472657373203050616E676F6C PUSH10 0x6E4272696467654D6967 PUSH19 0x6174696F6E526F757465723A20506169722064 PUSH16 0x6573206E6F742068617665206F6E6520 PUSH21 0x6F6B656E206D61746368696E675472616E73666572 0x48 PUSH6 0x6C7065723A20 SLOAD MSTORE COINBASE 0x4E MSTORE8 CHAINID GASLIMIT MSTORE 0x5F CHAINID MSTORE 0x4F 0x4D 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY POP PUSH2 0x6E67 PUSH16 0x6C696E4C6962726172793A20494E5355 CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 ISZERO 0xED PUSH14 0x3895BB5381B3D4882FD70745E426 SUB 0xA9 STOP MUL STATICCALL PUSH31 0x94C6C6837BAC324F64736F6C63430007060033000000000000000000000000 ","sourceMap":"260:16559:137:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1585:202;;;;;;;;;;;;;;;;-1:-1:-1;1585:202:137;-1:-1:-1;;;;;1585:202:137;;:::i;:::-;;2007:110;;;;;;;;;;;;;;;;-1:-1:-1;2007:110:137;-1:-1:-1;;;;;2007:110:137;;:::i;:::-;;;;;;;;;;;;;;;;;;10837:343;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10837:343:137;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2431:634::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2431:634:137;;;;;;;;;;:::i;1174:192::-;;;;;;;;;;;;;;;;-1:-1:-1;1174:192:137;-1:-1:-1;;;;;1174:192:137;;:::i;15555:1259::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15555:1259:137;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9763:497;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9763:497:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8576:500::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8576:500:137;;;;;;;;;;;;;;;;;;;;;;:::i;406:49::-;;;;;;;;;;;;;;;;-1:-1:-1;406:49:137;-1:-1:-1;;;;;406:49:137;;:::i;:::-;;;;-1:-1:-1;;;;;406:49:137;;;;;;;;;;;;;;1585:202;862:25;:9;876:10;862:13;:25::i;:::-;854:81;;;;-1:-1:-1;;;854:81:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1661:10:::1;-1:-1:-1::0;;;;;1661:21:137;::::1;;;1653:90;;;;-1:-1:-1::0;;;1653:90:137::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1754:25;:9;1771:7:::0;1754:16:::1;:25::i;:::-;1585:202:::0;:::o;2007:110::-;2063:4;2087:22;2063:4;2101:7;2087:13;:22::i;:::-;2080:29;2007:110;-1:-1:-1;;2007:110:137:o;10837:343::-;11023:8;670:15;658:8;:27;;650:78;;;;-1:-1:-1;;;650:78:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11044:128:::1;11076:17;11108:15;11138:2;11155:6;11044:17;:128::i;:::-;10837:343:::0;;;;;;:::o;2431:634::-;862:25;:9;876:10;862:13;:25::i;:::-;854:81;;;;-1:-1:-1;;;854:81:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2537:26:137;::::1;2529:98;;;;-1:-1:-1::0;;;2529:98:137::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;2646:29:137;::::1;2638:104;;;;-1:-1:-1::0;;;2638:104:137::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2753:14;2783:15;-1:-1:-1::0;;;;;2770:40:137::1;;2811:12;2770:54;;;;;;;;;;;;;-1:-1:-1::0;;;;;2770:54:137::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;2770:54:137;;-1:-1:-1;2857:10:137;2835:112:::1;;;;-1:-1:-1::0;;;2835:112:137::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2958:42;2970:12;2984:15;2958:11;:42::i;:::-;-1:-1:-1::0;;;;;;3011:28:137;;::::1;;::::0;;;:14:::1;:28;::::0;;;;:46;;;::::1;::::0;;;::::1;;::::0;;2431:634::o;1174:192::-;862:25;:9;876:10;862:13;:25::i;:::-;854:81;;;;-1:-1:-1;;;854:81:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1247:21:137;::::1;1239:86;;;;-1:-1:-1::0;;;1239:86:137::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1336:22;:9;1350:7:::0;1336:13:::1;:22::i;15555:1259::-:0;15706:12;;-1:-1:-1;;;;;15753:31:137;;15745:116;;;;-1:-1:-1;;;15745:116:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15880:29:137;;15872:112;;;;-1:-1:-1;;;15872:112:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15996:14;16012;16030:52;16056:17;16075:6;16030:25;:52::i;:::-;15995:87;;;;16156:15;-1:-1:-1;;;;;16142:37:137;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16142:39:137;16097:41;;;-1:-1:-1;;;16097:41:137;;;;-1:-1:-1;;;;;16097:84:137;;;;:39;;;;;:41;;;;;16142:39;;16097:41;;;;;;;:39;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16097:41:137;-1:-1:-1;;;;;16097:84:137;;;;;:185;;;16257:15;-1:-1:-1;;;;;16243:37:137;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16243:39:137;16198:41;;;-1:-1:-1;;;16198:41:137;;;;-1:-1:-1;;;;;16198:84:137;;;;:39;;;;;:41;;;;;16243:39;;16198:41;;;;;;;:39;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16198:41:137;-1:-1:-1;;;;;16198:84:137;;;16097:185;16093:275;;;16335:9;16093:275;16379:16;16397;16432:15;-1:-1:-1;;;;;16418:42:137;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16418:44:137;;;;;;;;;-1:-1:-1;16418:44:137;-1:-1:-1;16487:9:137;16473:11;16521:52;16487:9;-1:-1:-1;;;;;16521:52:137;;;;;;:21;:52::i;:::-;16507:66;;16597:9;16588:6;:18;16584:145;;;16632:9;16623:18;;16665:52;16687:9;16698:8;-1:-1:-1;;;;;16665:52:137;16708:8;-1:-1:-1;;;;;16665:52:137;:21;:52::i;:::-;16656:61;;16584:145;16749:18;;;16788;;;;;-1:-1:-1;15555:1259:137;;-1:-1:-1;;;;;;15555:1259:137:o;9763:497::-;9999:8;670:15;658:8;:27;;650:78;;;;-1:-1:-1;;;650:78:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10020:93:::1;::::0;;-1:-1:-1;;;10020:93:137;;10060:10:::1;10020:93;::::0;::::1;::::0;10080:4:::1;10020:93:::0;;;;;;;;;;;;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10020:39:137;::::1;::::0;::::1;::::0;:93;;;;;-1:-1:-1;;10020:93:137;;;;;;;-1:-1:-1;10020:39:137;:93;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10124:128;10156:17;10188:15;10218:2;10235:6;10124:17;:128::i;:::-;9763:497:::0;;;;;;;;;:::o;8576:500::-;8712:8;670:15;658:8;:27;;650:78;;;;-1:-1:-1;;;650:78:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8755:21:137;;::::1;8788:1;8755:21:::0;;;:14:::1;:21;::::0;;;;;::::1;8733:139;;;;-1:-1:-1::0;;;8733:139:137::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8883:73;8915:5;8922:10;8942:4;8949:6;8883:31;:73::i;:::-;8967:28;8981:5;8988:6;8967:13;:28::i;:::-;-1:-1:-1::0;;;;;9034:21:137;;::::1;;::::0;;;:14:::1;:21;::::0;;;;;9006:62:::1;::::0;9034:21:::1;9057:2:::0;9061:6;9006:27:::1;:62::i;:::-;8576:500:::0;;;;;:::o;406:49::-;;;;;;;;;;;;-1:-1:-1;;;;;406:49:137;;:::o;219:178:140:-;297:18;301:4;307:7;297:3;:18::i;:::-;296:19;288:63;;;;;-1:-1:-1;;;288:63:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;362:20:140;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;362:27:140;385:4;362:27;;;219:178::o;755:235::-;854:4;-1:-1:-1;;;;;884:21:140;;876:68;;;;-1:-1:-1;;;876:68:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;962:20:140;:11;:20;;;;;;;;;;;;;;;755:235::o;477:183::-;557:18;561:4;567:7;557:3;:18::i;:::-;549:64;;;;-1:-1:-1;;;549:64:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;624:20:140;647:5;624:20;;;;;;;;;;;:28;;-1:-1:-1;;624:28:140;;;477:183::o;11668:2312:137:-;11835:55;11855:17;11874:15;11835:19;:55::i;:::-;11901:22;11940:17;-1:-1:-1;;;;;11926:39:137;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11926:41:137;12041:39;;;-1:-1:-1;;;12041:39:137;;;;11926:41;;-1:-1:-1;;;;;;12041:37:137;;;;;:39;;;;;11926:41;;12041:39;;;;;;;;:37;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12041:39:137;11996:41;;;-1:-1:-1;;;11996:41:137;;;;-1:-1:-1;;;;;11996:84:137;;;;:39;;;;;:41;;;;;12041:39;;11996:41;;;;;;;:39;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11996:41:137;-1:-1:-1;;;;;11996:84:137;;;:185;;;12156:15;-1:-1:-1;;;;;12142:37:137;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12142:39:137;12097:41;;;-1:-1:-1;;;12097:41:137;;;;-1:-1:-1;;;;;12097:84:137;;;;:39;;;;;:41;;;;;12142:39;;12097:41;;;;;;;:39;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12097:41:137;-1:-1:-1;;;;;12097:84:137;;11996:185;11978:300;;;12239:17;-1:-1:-1;;;;;12225:39:137;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12225:41:137;;-1:-1:-1;11978:300:137;-1:-1:-1;;;;;12314:30:137;;;12288:23;12314:30;;;:14;:30;;;;;;;12377:29;12355:146;;;;-1:-1:-1;;;12355:146:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12567:15;-1:-1:-1;;;;;12553:37:137;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12553:39:137;-1:-1:-1;;;;;12534:58:137;;;;;;;:133;;;12642:15;-1:-1:-1;;;;;12628:37:137;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12628:39:137;-1:-1:-1;;;;;12609:58:137;;;;;;12534:133;12512:252;;;;-1:-1:-1;;;12512:252:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12778:17;12797;12818:43;12835:17;12854:6;12818:16;:43::i;:::-;12777:84;;;;12887:17;12907:12;12887:32;;12970:17;-1:-1:-1;;;;;12956:39:137;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12956:41:137;-1:-1:-1;;;;;12938:59:137;;;;;;12934:127;;-1:-1:-1;13033:12:137;12934:127;13075:43;13089:14;13105:12;13075:13;:43::i;:::-;11668:2312;13203:15;-1:-1:-1;;;;;13189:37:137;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13189:39:137;13144:41;;;-1:-1:-1;;;13144:41:137;;;;-1:-1:-1;;;;;13144:84:137;;;;:39;;;;;:41;;;;;13189:39;;13144:41;;;;;;;:39;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13144:41:137;-1:-1:-1;;;;;13144:84:137;;;;;:185;;;13304:15;-1:-1:-1;;;;;13290:37:137;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13290:39:137;13245:41;;;-1:-1:-1;;;13245:41:137;;;;-1:-1:-1;;;;;13245:84:137;;;;:39;;;;;:41;;;;;13290:39;;13245:41;;;;;;;:39;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13245:41:137;-1:-1:-1;;;;;13245:84:137;;;13144:185;13140:287;;;13388:12;13140:287;13440:18;13460;13484:194;13512:15;13556;-1:-1:-1;;;;;13542:37:137;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13542:39:137;13583;;;-1:-1:-1;;;13583:39:137;;;;-1:-1:-1;;;;;13583:37:137;;;;;:39;;;;;13542;;13583;;;;;;;:37;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13583:39:137;13637:12;13651;13665:2;13484:13;:194::i;:::-;-1:-1:-1;13439:239:137;;-1:-1:-1;13439:239:137;-1:-1:-1;13693:17:137;;13689:137;;13727:87;13769:15;-1:-1:-1;;;;;13755:37:137;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13755:39:137;13796:2;13800:13;13727:27;:87::i;:::-;13840:17;;13836:137;;13874:87;13916:15;-1:-1:-1;;;;;13902:37:137;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13902:39:137;13943:2;13947:13;13874:27;:87::i;:::-;11668:2312;;;;;;;;;;:::o;3339:163::-;3441:12;-1:-1:-1;;;;;3426:36:137;;3463:14;-1:-1:-1;;3426:68:137;;;;;;;;;;;;;-1:-1:-1;;;;;3426:68:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;3339:163:137:o;14538:404::-;14630:12;14644;14670:17;14689;14726:11;-1:-1:-1;;;;;14712:38:137;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14712:40:137;;;;;;;;14782;;-1:-1:-1;;;14782:40:137;;;;14712;;-1:-1:-1;14712:40:137;;-1:-1:-1;14763:16:137;;-1:-1:-1;;;;;14782:38:137;;;;;:40;;;;;14712;14782;;;;;;:38;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14782:40:137;;-1:-1:-1;14782:40:137;14843:21;:6;-1:-1:-1;;;;;14843:21:137;;:10;:21::i;:::-;:35;;;;;;;-1:-1:-1;14923:11:137;14899:21;:6;-1:-1:-1;;;;;14899:21:137;;:10;:21::i;:::-;:35;;;;;;14889:45;;14538:404;;;;;;;;:::o;1823:319:139:-;1905:12;1948:1;1938:7;:11;1930:60;;;;-1:-1:-1;;;1930:60:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:1;2009:8;:12;:28;;;;;2036:1;2025:8;:12;2009:28;2001:80;;;;-1:-1:-1;;;2001:80:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2126:8;2102:21;:7;2114:8;2102:11;:21::i;:::-;:32;;;;;;;1823:319;-1:-1:-1;;;;1823:319:139:o;1028:448:130:-;1299:51;;;-1:-1:-1;;;;;1299:51:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1299:51:130;;;1288:63;;;;1253:12;;;;1288:10;;;;1299:51;1288:63;;;1299:51;1288:63;;1299:51;1288:63;;;;;;;;;;-1:-1:-1;;1288:63:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:99;;;;1370:7;:57;;;;-1:-1:-1;1382:11:130;;:16;;:44;;;1413:4;1402:24;;;;;;;;;;;;;;;-1:-1:-1;1402:24:130;1382:44;1362:106;;;;-1:-1:-1;;;1362:106:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7658:489:137;-1:-1:-1;;;;;7769:26:137;;7761:98;;;;-1:-1:-1;;;7761:98:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7883:28:137;;;;;;;:14;:28;;;;;;;7870:69;;-1:-1:-1;;;7870:69:137;;;;;;;;;;;;;;;;;7883:28;;;7870:47;;:69;;;;;7883:28;7870:69;;;;;;7883:28;;7870:69;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;7985:28:137;;;;;;;:14;:28;;;;;;;;;;7972:67;;-1:-1:-1;;;7972:67:137;;8033:4;7972:67;;;;;;8043:6;;-1:-1:-1;7985:28:137;;;7972:52;;:67;;;;;7985:28;7972:67;;;;;;7985:28;7972:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7972:67:137;:77;7950:189;;;;-1:-1:-1;;;7950:189:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7658:489;;:::o;622:398:130:-;854:45;;;-1:-1:-1;;;;;854:45:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;854:45:130;;;843:57;;;;808:12;;;;843:10;;;;854:45;843:57;;;854:45;843:57;;854:45;843:57;;;;;;;;;;-1:-1:-1;;843:57:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;807:93;;;;919:7;:57;;;;-1:-1:-1;931:11:130;;:16;;:44;;;962:4;951:24;;;;;;;;;;;;;;;-1:-1:-1;951:24:130;931:44;911:101;;;;;-1:-1:-1;;;911:101:130;;;;;;;;;;;;;;;;;;;;;;;;;;;6492:818:137;-1:-1:-1;;;;;6584:19:137;;6576:90;;;;-1:-1:-1;;;6576:90:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6685:19:137;;6677:88;;;;-1:-1:-1;;;6677:88:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6793:5;-1:-1:-1;;;;;6784:14:137;:5;-1:-1:-1;;;;;6784:14:137;;;6776:98;;;;-1:-1:-1;;;6776:98:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6954:5;-1:-1:-1;;;;;6940:27:137;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6940:29:137;6907;;;-1:-1:-1;;;6907:29:137;;;;-1:-1:-1;;;;;6907:62:137;;;;:27;;;;;:29;;;;;6940;;6907;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6907:29:137;-1:-1:-1;;;;;6907:62:137;;;:141;;;7033:5;-1:-1:-1;;;;;7019:27:137;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7019:29:137;6986;;;-1:-1:-1;;;6986:29:137;;;;-1:-1:-1;;;;;6986:62:137;;;;:27;;;;;:29;;;;;7019;;6986;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6986:29:137;-1:-1:-1;;;;;6986:62:137;;6907:141;:220;;;;7112:5;-1:-1:-1;;;;;7098:27:137;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7098:29:137;7065;;;-1:-1:-1;;;7065:29:137;;;;-1:-1:-1;;;;;7065:62:137;;;;:27;;;;;:29;;;;;7098;;7065;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7065:29:137;-1:-1:-1;;;;;7065:62:137;;6907:220;:299;;;;7191:5;-1:-1:-1;;;;;7177:27:137;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7177:29:137;7144;;;-1:-1:-1;;;7144:29:137;;;;-1:-1:-1;;;;;7144:62:137;;;;:27;;;;;:29;;;;;7177;;7144;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7144:29:137;-1:-1:-1;;;;;7144:62:137;;6907:299;6885:417;;;;-1:-1:-1;;;6885:417:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5775:333;5880:17;5899;5929:81;5961:13;5976:10;5988:13;6003:6;5929:31;:81::i;:::-;6052:48;;;-1:-1:-1;;;6052:48:137;;6094:4;6052:48;;;;;;-1:-1:-1;;;;;6052:33:137;;;;;:48;;;;;;;;;;;-1:-1:-1;6052:33:137;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6052:48:137;;;;;;;;;;;-1:-1:-1;5775:333:137;-1:-1:-1;;;5775:333:137:o;4339:879::-;4535:12;4549;4563:20;4597:16;4615;4650:9;-1:-1:-1;;;;;4636:36:137;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4636:38:137;;;;;;;;;-1:-1:-1;4636:38:137;-1:-1:-1;4699:9:137;4685:11;4733:52;4699:9;-1:-1:-1;;;;;4733:52:137;;;;;;:21;:52::i;:::-;4719:66;;4809:9;4800:6;:18;4796:145;;;4844:9;4835:18;;4877:52;4899:9;4910:8;-1:-1:-1;;;;;4877:52:137;4920:8;-1:-1:-1;;;;;4877:52:137;:21;:52::i;:::-;4868:61;;4796:145;4951:54;4979:6;4987:9;4998:6;4951:27;:54::i;:::-;5016;5044:6;5052:9;5063:6;5016:27;:54::i;:::-;5103:6;5091:9;:18;5081:28;;5142:6;5130:9;:18;5120:28;;5191:9;-1:-1:-1;;;;;5177:29:137;;5207:2;5177:33;;;;;;;;;;;;;-1:-1:-1;;;;;5177:33:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5177:33:137;4339:879;;;;-1:-1:-1;5177:33:137;;-1:-1:-1;4339:879:137;;-1:-1:-1;;;;;;;;;4339:879:137:o;440:142:141:-;492:6;519;;;:30;;-1:-1:-1;;534:5:141;;;548:1;543;534:5;543:1;529:15;;;;;:20;519:30;511:63;;;;;-1:-1:-1;;;511:63:141;;;;;;;;;;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"addAdmin(address)":"70480275","addMigrator(address,address)":"4c389d26","bridgeMigrator(address)":"ffc50594","calculateChargeBack(address,address,uint256)":"99a0df82","isAdmin(address)":"24d7806c","migrateLiquidity(address,address,address,uint256,uint256)":"495952f5","migrateLiquidityWithPermit(address,address,address,uint256,uint256,uint8,bytes32,bytes32)":"b032fff7","migrateToken(address,address,uint256,uint256)":"f057d237","removeAdmin(address)":"1785f53c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"migratorAddress\",\"type\":\"address\"}],\"name\":\"addMigrator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bridgeMigrator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"liquidityPairFrom\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidityPairTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"calculateChargeBack\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"liquidityPairFrom\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidityPairTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"migrateLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"liquidityPairFrom\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidityPairTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"migrateLiquidityWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"migrateToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"removeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addAdmin(address)\":{\"details\":\"Any admin can add or remove other admins, careful.\",\"params\":{\"account\":\"The address of the account.\"}},\"addMigrator(address,address)\":{\"params\":{\"migratorAddress\":\"The WrappedERC20 token address that will be migrate the token\",\"tokenAddress\":\"The ERC20 token address that will be migrated using the migrator\"}},\"calculateChargeBack(address,address,uint256)\":{\"details\":\"No need to be extra careful as this is only a view function\",\"params\":{\"amount\":\"The amount of the liquidity token to be migrated(simulated)\",\"liquidityPairFrom\":\"The pair address that will be migrated from(simulated)\",\"liquidityPairTo\":\"The pair address that will be migrated to(simulated)\"},\"returns\":{\"amount0\":\"Amount of token0 will be charged back after the migration\",\"amount1\":\"Amount of token1 will be charged back after the migration\"}},\"isAdmin(address)\":{\"params\":{\"account\":\"The address of the account.\"},\"returns\":{\"_0\":\"Whether or not the account address is an admin.\"}},\"migrateLiquidity(address,address,address,uint256,uint256)\":{\"details\":\"This function assumes sender already gave approval to move the assets\",\"params\":{\"amount\":\"The amount of token liquidityPairFrom that will be migrated\",\"deadline\":\"The deadline limit that should be met, otherwise revert to prevent front-run\",\"liquidityPairFrom\":\"The pair address to be migrated from\",\"liquidityPairTo\":\"The pair address to be migrated to\",\"to\":\"The address that will receive the liquidity and the charge backs\"}},\"migrateLiquidityWithPermit(address,address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"amount\":\"The amount of token liquidityPairFrom that will be migrated\",\"deadline\":\"The deadline limit that should be met, otherwise revert to prevent front-run\",\"liquidityPairFrom\":\"The pair address to be migrated from\",\"liquidityPairTo\":\"The pair address to be migrated to\",\"r\":\"by passing param for the permit validation\",\"s\":\"by passing param for the permit validation\",\"to\":\"The address that will receive the liquidity and the charge backs\",\"v\":\"by passing param for the permit validation\"}},\"migrateToken(address,address,uint256,uint256)\":{\"details\":\"This function includes important checks\",\"params\":{\"amount\":\"The amount of the token to be migrated\",\"deadline\":\"The deadline limit that should be met, otherwise revert to prevent front-run\",\"to\":\"The address of who's receiving the token\",\"token\":\"The ERC20 token address that will be migrated\"}},\"removeAdmin(address)\":{\"details\":\"Any admin can add or remove other admins, careful.\",\"params\":{\"account\":\"The address of the account.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addAdmin(address)\":{\"notice\":\"Given an address, this address is added to the list of admin.\"},\"addMigrator(address,address)\":{\"notice\":\"Given an token, and it's migrator address, it configures the migrator for later usage\"},\"calculateChargeBack(address,address,uint256)\":{\"notice\":\"Front facing function that computes the possible charge back from the migration\"},\"isAdmin(address)\":{\"notice\":\"Given an address, returns whether or not he's already an admin\"},\"migrateLiquidity(address,address,address,uint256,uint256)\":{\"notice\":\"Front facing function that migrates the liquidity\"},\"migrateLiquidityWithPermit(address,address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Front facing function that migrates the liquidity, with permit\"},\"migrateToken(address,address,uint256,uint256)\":{\"notice\":\"Front facing function that migrates the token\"},\"removeAdmin(address)\":{\"notice\":\"Given an address, this address is added to the list of admin.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pangolin-periphery/PangolinBridgeMigrationRouter.sol\":\"PangolinBridgeMigrationRouter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-core/interfaces/IPangolinERC20.sol\":{\"keccak256\":\"0x3ce703d39e5ec3349e39e10d4e44dda6789e76494c2b0e568ffe822a1abd516b\",\"urls\":[\"bzz-raw://47a7fb280649f6f6ce4696b6024b135c534c8cc7f7e0456e55858a22b2ab8ad8\",\"dweb:/ipfs/QmcR2VmC2Kp6hcYmZvLNDFzQqvYgQydrihSADsYpqSinwt\"]},\"contracts/pangolin-core/interfaces/IPangolinFactory.sol\":{\"keccak256\":\"0xb3fe51fccd8da7b99d23634d45ab5fc978496bc2763ae8436867c14d144a0b02\",\"urls\":[\"bzz-raw://076378342d9b196439c99464a818629babdb273daf7919b3a71e3b0531b4fb65\",\"dweb:/ipfs/QmPdVowLwaPrTu4yTNJdy1eBkKaAfH3uhU3Eu85ecmdNuC\"]},\"contracts/pangolin-core/interfaces/IPangolinPair.sol\":{\"keccak256\":\"0x0511ddea9c27b93469fea324ad29206830b559f6bfd16e9d033ba05edc37f1ab\",\"urls\":[\"bzz-raw://721a8c3595a7a7cc8ddf44a41a6db15b186e6e275990dc0e1790b61679b736a3\",\"dweb:/ipfs/QmU2UX4i5ZYtzv333x4FVjLQymC8rFmJ6Hsmi3Ka1HjFMu\"]},\"contracts/pangolin-lib/libraries/TransferHelper.sol\":{\"keccak256\":\"0xfc5b469642639405484afdba1d1ad1bdc70bd5cd4f01fe53c3be27c12a149f1f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad4c82e4d301a6bb7b9aac332299cb982dc8188d52942cc04796546dfb5cbd7a\",\"dweb:/ipfs/QmeeiUQrF2asciybNWEQyzeMsSkdavRABfZreMpCmKUpcG\"]},\"contracts/pangolin-periphery/PangolinBridgeMigrationRouter.sol\":{\"keccak256\":\"0x8d50507fa05bf5a50c91dae7a514d2c20e608f54df29dfa63ea0ae4931f1777d\",\"urls\":[\"bzz-raw://3494cb705335bc73f3ad7ed07fb3af4abac412d5d8d86f12bda40d120785ea0b\",\"dweb:/ipfs/QmTtX8CvKiKzzfLabETCRqvo3Ebo4A2dVWk7zPE6zdoLcY\"]},\"contracts/pangolin-periphery/interfaces/IBridgeToken.sol\":{\"keccak256\":\"0x6c49c1d0ed94a14ab53c78a57cae3b6cccac434f52a2e98511cc892d0dcf5ff2\",\"urls\":[\"bzz-raw://134b9bb677784293c1e75e76d1b65ae94cd7e222ccffc8415135780489a0a04b\",\"dweb:/ipfs/QmTNq5gGC25yfH4w6grzMm44N89JhWjd9EuEHJ46B9dXMD\"]},\"contracts/pangolin-periphery/libraries/PangolinLibrary.sol\":{\"keccak256\":\"0x9b15b8a5b88c65084144245b3a6d2b4f7e38ddaf89686d4e2d4b949188d96da8\",\"urls\":[\"bzz-raw://f9a19db9fe3ba3d6f95e8464e29d7cb0577e565cd43ffc04fec7754f1c5c73c2\",\"dweb:/ipfs/Qme3b66F2ZKoSrTAv3CWxDZ3B93UnuuSHanBr7mi2mGvVf\"]},\"contracts/pangolin-periphery/libraries/Roles.sol\":{\"keccak256\":\"0x6f35f555e4510769206ad50577f45ef2c49a01aa62674689b84d158b35f1438d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a11829b56f41ee67edd7512e091119f6eca0088b591b11f1260ff023fcafd1f7\",\"dweb:/ipfs/QmVTrkroC6KgEKK4xd2phzhYPqUbkZraZneTK3E774eRxv\"]},\"contracts/pangolin-periphery/libraries/SafeMath.sol\":{\"keccak256\":\"0xea7fc6aee5695afdfd601d83439471699b505547d7624aa7d1f787652835abad\",\"urls\":[\"bzz-raw://bffb0afb4c0bf854465d6ece9de33b06d18b34640e9a8ee5c4b95e095f14c9d4\",\"dweb:/ipfs/QmPGqwYDnCRSKSk9GYizHYuHC2M1sdirUEq97CrEUzNLGS\"]}},\"version\":1}"}},"contracts/pangolin-periphery/interfaces/IBridgeToken.sol":{"IBridgeToken":{"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":[],"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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"swapSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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","PERMIT_TYPEHASH()":"30adf81f","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","swap(address,uint256)":"d004f0f7","swapSupply(address)":"ab32dbb7","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\":[],\"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\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"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\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"swapSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"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/pangolin-periphery/interfaces/IBridgeToken.sol\":\"IBridgeToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-core/interfaces/IPangolinERC20.sol\":{\"keccak256\":\"0x3ce703d39e5ec3349e39e10d4e44dda6789e76494c2b0e568ffe822a1abd516b\",\"urls\":[\"bzz-raw://47a7fb280649f6f6ce4696b6024b135c534c8cc7f7e0456e55858a22b2ab8ad8\",\"dweb:/ipfs/QmcR2VmC2Kp6hcYmZvLNDFzQqvYgQydrihSADsYpqSinwt\"]},\"contracts/pangolin-periphery/interfaces/IBridgeToken.sol\":{\"keccak256\":\"0x6c49c1d0ed94a14ab53c78a57cae3b6cccac434f52a2e98511cc892d0dcf5ff2\",\"urls\":[\"bzz-raw://134b9bb677784293c1e75e76d1b65ae94cd7e222ccffc8415135780489a0a04b\",\"dweb:/ipfs/QmTNq5gGC25yfH4w6grzMm44N89JhWjd9EuEHJ46B9dXMD\"]}},\"version\":1}"}},"contracts/pangolin-periphery/libraries/PangolinLibrary.sol":{"PangolinLibrary":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fdfeb89217b44df5eb9316ff66d2fbeb99db889dd0c91db849f364f408d9cd2464736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 REVERT INVALID 0xB8 SWAP3 OR 0xB4 0x4D CREATE2 0xEB SWAP4 AND SELFDESTRUCT PUSH7 0xD2FBEB99DB889D 0xD0 0xC9 SAR 0xB8 0x49 RETURN PUSH5 0xF408D9CD24 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"181:4396:139:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fdfeb89217b44df5eb9316ff66d2fbeb99db889dd0c91db849f364f408d9cd2464736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 REVERT INVALID 0xB8 SWAP3 OR 0xB4 0x4D CREATE2 0xEB SWAP4 AND SELFDESTRUCT PUSH7 0xD2FBEB99DB889D 0xD0 0xC9 SAR 0xB8 0x49 RETURN PUSH5 0xF408D9CD24 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"181:4396:139:-: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/pangolin-periphery/libraries/PangolinLibrary.sol\":\"PangolinLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-core/interfaces/IPangolinFactory.sol\":{\"keccak256\":\"0xb3fe51fccd8da7b99d23634d45ab5fc978496bc2763ae8436867c14d144a0b02\",\"urls\":[\"bzz-raw://076378342d9b196439c99464a818629babdb273daf7919b3a71e3b0531b4fb65\",\"dweb:/ipfs/QmPdVowLwaPrTu4yTNJdy1eBkKaAfH3uhU3Eu85ecmdNuC\"]},\"contracts/pangolin-core/interfaces/IPangolinPair.sol\":{\"keccak256\":\"0x0511ddea9c27b93469fea324ad29206830b559f6bfd16e9d033ba05edc37f1ab\",\"urls\":[\"bzz-raw://721a8c3595a7a7cc8ddf44a41a6db15b186e6e275990dc0e1790b61679b736a3\",\"dweb:/ipfs/QmU2UX4i5ZYtzv333x4FVjLQymC8rFmJ6Hsmi3Ka1HjFMu\"]},\"contracts/pangolin-periphery/libraries/PangolinLibrary.sol\":{\"keccak256\":\"0x9b15b8a5b88c65084144245b3a6d2b4f7e38ddaf89686d4e2d4b949188d96da8\",\"urls\":[\"bzz-raw://f9a19db9fe3ba3d6f95e8464e29d7cb0577e565cd43ffc04fec7754f1c5c73c2\",\"dweb:/ipfs/Qme3b66F2ZKoSrTAv3CWxDZ3B93UnuuSHanBr7mi2mGvVf\"]},\"contracts/pangolin-periphery/libraries/SafeMath.sol\":{\"keccak256\":\"0xea7fc6aee5695afdfd601d83439471699b505547d7624aa7d1f787652835abad\",\"urls\":[\"bzz-raw://bffb0afb4c0bf854465d6ece9de33b06d18b34640e9a8ee5c4b95e095f14c9d4\",\"dweb:/ipfs/QmPGqwYDnCRSKSk9GYizHYuHC2M1sdirUEq97CrEUzNLGS\"]}},\"version\":1}"}},"contracts/pangolin-periphery/libraries/Roles.sol":{"Roles":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209c285e7982ba8982e27c0234e475e6ca0a18143f95a29810868e87ff4c04f27a64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP13 0x28 0x5E PUSH26 0x82BA8982E27C0234E475E6CA0A18143F95A29810868E87FF4C04 CALLCODE PUSH27 0x64736F6C6343000706003300000000000000000000000000000000 ","sourceMap":"60:933:140:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209c285e7982ba8982e27c0234e475e6ca0a18143f95a29810868e87ff4c04f27a64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP13 0x28 0x5E PUSH26 0x82BA8982E27C0234E475E6CA0A18143F95A29810868E87FF4C04 CALLCODE PUSH27 0x64736F6C6343000706003300000000000000000000000000000000 ","sourceMap":"60:933:140:-: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/pangolin-periphery/libraries/Roles.sol\":\"Roles\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-periphery/libraries/Roles.sol\":{\"keccak256\":\"0x6f35f555e4510769206ad50577f45ef2c49a01aa62674689b84d158b35f1438d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a11829b56f41ee67edd7512e091119f6eca0088b591b11f1260ff023fcafd1f7\",\"dweb:/ipfs/QmVTrkroC6KgEKK4xd2phzhYPqUbkZraZneTK3E774eRxv\"]}},\"version\":1}"}},"contracts/pangolin-periphery/libraries/SafeMath.sol":{"SafeMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a5751359d08c13fcee9c883964ca30eee6e42c619247a59e8f33d9344b43b68f64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 PUSH22 0x1359D08C13FCEE9C883964CA30EEE6E42C619247A59E DUP16 CALLER 0xD9 CALLVALUE 0x4B NUMBER 0xB6 DUP16 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"143:442:141:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a5751359d08c13fcee9c883964ca30eee6e42c619247a59e8f33d9344b43b68f64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 PUSH22 0x1359D08C13FCEE9C883964CA30EEE6E42C619247A59E DUP16 CALLER 0xD9 CALLVALUE 0x4B NUMBER 0xB6 DUP16 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"143:442:141:-: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/pangolin-periphery/libraries/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-periphery/libraries/SafeMath.sol\":{\"keccak256\":\"0xea7fc6aee5695afdfd601d83439471699b505547d7624aa7d1f787652835abad\",\"urls\":[\"bzz-raw://bffb0afb4c0bf854465d6ece9de33b06d18b34640e9a8ee5c4b95e095f14c9d4\",\"dweb:/ipfs/QmPGqwYDnCRSKSk9GYizHYuHC2M1sdirUEq97CrEUzNLGS\"]}},\"version\":1}"}},"contracts/pangolin-periphery/libraries/UniswapV2OracleLibrary.sol":{"PangolinOracleLibrary":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122070fd3eac62e794e4278598cf448fbc7dbb14dad5bbe4776810bde630bf0fea3d64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH17 0xFD3EAC62E794E4278598CF448FBC7DBB14 0xDA 0xD5 0xBB 0xE4 PUSH24 0x6810BDE630BF0FEA3D64736F6C6343000706003300000000 ","sourceMap":"238:1468:142:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122070fd3eac62e794e4278598cf448fbc7dbb14dad5bbe4776810bde630bf0fea3d64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH17 0xFD3EAC62E794E4278598CF448FBC7DBB14 0xDA 0xD5 0xBB 0xE4 PUSH24 0x6810BDE630BF0FEA3D64736F6C6343000706003300000000 ","sourceMap":"238:1468:142:-: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/pangolin-periphery/libraries/UniswapV2OracleLibrary.sol\":\"PangolinOracleLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-core/interfaces/IPangolinPair.sol\":{\"keccak256\":\"0x0511ddea9c27b93469fea324ad29206830b559f6bfd16e9d033ba05edc37f1ab\",\"urls\":[\"bzz-raw://721a8c3595a7a7cc8ddf44a41a6db15b186e6e275990dc0e1790b61679b736a3\",\"dweb:/ipfs/QmU2UX4i5ZYtzv333x4FVjLQymC8rFmJ6Hsmi3Ka1HjFMu\"]},\"contracts/pangolin-lib/libraries/Babylonian.sol\":{\"keccak256\":\"0xb6d624c352f6609d59d4f9e88ef2e27cb449973642326ed50ea459b9496a8af1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://917eec6312b57cb09fbf6a0d24c4adf05469adca9383fd41e616734de26ab87d\",\"dweb:/ipfs/QmWx3ddm7mP9Q5TMy2YES8TV932PsESZengN8sdP5HNFbn\"]},\"contracts/pangolin-lib/libraries/FixedPoint.sol\":{\"keccak256\":\"0xbe26ba3ca4362c0ec8a378c05270fb8e6dca60e5f039e8b8a188fdc7e56ca925\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b9b0b0bab61223410ee8ee0e18560a29426e354f324701a6b626def3c12e5f17\",\"dweb:/ipfs/QmYciZrLspAAQ64RTmrPmSTLMP4jsDNRBLD6iBvQ3v6ynJ\"]},\"contracts/pangolin-lib/libraries/FullMath.sol\":{\"keccak256\":\"0xcfc0c2167e2acb556aa5311665e2ac7d1afdcd22d319a0ce933cd398834d174b\",\"license\":\"CC-BY-4.0\",\"urls\":[\"bzz-raw://db0a7bfe02270ea4de528a2468713ff838e4da53554388659eab3a8571dbc0d5\",\"dweb:/ipfs/QmQKBD4Xj4ZgcnczkVjK6sAvM31nkgXpxiVRTbi8XS4y3G\"]},\"contracts/pangolin-periphery/libraries/UniswapV2OracleLibrary.sol\":{\"keccak256\":\"0xf21cf94e018763338e33527d2ea0e75575bb4d71c62e0738afd997cb25192406\",\"urls\":[\"bzz-raw://ad55781f84a3262820fa6fda6b60910e8c641d42ffde5129ce1d40fbbd25bf28\",\"dweb:/ipfs/QmVvdxnWnc7AxUeuyMcZZX5nBc9ixxvS7kgi9ucwb7DW4X\"]}},\"version\":1}"}},"contracts/pangolin-periphery/test/BridgeToken.sol":{"BridgeToken":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"chainId","type":"uint256"}],"name":"AddSupportedChainId","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"supplyIncrement","type":"uint256"}],"name":"AddSwapToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newBridgeRoleAddress","type":"address"}],"name":"MigrateBridgeRole","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"feeAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"feeAmount","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"originTxId","type":"bytes32"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"supplyDecrement","type":"uint256"}],"name":"RemoveSwapToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"chainId","type":"uint256"}],"name":"Unwrap","type":"event"},{"inputs":[{"internalType":"uint256","name":"chainId","type":"uint256"}],"name":"addSupportedChainId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"supplyIncrement","type":"uint256"}],"name":"addSwapToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"chainIds","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"newBridgeRoleAddress","type":"address"}],"name":"migrateBridgeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"feeAddress","type":"address"},{"internalType":"uint256","name":"feeAmount","type":"uint256"},{"internalType":"bytes32","name":"originTxId","type":"bytes32"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"supplyDecrement","type":"uint256"}],"name":"removeSwapToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"swapSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"chainId","type":"uint256"}],"name":"unwrap","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604080518082018252600d81526c22bc30b6b83632902a37b5b2b760991b60208083019182528351808501909452600684526545584d502e6560d01b9084015281519192916200006591600391620001ce565b5080516200007b906004906020840190620001ce565b505060058054601260ff1990911617905550620000a6600633620000e1602090811b6200119f17901c565b6000805260086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7805460ff191660011790556200027a565b620000ed828262000165565b1562000140576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216620001ae5760405162461bcd60e51b815260040180806020018281038252602281526020018062001ceb6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000206576000855562000251565b82601f106200022157805160ff191683800117855562000251565b8280016001018555821562000251579182015b828111156200025157825182559160200191906001019062000234565b506200025f92915062000263565b5090565b5b808211156200025f576000815560010162000264565b611a61806200028a6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c80636e286671116100d8578063a457c2d71161008c578063d004f0f711610066578063d004f0f7146104c4578063dd62ed3e146104f0578063eff038301461051e57610182565b8063a457c2d714610446578063a9059cbb14610472578063ab32dbb71461049e57610182565b806379cc6790116100bd57806379cc6790146103e65780637c38b4571461041257806395d89b411461043e57610182565b80636e2866711461039d57806370a08231146103c057610182565b8063313ce5671161013a5780635d9898d3116101145780635d9898d31461031a57806366de3b361461034057806367fc19bb1461035d57610182565b8063313ce567146102b157806339509351146102cf57806342966c68146102fb57610182565b806318160ddd1161016b57806318160ddd1461024457806321d930901461025e57806323b872dd1461027b57610182565b806306fdde0314610187578063095ea7b314610204575b600080fd5b61018f61054a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101c95781810151838201526020016101b1565b50505050905090810190601f1680156101f65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102306004803603604081101561021a57600080fd5b506001600160a01b0381351690602001356105e0565b604080519115158252519081900360200190f35b61024c6105fd565b60408051918252519081900360200190f35b6102306004803603602081101561027457600080fd5b5035610603565b6102306004803603606081101561029157600080fd5b506001600160a01b03813581169160208101359091169060400135610618565b6102b961069f565b6040805160ff9092168252519081900360200190f35b610230600480360360408110156102e557600080fd5b506001600160a01b0381351690602001356106a4565b6103186004803603602081101561031157600080fd5b50356106f2565b005b6103186004803603602081101561033057600080fd5b50356001600160a01b0316610706565b6103186004803603602081101561035657600080fd5b50356107a7565b610318600480360360a081101561037357600080fd5b506001600160a01b03813581169160208101359160408201351690606081013590608001356108bd565b610318600480360360408110156103b357600080fd5b5080359060200135610982565b61024c600480360360208110156103d657600080fd5b50356001600160a01b0316610a87565b610318600480360360408110156103fc57600080fd5b506001600160a01b038135169060200135610aa2565b6103186004803603604081101561042857600080fd5b506001600160a01b038135169060200135610afc565b61018f610ce8565b6102306004803603604081101561045c57600080fd5b506001600160a01b038135169060200135610d49565b6102306004803603604081101561048857600080fd5b506001600160a01b038135169060200135610db1565b61024c600480360360208110156104b457600080fd5b50356001600160a01b0316610dc5565b610318600480360360408110156104da57600080fd5b506001600160a01b038135169060200135610de3565b61024c6004803603604081101561050657600080fd5b506001600160a01b0381358116916020013516610fec565b6103186004803603604081101561053457600080fd5b506001600160a01b038135169060200135611017565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105d65780601f106105ab576101008083540402835291602001916105d6565b820191906000526020600020905b8154815290600101906020018083116105b957829003601f168201915b5050505050905090565b60006105f46105ed611220565b8484611224565b50600192915050565b60025490565b60086020526000908152604090205460ff1681565b6000610625848484611310565b61069584610631611220565b6106908560405180606001604052806028815260200161192f602891396001600160a01b038a1660009081526001602052604081209061066f611220565b6001600160a01b03168152602081019190915260400160002054919061146b565b611224565b5060019392505050565b601290565b60006105f46106b1611220565b8461069085600160006106c2611220565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611502565b6107036106fd611220565b82611563565b50565b61071160063361165f565b610752576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b61075d6006336116c6565b61076860068261119f565b604080516001600160a01b038316815290517f871b00a4e20f8436702d0174eb87d84d7cd1dd5c34d4bb1b4e75438b3398d5129181900360200190a150565b6107b260063361165f565b6107f3576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b4681811415610849576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74206164642063757272656e7420636861696e2049442e00000000604482015290519081900360640190fd5b60008281526008602052604090205460ff1615156001141561086b5750610703565b600082815260086020908152604091829020805460ff19166001179055815184815291517f677e2d9a4ed9201aa86725fef875137fc53876e6b68036b974404762682bd1229281900390910190a15050565b6108c860063361165f565b610909576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b610913858561172d565b811561092357610923838361172d565b604080516001600160a01b03808816825260208201879052851681830152606081018490526080810183905290517f918d77674bb88eaf75afb307c9723ea6037706de68d6fc07dd0c6cba423a52509181900360a00190a15050505050565b3233146109d6576040805162461bcd60e51b815260206004820152601d60248201527f436f6e74726163742063616c6c73206e6f7420737570706f727465642e000000604482015290519081900360640190fd5b60008181526008602052604090205460ff161515600114610a3e576040805162461bcd60e51b815260206004820152601760248201527f436861696e204944206e6f7420737570706f727465642e000000000000000000604482015290519081900360640190fd5b610a483383611563565b604080518381526020810183905281517f37a06799a3500428a773d00284aa706101f5ad94dae9ec37e1c3773aa54c3304929181900390910190a15050565b6001600160a01b031660009081526020819052604090205490565b6000610ad98260405180606001604052806024815260200161197960249139610ad286610acd611220565b610fec565b919061146b565b9050610aed83610ae7611220565b83611224565b610af78383611563565b505050565b610b0760063361165f565b610b58576040805162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015290519081900360640190fd5b610b618261181d565b610bb2576040805162461bcd60e51b815260206004820152601860248201527f41646472657373206973206e6f7420636f6e74726163742e0000000000000000604482015290519081900360640190fd5b6001600160a01b0382811660009081526007602052604090205416610c1e576040805162461bcd60e51b815260206004820152601860248201527f5377617020746f6b656e206e6f7420737570706f727465640000000000000000604482015290519081900360640190fd5b6001600160a01b038216600090815260076020526040902060010154811015610c68576001600160a01b038216600090815260076020526040902060010180548290039055610ca0565b6001600160a01b0382166000908152600760205260408120805473ffffffffffffffffffffffffffffffffffffffff19168155600101555b604080516001600160a01b03841681526020810183905281517fd3b4025ff115b79bf2ec5a73c9c784ba8aa9f8f6ba9186b255895c1a9f9042a3929181900390910190a15050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105d65780601f106105ab576101008083540402835291602001916105d6565b60006105f4610d56611220565b8461069085604051806060016040528060258152602001611a076025913960016000610d80611220565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061146b565b60006105f4610dbe611220565b8484611310565b6001600160a01b031660009081526007602052604090206001015490565b610dec8261181d565b610e3d576040805162461bcd60e51b815260206004820152601860248201527f546f6b656e206973206e6f74206120636f6e74726163742e0000000000000000604482015290519081900360640190fd5b6001600160a01b0382811660009081526007602052604090205416610ea9576040805162461bcd60e51b815260206004820152601d60248201527f5377617020746f6b656e206973206e6f74206120636f6e74726163742e000000604482015290519081900360640190fd5b6001600160a01b038216600090815260076020526040902060010154811115610f19576040805162461bcd60e51b815260206004820181905260248201527f5377617020616d6f756e74206973206d6f7265207468616e20737570706c792e604482015290519081900360640190fd5b6001600160a01b03808316600090815260076020526040808220600181018054869003905554815163079cc67960e41b815233600482015260248101869052915193169283926379cc6790926044808201939182900301818387803b158015610f8157600080fd5b505af1158015610f95573d6000803e3d6000fd5b50505050610fa3338361172d565b604080516001600160a01b03851681526020810184905281517f562c219552544ec4c9d7a8eb850f80ea152973e315372bf4999fe7c953ea004f929181900390910190a1505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61102260063361165f565b611063576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b61106c8261181d565b6110bd576040805162461bcd60e51b815260206004820152601860248201527f41646472657373206973206e6f7420636f6e74726163742e0000000000000000604482015290519081900360640190fd5b6001600160a01b0382811660009081526007602052604090205416611135576040805180820182526001600160a01b038481168083526020808401868152600092835260079091529390209151825473ffffffffffffffffffffffffffffffffffffffff191691161781559051600190910155611157565b6001600160a01b03821660009081526007602052604090206001018054820190555b604080516001600160a01b03841681526020810183905281517f3e4fdfb0f47da284fe8b5b3a7e5d10b211e323c9a0c144c421ae1d211873f853929181900390910190a15050565b6111a9828261165f565b156111fb576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b3390565b6001600160a01b0383166112695760405162461bcd60e51b81526004018080602001828103825260248152602001806119e36024913960400191505060405180910390fd5b6001600160a01b0382166112ae5760405162461bcd60e51b81526004018080602001828103825260228152602001806118c66022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166113555760405162461bcd60e51b81526004018080602001828103825260258152602001806119be6025913960400191505060405180910390fd5b6001600160a01b03821661139a5760405162461bcd60e51b81526004018080602001828103825260238152602001806118816023913960400191505060405180910390fd5b6113a5838383610af7565b6113e2816040518060600160405280602681526020016118e8602691396001600160a01b038616600090815260208190526040902054919061146b565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546114119082611502565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156114fa5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114bf5781810151838201526020016114a7565b50505050905090810190601f1680156114ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561155c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166115a85760405162461bcd60e51b815260040180806020018281038252602181526020018061199d6021913960400191505060405180910390fd5b6115b482600083610af7565b6115f1816040518060600160405280602281526020016118a4602291396001600160a01b038516600090815260208190526040902054919061146b565b6001600160a01b0383166000908152602081905260409020556002546116179082611823565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60006001600160a01b0382166116a65760405162461bcd60e51b81526004018080602001828103825260228152602001806119576022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6116d0828261165f565b61170b5760405162461bcd60e51b815260040180806020018281038252602181526020018061190e6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b038216611788576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61179460008383610af7565b6002546117a19082611502565b6002556001600160a01b0382166000908152602081905260409020546117c79082611502565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b3b151590565b60008282111561187a576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122084ad88b882f8b752f719242bd312a8fafc4162cf305c7a6a9d6551e3b65727c964736f6c63430007060033526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xD DUP2 MSTORE PUSH13 0x22BC30B6B83632902A37B5B2B7 PUSH1 0x99 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE PUSH1 0x6 DUP5 MSTORE PUSH6 0x45584D502E65 PUSH1 0xD0 SHL SWAP1 DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH3 0x65 SWAP2 PUSH1 0x3 SWAP2 PUSH3 0x1CE JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x7B SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x1CE JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0x12 PUSH1 0xFF NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE POP PUSH3 0xA6 PUSH1 0x6 CALLER PUSH3 0xE1 PUSH1 0x20 SWAP1 DUP2 SHL PUSH3 0x119F OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x0 DUP1 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH32 0x5EFF886EA0CE6CA488A3D6E336D6C0F75F46D19B42C06CE5EE98E42C96D256C7 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH3 0x27A JUMP JUMPDEST PUSH3 0xED DUP3 DUP3 PUSH3 0x165 JUMP JUMPDEST ISZERO PUSH3 0x140 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 0x526F6C65733A206163636F756E7420616C72656164792068617320726F6C6500 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x1AE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x1CEB PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 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 0x206 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x251 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x221 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x251 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x251 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x251 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x234 JUMP JUMPDEST POP PUSH3 0x25F SWAP3 SWAP2 POP PUSH3 0x263 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x25F JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x264 JUMP JUMPDEST PUSH2 0x1A61 DUP1 PUSH3 0x28A 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 0x182 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6E286671 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD004F0F7 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD004F0F7 EQ PUSH2 0x4C4 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4F0 JUMPI DUP1 PUSH4 0xEFF03830 EQ PUSH2 0x51E JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x446 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x472 JUMPI DUP1 PUSH4 0xAB32DBB7 EQ PUSH2 0x49E JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x79CC6790 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x3E6 JUMPI DUP1 PUSH4 0x7C38B457 EQ PUSH2 0x412 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x43E JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x6E286671 EQ PUSH2 0x39D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x3C0 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x13A JUMPI DUP1 PUSH4 0x5D9898D3 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x5D9898D3 EQ PUSH2 0x31A JUMPI DUP1 PUSH4 0x66DE3B36 EQ PUSH2 0x340 JUMPI DUP1 PUSH4 0x67FC19BB EQ PUSH2 0x35D JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2CF JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x2FB JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x16B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x244 JUMPI DUP1 PUSH4 0x21D93090 EQ PUSH2 0x25E JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x27B JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x204 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18F PUSH2 0x54A 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 0x1C9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1B1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1F6 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 0x230 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x21A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5E0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x24C PUSH2 0x5FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x230 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x603 JUMP JUMPDEST PUSH2 0x230 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x618 JUMP JUMPDEST PUSH2 0x2B9 PUSH2 0x69F 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 0x230 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6A4 JUMP JUMPDEST PUSH2 0x318 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6F2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x318 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x706 JUMP JUMPDEST PUSH2 0x318 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7A7 JUMP JUMPDEST PUSH2 0x318 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x8BD JUMP JUMPDEST PUSH2 0x318 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x982 JUMP JUMPDEST PUSH2 0x24C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA87 JUMP JUMPDEST PUSH2 0x318 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x318 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAFC JUMP JUMPDEST PUSH2 0x18F PUSH2 0xCE8 JUMP JUMPDEST PUSH2 0x230 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x45C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xD49 JUMP JUMPDEST PUSH2 0x230 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x488 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDB1 JUMP JUMPDEST PUSH2 0x24C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDC5 JUMP JUMPDEST PUSH2 0x318 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDE3 JUMP JUMPDEST PUSH2 0x24C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xFEC JUMP JUMPDEST PUSH2 0x318 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x534 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1017 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT 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 0x5D6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5AB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5D6 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 0x5B9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F4 PUSH2 0x5ED PUSH2 0x1220 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1224 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x625 DUP5 DUP5 DUP5 PUSH2 0x1310 JUMP JUMPDEST PUSH2 0x695 DUP5 PUSH2 0x631 PUSH2 0x1220 JUMP JUMPDEST PUSH2 0x690 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x192F PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x66F PUSH2 0x1220 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x146B JUMP JUMPDEST PUSH2 0x1224 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x12 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F4 PUSH2 0x6B1 PUSH2 0x1220 JUMP JUMPDEST DUP5 PUSH2 0x690 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x6C2 PUSH2 0x1220 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1502 JUMP JUMPDEST PUSH2 0x703 PUSH2 0x6FD PUSH2 0x1220 JUMP JUMPDEST DUP3 PUSH2 0x1563 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x711 PUSH1 0x6 CALLER PUSH2 0x165F JUMP JUMPDEST PUSH2 0x752 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x2AB730BABA3437B934BD32B217 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x75D PUSH1 0x6 CALLER PUSH2 0x16C6 JUMP JUMPDEST PUSH2 0x768 PUSH1 0x6 DUP3 PUSH2 0x119F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x871B00A4E20F8436702D0174EB87D84D7CD1DD5C34D4BB1B4E75438B3398D512 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x7B2 PUSH1 0x6 CALLER PUSH2 0x165F JUMP JUMPDEST PUSH2 0x7F3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x2AB730BABA3437B934BD32B217 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CHAINID DUP2 DUP2 EQ ISZERO PUSH2 0x849 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 0x43616E6E6F74206164642063757272656E7420636861696E2049442E00000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x1 EQ ISZERO PUSH2 0x86B JUMPI POP PUSH2 0x703 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD DUP5 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x677E2D9A4ED9201AA86725FEF875137FC53876E6B68036B974404762682BD122 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x8C8 PUSH1 0x6 CALLER PUSH2 0x165F JUMP JUMPDEST PUSH2 0x909 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x2AB730BABA3437B934BD32B217 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x913 DUP6 DUP6 PUSH2 0x172D JUMP JUMPDEST DUP2 ISZERO PUSH2 0x923 JUMPI PUSH2 0x923 DUP4 DUP4 PUSH2 0x172D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP8 SWAP1 MSTORE DUP6 AND DUP2 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x918D77674BB88EAF75AFB307C9723EA6037706DE68D6FC07DD0C6CBA423A5250 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST ORIGIN CALLER EQ PUSH2 0x9D6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6E74726163742063616C6C73206E6F7420737570706F727465642E000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0xA3E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436861696E204944206E6F7420737570706F727465642E000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xA48 CALLER DUP4 PUSH2 0x1563 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x37A06799A3500428A773D00284AA706101F5AD94DAE9EC37E1C3773AA54C3304 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAD9 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1979 PUSH1 0x24 SWAP2 CODECOPY PUSH2 0xAD2 DUP7 PUSH2 0xACD PUSH2 0x1220 JUMP JUMPDEST PUSH2 0xFEC JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x146B JUMP JUMPDEST SWAP1 POP PUSH2 0xAED DUP4 PUSH2 0xAE7 PUSH2 0x1220 JUMP JUMPDEST DUP4 PUSH2 0x1224 JUMP JUMPDEST PUSH2 0xAF7 DUP4 DUP4 PUSH2 0x1563 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xB07 PUSH1 0x6 CALLER PUSH2 0x165F JUMP JUMPDEST PUSH2 0xB58 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E617574686F72697A65640000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xB61 DUP3 PUSH2 0x181D JUMP JUMPDEST PUSH2 0xBB2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373206973206E6F7420636F6E74726163742E0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND PUSH2 0xC1E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5377617020746F6B656E206E6F7420737570706F727465640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD DUP2 LT ISZERO PUSH2 0xC68 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0xCA0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 SSTORE PUSH1 0x1 ADD SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xD3B4025FF115B79BF2EC5A73C9C784BA8AA9F8F6BA9186B255895C1A9F9042A3 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT 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 0x5D6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5AB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5D6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F4 PUSH2 0xD56 PUSH2 0x1220 JUMP JUMPDEST DUP5 PUSH2 0x690 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A07 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0xD80 PUSH2 0x1220 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x146B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F4 PUSH2 0xDBE PUSH2 0x1220 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1310 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xDEC DUP3 PUSH2 0x181D JUMP JUMPDEST PUSH2 0xE3D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546F6B656E206973206E6F74206120636F6E74726163742E0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND PUSH2 0xEA9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5377617020746F6B656E206973206E6F74206120636F6E74726163742E000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD DUP2 GT ISZERO PUSH2 0xF19 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5377617020616D6F756E74206973206D6F7265207468616E20737570706C792E PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD DUP7 SWAP1 SUB SWAP1 SSTORE SLOAD DUP2 MLOAD PUSH4 0x79CC679 PUSH1 0xE4 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE SWAP2 MLOAD SWAP4 AND SWAP3 DUP4 SWAP3 PUSH4 0x79CC6790 SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF95 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xFA3 CALLER DUP4 PUSH2 0x172D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x562C219552544EC4C9D7A8EB850F80EA152973E315372BF4999FE7C953EA004F SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH2 0x1022 PUSH1 0x6 CALLER PUSH2 0x165F JUMP JUMPDEST PUSH2 0x1063 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x2AB730BABA3437B934BD32B217 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x106C DUP3 PUSH2 0x181D JUMP JUMPDEST PUSH2 0x10BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373206973206E6F7420636F6E74726163742E0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND PUSH2 0x1135 JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND DUP1 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 ADD DUP7 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x7 SWAP1 SWAP2 MSTORE SWAP4 SWAP1 KECCAK256 SWAP2 MLOAD DUP3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP2 AND OR DUP2 SSTORE SWAP1 MLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE PUSH2 0x1157 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x3E4FDFB0F47DA284FE8B5B3A7E5D10B211E323C9A0C144C421AE1D211873F853 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x11A9 DUP3 DUP3 PUSH2 0x165F JUMP JUMPDEST ISZERO PUSH2 0x11FB 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 0x526F6C65733A206163636F756E7420616C72656164792068617320726F6C6500 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1269 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19E3 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x12AE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18C6 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1355 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19BE PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x139A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1881 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x13A5 DUP4 DUP4 DUP4 PUSH2 0xAF7 JUMP JUMPDEST PUSH2 0x13E2 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x18E8 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x146B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1411 SWAP1 DUP3 PUSH2 0x1502 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x14FA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x14BF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14A7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x14EC 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 0x155C 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x15A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x199D PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x15B4 DUP3 PUSH1 0x0 DUP4 PUSH2 0xAF7 JUMP JUMPDEST PUSH2 0x15F1 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x18A4 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x146B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x2 SLOAD PUSH2 0x1617 SWAP1 DUP3 PUSH2 0x1823 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x16A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1957 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x16D0 DUP3 DUP3 PUSH2 0x165F JUMP JUMPDEST PUSH2 0x170B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x190E PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1788 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 PUSH2 0x1794 PUSH1 0x0 DUP4 DUP4 PUSH2 0xAF7 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x17A1 SWAP1 DUP3 PUSH2 0x1502 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x17C7 SWAP1 DUP3 PUSH2 0x1502 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 EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x187A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E6365526F6C65 PUSH20 0x3A206163636F756E7420646F6573206E6F742068 PUSH2 0x7665 KECCAK256 PUSH19 0x6F6C6545524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E74206578636565647320616C6C6F77616E6365526F PUSH13 0x65733A206163636F756E742069 PUSH20 0x20746865207A65726F2061646472657373455243 ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E74206578636565647320616C6C6F77616E63654552 NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A207472616E7366657220 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x735822122084AD DUP9 0xB8 DUP3 0xF8 0xB7 MSTORE 0xF7 NOT 0x24 0x2B 0xD3 SLT 0xA8 STATICCALL 0xFC COINBASE PUSH3 0xCF305C PUSH27 0x6A9D6551E3B65727C964736F6C63430007060033526F6C65733A20 PUSH2 0x6363 PUSH16 0x756E7420697320746865207A65726F20 PUSH2 0x6464 PUSH19 0x65737300000000000000000000000000000000 ","sourceMap":"148:7897:143:-:0;;;1137:121;;;;;;;;;-1:-1:-1;1157:10:143;;;;;;;;;;;-1:-1:-1;;;1157:10:143;;;;;;;1169:12;;;;;;;;;;;-1:-1:-1;;;1169:12:143;;;;2092:13:145;;1157:10:143;;1169:12;2092:13:145;;:5;;:13;:::i;:::-;-1:-1:-1;2116:17:145;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2144:9:145;:14;;2156:2;-1:-1:-1;;2144:14:145;;;;;;-1:-1:-1;1194:27:143::1;:11;1210:10;1194:15;;::::0;;::::1;;;:27:::0;::::1;:::i;:::-;1232:11;::::0;;:8:::1;:11;::::0;;:18;;-1:-1:-1;;1232:18:143::1;1246:4;1232:18;::::0;;148:7897;;219:178:140;297:18;301:4;307:7;297:3;:18::i;:::-;296:19;288:63;;;;;-1:-1:-1;;;288:63:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;362:20:140;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;362:27:140;385:4;362:27;;;219:178::o;755:235::-;854:4;-1:-1:-1;;;;;884:21:140;;876:68;;;;-1:-1:-1;;;876:68:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;962:20:140;:11;:20;;;;;;;;;;;;;;;755:235::o;148:7897:143:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;148:7897:143;;;-1:-1:-1;148:7897:143;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101825760003560e01c80636e286671116100d8578063a457c2d71161008c578063d004f0f711610066578063d004f0f7146104c4578063dd62ed3e146104f0578063eff038301461051e57610182565b8063a457c2d714610446578063a9059cbb14610472578063ab32dbb71461049e57610182565b806379cc6790116100bd57806379cc6790146103e65780637c38b4571461041257806395d89b411461043e57610182565b80636e2866711461039d57806370a08231146103c057610182565b8063313ce5671161013a5780635d9898d3116101145780635d9898d31461031a57806366de3b361461034057806367fc19bb1461035d57610182565b8063313ce567146102b157806339509351146102cf57806342966c68146102fb57610182565b806318160ddd1161016b57806318160ddd1461024457806321d930901461025e57806323b872dd1461027b57610182565b806306fdde0314610187578063095ea7b314610204575b600080fd5b61018f61054a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101c95781810151838201526020016101b1565b50505050905090810190601f1680156101f65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102306004803603604081101561021a57600080fd5b506001600160a01b0381351690602001356105e0565b604080519115158252519081900360200190f35b61024c6105fd565b60408051918252519081900360200190f35b6102306004803603602081101561027457600080fd5b5035610603565b6102306004803603606081101561029157600080fd5b506001600160a01b03813581169160208101359091169060400135610618565b6102b961069f565b6040805160ff9092168252519081900360200190f35b610230600480360360408110156102e557600080fd5b506001600160a01b0381351690602001356106a4565b6103186004803603602081101561031157600080fd5b50356106f2565b005b6103186004803603602081101561033057600080fd5b50356001600160a01b0316610706565b6103186004803603602081101561035657600080fd5b50356107a7565b610318600480360360a081101561037357600080fd5b506001600160a01b03813581169160208101359160408201351690606081013590608001356108bd565b610318600480360360408110156103b357600080fd5b5080359060200135610982565b61024c600480360360208110156103d657600080fd5b50356001600160a01b0316610a87565b610318600480360360408110156103fc57600080fd5b506001600160a01b038135169060200135610aa2565b6103186004803603604081101561042857600080fd5b506001600160a01b038135169060200135610afc565b61018f610ce8565b6102306004803603604081101561045c57600080fd5b506001600160a01b038135169060200135610d49565b6102306004803603604081101561048857600080fd5b506001600160a01b038135169060200135610db1565b61024c600480360360208110156104b457600080fd5b50356001600160a01b0316610dc5565b610318600480360360408110156104da57600080fd5b506001600160a01b038135169060200135610de3565b61024c6004803603604081101561050657600080fd5b506001600160a01b0381358116916020013516610fec565b6103186004803603604081101561053457600080fd5b506001600160a01b038135169060200135611017565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105d65780601f106105ab576101008083540402835291602001916105d6565b820191906000526020600020905b8154815290600101906020018083116105b957829003601f168201915b5050505050905090565b60006105f46105ed611220565b8484611224565b50600192915050565b60025490565b60086020526000908152604090205460ff1681565b6000610625848484611310565b61069584610631611220565b6106908560405180606001604052806028815260200161192f602891396001600160a01b038a1660009081526001602052604081209061066f611220565b6001600160a01b03168152602081019190915260400160002054919061146b565b611224565b5060019392505050565b601290565b60006105f46106b1611220565b8461069085600160006106c2611220565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611502565b6107036106fd611220565b82611563565b50565b61071160063361165f565b610752576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b61075d6006336116c6565b61076860068261119f565b604080516001600160a01b038316815290517f871b00a4e20f8436702d0174eb87d84d7cd1dd5c34d4bb1b4e75438b3398d5129181900360200190a150565b6107b260063361165f565b6107f3576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b4681811415610849576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74206164642063757272656e7420636861696e2049442e00000000604482015290519081900360640190fd5b60008281526008602052604090205460ff1615156001141561086b5750610703565b600082815260086020908152604091829020805460ff19166001179055815184815291517f677e2d9a4ed9201aa86725fef875137fc53876e6b68036b974404762682bd1229281900390910190a15050565b6108c860063361165f565b610909576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b610913858561172d565b811561092357610923838361172d565b604080516001600160a01b03808816825260208201879052851681830152606081018490526080810183905290517f918d77674bb88eaf75afb307c9723ea6037706de68d6fc07dd0c6cba423a52509181900360a00190a15050505050565b3233146109d6576040805162461bcd60e51b815260206004820152601d60248201527f436f6e74726163742063616c6c73206e6f7420737570706f727465642e000000604482015290519081900360640190fd5b60008181526008602052604090205460ff161515600114610a3e576040805162461bcd60e51b815260206004820152601760248201527f436861696e204944206e6f7420737570706f727465642e000000000000000000604482015290519081900360640190fd5b610a483383611563565b604080518381526020810183905281517f37a06799a3500428a773d00284aa706101f5ad94dae9ec37e1c3773aa54c3304929181900390910190a15050565b6001600160a01b031660009081526020819052604090205490565b6000610ad98260405180606001604052806024815260200161197960249139610ad286610acd611220565b610fec565b919061146b565b9050610aed83610ae7611220565b83611224565b610af78383611563565b505050565b610b0760063361165f565b610b58576040805162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015290519081900360640190fd5b610b618261181d565b610bb2576040805162461bcd60e51b815260206004820152601860248201527f41646472657373206973206e6f7420636f6e74726163742e0000000000000000604482015290519081900360640190fd5b6001600160a01b0382811660009081526007602052604090205416610c1e576040805162461bcd60e51b815260206004820152601860248201527f5377617020746f6b656e206e6f7420737570706f727465640000000000000000604482015290519081900360640190fd5b6001600160a01b038216600090815260076020526040902060010154811015610c68576001600160a01b038216600090815260076020526040902060010180548290039055610ca0565b6001600160a01b0382166000908152600760205260408120805473ffffffffffffffffffffffffffffffffffffffff19168155600101555b604080516001600160a01b03841681526020810183905281517fd3b4025ff115b79bf2ec5a73c9c784ba8aa9f8f6ba9186b255895c1a9f9042a3929181900390910190a15050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105d65780601f106105ab576101008083540402835291602001916105d6565b60006105f4610d56611220565b8461069085604051806060016040528060258152602001611a076025913960016000610d80611220565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061146b565b60006105f4610dbe611220565b8484611310565b6001600160a01b031660009081526007602052604090206001015490565b610dec8261181d565b610e3d576040805162461bcd60e51b815260206004820152601860248201527f546f6b656e206973206e6f74206120636f6e74726163742e0000000000000000604482015290519081900360640190fd5b6001600160a01b0382811660009081526007602052604090205416610ea9576040805162461bcd60e51b815260206004820152601d60248201527f5377617020746f6b656e206973206e6f74206120636f6e74726163742e000000604482015290519081900360640190fd5b6001600160a01b038216600090815260076020526040902060010154811115610f19576040805162461bcd60e51b815260206004820181905260248201527f5377617020616d6f756e74206973206d6f7265207468616e20737570706c792e604482015290519081900360640190fd5b6001600160a01b03808316600090815260076020526040808220600181018054869003905554815163079cc67960e41b815233600482015260248101869052915193169283926379cc6790926044808201939182900301818387803b158015610f8157600080fd5b505af1158015610f95573d6000803e3d6000fd5b50505050610fa3338361172d565b604080516001600160a01b03851681526020810184905281517f562c219552544ec4c9d7a8eb850f80ea152973e315372bf4999fe7c953ea004f929181900390910190a1505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61102260063361165f565b611063576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b61106c8261181d565b6110bd576040805162461bcd60e51b815260206004820152601860248201527f41646472657373206973206e6f7420636f6e74726163742e0000000000000000604482015290519081900360640190fd5b6001600160a01b0382811660009081526007602052604090205416611135576040805180820182526001600160a01b038481168083526020808401868152600092835260079091529390209151825473ffffffffffffffffffffffffffffffffffffffff191691161781559051600190910155611157565b6001600160a01b03821660009081526007602052604090206001018054820190555b604080516001600160a01b03841681526020810183905281517f3e4fdfb0f47da284fe8b5b3a7e5d10b211e323c9a0c144c421ae1d211873f853929181900390910190a15050565b6111a9828261165f565b156111fb576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b3390565b6001600160a01b0383166112695760405162461bcd60e51b81526004018080602001828103825260248152602001806119e36024913960400191505060405180910390fd5b6001600160a01b0382166112ae5760405162461bcd60e51b81526004018080602001828103825260228152602001806118c66022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166113555760405162461bcd60e51b81526004018080602001828103825260258152602001806119be6025913960400191505060405180910390fd5b6001600160a01b03821661139a5760405162461bcd60e51b81526004018080602001828103825260238152602001806118816023913960400191505060405180910390fd5b6113a5838383610af7565b6113e2816040518060600160405280602681526020016118e8602691396001600160a01b038616600090815260208190526040902054919061146b565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546114119082611502565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156114fa5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114bf5781810151838201526020016114a7565b50505050905090810190601f1680156114ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561155c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166115a85760405162461bcd60e51b815260040180806020018281038252602181526020018061199d6021913960400191505060405180910390fd5b6115b482600083610af7565b6115f1816040518060600160405280602281526020016118a4602291396001600160a01b038516600090815260208190526040902054919061146b565b6001600160a01b0383166000908152602081905260409020556002546116179082611823565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60006001600160a01b0382166116a65760405162461bcd60e51b81526004018080602001828103825260228152602001806119576022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6116d0828261165f565b61170b5760405162461bcd60e51b815260040180806020018281038252602181526020018061190e6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b038216611788576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61179460008383610af7565b6002546117a19082611502565b6002556001600160a01b0382166000908152602081905260409020546117c79082611502565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b3b151590565b60008282111561187a576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122084ad88b882f8b752f719242bd312a8fafc4162cf305c7a6a9d6551e3b65727c964736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x182 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6E286671 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD004F0F7 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD004F0F7 EQ PUSH2 0x4C4 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4F0 JUMPI DUP1 PUSH4 0xEFF03830 EQ PUSH2 0x51E JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x446 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x472 JUMPI DUP1 PUSH4 0xAB32DBB7 EQ PUSH2 0x49E JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x79CC6790 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x3E6 JUMPI DUP1 PUSH4 0x7C38B457 EQ PUSH2 0x412 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x43E JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x6E286671 EQ PUSH2 0x39D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x3C0 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x13A JUMPI DUP1 PUSH4 0x5D9898D3 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x5D9898D3 EQ PUSH2 0x31A JUMPI DUP1 PUSH4 0x66DE3B36 EQ PUSH2 0x340 JUMPI DUP1 PUSH4 0x67FC19BB EQ PUSH2 0x35D JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2CF JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x2FB JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x16B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x244 JUMPI DUP1 PUSH4 0x21D93090 EQ PUSH2 0x25E JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x27B JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x204 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18F PUSH2 0x54A 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 0x1C9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1B1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1F6 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 0x230 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x21A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5E0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x24C PUSH2 0x5FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x230 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x603 JUMP JUMPDEST PUSH2 0x230 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x618 JUMP JUMPDEST PUSH2 0x2B9 PUSH2 0x69F 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 0x230 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6A4 JUMP JUMPDEST PUSH2 0x318 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6F2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x318 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x706 JUMP JUMPDEST PUSH2 0x318 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7A7 JUMP JUMPDEST PUSH2 0x318 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x8BD JUMP JUMPDEST PUSH2 0x318 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x982 JUMP JUMPDEST PUSH2 0x24C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA87 JUMP JUMPDEST PUSH2 0x318 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x318 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAFC JUMP JUMPDEST PUSH2 0x18F PUSH2 0xCE8 JUMP JUMPDEST PUSH2 0x230 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x45C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xD49 JUMP JUMPDEST PUSH2 0x230 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x488 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDB1 JUMP JUMPDEST PUSH2 0x24C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDC5 JUMP JUMPDEST PUSH2 0x318 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDE3 JUMP JUMPDEST PUSH2 0x24C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xFEC JUMP JUMPDEST PUSH2 0x318 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x534 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1017 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT 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 0x5D6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5AB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5D6 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 0x5B9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F4 PUSH2 0x5ED PUSH2 0x1220 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1224 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x625 DUP5 DUP5 DUP5 PUSH2 0x1310 JUMP JUMPDEST PUSH2 0x695 DUP5 PUSH2 0x631 PUSH2 0x1220 JUMP JUMPDEST PUSH2 0x690 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x192F PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x66F PUSH2 0x1220 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x146B JUMP JUMPDEST PUSH2 0x1224 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x12 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F4 PUSH2 0x6B1 PUSH2 0x1220 JUMP JUMPDEST DUP5 PUSH2 0x690 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x6C2 PUSH2 0x1220 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1502 JUMP JUMPDEST PUSH2 0x703 PUSH2 0x6FD PUSH2 0x1220 JUMP JUMPDEST DUP3 PUSH2 0x1563 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x711 PUSH1 0x6 CALLER PUSH2 0x165F JUMP JUMPDEST PUSH2 0x752 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x2AB730BABA3437B934BD32B217 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x75D PUSH1 0x6 CALLER PUSH2 0x16C6 JUMP JUMPDEST PUSH2 0x768 PUSH1 0x6 DUP3 PUSH2 0x119F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x871B00A4E20F8436702D0174EB87D84D7CD1DD5C34D4BB1B4E75438B3398D512 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x7B2 PUSH1 0x6 CALLER PUSH2 0x165F JUMP JUMPDEST PUSH2 0x7F3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x2AB730BABA3437B934BD32B217 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CHAINID DUP2 DUP2 EQ ISZERO PUSH2 0x849 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 0x43616E6E6F74206164642063757272656E7420636861696E2049442E00000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x1 EQ ISZERO PUSH2 0x86B JUMPI POP PUSH2 0x703 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD DUP5 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x677E2D9A4ED9201AA86725FEF875137FC53876E6B68036B974404762682BD122 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x8C8 PUSH1 0x6 CALLER PUSH2 0x165F JUMP JUMPDEST PUSH2 0x909 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x2AB730BABA3437B934BD32B217 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x913 DUP6 DUP6 PUSH2 0x172D JUMP JUMPDEST DUP2 ISZERO PUSH2 0x923 JUMPI PUSH2 0x923 DUP4 DUP4 PUSH2 0x172D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP8 SWAP1 MSTORE DUP6 AND DUP2 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x918D77674BB88EAF75AFB307C9723EA6037706DE68D6FC07DD0C6CBA423A5250 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST ORIGIN CALLER EQ PUSH2 0x9D6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6E74726163742063616C6C73206E6F7420737570706F727465642E000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0xA3E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436861696E204944206E6F7420737570706F727465642E000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xA48 CALLER DUP4 PUSH2 0x1563 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x37A06799A3500428A773D00284AA706101F5AD94DAE9EC37E1C3773AA54C3304 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAD9 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1979 PUSH1 0x24 SWAP2 CODECOPY PUSH2 0xAD2 DUP7 PUSH2 0xACD PUSH2 0x1220 JUMP JUMPDEST PUSH2 0xFEC JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x146B JUMP JUMPDEST SWAP1 POP PUSH2 0xAED DUP4 PUSH2 0xAE7 PUSH2 0x1220 JUMP JUMPDEST DUP4 PUSH2 0x1224 JUMP JUMPDEST PUSH2 0xAF7 DUP4 DUP4 PUSH2 0x1563 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xB07 PUSH1 0x6 CALLER PUSH2 0x165F JUMP JUMPDEST PUSH2 0xB58 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E617574686F72697A65640000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xB61 DUP3 PUSH2 0x181D JUMP JUMPDEST PUSH2 0xBB2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373206973206E6F7420636F6E74726163742E0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND PUSH2 0xC1E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5377617020746F6B656E206E6F7420737570706F727465640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD DUP2 LT ISZERO PUSH2 0xC68 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0xCA0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 SSTORE PUSH1 0x1 ADD SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xD3B4025FF115B79BF2EC5A73C9C784BA8AA9F8F6BA9186B255895C1A9F9042A3 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT 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 0x5D6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5AB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5D6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F4 PUSH2 0xD56 PUSH2 0x1220 JUMP JUMPDEST DUP5 PUSH2 0x690 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A07 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0xD80 PUSH2 0x1220 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x146B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F4 PUSH2 0xDBE PUSH2 0x1220 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1310 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xDEC DUP3 PUSH2 0x181D JUMP JUMPDEST PUSH2 0xE3D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546F6B656E206973206E6F74206120636F6E74726163742E0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND PUSH2 0xEA9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5377617020746F6B656E206973206E6F74206120636F6E74726163742E000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD DUP2 GT ISZERO PUSH2 0xF19 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5377617020616D6F756E74206973206D6F7265207468616E20737570706C792E PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD DUP7 SWAP1 SUB SWAP1 SSTORE SLOAD DUP2 MLOAD PUSH4 0x79CC679 PUSH1 0xE4 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE SWAP2 MLOAD SWAP4 AND SWAP3 DUP4 SWAP3 PUSH4 0x79CC6790 SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF95 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xFA3 CALLER DUP4 PUSH2 0x172D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x562C219552544EC4C9D7A8EB850F80EA152973E315372BF4999FE7C953EA004F SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH2 0x1022 PUSH1 0x6 CALLER PUSH2 0x165F JUMP JUMPDEST PUSH2 0x1063 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x2AB730BABA3437B934BD32B217 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x106C DUP3 PUSH2 0x181D JUMP JUMPDEST PUSH2 0x10BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373206973206E6F7420636F6E74726163742E0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND PUSH2 0x1135 JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND DUP1 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 ADD DUP7 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x7 SWAP1 SWAP2 MSTORE SWAP4 SWAP1 KECCAK256 SWAP2 MLOAD DUP3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP2 AND OR DUP2 SSTORE SWAP1 MLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE PUSH2 0x1157 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x3E4FDFB0F47DA284FE8B5B3A7E5D10B211E323C9A0C144C421AE1D211873F853 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x11A9 DUP3 DUP3 PUSH2 0x165F JUMP JUMPDEST ISZERO PUSH2 0x11FB 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 0x526F6C65733A206163636F756E7420616C72656164792068617320726F6C6500 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1269 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19E3 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x12AE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18C6 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1355 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19BE PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x139A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1881 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x13A5 DUP4 DUP4 DUP4 PUSH2 0xAF7 JUMP JUMPDEST PUSH2 0x13E2 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x18E8 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x146B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1411 SWAP1 DUP3 PUSH2 0x1502 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x14FA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x14BF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14A7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x14EC 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 0x155C 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x15A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x199D PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x15B4 DUP3 PUSH1 0x0 DUP4 PUSH2 0xAF7 JUMP JUMPDEST PUSH2 0x15F1 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x18A4 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x146B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x2 SLOAD PUSH2 0x1617 SWAP1 DUP3 PUSH2 0x1823 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x16A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1957 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x16D0 DUP3 DUP3 PUSH2 0x165F JUMP JUMPDEST PUSH2 0x170B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x190E PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1788 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 PUSH2 0x1794 PUSH1 0x0 DUP4 DUP4 PUSH2 0xAF7 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x17A1 SWAP1 DUP3 PUSH2 0x1502 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x17C7 SWAP1 DUP3 PUSH2 0x1502 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 EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x187A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E6365526F6C65 PUSH20 0x3A206163636F756E7420646F6573206E6F742068 PUSH2 0x7665 KECCAK256 PUSH19 0x6F6C6545524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E74206578636565647320616C6C6F77616E6365526F PUSH13 0x65733A206163636F756E742069 PUSH20 0x20746865207A65726F2061646472657373455243 ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E74206578636565647320616C6C6F77616E63654552 NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A207472616E7366657220 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x735822122084AD DUP9 0xB8 DUP3 0xF8 0xB7 MSTORE 0xF7 NOT 0x24 0x2B 0xD3 SLT 0xA8 STATICCALL 0xFC COINBASE PUSH3 0xCF305C PUSH27 0x6A9D6551E3B65727C964736F6C6343000706003300000000000000 ","sourceMap":"148:7897:143:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2236:91:145;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4382:169;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4382:169:145;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3335:108;;;:::i;:::-;;;;;;;;;;;;;;;;568:40:143;;;;;;;;;;;;;;;;-1:-1:-1;568:40:143;;:::i;5033:321:145:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5033:321:145;;;;;;;;;;;;;;;;;:::i;1266:105:143:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5763:218:145;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5763:218:145;;;;;;;;:::i;584:91:146:-;;;;;;;;;;;;;;;;-1:-1:-1;584:91:146;;:::i;:::-;;3837:280:143;;;;;;;;;;;;;;;;-1:-1:-1;3837:280:143;-1:-1:-1;;;;;3837:280:143;;:::i;2440:587::-;;;;;;;;;;;;;;;;-1:-1:-1;2440:587:143;;:::i;1909:411::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1909:411:143;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3401:287::-;;;;;;;;;;;;;;;;-1:-1:-1;3401:287:143;;;;;;;:::i;3506:127:145:-;;;;;;;;;;;;;;;;-1:-1:-1;3506:127:145;-1:-1:-1;;;;;3506:127:145;;:::i;994:295:146:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;994:295:146;;;;;;;;:::i;5495:948:143:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5495:948:143;;;;;;;;:::i;2446:95:145:-;;;:::i;6484:269::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6484:269:145;;;;;;;;:::i;3846:175::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3846:175:145;;;;;;;;:::i;6622:115:143:-;;;;;;;;;;;;;;;;-1:-1:-1;6622:115:143;-1:-1:-1;;;;;6622:115:143;;:::i;6896:801::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6896:801:143;;;;;;;;:::i;4084:151:145:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4084:151:145;;;;;;;;;;:::i;4398:863:143:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4398:863:143;;;;;;;;:::i;2236:91:145:-;2314:5;2307:12;;;;;;;;-1:-1:-1;;2307:12:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2281:13;;2307:12;;2314:5;;2307:12;;2314:5;2307:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2236:91;:::o;4382:169::-;4465:4;4482:39;4491:12;:10;:12::i;:::-;4505:7;4514:6;4482:8;:39::i;:::-;-1:-1:-1;4539:4:145;4382:169;;;;:::o;3335:108::-;3423:12;;3335:108;:::o;568:40:143:-;;;;;;;;;;;;;;;:::o;5033:321:145:-;5139:4;5156:36;5166:6;5174:9;5185:6;5156:9;:36::i;:::-;5203:121;5212:6;5220:12;:10;:12::i;:::-;5234:89;5272:6;5234:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5234:19:145;;;;;;:11;:19;;;;;;5254:12;:10;:12::i;:::-;-1:-1:-1;;;;;5234:33:145;;;;;;;;;;;;-1:-1:-1;5234:33:145;;;:89;:37;:89::i;:::-;5203:8;:121::i;:::-;-1:-1:-1;5342:4:145;5033:321;;;;;:::o;1266:105:143:-;420:2;1266:105;:::o;5763:218:145:-;5851:4;5868:83;5877:12;:10;:12::i;:::-;5891:7;5900:50;5939:10;5900:11;:25;5912:12;:10;:12::i;:::-;-1:-1:-1;;;;;5900:25:145;;;;;;;;;;;;;;;;;-1:-1:-1;5900:25:145;;;:34;;;;;;;;;;;:38;:50::i;584:91:146:-;640:27;646:12;:10;:12::i;:::-;660:6;640:5;:27::i;:::-;584:91;:::o;3837:280:143:-;3920:27;:11;3936:10;3920:15;:27::i;:::-;3912:53;;;;;-1:-1:-1;;;3912:53:143;;;;;;;;;;;;-1:-1:-1;;;3912:53:143;;;;;;;;;;;;;;;3976:30;:11;3995:10;3976:18;:30::i;:::-;4017:37;:11;4033:20;4017:15;:37::i;:::-;4070:39;;;-1:-1:-1;;;;;4070:39:143;;;;;;;;;;;;;;;3837:280;:::o;2440:587::-;2512:27;:11;2528:10;2512:15;:27::i;:::-;2504:53;;;;;-1:-1:-1;;;2504:53:143;;;;;;;;;;;;-1:-1:-1;;;2504:53:143;;;;;;;;;;;;;;;2728:9;2766:25;;;;2758:66;;;;;-1:-1:-1;;;2758:66:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;2879:17;;;;:8;:17;;;;;;;;:25;;:17;:25;2875:64;;;2921:7;;;2875:64;2951:17;;;;:8;:17;;;;;;;;;:24;;-1:-1:-1;;2951:24:143;2971:4;2951:24;;;2991:28;;;;;;;;;;;;;;;;;2440:587;;:::o;1909:411::-;2088:27;:11;2104:10;2088:15;:27::i;:::-;2080:53;;;;;-1:-1:-1;;;2080:53:143;;;;;;;;;;;;-1:-1:-1;;;2080:53:143;;;;;;;;;;;;;;;2144:17;2150:2;2154:6;2144:5;:17::i;:::-;2176:13;;2172:74;;2206:28;2212:10;2224:9;2206:5;:28::i;:::-;2261:51;;;-1:-1:-1;;;;;2261:51:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1909:411;;;;;:::o;3401:287::-;3476:9;3489:10;3476:23;3468:65;;;;;-1:-1:-1;;;3468:65:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;3552:17;;;;:8;:17;;;;;;;;:25;;:17;:25;3544:61;;;;;-1:-1:-1;;;3544:61:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;3616:25;3622:10;3634:6;3616:5;:25::i;:::-;3657:23;;;;;;;;;;;;;;;;;;;;;;;;;3401:287;;:::o;3506:127:145:-;-1:-1:-1;;;;;3607:18:145;3580:7;3607:18;;;;;;;;;;;;3506:127::o;994:295:146:-;1071:26;1100:84;1137:6;1100:84;;;;;;;;;;;;;;;;;:32;1110:7;1119:12;:10;:12::i;:::-;1100:9;:32::i;:::-;:36;:84;:36;:84::i;:::-;1071:113;;1197:51;1206:7;1215:12;:10;:12::i;:::-;1229:18;1197:8;:51::i;:::-;1259:22;1265:7;1274:6;1259:5;:22::i;:::-;994:295;;;:::o;5495:948:143:-;5610:27;:11;5626:10;5610:15;:27::i;:::-;5602:52;;;;;-1:-1:-1;;;5602:52:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;5673:27;5684:15;5673:10;:27::i;:::-;5665:64;;;;;-1:-1:-1;;;5665:64:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5762:27:143;;;5815:1;5762:27;;;:10;:27;;;;;:41;;5740:129;;;;;-1:-1:-1;;;5740:129:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6100:27:143;;;;;;:10;:27;;;;;:34;;;:52;-1:-1:-1;6096:275:143;;;-1:-1:-1;;;;;6223:27:143;;;;;;:10;:27;;;;;:34;;;;:69;;;6169:123;;6096:275;;;-1:-1:-1;;;;;6332:27:143;;;;;;:10;:27;;;;;6325:34;;-1:-1:-1;;6325:34:143;;;;;;6096:275;6386:49;;;-1:-1:-1;;;;;6386:49:143;;;;;;;;;;;;;;;;;;;;;;;5495:948;;:::o;2446:95:145:-;2526:7;2519:14;;;;;;;;-1:-1:-1;;2519:14:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2493:13;;2519:14;;2526:7;;2519:14;;2526:7;2519:14;;;;;;;;;;;;;;;;;;;;;;;;6484:269;6577:4;6594:129;6603:12;:10;:12::i;:::-;6617:7;6626:96;6665:15;6626:96;;;;;;;;;;;;;;;;;:11;:25;6638:12;:10;:12::i;:::-;-1:-1:-1;;;;;6626:25:145;;;;;;;;;;;;;;;;;-1:-1:-1;6626:25:145;;;:34;;;;;;;;;;;:96;:38;:96::i;3846:175::-;3932:4;3949:42;3959:12;:10;:12::i;:::-;3973:9;3984:6;3949:9;:42::i;6622:115:143:-;-1:-1:-1;;;;;6705:17:143;6678:7;6705:17;;;:10;:17;;;;;:24;;;;6622:115::o;6896:801::-;6967:17;6978:5;6967:10;:17::i;:::-;6959:54;;;;;-1:-1:-1;;;6959:54:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7046:17:143;;;7089:1;7046:17;;;:10;:17;;;;;:31;;7024:124;;;;;-1:-1:-1;;;7024:124:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7191:17:143;;;;;;:10;:17;;;;;:24;;;7181:34;;;7159:116;;;;;-1:-1:-1;;;7159:116:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7359:17:143;;;;;;;:10;:17;;;;;;:24;;;;;:33;;;7332:60;;7491:31;7544:38;;-1:-1:-1;;;7544:38:143;;7563:10;7544:38;;;;;;;;;;;;7491:31;;;;;7544:18;;:38;;;;;;;;;;;7359:17;7491:31;7544:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7627:25;7633:10;7645:6;7627:5;:25::i;:::-;7670:19;;;-1:-1:-1;;;;;7670:19:143;;;;;;;;;;;;;;;;;;;;;;;6896:801;;;:::o;4084:151:145:-;-1:-1:-1;;;;;4200:18:145;;;4173:7;4200:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4084:151::o;4398:863:143:-;4510:27;:11;4526:10;4510:15;:27::i;:::-;4502:53;;;;;-1:-1:-1;;;4502:53:143;;;;;;;;;;;;-1:-1:-1;;;4502:53:143;;;;;;;;;;;;;;;4574:27;4585:15;4574:10;:27::i;:::-;4566:64;;;;;-1:-1:-1;;;4566:64:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4805:27:143;;;4858:1;4805:27;;;:10;:27;;;;;:41;;4801:391;;4907:117;;;;;;;;-1:-1:-1;;;;;4907:117:143;;;;;;;;;;;;;-1:-1:-1;4877:27:143;;;:10;:27;;;;;;:147;;;;-1:-1:-1;;4877:147:143;;;;;;;;-1:-1:-1;4877:147:143;;;;4801:391;;;-1:-1:-1;;;;;5111:27:143;;;;;;:10;:27;;;;;:34;;;;:69;;5057:123;;4801:391;5207:46;;;-1:-1:-1;;;;;5207:46:143;;;;;;;;;;;;;;;;;;;;;;;4398:863;;:::o;219:178:140:-;297:18;301:4;307:7;297:3;:18::i;:::-;296:19;288:63;;;;;-1:-1:-1;;;288:63:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;362:20:140;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;362:27:140;385:4;362:27;;;219:178::o;613:106:144:-;701:10;613:106;:::o;9631:346:145:-;-1:-1:-1;;;;;9733:19:145;;9725:68;;;;-1:-1:-1;;;9725:68:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9812:21:145;;9804:68;;;;-1:-1:-1;;;9804:68:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9885:18:145;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9937:32;;;;;;;;;;;;;;;;;9631:346;;;:::o;7243:539::-;-1:-1:-1;;;;;7349:20:145;;7341:70;;;;-1:-1:-1;;;7341:70:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7430:23:145;;7422:71;;;;-1:-1:-1;;;7422:71:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7506:47;7527:6;7535:9;7546:6;7506:20;:47::i;:::-;7586:71;7608:6;7586:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7586:17:145;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;7566:17:145;;;:9;:17;;;;;;;;;;;:91;;;;7691:20;;;;;;;:32;;7716:6;7691:24;:32::i;:::-;-1:-1:-1;;;;;7668:20:145;;;:9;:20;;;;;;;;;;;;:55;;;;7739:35;;;;;;;7668:20;;7739:35;;;;;;;;;;;;;7243:539;;;:::o;5613:166:148:-;5699:7;5735:12;5727:6;;;;5719:29;;;;-1:-1:-1;;;5719:29:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5766:5:148;;;5613:166::o;2786:179::-;2844:7;2876:5;;;2900:6;;;;2892:46;;;;;-1:-1:-1;;;2892:46:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;2956:1;2786:179;-1:-1:-1;;;2786:179:148:o;8775:418:145:-;-1:-1:-1;;;;;8859:21:145;;8851:67;;;;-1:-1:-1;;;8851:67:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8931:49;8952:7;8969:1;8973:6;8931:20;:49::i;:::-;9014:68;9037:6;9014:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9014:18:145;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;8993:18:145;;:9;:18;;;;;;;;;;:89;9108:12;;:24;;9125:6;9108:16;:24::i;:::-;9093:12;:39;9148:37;;;;;;;;9174:1;;-1:-1:-1;;;;;9148:37:145;;;;;;;;;;;;8775:418;;:::o;755:235:140:-;854:4;-1:-1:-1;;;;;884:21:140;;876:68;;;;-1:-1:-1;;;876:68:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;962:20:140;:11;:20;;;;;;;;;;;;;;;755:235::o;477:183::-;557:18;561:4;567:7;557:3;:18::i;:::-;549:64;;;;-1:-1:-1;;;549:64:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;624:20:140;647:5;624:20;;;;;;;;;;;:28;;-1:-1:-1;;624:28:140;;;477:183::o;8064:378:145:-;-1:-1:-1;;;;;8148:21:145;;8140:65;;;;;-1:-1:-1;;;8140:65:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;8218:49;8247:1;8251:7;8260:6;8218:20;:49::i;:::-;8295:12;;:24;;8312:6;8295:16;:24::i;:::-;8280:12;:39;-1:-1:-1;;;;;8351:18:145;;:9;:18;;;;;;;;;;;:30;;8374:6;8351:22;:30::i;:::-;-1:-1:-1;;;;;8330:18:145;;:9;:18;;;;;;;;;;;:51;;;;8397:37;;;;;;;8330:18;;:9;;8397:37;;;;;;;;;;8064:378;;:::o;7839:203:143:-;7979:17;8024:10;;;7839:203::o;3248:158:148:-;3306:7;3339:1;3334;:6;;3326:49;;;;;-1:-1:-1;;;3326:49:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3393:5:148;;;3248:158::o"},"methodIdentifiers":{"addSupportedChainId(uint256)":"66de3b36","addSwapToken(address,uint256)":"eff03830","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","chainIds(uint256)":"21d93090","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","migrateBridgeRole(address)":"5d9898d3","mint(address,uint256,address,uint256,bytes32)":"67fc19bb","name()":"06fdde03","removeSwapToken(address,uint256)":"7c38b457","swap(address,uint256)":"d004f0f7","swapSupply(address)":"ab32dbb7","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","unwrap(uint256,uint256)":"6e286671"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"AddSupportedChainId\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"supplyIncrement\",\"type\":\"uint256\"}],\"name\":\"AddSwapToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newBridgeRoleAddress\",\"type\":\"address\"}],\"name\":\"MigrateBridgeRole\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feeAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"originTxId\",\"type\":\"bytes32\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"supplyDecrement\",\"type\":\"uint256\"}],\"name\":\"RemoveSwapToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"Unwrap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"addSupportedChainId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"supplyIncrement\",\"type\":\"uint256\"}],\"name\":\"addSwapToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"chainIds\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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\":[{\"internalType\":\"address\",\"name\":\"newBridgeRoleAddress\",\"type\":\"address\"}],\"name\":\"migrateBridgeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feeAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"originTxId\",\"type\":\"bytes32\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"supplyDecrement\",\"type\":\"uint256\"}],\"name\":\"removeSwapToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"swapSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"unwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addSupportedChainId(uint256)\":{\"details\":\"Add new chainId to list of supported Ids.\",\"params\":{\"chainId\":\"ChainId to add.\"}},\"addSwapToken(address,uint256)\":{\"details\":\"Add Token to accept swaps from or increase supply of existing swap token.\",\"params\":{\"contractAddress\":\"Token Address to allow swaps.\",\"supplyIncrement\":\"Amount of assets allowed to be swapped (or incremental increase in amount).\"}},\"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}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"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.\"},\"migrateBridgeRole(address)\":{\"details\":\"Provide Bridge Role (Admin Role) to new address.\",\"params\":{\"newBridgeRoleAddress\":\"New bridge role address.\"}},\"mint(address,uint256,address,uint256,bytes32)\":{\"details\":\"Mint function used by bridge. Optional FeeAddress and FeeAmount parameters used to mint small percentage of transfered assets directly to bridge.\",\"params\":{\"amount\":\"Amount of funds to mint.\",\"feeAddress\":\"Address to mint bridge fees to.\",\"feeAmount\":\"Amount to mint as bridge fees.\",\"originTxId\":\"Transaction ID from external network that triggered this minting.\",\"to\":\"Address to mint funds to.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"removeSwapToken(address,uint256)\":{\"details\":\"Remove amount of swaps allowed from existing swap token.\",\"params\":{\"contractAddress\":\"Token Address to remove swap amount.\",\"supplyDecrement\":\"Amount to remove from the swap supply.\"}},\"swap(address,uint256)\":{\"details\":\"Perform Swap.\",\"params\":{\"amount\":\"Amount of token to be swapped.\",\"token\":\"Address of token to be swapped.\"}},\"swapSupply(address)\":{\"details\":\"Fetch the remaining amount allowed for a swap token.\",\"params\":{\"token\":\"Address of swap token.\"},\"returns\":{\"_0\":\"amount of swaps remaining.\"}},\"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`.\"},\"unwrap(uint256,uint256)\":{\"details\":\"Burns assets and signals bridge to migrate funds to the same address on the provided chainId.\",\"params\":{\"amount\":\"Amount of asset to unwrap.\",\"chainId\":\"ChainId to unwrap or migrate funds to. Only used for multi-network bridge deployment.                Zero by default for bridge deployment with only 2 networks.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pangolin-periphery/test/BridgeToken.sol\":\"BridgeToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-periphery/libraries/Roles.sol\":{\"keccak256\":\"0x6f35f555e4510769206ad50577f45ef2c49a01aa62674689b84d158b35f1438d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a11829b56f41ee67edd7512e091119f6eca0088b591b11f1260ff023fcafd1f7\",\"dweb:/ipfs/QmVTrkroC6KgEKK4xd2phzhYPqUbkZraZneTK3E774eRxv\"]},\"contracts/pangolin-periphery/test/BridgeToken.sol\":{\"keccak256\":\"0x5762db15e0830e57321c8f5adc7ae1e0199df1321286794f414decd2235a3335\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a18ed99a1467ecdcf3b8004e5e3ebf5254d2fa349a63449700ca5feaae10ca6\",\"dweb:/ipfs/QmfMe8viZJdBkX8LQVNyhqJT1w7a1HqUXtNSawGMhL9e3k\"]},\"contracts/pangolin-periphery/test/library/openzeppelin/Context.sol\":{\"keccak256\":\"0xbc7f2f08b805e299fa2d5e702051171f670ded2808044dfeb6fab4357f167138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53f7f10bb120dca002788bc57a82cb2b17178312ed95c55a378a77f9a0803ee3\",\"dweb:/ipfs/QmYPMCJo9HA9WuvkTaCHJVGipyXNUr3skeEVSXj3QJgc8U\"]},\"contracts/pangolin-periphery/test/library/openzeppelin/ERC20.sol\":{\"keccak256\":\"0xe74bcd76ad6e930a77fbb74a119b9856837af07508a54b4c9ef22ac8eb219873\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de1d647c98c4e524a59e8cd176ec4a4ff91fd1c29a3692e2f0a3b18da2b76319\",\"dweb:/ipfs/QmZVea6fUs5YSvqkFGhBbUGjsxKak5YNrBubxNJNqbMZxm\"]},\"contracts/pangolin-periphery/test/library/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x054440c323d90a8552282588dc6ac80d4effc080d3a33cc75970e2cec1ee6201\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53a3354492ec596f4e092a51a938a51af542dabe51da3dbe82391e28a4bb03b0\",\"dweb:/ipfs/QmUbPhmvH7nSSYK9kPdmJMgnVAsJSNUnpnysvni6HhPWrC\"]},\"contracts/pangolin-periphery/test/library/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xb1b439fbc95b6285b8a37a7c25bbfe77644b4706d8405709bd575a0e6d67191b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c8fe1dd8140000fbbe4dd3899c15a20ea60d3ca1f9bff27ea21b9a2ff634e5a\",\"dweb:/ipfs/QmWgpKXT8syjcKdGtYUZjceghbSQmc9LVkzSYPxDwWrvnn\"]},\"contracts/pangolin-periphery/test/library/openzeppelin/OpenZeppelinSafeMath.sol\":{\"keccak256\":\"0xe8d71e9728a1bba1de62ea467f8d1ac5a4b62de10aa330313559e9709dd7e311\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d7bdc6ecef2dde9118ee4c733620ae157a81656d05f52b53e29f1316bd2920c\",\"dweb:/ipfs/Qmf3h878mQ9Lpg88xcdNheJdpy4x9Z2UazUrXyLiLEDrcJ\"]}},\"version\":1}"}},"contracts/pangolin-periphery/test/library/openzeppelin/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\":{\"contracts/pangolin-periphery/test/library/openzeppelin/Context.sol\":\"Context\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-periphery/test/library/openzeppelin/Context.sol\":{\"keccak256\":\"0xbc7f2f08b805e299fa2d5e702051171f670ded2808044dfeb6fab4357f167138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53f7f10bb120dca002788bc57a82cb2b17178312ed95c55a378a77f9a0803ee3\",\"dweb:/ipfs/QmYPMCJo9HA9WuvkTaCHJVGipyXNUr3skeEVSXj3QJgc8U\"]}},\"version\":1}"}},"contracts/pangolin-periphery/test/library/openzeppelin/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":"60806040523480156200001157600080fd5b5060405162000cae38038062000cae833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405250508251620001b491506003906020850190620001e0565b508051620001ca906004906020840190620001e0565b50506005805460ff19166012179055506200028c565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000218576000855562000263565b82601f106200023357805160ff191683800117855562000263565b8280016001018555821562000263579182015b828111156200026357825182559160200191906001019062000246565b506200027192915062000275565b5090565b5b8082111562000271576000815560010162000276565b610a12806200029c6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610253578063a9059cbb1461027f578063dd62ed3e146102ab576100c9565b806339509351146101f957806370a082311461022557806395d89b411461024b576100c9565b806318160ddd116100b257806318160ddd1461018b57806323b872dd146101a5578063313ce567146101db576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d66102d9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101776004803603604081101561016157600080fd5b506001600160a01b03813516906020013561036f565b604080519115158252519081900360200190f35b61019361038c565b60408051918252519081900360200190f35b610177600480360360608110156101bb57600080fd5b506001600160a01b03813581169160208101359091169060400135610392565b6101e3610419565b6040805160ff9092168252519081900360200190f35b6101776004803603604081101561020f57600080fd5b506001600160a01b038135169060200135610422565b6101936004803603602081101561023b57600080fd5b50356001600160a01b0316610470565b6100d661048b565b6101776004803603604081101561026957600080fd5b506001600160a01b0381351690602001356104ec565b6101776004803603604081101561029557600080fd5b506001600160a01b038135169060200135610554565b610193600480360360408110156102c157600080fd5b506001600160a01b0381358116916020013516610568565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103655780601f1061033a57610100808354040283529160200191610365565b820191906000526020600020905b81548152906001019060200180831161034857829003601f168201915b5050505050905090565b600061038361037c610593565b8484610597565b50600192915050565b60025490565b600061039f848484610683565b61040f846103ab610593565b61040a85604051806060016040528060288152602001610947602891396001600160a01b038a166000908152600160205260408120906103e9610593565b6001600160a01b0316815260208101919091526040016000205491906107de565b610597565b5060019392505050565b60055460ff1690565b600061038361042f610593565b8461040a8560016000610440610593565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610875565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103655780601f1061033a57610100808354040283529160200191610365565b60006103836104f9610593565b8461040a856040518060600160405280602581526020016109b86025913960016000610523610593565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906107de565b6000610383610561610593565b8484610683565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105dc5760405162461bcd60e51b81526004018080602001828103825260248152602001806109946024913960400191505060405180910390fd5b6001600160a01b0382166106215760405162461bcd60e51b81526004018080602001828103825260228152602001806108ff6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106c85760405162461bcd60e51b815260040180806020018281038252602581526020018061096f6025913960400191505060405180910390fd5b6001600160a01b03821661070d5760405162461bcd60e51b81526004018080602001828103825260238152602001806108dc6023913960400191505060405180910390fd5b6107188383836108d6565b61075581604051806060016040528060268152602001610921602691396001600160a01b03861660009081526020819052604090205491906107de565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107849082610875565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561086d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561083257818101518382015260200161081a565b50505050905090810190601f16801561085f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108cf576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122017b56e80ce7d9958c9a4fcaa3f86404f25d6e93f031f1a20f79b573052ab494a64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xCAE CODESIZE SUB DUP1 PUSH3 0xCAE 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 0xA12 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 0x253 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2AB JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x24B JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1A5 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1DB 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 0x2D9 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 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x36F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x193 PUSH2 0x38C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x392 JUMP JUMPDEST PUSH2 0x1E3 PUSH2 0x419 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 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x422 JUMP JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x470 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x48B JUMP JUMPDEST PUSH2 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x269 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4EC JUMP JUMPDEST PUSH2 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x295 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x554 JUMP JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x568 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT 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 0x365 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x33A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x365 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 0x348 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x383 PUSH2 0x37C PUSH2 0x593 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x597 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39F DUP5 DUP5 DUP5 PUSH2 0x683 JUMP JUMPDEST PUSH2 0x40F DUP5 PUSH2 0x3AB PUSH2 0x593 JUMP JUMPDEST PUSH2 0x40A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x947 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x3E9 PUSH2 0x593 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x7DE JUMP JUMPDEST PUSH2 0x597 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x383 PUSH2 0x42F PUSH2 0x593 JUMP JUMPDEST DUP5 PUSH2 0x40A DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x440 PUSH2 0x593 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x875 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x0 NOT 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 0x365 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x33A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x365 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x383 PUSH2 0x4F9 PUSH2 0x593 JUMP JUMPDEST DUP5 PUSH2 0x40A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9B8 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x523 PUSH2 0x593 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x7DE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x383 PUSH2 0x561 PUSH2 0x593 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x683 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x5DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x994 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x621 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x8FF PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x6C8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x96F PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x70D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x8DC PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x718 DUP4 DUP4 DUP4 PUSH2 0x8D6 JUMP JUMPDEST PUSH2 0x755 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x921 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x7DE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x784 SWAP1 DUP3 PUSH2 0x875 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x86D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x832 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x81A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x85F 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 0x8CF 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 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 0x726FA2646970 PUSH7 0x735822122017B5 PUSH15 0x80CE7D9958C9A4FCAA3F86404F25D6 0xE9 EXTCODEHASH SUB 0x1F BYTE KECCAK256 0xF7 SWAP12 JUMPI ADDRESS MSTORE 0xAB 0x49 0x4A PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"1346:9759:145:-:0;;;2017:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2017:149:145;;;;;;;;;;-1:-1:-1;2017:149:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2017:149:145;;;;;;;;;;-1:-1:-1;2017:149:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2017:149:145;;-1:-1:-1;;2092:13:145;;;;-1:-1:-1;2092:5:145;;:13;;;;;:::i;:::-;-1:-1:-1;2116:17:145;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2144:9:145;:14;;-1:-1:-1;;2144:14:145;2156:2;2144:14;;;-1:-1:-1;1346:9759:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1346:9759:145;;;-1:-1:-1;1346:9759:145;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610253578063a9059cbb1461027f578063dd62ed3e146102ab576100c9565b806339509351146101f957806370a082311461022557806395d89b411461024b576100c9565b806318160ddd116100b257806318160ddd1461018b57806323b872dd146101a5578063313ce567146101db576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d66102d9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101776004803603604081101561016157600080fd5b506001600160a01b03813516906020013561036f565b604080519115158252519081900360200190f35b61019361038c565b60408051918252519081900360200190f35b610177600480360360608110156101bb57600080fd5b506001600160a01b03813581169160208101359091169060400135610392565b6101e3610419565b6040805160ff9092168252519081900360200190f35b6101776004803603604081101561020f57600080fd5b506001600160a01b038135169060200135610422565b6101936004803603602081101561023b57600080fd5b50356001600160a01b0316610470565b6100d661048b565b6101776004803603604081101561026957600080fd5b506001600160a01b0381351690602001356104ec565b6101776004803603604081101561029557600080fd5b506001600160a01b038135169060200135610554565b610193600480360360408110156102c157600080fd5b506001600160a01b0381358116916020013516610568565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103655780601f1061033a57610100808354040283529160200191610365565b820191906000526020600020905b81548152906001019060200180831161034857829003601f168201915b5050505050905090565b600061038361037c610593565b8484610597565b50600192915050565b60025490565b600061039f848484610683565b61040f846103ab610593565b61040a85604051806060016040528060288152602001610947602891396001600160a01b038a166000908152600160205260408120906103e9610593565b6001600160a01b0316815260208101919091526040016000205491906107de565b610597565b5060019392505050565b60055460ff1690565b600061038361042f610593565b8461040a8560016000610440610593565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610875565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103655780601f1061033a57610100808354040283529160200191610365565b60006103836104f9610593565b8461040a856040518060600160405280602581526020016109b86025913960016000610523610593565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906107de565b6000610383610561610593565b8484610683565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105dc5760405162461bcd60e51b81526004018080602001828103825260248152602001806109946024913960400191505060405180910390fd5b6001600160a01b0382166106215760405162461bcd60e51b81526004018080602001828103825260228152602001806108ff6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106c85760405162461bcd60e51b815260040180806020018281038252602581526020018061096f6025913960400191505060405180910390fd5b6001600160a01b03821661070d5760405162461bcd60e51b81526004018080602001828103825260238152602001806108dc6023913960400191505060405180910390fd5b6107188383836108d6565b61075581604051806060016040528060268152602001610921602691396001600160a01b03861660009081526020819052604090205491906107de565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107849082610875565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561086d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561083257818101518382015260200161081a565b50505050905090810190601f16801561085f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108cf576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122017b56e80ce7d9958c9a4fcaa3f86404f25d6e93f031f1a20f79b573052ab494a64736f6c63430007060033","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 0x253 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2AB JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x24B JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1A5 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1DB 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 0x2D9 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 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x36F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x193 PUSH2 0x38C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x392 JUMP JUMPDEST PUSH2 0x1E3 PUSH2 0x419 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 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x422 JUMP JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x470 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x48B JUMP JUMPDEST PUSH2 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x269 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4EC JUMP JUMPDEST PUSH2 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x295 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x554 JUMP JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x568 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT 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 0x365 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x33A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x365 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 0x348 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x383 PUSH2 0x37C PUSH2 0x593 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x597 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39F DUP5 DUP5 DUP5 PUSH2 0x683 JUMP JUMPDEST PUSH2 0x40F DUP5 PUSH2 0x3AB PUSH2 0x593 JUMP JUMPDEST PUSH2 0x40A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x947 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x3E9 PUSH2 0x593 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x7DE JUMP JUMPDEST PUSH2 0x597 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x383 PUSH2 0x42F PUSH2 0x593 JUMP JUMPDEST DUP5 PUSH2 0x40A DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x440 PUSH2 0x593 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x875 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x0 NOT 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 0x365 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x33A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x365 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x383 PUSH2 0x4F9 PUSH2 0x593 JUMP JUMPDEST DUP5 PUSH2 0x40A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9B8 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x523 PUSH2 0x593 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x7DE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x383 PUSH2 0x561 PUSH2 0x593 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x683 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x5DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x994 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x621 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x8FF PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x6C8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x96F PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x70D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x8DC PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x718 DUP4 DUP4 DUP4 PUSH2 0x8D6 JUMP JUMPDEST PUSH2 0x755 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x921 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x7DE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x784 SWAP1 DUP3 PUSH2 0x875 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x86D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x832 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x81A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x85F 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 0x8CF 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 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 0x726FA2646970 PUSH7 0x735822122017B5 PUSH15 0x80CE7D9958C9A4FCAA3F86404F25D6 0xE9 EXTCODEHASH SUB 0x1F BYTE KECCAK256 0xF7 SWAP12 JUMPI ADDRESS MSTORE 0xAB 0x49 0x4A PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"1346:9759:145:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2236:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4382:169;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4382:169:145;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3335:108;;;:::i;:::-;;;;;;;;;;;;;;;;5033:321;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5033:321:145;;;;;;;;;;;;;;;;;:::i;3179:91::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5763:218;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5763:218:145;;;;;;;;:::i;3506:127::-;;;;;;;;;;;;;;;;-1:-1:-1;3506:127:145;-1:-1:-1;;;;;3506:127:145;;:::i;2446:95::-;;;:::i;6484:269::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6484:269:145;;;;;;;;:::i;3846:175::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3846:175:145;;;;;;;;:::i;4084:151::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4084:151:145;;;;;;;;;;:::i;2236:91::-;2314:5;2307:12;;;;;;;;-1:-1:-1;;2307:12:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2281:13;;2307:12;;2314:5;;2307:12;;2314:5;2307:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2236:91;:::o;4382:169::-;4465:4;4482:39;4491:12;:10;:12::i;:::-;4505:7;4514:6;4482:8;:39::i;:::-;-1:-1:-1;4539:4:145;4382:169;;;;:::o;3335:108::-;3423:12;;3335:108;:::o;5033:321::-;5139:4;5156:36;5166:6;5174:9;5185:6;5156:9;:36::i;:::-;5203:121;5212:6;5220:12;:10;:12::i;:::-;5234:89;5272:6;5234:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5234:19:145;;;;;;:11;:19;;;;;;5254:12;:10;:12::i;:::-;-1:-1:-1;;;;;5234:33:145;;;;;;;;;;;;-1:-1:-1;5234:33:145;;;:89;:37;:89::i;:::-;5203:8;:121::i;:::-;-1:-1:-1;5342:4:145;5033:321;;;;;:::o;3179:91::-;3253:9;;;;3179:91;:::o;5763:218::-;5851:4;5868:83;5877:12;:10;:12::i;:::-;5891:7;5900:50;5939:10;5900:11;:25;5912:12;:10;:12::i;:::-;-1:-1:-1;;;;;5900:25:145;;;;;;;;;;;;;;;;;-1:-1:-1;5900:25:145;;;:34;;;;;;;;;;;:38;:50::i;3506:127::-;-1:-1:-1;;;;;3607:18:145;3580:7;3607:18;;;;;;;;;;;;3506:127::o;2446:95::-;2526:7;2519:14;;;;;;;;-1:-1:-1;;2519:14:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2493:13;;2519:14;;2526:7;;2519:14;;2526:7;2519:14;;;;;;;;;;;;;;;;;;;;;;;;6484:269;6577:4;6594:129;6603:12;:10;:12::i;:::-;6617:7;6626:96;6665:15;6626:96;;;;;;;;;;;;;;;;;:11;:25;6638:12;:10;:12::i;:::-;-1:-1:-1;;;;;6626:25:145;;;;;;;;;;;;;;;;;-1:-1:-1;6626:25:145;;;:34;;;;;;;;;;;:96;:38;:96::i;3846:175::-;3932:4;3949:42;3959:12;:10;:12::i;:::-;3973:9;3984:6;3949:9;:42::i;4084:151::-;-1:-1:-1;;;;;4200:18:145;;;4173:7;4200:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4084:151::o;613:106:144:-;701:10;613:106;:::o;9631:346:145:-;-1:-1:-1;;;;;9733:19:145;;9725:68;;;;-1:-1:-1;;;9725:68:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9812:21:145;;9804:68;;;;-1:-1:-1;;;9804:68:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9885:18:145;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9937:32;;;;;;;;;;;;;;;;;9631:346;;;:::o;7243:539::-;-1:-1:-1;;;;;7349:20:145;;7341:70;;;;-1:-1:-1;;;7341:70:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7430:23:145;;7422:71;;;;-1:-1:-1;;;7422:71:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7506:47;7527:6;7535:9;7546:6;7506:20;:47::i;:::-;7586:71;7608:6;7586:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7586:17:145;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;7566:17:145;;;:9;:17;;;;;;;;;;;:91;;;;7691:20;;;;;;;:32;;7716:6;7691:24;:32::i;:::-;-1:-1:-1;;;;;7668:20:145;;;:9;:20;;;;;;;;;;;;:55;;;;7739:35;;;;;;;7668:20;;7739:35;;;;;;;;;;;;;7243:539;;;:::o;5613:166:148:-;5699:7;5735:12;5727:6;;;;5719:29;;;;-1:-1:-1;;;5719:29:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5766:5:148;;;5613:166::o;2786:179::-;2844:7;2876:5;;;2900:6;;;;2892:46;;;;;-1:-1:-1;;;2892:46:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;2956:1;2786:179;-1:-1:-1;;;2786:179:148:o;11010:92:145:-;;;;:::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\":{\"contracts/pangolin-periphery/test/library/openzeppelin/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-periphery/test/library/openzeppelin/Context.sol\":{\"keccak256\":\"0xbc7f2f08b805e299fa2d5e702051171f670ded2808044dfeb6fab4357f167138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53f7f10bb120dca002788bc57a82cb2b17178312ed95c55a378a77f9a0803ee3\",\"dweb:/ipfs/QmYPMCJo9HA9WuvkTaCHJVGipyXNUr3skeEVSXj3QJgc8U\"]},\"contracts/pangolin-periphery/test/library/openzeppelin/ERC20.sol\":{\"keccak256\":\"0xe74bcd76ad6e930a77fbb74a119b9856837af07508a54b4c9ef22ac8eb219873\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de1d647c98c4e524a59e8cd176ec4a4ff91fd1c29a3692e2f0a3b18da2b76319\",\"dweb:/ipfs/QmZVea6fUs5YSvqkFGhBbUGjsxKak5YNrBubxNJNqbMZxm\"]},\"contracts/pangolin-periphery/test/library/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xb1b439fbc95b6285b8a37a7c25bbfe77644b4706d8405709bd575a0e6d67191b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c8fe1dd8140000fbbe4dd3899c15a20ea60d3ca1f9bff27ea21b9a2ff634e5a\",\"dweb:/ipfs/QmWgpKXT8syjcKdGtYUZjceghbSQmc9LVkzSYPxDwWrvnn\"]},\"contracts/pangolin-periphery/test/library/openzeppelin/OpenZeppelinSafeMath.sol\":{\"keccak256\":\"0xe8d71e9728a1bba1de62ea467f8d1ac5a4b62de10aa330313559e9709dd7e311\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d7bdc6ecef2dde9118ee4c733620ae157a81656d05f52b53e29f1316bd2920c\",\"dweb:/ipfs/Qmf3h878mQ9Lpg88xcdNheJdpy4x9Z2UazUrXyLiLEDrcJ\"]}},\"version\":1}"}},"contracts/pangolin-periphery/test/library/openzeppelin/ERC20Burnable.sol":{"ERC20Burnable":{"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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","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":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","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\":[{\"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\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"Extension of {ERC20} that allows token holders to destroy both their own tokens and those that they have an allowance for, in a way that can be recognized off-chain (via event analysis).\",\"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}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"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\":{\"contracts/pangolin-periphery/test/library/openzeppelin/ERC20Burnable.sol\":\"ERC20Burnable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-periphery/test/library/openzeppelin/Context.sol\":{\"keccak256\":\"0xbc7f2f08b805e299fa2d5e702051171f670ded2808044dfeb6fab4357f167138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53f7f10bb120dca002788bc57a82cb2b17178312ed95c55a378a77f9a0803ee3\",\"dweb:/ipfs/QmYPMCJo9HA9WuvkTaCHJVGipyXNUr3skeEVSXj3QJgc8U\"]},\"contracts/pangolin-periphery/test/library/openzeppelin/ERC20.sol\":{\"keccak256\":\"0xe74bcd76ad6e930a77fbb74a119b9856837af07508a54b4c9ef22ac8eb219873\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de1d647c98c4e524a59e8cd176ec4a4ff91fd1c29a3692e2f0a3b18da2b76319\",\"dweb:/ipfs/QmZVea6fUs5YSvqkFGhBbUGjsxKak5YNrBubxNJNqbMZxm\"]},\"contracts/pangolin-periphery/test/library/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x054440c323d90a8552282588dc6ac80d4effc080d3a33cc75970e2cec1ee6201\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53a3354492ec596f4e092a51a938a51af542dabe51da3dbe82391e28a4bb03b0\",\"dweb:/ipfs/QmUbPhmvH7nSSYK9kPdmJMgnVAsJSNUnpnysvni6HhPWrC\"]},\"contracts/pangolin-periphery/test/library/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xb1b439fbc95b6285b8a37a7c25bbfe77644b4706d8405709bd575a0e6d67191b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c8fe1dd8140000fbbe4dd3899c15a20ea60d3ca1f9bff27ea21b9a2ff634e5a\",\"dweb:/ipfs/QmWgpKXT8syjcKdGtYUZjceghbSQmc9LVkzSYPxDwWrvnn\"]},\"contracts/pangolin-periphery/test/library/openzeppelin/OpenZeppelinSafeMath.sol\":{\"keccak256\":\"0xe8d71e9728a1bba1de62ea467f8d1ac5a4b62de10aa330313559e9709dd7e311\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d7bdc6ecef2dde9118ee4c733620ae157a81656d05f52b53e29f1316bd2920c\",\"dweb:/ipfs/Qmf3h878mQ9Lpg88xcdNheJdpy4x9Z2UazUrXyLiLEDrcJ\"]}},\"version\":1}"}},"contracts/pangolin-periphery/test/library/openzeppelin/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\":{\"contracts/pangolin-periphery/test/library/openzeppelin/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-periphery/test/library/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xb1b439fbc95b6285b8a37a7c25bbfe77644b4706d8405709bd575a0e6d67191b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c8fe1dd8140000fbbe4dd3899c15a20ea60d3ca1f9bff27ea21b9a2ff634e5a\",\"dweb:/ipfs/QmWgpKXT8syjcKdGtYUZjceghbSQmc9LVkzSYPxDwWrvnn\"]}},\"version\":1}"}},"contracts/pangolin-periphery/test/library/openzeppelin/OpenZeppelinSafeMath.sol":{"OpenZeppelinSafeMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209b7c488ab0c9b97d9c157abf33f11bfda4f509b85ba649ff932b81f1fd03c58364736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP12 PUSH29 0x488AB0C9B97D9C157ABF33F11BFDA4F509B85BA649FF932B81F1FD03C5 DUP4 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"647:6802:148:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209b7c488ab0c9b97d9c157abf33f11bfda4f509b85ba649ff932b81f1fd03c58364736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP12 PUSH29 0x488AB0C9B97D9C157ABF33F11BFDA4F509B85BA649FF932B81F1FD03C5 DUP4 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"647:6802:148:-: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\":{\"contracts/pangolin-periphery/test/library/openzeppelin/OpenZeppelinSafeMath.sol\":\"OpenZeppelinSafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-periphery/test/library/openzeppelin/OpenZeppelinSafeMath.sol\":{\"keccak256\":\"0xe8d71e9728a1bba1de62ea467f8d1ac5a4b62de10aa330313559e9709dd7e311\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d7bdc6ecef2dde9118ee4c733620ae157a81656d05f52b53e29f1316bd2920c\",\"dweb:/ipfs/Qmf3h878mQ9Lpg88xcdNheJdpy4x9Z2UazUrXyLiLEDrcJ\"]}},\"version\":1}"}},"contracts/pangolin-token/IPangolinERC20.sol":{"IPangolinERC20":{"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":[],"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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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","PERMIT_TYPEHASH()":"30adf81f","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","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\":[],\"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\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"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\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"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/pangolin-token/IPangolinERC20.sol\":\"IPangolinERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-token/IPangolinERC20.sol\":{\"keccak256\":\"0x3ce703d39e5ec3349e39e10d4e44dda6789e76494c2b0e568ffe822a1abd516b\",\"urls\":[\"bzz-raw://47a7fb280649f6f6ce4696b6024b135c534c8cc7f7e0456e55858a22b2ab8ad8\",\"dweb:/ipfs/QmcR2VmC2Kp6hcYmZvLNDFzQqvYgQydrihSADsYpqSinwt\"]}},\"version\":1}"}},"contracts/staking-rewards/StakingRewards.sol":{"StakingRewards":{"abi":[{"inputs":[{"internalType":"address","name":"_rewardsToken","type":"address"},{"internalType":"address","name":"_stakingToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Recovered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newDuration","type":"uint256"}],"name":"RewardsDurationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getRewardForDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"name":"notifyRewardAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"recoverERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardsDuration","type":"uint256"}],"name":"setRewardsDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"stakeWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"6080604052600060045560006005556201518060065534801561002157600080fd5b50604051611b08380380611b088339818101604052604081101561004457600080fd5b5080516020909101516001600090815561005c6100db565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600280546001600160a01b039384166001600160a01b031991821617909155600380549290931691161790556100df565b3390565b611a1a806100ee6000396000f3fe608060405234801561001057600080fd5b50600436106101ad5760003560e01c80638980f11f116100ee578063cd3daf9d11610097578063e9fad8ee11610071578063e9fad8ee14610382578063ebe2b12b1461038a578063ecd9ba8214610392578063f2fde38b146103ca576101ad565b8063cd3daf9d1461036a578063d1af0c7d14610372578063df136d651461037a576101ad565b8063a694fc3a116100c8578063a694fc3a14610328578063c8f33c9114610345578063cc1a378f1461034d576101ad565b80638980f11f146102ce5780638b876347146102fa5780638da5cb5b14610320576101ad565b80633c6b16ab1161015b578063715018a611610135578063715018a61461029257806372f702f31461029a5780637b0a47ee146102be57806380faa57d146102c6576101ad565b80633c6b16ab146102475780633d18b9121461026457806370a082311461026c576101ad565b80631c1f78eb1161018c5780631c1f78eb146102185780632e1a7d4d14610220578063386a95251461023f576101ad565b80628cc262146101b25780630700037d146101ea57806318160ddd14610210575b600080fd5b6101d8600480360360208110156101c857600080fd5b50356001600160a01b03166103f0565b60408051918252519081900360200190f35b6101d86004803603602081101561020057600080fd5b50356001600160a01b031661046e565b6101d8610480565b6101d8610487565b61023d6004803603602081101561023657600080fd5b50356104a5565b005b6101d8610647565b61023d6004803603602081101561025d57600080fd5b503561064d565b61023d6108a1565b6101d86004803603602081101561028257600080fd5b50356001600160a01b03166109d8565b61023d6109f3565b6102a2610ab4565b604080516001600160a01b039092168252519081900360200190f35b6101d8610ac3565b6101d8610ac9565b61023d600480360360408110156102e457600080fd5b506001600160a01b038135169060200135610ad7565b6101d86004803603602081101561031057600080fd5b50356001600160a01b0316610c54565b6102a2610c66565b61023d6004803603602081101561033e57600080fd5b5035610c75565b6101d8610e09565b61023d6004803603602081101561036357600080fd5b5035610e0f565b6101d8610f49565b6102a2610f97565b6101d8610fa6565b61023d610fac565b6101d8610fcf565b61023d600480360360a08110156103a857600080fd5b5080359060208101359060ff6040820135169060608101359060800135610fd5565b61023d600480360360208110156103e057600080fd5b50356001600160a01b03166111f8565b6001600160a01b0381166000908152600a60209081526040808320546009909252822054610468919061046290670de0b6b3a76400009061045c9061043d90610437610f49565b90611310565b6001600160a01b0388166000908152600c602052604090205490611359565b906113b2565b906113f4565b92915050565b600a6020526000908152604090205481565b600b545b90565b60006104a060065460055461135990919063ffffffff16565b905090565b600260005414156104fd576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000553361050b610f49565b600855610516610ac9565b6007556001600160a01b0381161561055d57610531816103f0565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b600082116105b2576040805162461bcd60e51b815260206004820152601160248201527f43616e6e6f742077697468647261772030000000000000000000000000000000604482015290519081900360640190fd5b600b546105bf9083611310565b600b55336000908152600c60205260409020546105dc9083611310565b336000818152600c6020526040902091909155600354610608916001600160a01b03909116908461144e565b60408051838152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a250506001600055565b60065481565b6106556114ba565b6001546001600160a01b039081169116146106b7576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60006106c1610f49565b6008556106cc610ac9565b6007556001600160a01b03811615610713576106e7816103f0565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b60045442106107325760065461072a9083906113b2565b600555610775565b6004546000906107429042611310565b9050600061075b6005548361135990919063ffffffff16565b60065490915061076f9061045c86846113f4565b60055550505b600254604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156107c057600080fd5b505afa1580156107d4573d6000803e3d6000fd5b505050506040513d60208110156107ea57600080fd5b50516006549091506107fd9082906113b2565b6005541115610853576040805162461bcd60e51b815260206004820152601860248201527f50726f76696465642072657761726420746f6f20686967680000000000000000604482015290519081900360640190fd5b42600781905560065461086691906113f4565b6004556040805184815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a1505050565b600260005414156108f9576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260005533610907610f49565b600855610912610ac9565b6007556001600160a01b038116156109595761092d816103f0565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b336000908152600a602052604090205480156109cf57336000818152600a6020526040812055600254610998916001600160a01b03909116908361144e565b60408051828152905133917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a25b50506001600055565b6001600160a01b03166000908152600c602052604090205490565b6109fb6114ba565b6001546001600160a01b03908116911614610a5d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36001805473ffffffffffffffffffffffffffffffffffffffff19169055565b6003546001600160a01b031681565b60055481565b60006104a0426004546114be565b610adf6114ba565b6001546001600160a01b03908116911614610b41576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60026000541415610b99576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000556003546001600160a01b0383811691161415610beb5760405162461bcd60e51b81526004018080602001828103825260218152602001806119c46021913960400191505060405180910390fd5b610c07610bf6610c66565b6001600160a01b038416908361144e565b604080516001600160a01b03841681526020810183905281517f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28929181900390910190a150506001600055565b60096020526000908152604090205481565b6001546001600160a01b031690565b60026000541415610ccd576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260005533610cdb610f49565b600855610ce6610ac9565b6007556001600160a01b03811615610d2d57610d01816103f0565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b60008211610d73576040805162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b604482015290519081900360640190fd5b600b54610d8090836113f4565b600b55336000908152600c6020526040902054610d9d90836113f4565b336000818152600c6020526040902091909155600354610dca916001600160a01b039091169030856114d4565b60408051838152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a250506001600055565b60075481565b610e176114ba565b6001546001600160a01b03908116911614610e79576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6004544211610eb95760405162461bcd60e51b81526004018080602001828103825260588152602001806118d56058913960600191505060405180910390fd5b60008111610f0e576040805162461bcd60e51b815260206004820152601d60248201527f526577617264206475726174696f6e2063616e2774206265207a65726f000000604482015290519081900360640190fd5b60068190556040805182815290517ffb46ca5a5e06d4540d6387b930a7c978bce0db5f449ec6b3f5d07c6e1d44f2d39181900360200190a150565b6000600b5460001415610f5f5750600854610484565b6104a0610f8e600b5461045c670de0b6b3a7640000610f88600554610f88600754610437610ac9565b90611359565b600854906113f4565b6002546001600160a01b031681565b60085481565b336000908152600c6020526040902054610fc5906104a5565b610fcd6108a1565b565b60045481565b6002600054141561102d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000553361103b610f49565b600855611046610ac9565b6007556001600160a01b0381161561108d57611061816103f0565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b600086116110d3576040805162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b604482015290519081900360640190fd5b600b546110e090876113f4565b600b55336000908152600c60205260409020546110fd90876113f4565b336000818152600c602052604080822093909355600354835163d505accf60e01b81526004810193909352306024840152604483018a90526064830189905260ff8816608484015260a4830187905260c4830186905292516001600160a01b039093169263d505accf9260e480820193929182900301818387803b15801561118457600080fd5b505af1158015611198573d6000803e3d6000fd5b50506003546111b592506001600160a01b031690503330896114d4565b60408051878152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a25050600160005550505050565b6112006114ba565b6001546001600160a01b03908116911614611262576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166112a75760405162461bcd60e51b815260040180806020018281038252602681526020018061192d6026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600061135283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611549565b9392505050565b60008261136857506000610468565b8282028284828161137557fe5b04146113525760405162461bcd60e51b81526004018080602001828103825260218152602001806119796021913960400191505060405180910390fd5b600061135283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115e0565b600082820183811015611352576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526114b5908490611645565b505050565b3390565b60008183106114cd5781611352565b5090919050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052611543908590611645565b50505050565b600081848411156115d85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561159d578181015183820152602001611585565b50505050905090810190601f1680156115ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000818361162f5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561159d578181015183820152602001611585565b50600083858161163b57fe5b0495945050505050565b600061169a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166116f69092919063ffffffff16565b8051909150156114b5578080602001905160208110156116b957600080fd5b50516114b55760405162461bcd60e51b815260040180806020018281038252602a81526020018061199a602a913960400191505060405180910390fd5b6060611705848460008561170d565b949350505050565b60608247101561174e5760405162461bcd60e51b81526004018080602001828103825260268152602001806119536026913960400191505060405180910390fd5b61175785611868565b6117a8576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106117e65780518252601f1990920191602091820191016117c7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611848576040519150601f19603f3d011682016040523d82523d6000602084013e61184d565b606091505b509150915061185d82828661186e565b979650505050505050565b3b151590565b6060831561187d575081611352565b82511561188d5782518084602001fd5b60405162461bcd60e51b815260206004820181815284516024840152845185939192839260440191908501908083836000831561159d57818101518382015260200161158556fe50726576696f7573207265776172647320706572696f64206d75737420626520636f6d706c657465206265666f7265206368616e67696e6720746865206475726174696f6e20666f7220746865206e657720706572696f644f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656443616e6e6f7420776974686472617720746865207374616b696e6720746f6b656ea26469706673582212205edc31b6679198690b3196913a408e2721845376f51ef8ef0ea6acb56115fce064736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x4 SSTORE PUSH1 0x0 PUSH1 0x5 SSTORE PUSH3 0x15180 PUSH1 0x6 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1B08 CODESIZE SUB DUP1 PUSH2 0x1B08 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH2 0x5C PUSH2 0xDB JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE PUSH2 0xDF JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x1A1A DUP1 PUSH2 0xEE 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 0x1AD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8980F11F GT PUSH2 0xEE JUMPI DUP1 PUSH4 0xCD3DAF9D GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xE9FAD8EE GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE9FAD8EE EQ PUSH2 0x382 JUMPI DUP1 PUSH4 0xEBE2B12B EQ PUSH2 0x38A JUMPI DUP1 PUSH4 0xECD9BA82 EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x3CA JUMPI PUSH2 0x1AD JUMP JUMPDEST DUP1 PUSH4 0xCD3DAF9D EQ PUSH2 0x36A JUMPI DUP1 PUSH4 0xD1AF0C7D EQ PUSH2 0x372 JUMPI DUP1 PUSH4 0xDF136D65 EQ PUSH2 0x37A JUMPI PUSH2 0x1AD JUMP JUMPDEST DUP1 PUSH4 0xA694FC3A GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0xA694FC3A EQ PUSH2 0x328 JUMPI DUP1 PUSH4 0xC8F33C91 EQ PUSH2 0x345 JUMPI DUP1 PUSH4 0xCC1A378F EQ PUSH2 0x34D JUMPI PUSH2 0x1AD JUMP JUMPDEST DUP1 PUSH4 0x8980F11F EQ PUSH2 0x2CE JUMPI DUP1 PUSH4 0x8B876347 EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x320 JUMPI PUSH2 0x1AD JUMP JUMPDEST DUP1 PUSH4 0x3C6B16AB GT PUSH2 0x15B JUMPI DUP1 PUSH4 0x715018A6 GT PUSH2 0x135 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x292 JUMPI DUP1 PUSH4 0x72F702F3 EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0x7B0A47EE EQ PUSH2 0x2BE JUMPI DUP1 PUSH4 0x80FAA57D EQ PUSH2 0x2C6 JUMPI PUSH2 0x1AD JUMP JUMPDEST DUP1 PUSH4 0x3C6B16AB EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0x3D18B912 EQ PUSH2 0x264 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x26C JUMPI PUSH2 0x1AD JUMP JUMPDEST DUP1 PUSH4 0x1C1F78EB GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x1C1F78EB EQ PUSH2 0x218 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0x386A9525 EQ PUSH2 0x23F JUMPI PUSH2 0x1AD JUMP JUMPDEST DUP1 PUSH3 0x8CC262 EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x700037D EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x210 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x46E JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x480 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x487 JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x4A5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D8 PUSH2 0x647 JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x64D JUMP JUMPDEST PUSH2 0x23D PUSH2 0x8A1 JUMP JUMPDEST PUSH2 0x1D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9D8 JUMP JUMPDEST PUSH2 0x23D PUSH2 0x9F3 JUMP JUMPDEST PUSH2 0x2A2 PUSH2 0xAB4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1D8 PUSH2 0xAC3 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0xAC9 JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0x1D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC54 JUMP JUMPDEST PUSH2 0x2A2 PUSH2 0xC66 JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC75 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0xE09 JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x363 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xE0F JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0xF49 JUMP JUMPDEST PUSH2 0x2A2 PUSH2 0xF97 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0xFA6 JUMP JUMPDEST PUSH2 0x23D PUSH2 0xFAC JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0xFCF JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0xFD5 JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11F8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x9 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0x468 SWAP2 SWAP1 PUSH2 0x462 SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 PUSH2 0x45C SWAP1 PUSH2 0x43D SWAP1 PUSH2 0x437 PUSH2 0xF49 JUMP JUMPDEST SWAP1 PUSH2 0x1310 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x1359 JUMP JUMPDEST SWAP1 PUSH2 0x13B2 JUMP JUMPDEST SWAP1 PUSH2 0x13F4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A0 PUSH1 0x6 SLOAD PUSH1 0x5 SLOAD PUSH2 0x1359 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x4FD 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 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE CALLER PUSH2 0x50B PUSH2 0xF49 JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH2 0x516 PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x55D JUMPI PUSH2 0x531 DUP2 PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x8 SLOAD PUSH1 0x9 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x5B2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742077697468647261772030000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xB SLOAD PUSH2 0x5BF SWAP1 DUP4 PUSH2 0x1310 JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x5DC SWAP1 DUP4 PUSH2 0x1310 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x3 SLOAD PUSH2 0x608 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP5 PUSH2 0x144E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x655 PUSH2 0x14BA JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x6B7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6C1 PUSH2 0xF49 JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH2 0x6CC PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x713 JUMPI PUSH2 0x6E7 DUP2 PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x8 SLOAD PUSH1 0x9 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x4 SLOAD TIMESTAMP LT PUSH2 0x732 JUMPI PUSH1 0x6 SLOAD PUSH2 0x72A SWAP1 DUP4 SWAP1 PUSH2 0x13B2 JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH2 0x775 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x742 SWAP1 TIMESTAMP PUSH2 0x1310 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x75B PUSH1 0x5 SLOAD DUP4 PUSH2 0x1359 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 SWAP2 POP PUSH2 0x76F SWAP1 PUSH2 0x45C DUP7 DUP5 PUSH2 0x13F4 JUMP JUMPDEST PUSH1 0x5 SSTORE POP POP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D4 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 0x7EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD SWAP1 SWAP2 POP PUSH2 0x7FD SWAP1 DUP3 SWAP1 PUSH2 0x13B2 JUMP JUMPDEST PUSH1 0x5 SLOAD GT ISZERO PUSH2 0x853 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F76696465642072657761726420746F6F20686967680000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST TIMESTAMP PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH2 0x866 SWAP2 SWAP1 PUSH2 0x13F4 JUMP JUMPDEST PUSH1 0x4 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xDE88A922E0D3B88B24E9623EFEB464919C6BF9F66857A65E2BFCF2CE87A9433D SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x8F9 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 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE CALLER PUSH2 0x907 PUSH2 0xF49 JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH2 0x912 PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x959 JUMPI PUSH2 0x92D DUP2 PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x8 SLOAD PUSH1 0x9 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 KECCAK256 SSTORE JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x9CF JUMPI CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x2 SLOAD PUSH2 0x998 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP4 PUSH2 0x144E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0xE2403640BA68FED3A2F88B7557551D1993F84B99BB10FF833F0CF8DB0C5E0486 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 JUMPDEST POP POP PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x9FB PUSH2 0x14BA JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xA5D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A0 TIMESTAMP PUSH1 0x4 SLOAD PUSH2 0x14BE JUMP JUMPDEST PUSH2 0xADF PUSH2 0x14BA JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xB41 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0xB99 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 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0xBEB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19C4 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC07 PUSH2 0xBF6 PUSH2 0xC66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 PUSH2 0x144E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x8C1256B8896378CD5044F80C202F9772B9D77DC85C8A6EB51967210B09BFAA28 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0xCCD 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 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE CALLER PUSH2 0xCDB PUSH2 0xF49 JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH2 0xCE6 PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0xD2D JUMPI PUSH2 0xD01 DUP2 PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x8 SLOAD PUSH1 0x9 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0xD73 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x43616E6E6F74207374616B65203 PUSH1 0x94 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xB SLOAD PUSH2 0xD80 SWAP1 DUP4 PUSH2 0x13F4 JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xD9D SWAP1 DUP4 PUSH2 0x13F4 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x3 SLOAD PUSH2 0xDCA SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 ADDRESS DUP6 PUSH2 0x14D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x9E71BC8EEA02A63969F509818F2DAFB9254532904319F9DBDA79B67BD34A5F3D SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xE17 PUSH2 0x14BA JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xE79 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD TIMESTAMP GT PUSH2 0xEB9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x58 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18D5 PUSH1 0x58 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xF0E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x526577617264206475726174696F6E2063616E2774206265207A65726F000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xFB46CA5A5E06D4540D6387B930A7C978BCE0DB5F449EC6B3F5D07C6E1D44F2D3 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD PUSH1 0x0 EQ ISZERO PUSH2 0xF5F JUMPI POP PUSH1 0x8 SLOAD PUSH2 0x484 JUMP JUMPDEST PUSH2 0x4A0 PUSH2 0xF8E PUSH1 0xB SLOAD PUSH2 0x45C PUSH8 0xDE0B6B3A7640000 PUSH2 0xF88 PUSH1 0x5 SLOAD PUSH2 0xF88 PUSH1 0x7 SLOAD PUSH2 0x437 PUSH2 0xAC9 JUMP JUMPDEST SWAP1 PUSH2 0x1359 JUMP JUMPDEST PUSH1 0x8 SLOAD SWAP1 PUSH2 0x13F4 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xFC5 SWAP1 PUSH2 0x4A5 JUMP JUMPDEST PUSH2 0xFCD PUSH2 0x8A1 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x102D 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 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE CALLER PUSH2 0x103B PUSH2 0xF49 JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH2 0x1046 PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x108D JUMPI PUSH2 0x1061 DUP2 PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x8 SLOAD PUSH1 0x9 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x0 DUP7 GT PUSH2 0x10D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x43616E6E6F74207374616B65203 PUSH1 0x94 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xB SLOAD PUSH2 0x10E0 SWAP1 DUP8 PUSH2 0x13F4 JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x10FD SWAP1 DUP8 PUSH2 0x13F4 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x3 SLOAD DUP4 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD DUP11 SWAP1 MSTORE PUSH1 0x64 DUP4 ADD DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND PUSH1 0x84 DUP5 ADD MSTORE PUSH1 0xA4 DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0xC4 DUP4 ADD DUP7 SWAP1 MSTORE SWAP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 PUSH4 0xD505ACCF SWAP3 PUSH1 0xE4 DUP1 DUP3 ADD SWAP4 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1184 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1198 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x3 SLOAD PUSH2 0x11B5 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP CALLER ADDRESS DUP10 PUSH2 0x14D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x9E71BC8EEA02A63969F509818F2DAFB9254532904319F9DBDA79B67BD34A5F3D SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP POP POP POP JUMP JUMPDEST PUSH2 0x1200 PUSH2 0x14BA JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1262 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x12A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x192D PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1352 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1549 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1368 JUMPI POP PUSH1 0x0 PUSH2 0x468 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1375 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1352 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1979 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1352 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x15E0 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1352 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 PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x14B5 SWAP1 DUP5 SWAP1 PUSH2 0x1645 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x14CD JUMPI DUP2 PUSH2 0x1352 JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x1543 SWAP1 DUP6 SWAP1 PUSH2 0x1645 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x15D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x159D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1585 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15CA 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 DUP2 DUP4 PUSH2 0x162F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x159D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1585 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x163B JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x169A DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x16F6 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x14B5 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x14B5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x199A PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH2 0x1705 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x170D JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x174E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1953 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1757 DUP6 PUSH2 0x1868 JUMP JUMPDEST PUSH2 0x17A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x17E6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x17C7 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 0x1848 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 0x184D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x185D DUP3 DUP3 DUP7 PUSH2 0x186E JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x187D JUMPI POP DUP2 PUSH2 0x1352 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x188D JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x159D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1585 JUMP INVALID POP PUSH19 0x6576696F757320726577617264732070657269 PUSH16 0x64206D75737420626520636F6D706C65 PUSH21 0x65206265666F7265206368616E67696E6720746865 KECCAK256 PUSH5 0x7572617469 PUSH16 0x6E20666F7220746865206E6577207065 PUSH19 0x696F644F776E61626C653A206E6577206F776E PUSH6 0x722069732074 PUSH9 0x65207A65726F206164 PUSH5 0x7265737341 PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH10 0x6E73756666696369656E PUSH21 0x2062616C616E636520666F722063616C6C53616665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77536166654552433230 GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x75636365656443616E6E6F742077697468647261 PUSH24 0x20746865207374616B696E6720746F6B656EA26469706673 PC 0x22 SLT KECCAK256 0x5E 0xDC BALANCE 0xB6 PUSH8 0x9198690B3196913A BLOCKHASH DUP15 0x27 0x21 DUP5 MSTORE8 PUSH23 0xF51EF8EF0EA6ACB56115FCE064736F6C63430007060033 ","sourceMap":"461:6589:150:-:0;;;735:1;705:31;;771:1;743:29;;812:6;779:39;;1156:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1156:192:150;;;;;;;1645:1:159;1760:7;:22;;;902:12:152;:10;:12::i;:::-;924:6;:18;;-1:-1:-1;;;;;;924:18:152;-1:-1:-1;;;;;924:18:152;;;;;;;;957:43;;924:18;;-1:-1:-1;924:18:152;-1:-1:-1;;957:43:152;;-1:-1:-1;;957:43:152;-1:-1:-1;1257:12:150;:36;;-1:-1:-1;;;;;1257:36:150;;;-1:-1:-1;;;;;;1257:36:150;;;;;;;1304:12;:36;;;;;;;;;;;461:6589;;598:104:151;685:10;598:104;:::o;461:6589:150:-;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101ad5760003560e01c80638980f11f116100ee578063cd3daf9d11610097578063e9fad8ee11610071578063e9fad8ee14610382578063ebe2b12b1461038a578063ecd9ba8214610392578063f2fde38b146103ca576101ad565b8063cd3daf9d1461036a578063d1af0c7d14610372578063df136d651461037a576101ad565b8063a694fc3a116100c8578063a694fc3a14610328578063c8f33c9114610345578063cc1a378f1461034d576101ad565b80638980f11f146102ce5780638b876347146102fa5780638da5cb5b14610320576101ad565b80633c6b16ab1161015b578063715018a611610135578063715018a61461029257806372f702f31461029a5780637b0a47ee146102be57806380faa57d146102c6576101ad565b80633c6b16ab146102475780633d18b9121461026457806370a082311461026c576101ad565b80631c1f78eb1161018c5780631c1f78eb146102185780632e1a7d4d14610220578063386a95251461023f576101ad565b80628cc262146101b25780630700037d146101ea57806318160ddd14610210575b600080fd5b6101d8600480360360208110156101c857600080fd5b50356001600160a01b03166103f0565b60408051918252519081900360200190f35b6101d86004803603602081101561020057600080fd5b50356001600160a01b031661046e565b6101d8610480565b6101d8610487565b61023d6004803603602081101561023657600080fd5b50356104a5565b005b6101d8610647565b61023d6004803603602081101561025d57600080fd5b503561064d565b61023d6108a1565b6101d86004803603602081101561028257600080fd5b50356001600160a01b03166109d8565b61023d6109f3565b6102a2610ab4565b604080516001600160a01b039092168252519081900360200190f35b6101d8610ac3565b6101d8610ac9565b61023d600480360360408110156102e457600080fd5b506001600160a01b038135169060200135610ad7565b6101d86004803603602081101561031057600080fd5b50356001600160a01b0316610c54565b6102a2610c66565b61023d6004803603602081101561033e57600080fd5b5035610c75565b6101d8610e09565b61023d6004803603602081101561036357600080fd5b5035610e0f565b6101d8610f49565b6102a2610f97565b6101d8610fa6565b61023d610fac565b6101d8610fcf565b61023d600480360360a08110156103a857600080fd5b5080359060208101359060ff6040820135169060608101359060800135610fd5565b61023d600480360360208110156103e057600080fd5b50356001600160a01b03166111f8565b6001600160a01b0381166000908152600a60209081526040808320546009909252822054610468919061046290670de0b6b3a76400009061045c9061043d90610437610f49565b90611310565b6001600160a01b0388166000908152600c602052604090205490611359565b906113b2565b906113f4565b92915050565b600a6020526000908152604090205481565b600b545b90565b60006104a060065460055461135990919063ffffffff16565b905090565b600260005414156104fd576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000553361050b610f49565b600855610516610ac9565b6007556001600160a01b0381161561055d57610531816103f0565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b600082116105b2576040805162461bcd60e51b815260206004820152601160248201527f43616e6e6f742077697468647261772030000000000000000000000000000000604482015290519081900360640190fd5b600b546105bf9083611310565b600b55336000908152600c60205260409020546105dc9083611310565b336000818152600c6020526040902091909155600354610608916001600160a01b03909116908461144e565b60408051838152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a250506001600055565b60065481565b6106556114ba565b6001546001600160a01b039081169116146106b7576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60006106c1610f49565b6008556106cc610ac9565b6007556001600160a01b03811615610713576106e7816103f0565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b60045442106107325760065461072a9083906113b2565b600555610775565b6004546000906107429042611310565b9050600061075b6005548361135990919063ffffffff16565b60065490915061076f9061045c86846113f4565b60055550505b600254604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156107c057600080fd5b505afa1580156107d4573d6000803e3d6000fd5b505050506040513d60208110156107ea57600080fd5b50516006549091506107fd9082906113b2565b6005541115610853576040805162461bcd60e51b815260206004820152601860248201527f50726f76696465642072657761726420746f6f20686967680000000000000000604482015290519081900360640190fd5b42600781905560065461086691906113f4565b6004556040805184815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a1505050565b600260005414156108f9576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260005533610907610f49565b600855610912610ac9565b6007556001600160a01b038116156109595761092d816103f0565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b336000908152600a602052604090205480156109cf57336000818152600a6020526040812055600254610998916001600160a01b03909116908361144e565b60408051828152905133917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a25b50506001600055565b6001600160a01b03166000908152600c602052604090205490565b6109fb6114ba565b6001546001600160a01b03908116911614610a5d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36001805473ffffffffffffffffffffffffffffffffffffffff19169055565b6003546001600160a01b031681565b60055481565b60006104a0426004546114be565b610adf6114ba565b6001546001600160a01b03908116911614610b41576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60026000541415610b99576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000556003546001600160a01b0383811691161415610beb5760405162461bcd60e51b81526004018080602001828103825260218152602001806119c46021913960400191505060405180910390fd5b610c07610bf6610c66565b6001600160a01b038416908361144e565b604080516001600160a01b03841681526020810183905281517f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28929181900390910190a150506001600055565b60096020526000908152604090205481565b6001546001600160a01b031690565b60026000541415610ccd576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260005533610cdb610f49565b600855610ce6610ac9565b6007556001600160a01b03811615610d2d57610d01816103f0565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b60008211610d73576040805162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b604482015290519081900360640190fd5b600b54610d8090836113f4565b600b55336000908152600c6020526040902054610d9d90836113f4565b336000818152600c6020526040902091909155600354610dca916001600160a01b039091169030856114d4565b60408051838152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a250506001600055565b60075481565b610e176114ba565b6001546001600160a01b03908116911614610e79576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6004544211610eb95760405162461bcd60e51b81526004018080602001828103825260588152602001806118d56058913960600191505060405180910390fd5b60008111610f0e576040805162461bcd60e51b815260206004820152601d60248201527f526577617264206475726174696f6e2063616e2774206265207a65726f000000604482015290519081900360640190fd5b60068190556040805182815290517ffb46ca5a5e06d4540d6387b930a7c978bce0db5f449ec6b3f5d07c6e1d44f2d39181900360200190a150565b6000600b5460001415610f5f5750600854610484565b6104a0610f8e600b5461045c670de0b6b3a7640000610f88600554610f88600754610437610ac9565b90611359565b600854906113f4565b6002546001600160a01b031681565b60085481565b336000908152600c6020526040902054610fc5906104a5565b610fcd6108a1565b565b60045481565b6002600054141561102d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000553361103b610f49565b600855611046610ac9565b6007556001600160a01b0381161561108d57611061816103f0565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b600086116110d3576040805162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b604482015290519081900360640190fd5b600b546110e090876113f4565b600b55336000908152600c60205260409020546110fd90876113f4565b336000818152600c602052604080822093909355600354835163d505accf60e01b81526004810193909352306024840152604483018a90526064830189905260ff8816608484015260a4830187905260c4830186905292516001600160a01b039093169263d505accf9260e480820193929182900301818387803b15801561118457600080fd5b505af1158015611198573d6000803e3d6000fd5b50506003546111b592506001600160a01b031690503330896114d4565b60408051878152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a25050600160005550505050565b6112006114ba565b6001546001600160a01b03908116911614611262576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166112a75760405162461bcd60e51b815260040180806020018281038252602681526020018061192d6026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600061135283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611549565b9392505050565b60008261136857506000610468565b8282028284828161137557fe5b04146113525760405162461bcd60e51b81526004018080602001828103825260218152602001806119796021913960400191505060405180910390fd5b600061135283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115e0565b600082820183811015611352576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526114b5908490611645565b505050565b3390565b60008183106114cd5781611352565b5090919050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052611543908590611645565b50505050565b600081848411156115d85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561159d578181015183820152602001611585565b50505050905090810190601f1680156115ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000818361162f5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561159d578181015183820152602001611585565b50600083858161163b57fe5b0495945050505050565b600061169a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166116f69092919063ffffffff16565b8051909150156114b5578080602001905160208110156116b957600080fd5b50516114b55760405162461bcd60e51b815260040180806020018281038252602a81526020018061199a602a913960400191505060405180910390fd5b6060611705848460008561170d565b949350505050565b60608247101561174e5760405162461bcd60e51b81526004018080602001828103825260268152602001806119536026913960400191505060405180910390fd5b61175785611868565b6117a8576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106117e65780518252601f1990920191602091820191016117c7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611848576040519150601f19603f3d011682016040523d82523d6000602084013e61184d565b606091505b509150915061185d82828661186e565b979650505050505050565b3b151590565b6060831561187d575081611352565b82511561188d5782518084602001fd5b60405162461bcd60e51b815260206004820181815284516024840152845185939192839260440191908501908083836000831561159d57818101518382015260200161158556fe50726576696f7573207265776172647320706572696f64206d75737420626520636f6d706c657465206265666f7265206368616e67696e6720746865206475726174696f6e20666f7220746865206e657720706572696f644f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656443616e6e6f7420776974686472617720746865207374616b696e6720746f6b656ea26469706673582212205edc31b6679198690b3196913a408e2721845376f51ef8ef0ea6acb56115fce064736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1AD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8980F11F GT PUSH2 0xEE JUMPI DUP1 PUSH4 0xCD3DAF9D GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xE9FAD8EE GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE9FAD8EE EQ PUSH2 0x382 JUMPI DUP1 PUSH4 0xEBE2B12B EQ PUSH2 0x38A JUMPI DUP1 PUSH4 0xECD9BA82 EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x3CA JUMPI PUSH2 0x1AD JUMP JUMPDEST DUP1 PUSH4 0xCD3DAF9D EQ PUSH2 0x36A JUMPI DUP1 PUSH4 0xD1AF0C7D EQ PUSH2 0x372 JUMPI DUP1 PUSH4 0xDF136D65 EQ PUSH2 0x37A JUMPI PUSH2 0x1AD JUMP JUMPDEST DUP1 PUSH4 0xA694FC3A GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0xA694FC3A EQ PUSH2 0x328 JUMPI DUP1 PUSH4 0xC8F33C91 EQ PUSH2 0x345 JUMPI DUP1 PUSH4 0xCC1A378F EQ PUSH2 0x34D JUMPI PUSH2 0x1AD JUMP JUMPDEST DUP1 PUSH4 0x8980F11F EQ PUSH2 0x2CE JUMPI DUP1 PUSH4 0x8B876347 EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x320 JUMPI PUSH2 0x1AD JUMP JUMPDEST DUP1 PUSH4 0x3C6B16AB GT PUSH2 0x15B JUMPI DUP1 PUSH4 0x715018A6 GT PUSH2 0x135 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x292 JUMPI DUP1 PUSH4 0x72F702F3 EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0x7B0A47EE EQ PUSH2 0x2BE JUMPI DUP1 PUSH4 0x80FAA57D EQ PUSH2 0x2C6 JUMPI PUSH2 0x1AD JUMP JUMPDEST DUP1 PUSH4 0x3C6B16AB EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0x3D18B912 EQ PUSH2 0x264 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x26C JUMPI PUSH2 0x1AD JUMP JUMPDEST DUP1 PUSH4 0x1C1F78EB GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x1C1F78EB EQ PUSH2 0x218 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0x386A9525 EQ PUSH2 0x23F JUMPI PUSH2 0x1AD JUMP JUMPDEST DUP1 PUSH3 0x8CC262 EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x700037D EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x210 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x46E JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x480 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x487 JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x4A5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D8 PUSH2 0x647 JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x64D JUMP JUMPDEST PUSH2 0x23D PUSH2 0x8A1 JUMP JUMPDEST PUSH2 0x1D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9D8 JUMP JUMPDEST PUSH2 0x23D PUSH2 0x9F3 JUMP JUMPDEST PUSH2 0x2A2 PUSH2 0xAB4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1D8 PUSH2 0xAC3 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0xAC9 JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0x1D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC54 JUMP JUMPDEST PUSH2 0x2A2 PUSH2 0xC66 JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC75 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0xE09 JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x363 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xE0F JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0xF49 JUMP JUMPDEST PUSH2 0x2A2 PUSH2 0xF97 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0xFA6 JUMP JUMPDEST PUSH2 0x23D PUSH2 0xFAC JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0xFCF JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0xFD5 JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11F8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x9 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0x468 SWAP2 SWAP1 PUSH2 0x462 SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 PUSH2 0x45C SWAP1 PUSH2 0x43D SWAP1 PUSH2 0x437 PUSH2 0xF49 JUMP JUMPDEST SWAP1 PUSH2 0x1310 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x1359 JUMP JUMPDEST SWAP1 PUSH2 0x13B2 JUMP JUMPDEST SWAP1 PUSH2 0x13F4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A0 PUSH1 0x6 SLOAD PUSH1 0x5 SLOAD PUSH2 0x1359 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x4FD 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 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE CALLER PUSH2 0x50B PUSH2 0xF49 JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH2 0x516 PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x55D JUMPI PUSH2 0x531 DUP2 PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x8 SLOAD PUSH1 0x9 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x5B2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742077697468647261772030000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xB SLOAD PUSH2 0x5BF SWAP1 DUP4 PUSH2 0x1310 JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x5DC SWAP1 DUP4 PUSH2 0x1310 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x3 SLOAD PUSH2 0x608 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP5 PUSH2 0x144E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x655 PUSH2 0x14BA JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x6B7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6C1 PUSH2 0xF49 JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH2 0x6CC PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x713 JUMPI PUSH2 0x6E7 DUP2 PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x8 SLOAD PUSH1 0x9 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x4 SLOAD TIMESTAMP LT PUSH2 0x732 JUMPI PUSH1 0x6 SLOAD PUSH2 0x72A SWAP1 DUP4 SWAP1 PUSH2 0x13B2 JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH2 0x775 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x742 SWAP1 TIMESTAMP PUSH2 0x1310 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x75B PUSH1 0x5 SLOAD DUP4 PUSH2 0x1359 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 SWAP2 POP PUSH2 0x76F SWAP1 PUSH2 0x45C DUP7 DUP5 PUSH2 0x13F4 JUMP JUMPDEST PUSH1 0x5 SSTORE POP POP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D4 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 0x7EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD SWAP1 SWAP2 POP PUSH2 0x7FD SWAP1 DUP3 SWAP1 PUSH2 0x13B2 JUMP JUMPDEST PUSH1 0x5 SLOAD GT ISZERO PUSH2 0x853 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F76696465642072657761726420746F6F20686967680000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST TIMESTAMP PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH2 0x866 SWAP2 SWAP1 PUSH2 0x13F4 JUMP JUMPDEST PUSH1 0x4 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xDE88A922E0D3B88B24E9623EFEB464919C6BF9F66857A65E2BFCF2CE87A9433D SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x8F9 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 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE CALLER PUSH2 0x907 PUSH2 0xF49 JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH2 0x912 PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x959 JUMPI PUSH2 0x92D DUP2 PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x8 SLOAD PUSH1 0x9 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 KECCAK256 SSTORE JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x9CF JUMPI CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x2 SLOAD PUSH2 0x998 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP4 PUSH2 0x144E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0xE2403640BA68FED3A2F88B7557551D1993F84B99BB10FF833F0CF8DB0C5E0486 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 JUMPDEST POP POP PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x9FB PUSH2 0x14BA JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xA5D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A0 TIMESTAMP PUSH1 0x4 SLOAD PUSH2 0x14BE JUMP JUMPDEST PUSH2 0xADF PUSH2 0x14BA JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xB41 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0xB99 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 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0xBEB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19C4 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC07 PUSH2 0xBF6 PUSH2 0xC66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 PUSH2 0x144E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x8C1256B8896378CD5044F80C202F9772B9D77DC85C8A6EB51967210B09BFAA28 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0xCCD 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 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE CALLER PUSH2 0xCDB PUSH2 0xF49 JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH2 0xCE6 PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0xD2D JUMPI PUSH2 0xD01 DUP2 PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x8 SLOAD PUSH1 0x9 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0xD73 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x43616E6E6F74207374616B65203 PUSH1 0x94 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xB SLOAD PUSH2 0xD80 SWAP1 DUP4 PUSH2 0x13F4 JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xD9D SWAP1 DUP4 PUSH2 0x13F4 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x3 SLOAD PUSH2 0xDCA SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 ADDRESS DUP6 PUSH2 0x14D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x9E71BC8EEA02A63969F509818F2DAFB9254532904319F9DBDA79B67BD34A5F3D SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xE17 PUSH2 0x14BA JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xE79 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD TIMESTAMP GT PUSH2 0xEB9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x58 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18D5 PUSH1 0x58 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xF0E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x526577617264206475726174696F6E2063616E2774206265207A65726F000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xFB46CA5A5E06D4540D6387B930A7C978BCE0DB5F449EC6B3F5D07C6E1D44F2D3 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD PUSH1 0x0 EQ ISZERO PUSH2 0xF5F JUMPI POP PUSH1 0x8 SLOAD PUSH2 0x484 JUMP JUMPDEST PUSH2 0x4A0 PUSH2 0xF8E PUSH1 0xB SLOAD PUSH2 0x45C PUSH8 0xDE0B6B3A7640000 PUSH2 0xF88 PUSH1 0x5 SLOAD PUSH2 0xF88 PUSH1 0x7 SLOAD PUSH2 0x437 PUSH2 0xAC9 JUMP JUMPDEST SWAP1 PUSH2 0x1359 JUMP JUMPDEST PUSH1 0x8 SLOAD SWAP1 PUSH2 0x13F4 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xFC5 SWAP1 PUSH2 0x4A5 JUMP JUMPDEST PUSH2 0xFCD PUSH2 0x8A1 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x102D 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 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE CALLER PUSH2 0x103B PUSH2 0xF49 JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH2 0x1046 PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x108D JUMPI PUSH2 0x1061 DUP2 PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x8 SLOAD PUSH1 0x9 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x0 DUP7 GT PUSH2 0x10D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x43616E6E6F74207374616B65203 PUSH1 0x94 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xB SLOAD PUSH2 0x10E0 SWAP1 DUP8 PUSH2 0x13F4 JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x10FD SWAP1 DUP8 PUSH2 0x13F4 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x3 SLOAD DUP4 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE ADDRESS PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD DUP11 SWAP1 MSTORE PUSH1 0x64 DUP4 ADD DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND PUSH1 0x84 DUP5 ADD MSTORE PUSH1 0xA4 DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0xC4 DUP4 ADD DUP7 SWAP1 MSTORE SWAP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 PUSH4 0xD505ACCF SWAP3 PUSH1 0xE4 DUP1 DUP3 ADD SWAP4 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1184 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1198 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x3 SLOAD PUSH2 0x11B5 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP CALLER ADDRESS DUP10 PUSH2 0x14D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x9E71BC8EEA02A63969F509818F2DAFB9254532904319F9DBDA79B67BD34A5F3D SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP POP POP POP JUMP JUMPDEST PUSH2 0x1200 PUSH2 0x14BA JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1262 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x12A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x192D PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1352 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1549 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1368 JUMPI POP PUSH1 0x0 PUSH2 0x468 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1375 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1352 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1979 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1352 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x15E0 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1352 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 PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x14B5 SWAP1 DUP5 SWAP1 PUSH2 0x1645 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x14CD JUMPI DUP2 PUSH2 0x1352 JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x1543 SWAP1 DUP6 SWAP1 PUSH2 0x1645 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x15D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x159D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1585 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15CA 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 DUP2 DUP4 PUSH2 0x162F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x159D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1585 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x163B JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x169A DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x16F6 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x14B5 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x14B5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x199A PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH2 0x1705 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x170D JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x174E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1953 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1757 DUP6 PUSH2 0x1868 JUMP JUMPDEST PUSH2 0x17A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x17E6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x17C7 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 0x1848 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 0x184D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x185D DUP3 DUP3 DUP7 PUSH2 0x186E JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x187D JUMPI POP DUP2 PUSH2 0x1352 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x188D JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x159D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1585 JUMP INVALID POP PUSH19 0x6576696F757320726577617264732070657269 PUSH16 0x64206D75737420626520636F6D706C65 PUSH21 0x65206265666F7265206368616E67696E6720746865 KECCAK256 PUSH5 0x7572617469 PUSH16 0x6E20666F7220746865206E6577207065 PUSH19 0x696F644F776E61626C653A206E6577206F776E PUSH6 0x722069732074 PUSH9 0x65207A65726F206164 PUSH5 0x7265737341 PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH10 0x6E73756666696369656E PUSH21 0x2062616C616E636520666F722063616C6C53616665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77536166654552433230 GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x75636365656443616E6E6F742077697468647261 PUSH24 0x20746865207374616B696E6720746F6B656EA26469706673 PC 0x22 SLT KECCAK256 0x5E 0xDC BALANCE 0xB6 PUSH8 0x9198690B3196913A BLOCKHASH DUP15 0x27 0x21 DUP5 MSTORE8 PUSH23 0xF51EF8EF0EA6ACB56115FCE064736F6C63430007060033 ","sourceMap":"461:6589:150:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2095:198;;;;;;;;;;;;;;;;-1:-1:-1;2095:198:150;-1:-1:-1;;;;;2095:198:150;;:::i;:::-;;;;;;;;;;;;;;;;969:42;;;;;;;;;;;;;;;;-1:-1:-1;969:42:150;-1:-1:-1;;;;;969:42:150;;:::i;1397:93::-;;;:::i;2301:121::-;;;:::i;3426:357::-;;;;;;;;;;;;;;;;-1:-1:-1;3426:357:150;;:::i;:::-;;779:39;;;:::i;4351:1069::-;;;;;;;;;;;;;;;;-1:-1:-1;4351:1069:150;;:::i;3791:307::-;;;:::i;1498:112::-;;;;;;;;;;;;;;;;-1:-1:-1;1498:112:150;-1:-1:-1;;;;;1498:112:150;;:::i;1706:145:152:-;;;:::i;672:26:150:-;;;:::i;:::-;;;;-1:-1:-1;;;;;672:26:150;;;;;;;;;;;;;;743:29;;;:::i;1618:131::-;;;:::i;5535:317::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5535:317:150;;;;;;;;:::i;905:57::-;;;;;;;;;;;;;;;;-1:-1:-1;905:57:150;-1:-1:-1;;;;;905:57:150;;:::i;1083:77:152:-;;;:::i;3049:369:150:-;;;;;;;;;;;;;;;;-1:-1:-1;3049:369:150;;:::i;825:29::-;;;:::i;5860:433::-;;;;;;;;;;;;;;;;-1:-1:-1;5860:433:150;;:::i;1757:330::-;;;:::i;639:26::-;;;:::i;861:35::-;;;:::i;4106:97::-;;;:::i;705:31::-;;;:::i;2484:557::-;;;;;;;;;;;;;;;;-1:-1:-1;2484:557:150;;;;;;;;;;;;;;;;;;;;;;;;:::i;2000:240:152:-;;;;;;;;;;;;;;;;-1:-1:-1;2000:240:152;-1:-1:-1;;;;;2000:240:152;;:::i;2095:198:150:-;-1:-1:-1;;;;;2268:16:150;;2149:7;2268:16;;;:7;:16;;;;;;;;;2220:22;:31;;;;;;2176:109;;2268:16;2176:87;;2258:4;;2176:77;;2199:53;;:16;:14;:16::i;:::-;:20;;:53::i;:::-;-1:-1:-1;;;;;2176:18:150;;;;;;:9;:18;;;;;;;:22;:77::i;:::-;:81;;:87::i;:::-;:91;;:109::i;:::-;2169:116;2095:198;-1:-1:-1;;2095:198:150:o;969:42::-;;;;;;;;;;;;;:::o;1397:93::-;1470:12;;1397:93;;:::o;2301:121::-;2356:7;2383:31;2398:15;;2383:10;;:14;;:31;;;;:::i;:::-;2376:38;;2301:121;:::o;3426:357::-;1688:1:159;2277:7;;:19;;2269:63;;;;;-1:-1:-1;;;2269:63:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;1688:1;2407:7;:18;3493:10:150::1;6419:16;:14;:16::i;:::-;6396:20;:39:::0;6463:26:::1;:24;:26::i;:::-;6446:14;:43:::0;-1:-1:-1;;;;;6504:21:150;::::1;::::0;6500:157:::1;;6561:15;6568:7;6561:6;:15::i;:::-;-1:-1:-1::0;;;;;6542:16:150;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:34;;;;6625:20:::1;::::0;6591:22:::1;:31:::0;;;;;;:54;6500:157:::1;3533:1:::2;3524:6;:10;3516:40;;;::::0;;-1:-1:-1;;;3516:40:150;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;3582:12;::::0;:24:::2;::::0;3599:6;3582:16:::2;:24::i;:::-;3567:12;:39:::0;3651:10:::2;3641:21;::::0;;;:9:::2;:21;::::0;;;;;:33:::2;::::0;3667:6;3641:25:::2;:33::i;:::-;3627:10;3617:21;::::0;;;:9:::2;:21;::::0;;;;:57;;;;3685:12:::2;::::0;:45:::2;::::0;-1:-1:-1;;;;;3685:12:150;;::::2;::::0;3723:6;3685:25:::2;:45::i;:::-;3746:29;::::0;;;;;;;3756:10:::2;::::0;3746:29:::2;::::0;;;;;::::2;::::0;;::::2;-1:-1:-1::0;;1645:1:159;2580:7;:22;3426:357:150:o;779:39::-;;;;:::o;4351:1069::-;1297:12:152;:10;:12::i;:::-;1287:6;;-1:-1:-1;;;;;1287:6:152;;;:22;;;1279:67;;;;;-1:-1:-1;;;1279:67:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4435:1:150::1;6419:16;:14;:16::i;:::-;6396:20;:39:::0;6463:26:::1;:24;:26::i;:::-;6446:14;:43:::0;-1:-1:-1;;;;;6504:21:150;::::1;::::0;6500:157:::1;;6561:15;6568:7;6561:6;:15::i;:::-;-1:-1:-1::0;;;;;6542:16:150;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:34;;;;6625:20:::1;::::0;6591:22:::1;:31:::0;;;;;;:54;6500:157:::1;4473:12:::2;;4454:15;:31;4450:318;;4526:15;::::0;4515:27:::2;::::0;:6;;:10:::2;:27::i;:::-;4502:10;:40:::0;4450:318:::2;;;4595:12;::::0;4575:17:::2;::::0;4595:33:::2;::::0;4612:15:::2;4595:16;:33::i;:::-;4575:53;;4643:16;4662:25;4676:10;;4662:9;:13;;:25;;;;:::i;:::-;4740:15;::::0;4643:44;;-1:-1:-1;4715:41:150::2;::::0;:20:::2;:6:::0;4643:44;4715:10:::2;:20::i;:41::-;4702:10;:54:::0;-1:-1:-1;;4450:318:150::2;5143:12;::::0;:37:::2;::::0;;-1:-1:-1;;;5143:37:150;;5174:4:::2;5143:37;::::0;::::2;::::0;;;5128:12:::2;::::0;-1:-1:-1;;;;;5143:12:150::2;::::0;:22:::2;::::0;:37;;;;;::::2;::::0;;;;;;;;:12;:37;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;5143:37:150;5225:15:::2;::::0;5143:37;;-1:-1:-1;5213:28:150::2;::::0;5143:37;;5213:11:::2;:28::i;:::-;5199:10;;:42;;5191:79;;;::::0;;-1:-1:-1;;;5191:79:150;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;5300:15;5283:14;:32:::0;;;5361:15:::2;::::0;5341:36:::2;::::0;5300:15;5341:19:::2;:36::i;:::-;5326:12;:51:::0;5393:19:::2;::::0;;;;;;;::::2;::::0;;;;::::2;::::0;;::::2;6667:1;1356::152::1;4351:1069:150::0;:::o;3791:307::-;1688:1:159;2277:7;;:19;;2269:63;;;;;-1:-1:-1;;;2269:63:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;1688:1;2407:7;:18;3845:10:150::1;6419:16;:14;:16::i;:::-;6396:20;:39:::0;6463:26:::1;:24;:26::i;:::-;6446:14;:43:::0;-1:-1:-1;;;;;6504:21:150;::::1;::::0;6500:157:::1;;6561:15;6568:7;6561:6;:15::i;:::-;-1:-1:-1::0;;;;;6542:16:150;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:34;;;;6625:20:::1;::::0;6591:22:::1;:31:::0;;;;;;:54;6500:157:::1;3893:10:::2;3868:14;3885:19:::0;;;:7:::2;:19;::::0;;;;;3919:10;;3915:176:::2;;3954:10;3968:1;3946:19:::0;;;:7:::2;:19;::::0;;;;:23;3984:12:::2;::::0;:45:::2;::::0;-1:-1:-1;;;;;3984:12:150;;::::2;::::0;4022:6;3984:25:::2;:45::i;:::-;4049:30;::::0;;;;;;;4060:10:::2;::::0;4049:30:::2;::::0;;;;;::::2;::::0;;::::2;3915:176;-1:-1:-1::0;;1645:1:159;2580:7;:22;3791:307:150:o;1498:112::-;-1:-1:-1;;;;;1584:18:150;1557:7;1584:18;;;:9;:18;;;;;;;1498:112::o;1706:145:152:-;1297:12;:10;:12::i;:::-;1287:6;;-1:-1:-1;;;;;1287:6:152;;;:22;;;1279:67;;;;;-1:-1:-1;;;1279:67:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1796:6:::1;::::0;1775:40:::1;::::0;1812:1:::1;::::0;-1:-1:-1;;;;;1796:6:152::1;::::0;1775:40:::1;::::0;1812:1;;1775:40:::1;1825:6;:19:::0;;-1:-1:-1;;1825:19:152::1;::::0;;1706:145::o;672:26:150:-;;;-1:-1:-1;;;;;672:26:150;;:::o;743:29::-;;;;:::o;1618:131::-;1675:7;1702:39;1711:15;1728:12;;1702:8;:39::i;5535:317::-;1297:12:152;:10;:12::i;:::-;1287:6;;-1:-1:-1;;;;;1287:6:152;;;:22;;;1279:67;;;;;-1:-1:-1;;;1279:67:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1688:1:159::1;2277:7;;:19;;2269:63;;;::::0;;-1:-1:-1;;;2269:63:159;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;1688:1;2407:7;:18:::0;5675:12:150::2;::::0;-1:-1:-1;;;;;5651:37:150;;::::2;5675:12:::0;::::2;5651:37;;5643:83;;;;-1:-1:-1::0;;;5643:83:150::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5737:55;5771:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;5737:33:150;::::2;::::0;5780:11;5737:33:::2;:55::i;:::-;5808:36;::::0;;-1:-1:-1;;;;;5808:36:150;::::2;::::0;;::::2;::::0;::::2;::::0;;;;;::::2;::::0;;;;;;;;;::::2;-1:-1:-1::0;;1645:1:159::1;2580:7;:22:::0;5535:317:150:o;905:57::-;;;;;;;;;;;;;:::o;1083:77:152:-;1147:6;;-1:-1:-1;;;;;1147:6:152;1083:77;:::o;3049:369:150:-;1688:1:159;2277:7;;:19;;2269:63;;;;;-1:-1:-1;;;2269:63:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;1688:1;2407:7;:18;3115:10:150::1;6419:16;:14;:16::i;:::-;6396:20;:39:::0;6463:26:::1;:24;:26::i;:::-;6446:14;:43:::0;-1:-1:-1;;;;;6504:21:150;::::1;::::0;6500:157:::1;;6561:15;6568:7;6561:6;:15::i;:::-;-1:-1:-1::0;;;;;6542:16:150;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:34;;;;6625:20:::1;::::0;6591:22:::1;:31:::0;;;;;;:54;6500:157:::1;3155:1:::2;3146:6;:10;3138:37;;;::::0;;-1:-1:-1;;;3138:37:150;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;3138:37:150;;;;;;;;;;;;;::::2;;3201:12;::::0;:24:::2;::::0;3218:6;3201:16:::2;:24::i;:::-;3186:12;:39:::0;3270:10:::2;3260:21;::::0;;;:9:::2;:21;::::0;;;;;:33:::2;::::0;3286:6;3260:25:::2;:33::i;:::-;3246:10;3236:21;::::0;;;:9:::2;:21;::::0;;;;:57;;;;3304:12:::2;::::0;:64:::2;::::0;-1:-1:-1;;;;;3304:12:150;;::::2;::::0;3354:4:::2;3361:6:::0;3304:29:::2;:64::i;:::-;3384:26;::::0;;;;;;;3391:10:::2;::::0;3384:26:::2;::::0;;;;;::::2;::::0;;::::2;-1:-1:-1::0;;1645:1:159;2580:7;:22;3049:369:150:o;825:29::-;;;;:::o;5860:433::-;1297:12:152;:10;:12::i;:::-;1287:6;;-1:-1:-1;;;;;1287:6:152;;;:22;;;1279:67;;;;;-1:-1:-1;;;1279:67:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5984:12:150::1;;5966:15;:30;5944:168;;;;-1:-1:-1::0;;;5944:168:150::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6150:1;6131:16;:20;6123:62;;;::::0;;-1:-1:-1;;;6123:62:150;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;6196:15;:34:::0;;;6246:39:::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;5860:433:::0;:::o;1757:330::-;1804:7;1828:12;;1844:1;1828:17;1824:77;;;-1:-1:-1;1869:20:150;;1862:27;;1824:77;1931:148;1974:90;2051:12;;1974:72;2041:4;1974:62;2025:10;;1974:46;2005:14;;1974:26;:24;:26::i;:46::-;:50;;:62::i;:90::-;1931:20;;;:24;:148::i;639:26::-;;;-1:-1:-1;;;;;639:26:150;;:::o;861:35::-;;;;:::o;4106:97::-;4161:10;4151:21;;;;:9;:21;;;;;;4142:31;;:8;:31::i;:::-;4184:11;:9;:11::i;:::-;4106:97::o;705:31::-;;;;:::o;2484:557::-;1688:1:159;2277:7;;:19;;2269:63;;;;;-1:-1:-1;;;2269:63:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;1688:1;2407:7;:18;2606:10:150::1;6419:16;:14;:16::i;:::-;6396:20;:39:::0;6463:26:::1;:24;:26::i;:::-;6446:14;:43:::0;-1:-1:-1;;;;;6504:21:150;::::1;::::0;6500:157:::1;;6561:15;6568:7;6561:6;:15::i;:::-;-1:-1:-1::0;;;;;6542:16:150;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:34;;;;6625:20:::1;::::0;6591:22:::1;:31:::0;;;;;;:54;6500:157:::1;2646:1:::2;2637:6;:10;2629:37;;;::::0;;-1:-1:-1;;;2629:37:150;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;2629:37:150;;;;;;;;;;;;;::::2;;2692:12;::::0;:24:::2;::::0;2709:6;2692:16:::2;:24::i;:::-;2677:12;:39:::0;2761:10:::2;2751:21;::::0;;;:9:::2;:21;::::0;;;;;:33:::2;::::0;2777:6;2751:25:::2;:33::i;:::-;2737:10;2727:21;::::0;;;:9:::2;:21;::::0;;;;;:57;;;;2839:12:::2;::::0;2816:98;;-1:-1:-1;;;2816:98:150;;::::2;::::0;::::2;::::0;;;;2881:4:::2;2816:98:::0;;;;;;;;;;;;;;;;::::2;::::0;::::2;::::0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2839:12:150;;::::2;::::0;2816:44:::2;::::0;:98;;;;;2727:21;2816:98;;;;;;2727:21;2839:12;2816:98;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;2927:12:150::2;::::0;:64:::2;::::0;-1:-1:-1;;;;;;2927:12:150::2;::::0;-1:-1:-1;2957:10:150::2;2977:4;2984:6:::0;2927:29:::2;:64::i;:::-;3007:26;::::0;;;;;;;3014:10:::2;::::0;3007:26:::2;::::0;;;;;::::2;::::0;;::::2;-1:-1:-1::0;;1645:1:159;2580:7;:22;-1:-1:-1;;;;2484:557:150:o;2000:240:152:-;1297:12;:10;:12::i;:::-;1287:6;;-1:-1:-1;;;;;1287:6:152;;;:22;;;1279:67;;;;;-1:-1:-1;;;1279:67:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2088:22:152;::::1;2080:73;;;;-1:-1:-1::0;;;2080:73:152::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2189:6;::::0;2168:38:::1;::::0;-1:-1:-1;;;;;2168:38:152;;::::1;::::0;2189:6:::1;::::0;2168:38:::1;::::0;2189:6:::1;::::0;2168:38:::1;2216:6;:17:::0;;-1:-1:-1;;2216:17:152::1;-1:-1:-1::0;;;;;2216:17:152;;;::::1;::::0;;;::::1;::::0;;2000:240::o;1329:134:154:-;1387:7;1413:43;1417:1;1420;1413:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1406:50;1329:134;-1:-1:-1;;;1329:134:154:o;2188:459::-;2246:7;2487:6;2483:45;;-1:-1:-1;2516:1:154;2509:8;;2483:45;2550:5;;;2554:1;2550;:5;:1;2573:5;;;;;:10;2565:56;;;;-1:-1:-1;;;2565:56:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3109:130;3167:7;3193:39;3197:1;3200;3193:39;;;;;;;;;;;;;;;;;:3;:39::i;882:176::-;940:7;971:5;;;994:6;;;;986:46;;;;;-1:-1:-1;;;986:46:154;;;;;;;;;;;;;;;;;;;;;;;;;;;704:175:157;813:58;;;-1:-1:-1;;;;;813:58:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;813:58:157;;;786:86;;806:5;;786:19;:86::i;:::-;704:175;;;:::o;598:104:151:-;685:10;598:104;:::o;399::153:-;457:7;487:1;483;:5;:13;;495:1;483:13;;;-1:-1:-1;491:1:153;;399:104;-1:-1:-1;399:104:153:o;885:203:157:-;1012:68;;;-1:-1:-1;;;;;1012:68:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1012:68:157;;;985:96;;1005:5;;985:19;:96::i;:::-;885:203;;;;:::o;1754:187:154:-;1840:7;1875:12;1867:6;;;;1859:29;;;;-1:-1:-1;;;1859:29:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1910:5:154;;;1754:187::o;3721:272::-;3807:7;3841:12;3834:5;3826:28;;;;-1:-1:-1;;;3826:28:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3864:9;3880:1;3876;:5;;;;;;;3721:272;-1:-1:-1;;;;;3721:272:154:o;2967:751:157:-;3386:23;3412:69;3440:4;3412:69;;;;;;;;;;;;;;;;;3420:5;-1:-1:-1;;;;;3412:27:157;;;:69;;;;;:::i;:::-;3495:17;;3386:95;;-1:-1:-1;3495:21:157;3491:221;;3635:10;3624:30;;;;;;;;;;;;;;;-1:-1:-1;3624:30:157;3616:85;;;;-1:-1:-1;;;3616:85:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3581:193:158;3684:12;3715:52;3737:6;3745:4;3751:1;3754:12;3715:21;:52::i;:::-;3708:59;3581:193;-1:-1:-1;;;;3581:193:158:o;4608:523::-;4735:12;4792:5;4767:21;:30;;4759:81;;;;-1:-1:-1;;;4759:81:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4858:18;4869:6;4858:10;:18::i;:::-;4850:60;;;;;-1:-1:-1;;;4850:60:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;4981:12;4995:23;5022:6;-1:-1:-1;;;;;5022:11:158;5042:5;5050:4;5022:33;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5022:33:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4980:75;;;;5072:52;5090:7;5099:10;5111:12;5072:17;:52::i;:::-;5065:59;4608:523;-1:-1:-1;;;;;;;4608:523:158:o;726:413::-;1086:20;1124:8;;;726:413::o;6111:725::-;6226:12;6254:7;6250:580;;;-1:-1:-1;6284:10:158;6277:17;;6250:580;6395:17;;:21;6391:429;;6653:10;6647:17;6713:15;6700:10;6696:2;6692:19;6685:44;6602:145;6785:20;;-1:-1:-1;;;6785:20:158;;;;;;;;;;;;;;;;;6792:12;;6785:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"balanceOf(address)":"70a08231","earned(address)":"008cc262","exit()":"e9fad8ee","getReward()":"3d18b912","getRewardForDuration()":"1c1f78eb","lastTimeRewardApplicable()":"80faa57d","lastUpdateTime()":"c8f33c91","notifyRewardAmount(uint256)":"3c6b16ab","owner()":"8da5cb5b","periodFinish()":"ebe2b12b","recoverERC20(address,uint256)":"8980f11f","renounceOwnership()":"715018a6","rewardPerToken()":"cd3daf9d","rewardPerTokenStored()":"df136d65","rewardRate()":"7b0a47ee","rewards(address)":"0700037d","rewardsDuration()":"386a9525","rewardsToken()":"d1af0c7d","setRewardsDuration(uint256)":"cc1a378f","stake(uint256)":"a694fc3a","stakeWithPermit(uint256,uint256,uint8,bytes32,bytes32)":"ecd9ba82","stakingToken()":"72f702f3","totalSupply()":"18160ddd","transferOwnership(address)":"f2fde38b","userRewardPerTokenPaid(address)":"8b876347","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rewardsToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Recovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"}],\"name\":\"RewardAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"}],\"name\":\"RewardPaid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newDuration\",\"type\":\"uint256\"}],\"name\":\"RewardsDurationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Staked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"earned\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"exit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRewardForDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastTimeRewardApplicable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastUpdateTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"}],\"name\":\"notifyRewardAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"periodFinish\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"recoverERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerTokenStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"rewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardsDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardsToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rewardsDuration\",\"type\":\"uint256\"}],\"name\":\"setRewardsDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"stakeWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakingToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userRewardPerTokenPaid\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/staking-rewards/StakingRewards.sol\":\"StakingRewards\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"contracts/pangolin-token/IPangolinERC20.sol\":{\"keccak256\":\"0x3ce703d39e5ec3349e39e10d4e44dda6789e76494c2b0e568ffe822a1abd516b\",\"urls\":[\"bzz-raw://47a7fb280649f6f6ce4696b6024b135c534c8cc7f7e0456e55858a22b2ab8ad8\",\"dweb:/ipfs/QmcR2VmC2Kp6hcYmZvLNDFzQqvYgQydrihSADsYpqSinwt\"]},\"contracts/staking-rewards/StakingRewards.sol\":{\"keccak256\":\"0xfa0d316fb08a087b57308f9794c1f44500cc7c11f02c76207cc2c49608c0db58\",\"urls\":[\"bzz-raw://6ea9ce83917bb4ec7ffa97e78cfd62e15d503d2f85c4dde9b296e8cd12ecc7a0\",\"dweb:/ipfs/QmetfqhC7vbdhsJsAi74hisiFodaUUAK3b5tvykZZrVaYz\"]},\"openzeppelin-contracts-legacy/GSN/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"openzeppelin-contracts-legacy/access/Ownable.sol\":{\"keccak256\":\"0xf7c39c7e6d06ed3bda90cfefbcbf2ddc32c599c3d6721746546ad64946efccaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb57a28e189cd8b05748db44bdd51d608e6f1364dd1b35ad921e1bc82c10631e\",\"dweb:/ipfs/QmaWWTBbVu2pRR9XUbE4iC159NoP59cRF9ZJwhf4ghFN9i\"]},\"openzeppelin-contracts-legacy/math/Math.sol\":{\"keccak256\":\"0x363bd3b45201f07c9b71c2edc96533468cf14a3d029fabd82fddceb1eb3ebd9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d676d5c3a72e5fea8364a1e3e5b488a959aae08d069995b1274027f3845e6521\",\"dweb:/ipfs/Qma7DL738Wje4G9kcwW9bXwTGY4ePR7SMmsMhbULWqmixE\"]},\"openzeppelin-contracts-legacy/math/SafeMath.sol\":{\"keccak256\":\"0x3b21f2c8d626de3b9925ae33e972d8bf5c8b1bffb3f4ee94daeed7d0679036e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f8d45329fecbf0836ad7543330c3ecd0f8d0ffa42d4016278c3eb2215fdcdfe\",\"dweb:/ipfs/QmXWLT7GcnHtA5NiD6MFi2CV3EWJY4wv5mLNnypqYDrxL3\"]},\"openzeppelin-contracts-legacy/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"openzeppelin-contracts-legacy/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0xf12dfbe97e6276980b83d2830bb0eb75e0cf4f3e626c2471137f82158ae6a0fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a849c2d95e85463909e5b5c920b13e7a11216ca14127085e16d22b9379d52a\",\"dweb:/ipfs/QmUg3CZDbCCcQdroEpexBy5ZFd5vD1UWijWQq9qHZjtJNQ\"]},\"openzeppelin-contracts-legacy/utils/Address.sol\":{\"keccak256\":\"0xa6a15ddddcbf29d2922a1e0d4151b5d2d33da24b93cc9ebc12390e0d855532f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c119bcaecfa853d564ac88d312777f75fa1126a3bca88a3371adb0ad9f35cb0\",\"dweb:/ipfs/QmY9UPuXeSKq86Zh38fE43VGQPhKMN34mkuFSFqPcr6nvZ\"]},\"openzeppelin-contracts-legacy/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x8bbbc2f5c10065ee272592ae0a7a6ceb23de2fbd81564ee0bb015ecf404d5f61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b95e56c1640d0ef789fc5c16269e141e992f6c8ac97cc6d377bd3825e9cab182\",\"dweb:/ipfs/QmVzaxJZY51EhagrcNnkxoU6Uq17RhATe7aHvtkC6wUkgK\"]}},\"version\":1}"}},"openzeppelin-contracts-legacy/GSN/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-legacy/GSN/Context.sol\":\"Context\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-legacy/GSN/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]}},\"version\":1}"}},"openzeppelin-contracts-legacy/access/Ownable.sol":{"Ownable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-legacy/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-legacy/GSN/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"openzeppelin-contracts-legacy/access/Ownable.sol\":{\"keccak256\":\"0xf7c39c7e6d06ed3bda90cfefbcbf2ddc32c599c3d6721746546ad64946efccaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb57a28e189cd8b05748db44bdd51d608e6f1364dd1b35ad921e1bc82c10631e\",\"dweb:/ipfs/QmaWWTBbVu2pRR9XUbE4iC159NoP59cRF9ZJwhf4ghFN9i\"]}},\"version\":1}"}},"openzeppelin-contracts-legacy/math/Math.sol":{"Math":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206c1b419a4cf5233e61380811683c203c539db4b849ed957795aee7300c84cd8f64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH13 0x1B419A4CF5233E61380811683C KECCAK256 EXTCODECOPY MSTORE8 SWAP14 0xB4 0xB8 0x49 0xED SWAP6 PUSH24 0x95AEE7300C84CD8F64736F6C634300070600330000000000 ","sourceMap":"140:668:153:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206c1b419a4cf5233e61380811683c203c539db4b849ed957795aee7300c84cd8f64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH13 0x1B419A4CF5233E61380811683C KECCAK256 EXTCODECOPY MSTORE8 SWAP14 0xB4 0xB8 0x49 0xED SWAP6 PUSH24 0x95AEE7300C84CD8F64736F6C634300070600330000000000 ","sourceMap":"140:668:153:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-legacy/math/Math.sol\":\"Math\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-legacy/math/Math.sol\":{\"keccak256\":\"0x363bd3b45201f07c9b71c2edc96533468cf14a3d029fabd82fddceb1eb3ebd9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d676d5c3a72e5fea8364a1e3e5b488a959aae08d069995b1274027f3845e6521\",\"dweb:/ipfs/Qma7DL738Wje4G9kcwW9bXwTGY4ePR7SMmsMhbULWqmixE\"]}},\"version\":1}"}},"openzeppelin-contracts-legacy/math/SafeMath.sol":{"SafeMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a0f236066482e0b7915a32baf039494a85e7f3b27e01353dcf8d3ed39ac962fc64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG0 CALLCODE CALLDATASIZE MOD PUSH5 0x82E0B7915A ORIGIN 0xBA CREATE CODECOPY 0x49 0x4A DUP6 0xE7 RETURN 0xB2 PUSH31 0x1353DCF8D3ED39AC962FC64736F6C63430007060033000000000000000000 ","sourceMap":"630:4578:154:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a0f236066482e0b7915a32baf039494a85e7f3b27e01353dcf8d3ed39ac962fc64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG0 CALLCODE CALLDATASIZE MOD PUSH5 0x82E0B7915A ORIGIN 0xBA CREATE CODECOPY 0x49 0x4A DUP6 0xE7 RETURN 0xB2 PUSH31 0x1353DCF8D3ED39AC962FC64736F6C63430007060033000000000000000000 ","sourceMap":"630:4578:154:-: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-legacy/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-legacy/math/SafeMath.sol\":{\"keccak256\":\"0x3b21f2c8d626de3b9925ae33e972d8bf5c8b1bffb3f4ee94daeed7d0679036e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f8d45329fecbf0836ad7543330c3ecd0f8d0ffa42d4016278c3eb2215fdcdfe\",\"dweb:/ipfs/QmXWLT7GcnHtA5NiD6MFi2CV3EWJY4wv5mLNnypqYDrxL3\"]}},\"version\":1}"}},"openzeppelin-contracts-legacy/math/SignedSafeMath.sol":{"SignedSafeMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207fce087c043ed390350feb4d159612c77cd3242be4c4c3a8c0a2ebefb86406ee64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH32 0xCE087C043ED390350FEB4D159612C77CD3242BE4C4C3A8C0A2EBEFB86406EE64 PUSH20 0x6F6C634300070600330000000000000000000000 ","sourceMap":"171:2495:155:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207fce087c043ed390350feb4d159612c77cd3242be4c4c3a8c0a2ebefb86406ee64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH32 0xCE087C043ED390350FEB4D159612C77CD3242BE4C4C3A8C0A2EBEFB86406EE64 PUSH20 0x6F6C634300070600330000000000000000000000 ","sourceMap":"171:2495:155:-: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-legacy/math/SignedSafeMath.sol\":\"SignedSafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-legacy/math/SignedSafeMath.sol\":{\"keccak256\":\"0xd17ac7e1d8f83d20d80e652adfed83da122f3a3c7b69fefa2985d85aebf0a3e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://64e13936e5e7382737f9c12918f5365fd9e68bf96e83d66f3323f47b1d7162c7\",\"dweb:/ipfs/Qmd2qkUCFdpAXJ6NNTkPxmkKaPzYYmeBhDey8N8XN39wqw\"]}},\"version\":1}"}},"openzeppelin-contracts-legacy/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-legacy/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-legacy/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]}},\"version\":1}"}},"openzeppelin-contracts-legacy/token/ERC20/SafeERC20.sol":{"SafeERC20":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122066f7767535a5f301cfaee594b7fe604903b66299479864777b4cd83069cbc1f164736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH7 0xF7767535A5F301 0xCF 0xAE 0xE5 SWAP5 0xB7 INVALID PUSH1 0x49 SUB 0xB6 PUSH3 0x994798 PUSH5 0x777B4CD830 PUSH10 0xCBC1F164736F6C634300 SMOD MOD STOP CALLER ","sourceMap":"616:3104:157:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122066f7767535a5f301cfaee594b7fe604903b66299479864777b4cd83069cbc1f164736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH7 0xF7767535A5F301 0xCF 0xAE 0xE5 SWAP5 0xB7 INVALID PUSH1 0x49 SUB 0xB6 PUSH3 0x994798 PUSH5 0x777B4CD830 PUSH10 0xCBC1F164736F6C634300 SMOD MOD STOP CALLER ","sourceMap":"616:3104:157:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-legacy/token/ERC20/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-legacy/math/SafeMath.sol\":{\"keccak256\":\"0x3b21f2c8d626de3b9925ae33e972d8bf5c8b1bffb3f4ee94daeed7d0679036e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f8d45329fecbf0836ad7543330c3ecd0f8d0ffa42d4016278c3eb2215fdcdfe\",\"dweb:/ipfs/QmXWLT7GcnHtA5NiD6MFi2CV3EWJY4wv5mLNnypqYDrxL3\"]},\"openzeppelin-contracts-legacy/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"openzeppelin-contracts-legacy/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0xf12dfbe97e6276980b83d2830bb0eb75e0cf4f3e626c2471137f82158ae6a0fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a849c2d95e85463909e5b5c920b13e7a11216ca14127085e16d22b9379d52a\",\"dweb:/ipfs/QmUg3CZDbCCcQdroEpexBy5ZFd5vD1UWijWQq9qHZjtJNQ\"]},\"openzeppelin-contracts-legacy/utils/Address.sol\":{\"keccak256\":\"0xa6a15ddddcbf29d2922a1e0d4151b5d2d33da24b93cc9ebc12390e0d855532f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c119bcaecfa853d564ac88d312777f75fa1126a3bca88a3371adb0ad9f35cb0\",\"dweb:/ipfs/QmY9UPuXeSKq86Zh38fE43VGQPhKMN34mkuFSFqPcr6nvZ\"]}},\"version\":1}"}},"openzeppelin-contracts-legacy/utils/Address.sol":{"Address":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202968a8b22496d023b0bef275aaed5d613786dfd8c0b0210597263a0295863cf664736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x29 PUSH9 0xA8B22496D023B0BEF2 PUSH22 0xAAED5D613786DFD8C0B0210597263A0295863CF66473 PUSH16 0x6C634300070600330000000000000000 ","sourceMap":"134:6704:158:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202968a8b22496d023b0bef275aaed5d613786dfd8c0b0210597263a0295863cf664736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x29 PUSH9 0xA8B22496D023B0BEF2 PUSH22 0xAAED5D613786DFD8C0B0210597263A0295863CF66473 PUSH16 0x6C634300070600330000000000000000 ","sourceMap":"134:6704:158:-: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-legacy/utils/Address.sol\":\"Address\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-legacy/utils/Address.sol\":{\"keccak256\":\"0xa6a15ddddcbf29d2922a1e0d4151b5d2d33da24b93cc9ebc12390e0d855532f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c119bcaecfa853d564ac88d312777f75fa1126a3bca88a3371adb0ad9f35cb0\",\"dweb:/ipfs/QmY9UPuXeSKq86Zh38fE43VGQPhKMN34mkuFSFqPcr6nvZ\"]}},\"version\":1}"}},"openzeppelin-contracts-legacy/utils/ReentrancyGuard.sol":{"ReentrancyGuard":{"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\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-legacy/utils/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-legacy/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x8bbbc2f5c10065ee272592ae0a7a6ceb23de2fbd81564ee0bb015ecf404d5f61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b95e56c1640d0ef789fc5c16269e141e992f6c8ac97cc6d377bd3825e9cab182\",\"dweb:/ipfs/QmVzaxJZY51EhagrcNnkxoU6Uq17RhATe7aHvtkC6wUkgK\"]}},\"version\":1}"}},"openzeppelin-contracts-legacy/utils/SafeCast.sol":{"SafeCast":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122030863ed796dd1ac1c43371ed8ee09cffd4ac65589049f0d320ced2d6b3711abd64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDRESS DUP7 RETURNDATACOPY 0xD7 SWAP7 0xDD BYTE 0xC1 0xC4 CALLER PUSH18 0xED8EE09CFFD4AC65589049F0D320CED2D6B3 PUSH18 0x1ABD64736F6C634300070600330000000000 ","sourceMap":"777:5765:160:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122030863ed796dd1ac1c43371ed8ee09cffd4ac65589049f0d320ced2d6b3711abd64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDRESS DUP7 RETURNDATACOPY 0xD7 SWAP7 0xDD BYTE 0xC1 0xC4 CALLER PUSH18 0xED8EE09CFFD4AC65589049F0D320CED2D6B3 PUSH18 0x1ABD64736F6C634300070600330000000000 ","sourceMap":"777:5765:160:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always. Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing all math on `uint256` and `int256` and then downcasting.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-legacy/utils/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-legacy/utils/SafeCast.sol\":{\"keccak256\":\"0x7b2b8baa20fd60ab4a328c8e34c64a353651b80ba4b5b157cbb61813f6f85d55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://125b7f9efa390e663d630c62b97ae4e0707f31623bea989ef94c97ca9d777dd2\",\"dweb:/ipfs/QmaaLSuwvqK7wqcgyS3utHgfmB7RntcvP7eJSuvQod8Z9P\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/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-solc-0.7/drafts/IERC20Permit.sol\":\"IERC20Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/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-solc-0.7/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/introspection/ERC165.sol\":{\"keccak256\":\"0x234cdf2c3efd5f0dc17d32fe65d33c21674ca17de1e945eb60ac1076d7152d96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd196df6ec4549923b4581fcb4be3d05237b5221067410d0bc34cb76d4174441\",\"dweb:/ipfs/Qmf2vFVgbfpD4FvAhQXkprg9sKSX3TXKRdbQTSjJVEmzWj\"]},\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/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-solc-0.7/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/math/SafeMath.sol":{"SafeMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122041629dd57c4d49d0fab88ba3b84e8dad2967862385f32a64ad4a0934e54ce24b64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE PUSH3 0x9DD57C 0x4D 0x49 0xD0 STATICCALL 0xB8 DUP12 LOG3 0xB8 0x4E DUP14 0xAD 0x29 PUSH8 0x862385F32A64AD4A MULMOD CALLVALUE 0xE5 0x4C 0xE2 0x4B PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"622:6594:164:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122041629dd57c4d49d0fab88ba3b84e8dad2967862385f32a64ad4a0934e54ce24b64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE PUSH3 0x9DD57C 0x4D 0x49 0xD0 STATICCALL 0xB8 DUP12 LOG3 0xB8 0x4E DUP14 0xAD 0x29 PUSH8 0x862385F32A64AD4A MULMOD CALLVALUE 0xE5 0x4C 0xE2 0x4B PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"622:6594:164:-: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-solc-0.7/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/math/SignedSafeMath.sol":{"SignedSafeMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202ea19f566a014d7b6db85e5aa3f8957bde1e86f9b71a0f701feafd10d00d89f164736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2E LOG1 SWAP16 JUMP PUSH11 0x14D7B6DB85E5AA3F8957B 0xDE 0x1E DUP7 0xF9 0xB7 BYTE 0xF PUSH17 0x1FEAFD10D00D89F164736F6C6343000706 STOP CALLER ","sourceMap":"163:2495:165:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202ea19f566a014d7b6db85e5aa3f8957bde1e86f9b71a0f701feafd10d00d89f164736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2E LOG1 SWAP16 JUMP PUSH11 0x14D7B6DB85E5AA3F8957B 0xDE 0x1E DUP7 0xF9 0xB7 BYTE 0xF PUSH17 0x1FEAFD10D00D89F164736F6C6343000706 STOP CALLER ","sourceMap":"163:2495:165:-: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-solc-0.7/math/SignedSafeMath.sol\":\"SignedSafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/math/SignedSafeMath.sol\":{\"keccak256\":\"0xba085261d44cf28d2583f7c8cdb2f0a6a495ff1a640f86d995ea9d36b42b0046\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://03481543f67d854c94f73b006609ccd0e11a2461837296bf9d27b14b4bde7de6\",\"dweb:/ipfs/QmVt8ZoWv6jPdtoo5zikqrj7ijDvKoQ4BWYiufctStkXd3\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/proxy/Clones.sol":{"Clones":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209c11346eeca5698c1159c9da8b3aed66f7b5668ed75b281023b43e32868f9fe964736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP13 GT CALLVALUE PUSH15 0xECA5698C1159C9DA8B3AED66F7B566 DUP15 0xD7 JUMPDEST 0x28 LT 0x23 0xB4 RETURNDATACOPY ORIGIN DUP7 DUP16 SWAP16 0xE9 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"696:2839:166:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209c11346eeca5698c1159c9da8b3aed66f7b5668ed75b281023b43e32868f9fe964736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP13 GT CALLVALUE PUSH15 0xECA5698C1159C9DA8B3AED66F7B566 DUP15 0xD7 JUMPDEST 0x28 LT 0x23 0xB4 RETURNDATACOPY ORIGIN DUP7 DUP16 SWAP16 0xE9 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"696:2839:166:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for deploying minimal proxy contracts, also known as \\\"clones\\\". > To simply and cheaply clone contract functionality in an immutable way, this standard specifies > a minimal bytecode implementation that delegates all calls to a known, fixed address. The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2` (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the deterministic method. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-solc-0.7/proxy/Clones.sol\":\"Clones\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/proxy/Clones.sol\":{\"keccak256\":\"0x0d24348f536f928d8b42789737bf34762faee065667ab530ea20969a9d9920d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb3289aa8c10ec1edf1dbfce9562298e3e6b20a80f38a1338cb127510dbdda50\",\"dweb:/ipfs/QmZoX93r4bTL89d2gvxuVsr7QmkMVRpEymekZXoopGwymJ\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/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-solc-0.7/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/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":"60806040523480156200001157600080fd5b5060405162001d5838038062001d58833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405250620001b391506301ffc9a760e01b90506200021d565b8151620001c8906006906020850190620002a2565b508051620001de906007906020840190620002a2565b50620001f16380ac58cd60e01b6200021d565b62000203635b5e139f60e01b6200021d565b6200021563780e9d6360e01b6200021d565b50506200034e565b6001600160e01b031980821614156200027d576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620002da576000855562000325565b82601f10620002f557805160ff191683800117855562000325565b8280016001018555821562000325579182015b828111156200032557825182559160200191906001019062000308565b506200033392915062000337565b5090565b5b8082111562000333576000815560010162000338565b6119fa806200035e6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80634f6ccce7116100b257806395d89b4111610081578063b88d4fde11610066578063b88d4fde1461038f578063c87b56dd14610455578063e985e9c5146104725761011b565b806395d89b4114610359578063a22cb465146103615761011b565b80634f6ccce7146102f15780636352211e1461030e5780636c0360eb1461032b57806370a08231146103335761011b565b806318160ddd116100ee57806318160ddd1461023f57806323b872dd146102595780632f745c591461028f57806342842e0e146102bb5761011b565b806301ffc9a71461012057806306fdde031461015b578063081812fc146101d8578063095ea7b314610211575b600080fd5b6101476004803603602081101561013657600080fd5b50356001600160e01b0319166104a0565b604080519115158252519081900360200190f35b6101636104c3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019d578181015183820152602001610185565b50505050905090810190601f1680156101ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f5600480360360208110156101ee57600080fd5b5035610559565b604080516001600160a01b039092168252519081900360200190f35b61023d6004803603604081101561022757600080fd5b506001600160a01b0381351690602001356105bb565b005b610247610696565b60408051918252519081900360200190f35b61023d6004803603606081101561026f57600080fd5b506001600160a01b038135811691602081013590911690604001356106a7565b610247600480360360408110156102a557600080fd5b506001600160a01b0381351690602001356106fe565b61023d600480360360608110156102d157600080fd5b506001600160a01b03813581169160208101359091169060400135610729565b6102476004803603602081101561030757600080fd5b5035610744565b6101f56004803603602081101561032457600080fd5b503561075a565b610163610782565b6102476004803603602081101561034957600080fd5b50356001600160a01b03166107e3565b61016361084b565b61023d6004803603604081101561037757600080fd5b506001600160a01b03813516906020013515156108ac565b61023d600480360360808110156103a557600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103e057600080fd5b8201836020820111156103f257600080fd5b8035906020019184600183028401116401000000008311171561041457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109b1945050505050565b6101636004803603602081101561046b57600080fd5b5035610a0f565b6101476004803603604081101561048857600080fd5b506001600160a01b0381358116916020013516610c90565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561054f5780601f106105245761010080835404028352916020019161054f565b820191906000526020600020905b81548152906001019060200180831161053257829003601f168201915b5050505050905090565b600061056482610cbe565b61059f5760405162461bcd60e51b815260040180806020018281038252602c8152602001806118ef602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006105c68261075a565b9050806001600160a01b0316836001600160a01b031614156106195760405162461bcd60e51b81526004018080602001828103825260218152602001806119736021913960400191505060405180910390fd5b806001600160a01b031661062b610ccb565b6001600160a01b0316148061064c575061064c81610647610ccb565b610c90565b6106875760405162461bcd60e51b81526004018080602001828103825260388152602001806118426038913960400191505060405180910390fd5b6106918383610ccf565b505050565b60006106a26002610d55565b905090565b6106b86106b2610ccb565b82610d60565b6106f35760405162461bcd60e51b81526004018080602001828103825260318152602001806119946031913960400191505060405180910390fd5b610691838383610e04565b6001600160a01b03821660009081526001602052604081206107209083610f50565b90505b92915050565b610691838383604051806020016040528060008152506109b1565b600080610752600284610f5c565b509392505050565b6000610723826040518060600160405280602981526020016118a46029913960029190610f78565b60098054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561054f5780601f106105245761010080835404028352916020019161054f565b60006001600160a01b03821661082a5760405162461bcd60e51b815260040180806020018281038252602a81526020018061187a602a913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902061072390610d55565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561054f5780601f106105245761010080835404028352916020019161054f565b6108b4610ccb565b6001600160a01b0316826001600160a01b0316141561091a576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060056000610927610ccb565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff19169215159290921790915561096b610ccb565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6109c26109bc610ccb565b83610d60565b6109fd5760405162461bcd60e51b81526004018080602001828103825260318152602001806119946031913960400191505060405180910390fd5b610a0984848484610f8f565b50505050565b6060610a1a82610cbe565b610a555760405162461bcd60e51b815260040180806020018281038252602f815260200180611944602f913960400191505060405180910390fd5b60008281526008602090815260408083208054825160026001831615610100026000190190921691909104601f810185900485028201850190935282815292909190830182828015610ae85780601f10610abd57610100808354040283529160200191610ae8565b820191906000526020600020905b815481529060010190602001808311610acb57829003601f168201915b505050505090506000610af9610782565b9050805160001415610b0d575090506104be565b815115610bce5780826040516020018083805190602001908083835b60208310610b485780518252601f199092019160209182019101610b29565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610b905780518252601f199092019160209182019101610b71565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050506104be565b80610bd885610fe1565b6040516020018083805190602001908083835b60208310610c0a5780518252601f199092019160209182019101610beb565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610c525780518252601f199092019160209182019101610c33565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006107236002836110d4565b3390565b600081815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091558190610d1c8261075a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610723826110e0565b6000610d6b82610cbe565b610da65760405162461bcd60e51b815260040180806020018281038252602c815260200180611816602c913960400191505060405180910390fd5b6000610db18361075a565b9050806001600160a01b0316846001600160a01b03161480610dec5750836001600160a01b0316610de184610559565b6001600160a01b0316145b80610dfc5750610dfc8185610c90565b949350505050565b826001600160a01b0316610e178261075a565b6001600160a01b031614610e5c5760405162461bcd60e51b815260040180806020018281038252602981526020018061191b6029913960400191505060405180910390fd5b6001600160a01b038216610ea15760405162461bcd60e51b81526004018080602001828103825260248152602001806117f26024913960400191505060405180910390fd5b610eac838383610691565b610eb7600082610ccf565b6001600160a01b0383166000908152600160205260409020610ed990826110e4565b506001600160a01b0382166000908152600160205260409020610efc90826110f0565b50610f09600282846110fc565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006107208383611112565b6000808080610f6b8686611176565b9097909650945050505050565b6000610f858484846111f1565b90505b9392505050565b610f9a848484610e04565b610fa6848484846112bb565b610a095760405162461bcd60e51b81526004018080602001828103825260328152602001806117c06032913960400191505060405180910390fd5b60608161100657506040805180820190915260018152600360fc1b60208201526104be565b8160005b811561101e57600101600a8204915061100a565b60008167ffffffffffffffff8111801561103757600080fd5b506040519080825280601f01601f191660200182016040528015611062576020820181803683370190505b50859350905060001982015b83156110cb57600a840660300160f81b8282806001900393508151811061109157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8404935061106e565b50949350505050565b6000610720838361144d565b5490565b60006107208383611465565b6000610720838361152b565b6000610f8584846001600160a01b038516611575565b815460009082106111545760405162461bcd60e51b815260040180806020018281038252602281526020018061179e6022913960400191505060405180910390fd5b82600001828154811061116357fe5b9060005260206000200154905092915050565b8154600090819083106111ba5760405162461bcd60e51b81526004018080602001828103825260228152602001806118cd6022913960400191505060405180910390fd5b60008460000184815481106111cb57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000828152600184016020526040812054828161128c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611251578181015183820152602001611239565b50505050905090810190601f16801561127e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061129f57fe5b9060005260206000209060020201600101549150509392505050565b60006112cf846001600160a01b031661160c565b6112db57506001610dfc565b6000611413630a85bd0160e11b6112f0610ccb565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561135757818101518382015260200161133f565b50505050905090810190601f1680156113845780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518060600160405280603281526020016117c0603291396001600160a01b0388169190611612565b9050600081806020019051602081101561142c57600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b60008181526001830160205260408120548015611521578354600019808301919081019060009087908390811061149857fe5b90600052602060002001549050808760000184815481106114b557fe5b6000918252602080832090910192909255828152600189810190925260409020908401905586548790806114e557fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610723565b6000915050610723565b6000611537838361144d565b61156d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610723565b506000610723565b6000828152600184016020526040812054806115da575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610f88565b828560000160018303815481106115ed57fe5b9060005260206000209060020201600101819055506000915050610f88565b3b151590565b6060610f858484600085856116268561160c565b611677576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106116b55780518252601f199092019160209182019101611696565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611717576040519150601f19603f3d011682016040523d82523d6000602084013e61171c565b606091505b509150915061172c828286611737565b979650505050505050565b60608315611746575081610f88565b8251156117565782518084602001fd5b60405162461bcd60e51b815260206004820181815284516024840152845185939192839260440191908501908083836000831561125157818101518382015260200161123956fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220e7083971dc3a84e8510d82f6e57d96d53c978ea0353f0c5b8b4cec8f6992334c64736f6c63430007060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1D58 CODESIZE SUB DUP1 PUSH3 0x1D58 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 0x19FA 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 0x38F JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x455 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x472 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x359 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x361 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x2F1 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x333 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x28F JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x2BB JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x15B JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x211 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x147 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x4A0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x163 PUSH2 0x4C3 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 0x19D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x185 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1CA 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 0x1F5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x559 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5BB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x247 PUSH2 0x696 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x26F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x6A7 JUMP JUMPDEST PUSH2 0x247 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6FE JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x729 JUMP JUMPDEST PUSH2 0x247 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x744 JUMP JUMPDEST PUSH2 0x1F5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x75A JUMP JUMPDEST PUSH2 0x163 PUSH2 0x782 JUMP JUMPDEST PUSH2 0x247 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7E3 JUMP JUMPDEST PUSH2 0x163 PUSH2 0x84B JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x8AC JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3F2 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 0x414 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 0x9B1 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x163 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x147 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x488 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xC90 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT 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 PUSH1 0x0 NOT 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 0x54F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x524 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x54F 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 0x532 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x564 DUP3 PUSH2 0xCBE JUMP JUMPDEST PUSH2 0x59F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18EF 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C6 DUP3 PUSH2 0x75A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x619 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1973 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x62B PUSH2 0xCCB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x64C JUMPI POP PUSH2 0x64C DUP2 PUSH2 0x647 PUSH2 0xCCB JUMP JUMPDEST PUSH2 0xC90 JUMP JUMPDEST PUSH2 0x687 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1842 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x691 DUP4 DUP4 PUSH2 0xCCF JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6A2 PUSH1 0x2 PUSH2 0xD55 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x6B8 PUSH2 0x6B2 PUSH2 0xCCB JUMP JUMPDEST DUP3 PUSH2 0xD60 JUMP JUMPDEST PUSH2 0x6F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1994 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x691 DUP4 DUP4 DUP4 PUSH2 0xE04 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x720 SWAP1 DUP4 PUSH2 0xF50 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x691 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x9B1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x752 PUSH1 0x2 DUP5 PUSH2 0xF5C JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x723 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x18A4 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0xF78 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT 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 0x54F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x524 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x54F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x82A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x187A PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x723 SWAP1 PUSH2 0xD55 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT 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 0x54F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x524 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x54F JUMP JUMPDEST PUSH2 0x8B4 PUSH2 0xCCB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x91A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x927 PUSH2 0xCCB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x96B PUSH2 0xCCB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x9C2 PUSH2 0x9BC PUSH2 0xCCB JUMP JUMPDEST DUP4 PUSH2 0xD60 JUMP JUMPDEST PUSH2 0x9FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1994 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA09 DUP5 DUP5 DUP5 DUP5 PUSH2 0xF8F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xA1A DUP3 PUSH2 0xCBE JUMP JUMPDEST PUSH2 0xA55 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1944 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 PUSH1 0x0 NOT 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 0xAE8 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xABD JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAE8 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 0xACB JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0xAF9 PUSH2 0x782 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0xB0D JUMPI POP SWAP1 POP PUSH2 0x4BE JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xBCE 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 0xB48 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB29 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT 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 0xB90 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB71 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 0x4BE JUMP JUMPDEST DUP1 PUSH2 0xBD8 DUP6 PUSH2 0xFE1 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 0xC0A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xBEB JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT 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 0xC52 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xC33 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x723 PUSH1 0x2 DUP4 PUSH2 0x10D4 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0xD1C DUP3 PUSH2 0x75A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x723 DUP3 PUSH2 0x10E0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD6B DUP3 PUSH2 0xCBE JUMP JUMPDEST PUSH2 0xDA6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1816 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDB1 DUP4 PUSH2 0x75A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xDEC JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDE1 DUP5 PUSH2 0x559 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0xDFC JUMPI POP PUSH2 0xDFC DUP2 DUP6 PUSH2 0xC90 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE17 DUP3 PUSH2 0x75A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xE5C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x191B PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xEA1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17F2 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xEAC DUP4 DUP4 DUP4 PUSH2 0x691 JUMP JUMPDEST PUSH2 0xEB7 PUSH1 0x0 DUP3 PUSH2 0xCCF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xED9 SWAP1 DUP3 PUSH2 0x10E4 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xEFC SWAP1 DUP3 PUSH2 0x10F0 JUMP JUMPDEST POP PUSH2 0xF09 PUSH1 0x2 DUP3 DUP5 PUSH2 0x10FC JUMP JUMPDEST POP DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x720 DUP4 DUP4 PUSH2 0x1112 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0xF6B DUP7 DUP7 PUSH2 0x1176 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF85 DUP5 DUP5 DUP5 PUSH2 0x11F1 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xF9A DUP5 DUP5 DUP5 PUSH2 0xE04 JUMP JUMPDEST PUSH2 0xFA6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x12BB JUMP JUMPDEST PUSH2 0xA09 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17C0 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x1006 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x4BE JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x101E JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x100A JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1037 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 0x1062 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x10CB 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 0x1091 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 0x106E JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x720 DUP4 DUP4 PUSH2 0x144D JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x720 DUP4 DUP4 PUSH2 0x1465 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x720 DUP4 DUP4 PUSH2 0x152B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF85 DUP5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x1575 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x1154 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x179E 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 0x1163 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 0x11BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18CD 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 0x11CB 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 0x128C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x1251 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1239 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x127E 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 0x129F 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 0x12CF DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x160C JUMP JUMPDEST PUSH2 0x12DB JUMPI POP PUSH1 0x1 PUSH2 0xDFC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1413 PUSH4 0xA85BD01 PUSH1 0xE1 SHL PUSH2 0x12F0 PUSH2 0xCCB JUMP JUMPDEST DUP9 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1357 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x133F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1384 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 0x17C0 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 SWAP1 PUSH2 0x1612 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x142C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL 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 0x1521 JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x1498 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 0x14B5 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 0x14E5 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 0x723 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x723 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1537 DUP4 DUP4 PUSH2 0x144D JUMP JUMPDEST PUSH2 0x156D 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 0x723 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x723 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x15DA 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 0xF88 JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x15ED 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 0xF88 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xF85 DUP5 DUP5 PUSH1 0x0 DUP6 DUP6 PUSH2 0x1626 DUP6 PUSH2 0x160C JUMP JUMPDEST PUSH2 0x1677 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x16B5 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1696 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 0x1717 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 0x171C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x172C DUP3 DUP3 DUP7 PUSH2 0x1737 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1746 JUMPI POP DUP2 PUSH2 0xF88 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x1756 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x1251 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1239 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 0xA264697066 PUSH20 0x58221220E7083971DC3A84E8510D82F6E57D96D5 EXTCODECOPY SWAP8 DUP15 LOG0 CALLDATALOAD EXTCODEHASH 0xC JUMPDEST DUP12 0x4C 0xEC DUP16 PUSH10 0x92334C64736F6C634300 SMOD MOD STOP CALLER ","sourceMap":"563:16527:168:-:0;;;3569:362;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3569:362:168;;;;;;;;;;-1:-1:-1;3569:362:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3569:362:168;;;;;;;;;;-1:-1:-1;3569:362:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3569:362:168;;-1:-1:-1;751:40:162;;-1:-1:-1;;;;770:20:162;-1:-1:-1;751:18:162;:40::i;:::-;3636:13:168;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;3659:17:168;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;3764:40:168;-1:-1:-1;;;3764:18:168;:40::i;:::-;3814:49;-1:-1:-1;;;3814:18:168;:49::i;:::-;3873:51;-1:-1:-1;;;3873:18:168;:51::i;:::-;3569:362;;563:16527;;1490:198:162;-1:-1:-1;;;;;;1573:25:162;;;;;1565:66;;;;;-1:-1:-1;;;1565:66:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1641:33:162;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1641:40:162;1677:4;1641:40;;;1490:198::o;563:16527:168:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;563:16527:168;;;-1:-1:-1;563:16527:168;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061011b5760003560e01c80634f6ccce7116100b257806395d89b4111610081578063b88d4fde11610066578063b88d4fde1461038f578063c87b56dd14610455578063e985e9c5146104725761011b565b806395d89b4114610359578063a22cb465146103615761011b565b80634f6ccce7146102f15780636352211e1461030e5780636c0360eb1461032b57806370a08231146103335761011b565b806318160ddd116100ee57806318160ddd1461023f57806323b872dd146102595780632f745c591461028f57806342842e0e146102bb5761011b565b806301ffc9a71461012057806306fdde031461015b578063081812fc146101d8578063095ea7b314610211575b600080fd5b6101476004803603602081101561013657600080fd5b50356001600160e01b0319166104a0565b604080519115158252519081900360200190f35b6101636104c3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019d578181015183820152602001610185565b50505050905090810190601f1680156101ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f5600480360360208110156101ee57600080fd5b5035610559565b604080516001600160a01b039092168252519081900360200190f35b61023d6004803603604081101561022757600080fd5b506001600160a01b0381351690602001356105bb565b005b610247610696565b60408051918252519081900360200190f35b61023d6004803603606081101561026f57600080fd5b506001600160a01b038135811691602081013590911690604001356106a7565b610247600480360360408110156102a557600080fd5b506001600160a01b0381351690602001356106fe565b61023d600480360360608110156102d157600080fd5b506001600160a01b03813581169160208101359091169060400135610729565b6102476004803603602081101561030757600080fd5b5035610744565b6101f56004803603602081101561032457600080fd5b503561075a565b610163610782565b6102476004803603602081101561034957600080fd5b50356001600160a01b03166107e3565b61016361084b565b61023d6004803603604081101561037757600080fd5b506001600160a01b03813516906020013515156108ac565b61023d600480360360808110156103a557600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103e057600080fd5b8201836020820111156103f257600080fd5b8035906020019184600183028401116401000000008311171561041457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109b1945050505050565b6101636004803603602081101561046b57600080fd5b5035610a0f565b6101476004803603604081101561048857600080fd5b506001600160a01b0381358116916020013516610c90565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561054f5780601f106105245761010080835404028352916020019161054f565b820191906000526020600020905b81548152906001019060200180831161053257829003601f168201915b5050505050905090565b600061056482610cbe565b61059f5760405162461bcd60e51b815260040180806020018281038252602c8152602001806118ef602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006105c68261075a565b9050806001600160a01b0316836001600160a01b031614156106195760405162461bcd60e51b81526004018080602001828103825260218152602001806119736021913960400191505060405180910390fd5b806001600160a01b031661062b610ccb565b6001600160a01b0316148061064c575061064c81610647610ccb565b610c90565b6106875760405162461bcd60e51b81526004018080602001828103825260388152602001806118426038913960400191505060405180910390fd5b6106918383610ccf565b505050565b60006106a26002610d55565b905090565b6106b86106b2610ccb565b82610d60565b6106f35760405162461bcd60e51b81526004018080602001828103825260318152602001806119946031913960400191505060405180910390fd5b610691838383610e04565b6001600160a01b03821660009081526001602052604081206107209083610f50565b90505b92915050565b610691838383604051806020016040528060008152506109b1565b600080610752600284610f5c565b509392505050565b6000610723826040518060600160405280602981526020016118a46029913960029190610f78565b60098054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561054f5780601f106105245761010080835404028352916020019161054f565b60006001600160a01b03821661082a5760405162461bcd60e51b815260040180806020018281038252602a81526020018061187a602a913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902061072390610d55565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561054f5780601f106105245761010080835404028352916020019161054f565b6108b4610ccb565b6001600160a01b0316826001600160a01b0316141561091a576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060056000610927610ccb565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff19169215159290921790915561096b610ccb565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6109c26109bc610ccb565b83610d60565b6109fd5760405162461bcd60e51b81526004018080602001828103825260318152602001806119946031913960400191505060405180910390fd5b610a0984848484610f8f565b50505050565b6060610a1a82610cbe565b610a555760405162461bcd60e51b815260040180806020018281038252602f815260200180611944602f913960400191505060405180910390fd5b60008281526008602090815260408083208054825160026001831615610100026000190190921691909104601f810185900485028201850190935282815292909190830182828015610ae85780601f10610abd57610100808354040283529160200191610ae8565b820191906000526020600020905b815481529060010190602001808311610acb57829003601f168201915b505050505090506000610af9610782565b9050805160001415610b0d575090506104be565b815115610bce5780826040516020018083805190602001908083835b60208310610b485780518252601f199092019160209182019101610b29565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610b905780518252601f199092019160209182019101610b71565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050506104be565b80610bd885610fe1565b6040516020018083805190602001908083835b60208310610c0a5780518252601f199092019160209182019101610beb565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610c525780518252601f199092019160209182019101610c33565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006107236002836110d4565b3390565b600081815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091558190610d1c8261075a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610723826110e0565b6000610d6b82610cbe565b610da65760405162461bcd60e51b815260040180806020018281038252602c815260200180611816602c913960400191505060405180910390fd5b6000610db18361075a565b9050806001600160a01b0316846001600160a01b03161480610dec5750836001600160a01b0316610de184610559565b6001600160a01b0316145b80610dfc5750610dfc8185610c90565b949350505050565b826001600160a01b0316610e178261075a565b6001600160a01b031614610e5c5760405162461bcd60e51b815260040180806020018281038252602981526020018061191b6029913960400191505060405180910390fd5b6001600160a01b038216610ea15760405162461bcd60e51b81526004018080602001828103825260248152602001806117f26024913960400191505060405180910390fd5b610eac838383610691565b610eb7600082610ccf565b6001600160a01b0383166000908152600160205260409020610ed990826110e4565b506001600160a01b0382166000908152600160205260409020610efc90826110f0565b50610f09600282846110fc565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006107208383611112565b6000808080610f6b8686611176565b9097909650945050505050565b6000610f858484846111f1565b90505b9392505050565b610f9a848484610e04565b610fa6848484846112bb565b610a095760405162461bcd60e51b81526004018080602001828103825260328152602001806117c06032913960400191505060405180910390fd5b60608161100657506040805180820190915260018152600360fc1b60208201526104be565b8160005b811561101e57600101600a8204915061100a565b60008167ffffffffffffffff8111801561103757600080fd5b506040519080825280601f01601f191660200182016040528015611062576020820181803683370190505b50859350905060001982015b83156110cb57600a840660300160f81b8282806001900393508151811061109157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8404935061106e565b50949350505050565b6000610720838361144d565b5490565b60006107208383611465565b6000610720838361152b565b6000610f8584846001600160a01b038516611575565b815460009082106111545760405162461bcd60e51b815260040180806020018281038252602281526020018061179e6022913960400191505060405180910390fd5b82600001828154811061116357fe5b9060005260206000200154905092915050565b8154600090819083106111ba5760405162461bcd60e51b81526004018080602001828103825260228152602001806118cd6022913960400191505060405180910390fd5b60008460000184815481106111cb57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000828152600184016020526040812054828161128c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611251578181015183820152602001611239565b50505050905090810190601f16801561127e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061129f57fe5b9060005260206000209060020201600101549150509392505050565b60006112cf846001600160a01b031661160c565b6112db57506001610dfc565b6000611413630a85bd0160e11b6112f0610ccb565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561135757818101518382015260200161133f565b50505050905090810190601f1680156113845780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518060600160405280603281526020016117c0603291396001600160a01b0388169190611612565b9050600081806020019051602081101561142c57600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b60008181526001830160205260408120548015611521578354600019808301919081019060009087908390811061149857fe5b90600052602060002001549050808760000184815481106114b557fe5b6000918252602080832090910192909255828152600189810190925260409020908401905586548790806114e557fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610723565b6000915050610723565b6000611537838361144d565b61156d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610723565b506000610723565b6000828152600184016020526040812054806115da575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610f88565b828560000160018303815481106115ed57fe5b9060005260206000209060020201600101819055506000915050610f88565b3b151590565b6060610f858484600085856116268561160c565b611677576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106116b55780518252601f199092019160209182019101611696565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611717576040519150601f19603f3d011682016040523d82523d6000602084013e61171c565b606091505b509150915061172c828286611737565b979650505050505050565b60608315611746575081610f88565b8251156117565782518084602001fd5b60405162461bcd60e51b815260206004820181815284516024840152845185939192839260440191908501908083836000831561125157818101518382015260200161123956fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220e7083971dc3a84e8510d82f6e57d96d53c978ea0353f0c5b8b4cec8f6992334c64736f6c63430007060033","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 0x38F JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x455 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x472 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x359 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x361 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x2F1 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x333 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x28F JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x2BB JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x15B JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x211 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x147 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x4A0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x163 PUSH2 0x4C3 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 0x19D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x185 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1CA 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 0x1F5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x559 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5BB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x247 PUSH2 0x696 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x26F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x6A7 JUMP JUMPDEST PUSH2 0x247 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6FE JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x729 JUMP JUMPDEST PUSH2 0x247 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x744 JUMP JUMPDEST PUSH2 0x1F5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x75A JUMP JUMPDEST PUSH2 0x163 PUSH2 0x782 JUMP JUMPDEST PUSH2 0x247 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7E3 JUMP JUMPDEST PUSH2 0x163 PUSH2 0x84B JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x8AC JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3F2 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 0x414 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 0x9B1 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x163 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x147 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x488 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xC90 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT 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 PUSH1 0x0 NOT 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 0x54F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x524 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x54F 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 0x532 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x564 DUP3 PUSH2 0xCBE JUMP JUMPDEST PUSH2 0x59F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18EF 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C6 DUP3 PUSH2 0x75A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x619 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1973 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x62B PUSH2 0xCCB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x64C JUMPI POP PUSH2 0x64C DUP2 PUSH2 0x647 PUSH2 0xCCB JUMP JUMPDEST PUSH2 0xC90 JUMP JUMPDEST PUSH2 0x687 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1842 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x691 DUP4 DUP4 PUSH2 0xCCF JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6A2 PUSH1 0x2 PUSH2 0xD55 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x6B8 PUSH2 0x6B2 PUSH2 0xCCB JUMP JUMPDEST DUP3 PUSH2 0xD60 JUMP JUMPDEST PUSH2 0x6F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1994 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x691 DUP4 DUP4 DUP4 PUSH2 0xE04 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x720 SWAP1 DUP4 PUSH2 0xF50 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x691 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x9B1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x752 PUSH1 0x2 DUP5 PUSH2 0xF5C JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x723 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x18A4 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0xF78 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT 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 0x54F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x524 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x54F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x82A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x187A PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x723 SWAP1 PUSH2 0xD55 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT 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 0x54F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x524 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x54F JUMP JUMPDEST PUSH2 0x8B4 PUSH2 0xCCB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x91A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x927 PUSH2 0xCCB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x96B PUSH2 0xCCB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x9C2 PUSH2 0x9BC PUSH2 0xCCB JUMP JUMPDEST DUP4 PUSH2 0xD60 JUMP JUMPDEST PUSH2 0x9FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1994 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA09 DUP5 DUP5 DUP5 DUP5 PUSH2 0xF8F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xA1A DUP3 PUSH2 0xCBE JUMP JUMPDEST PUSH2 0xA55 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1944 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 PUSH1 0x0 NOT 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 0xAE8 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xABD JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAE8 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 0xACB JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0xAF9 PUSH2 0x782 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0xB0D JUMPI POP SWAP1 POP PUSH2 0x4BE JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xBCE 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 0xB48 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB29 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT 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 0xB90 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB71 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 0x4BE JUMP JUMPDEST DUP1 PUSH2 0xBD8 DUP6 PUSH2 0xFE1 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 0xC0A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xBEB JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT 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 0xC52 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xC33 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x723 PUSH1 0x2 DUP4 PUSH2 0x10D4 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0xD1C DUP3 PUSH2 0x75A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x723 DUP3 PUSH2 0x10E0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD6B DUP3 PUSH2 0xCBE JUMP JUMPDEST PUSH2 0xDA6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1816 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDB1 DUP4 PUSH2 0x75A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xDEC JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDE1 DUP5 PUSH2 0x559 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0xDFC JUMPI POP PUSH2 0xDFC DUP2 DUP6 PUSH2 0xC90 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE17 DUP3 PUSH2 0x75A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xE5C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x191B PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xEA1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17F2 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xEAC DUP4 DUP4 DUP4 PUSH2 0x691 JUMP JUMPDEST PUSH2 0xEB7 PUSH1 0x0 DUP3 PUSH2 0xCCF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xED9 SWAP1 DUP3 PUSH2 0x10E4 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xEFC SWAP1 DUP3 PUSH2 0x10F0 JUMP JUMPDEST POP PUSH2 0xF09 PUSH1 0x2 DUP3 DUP5 PUSH2 0x10FC JUMP JUMPDEST POP DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x720 DUP4 DUP4 PUSH2 0x1112 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0xF6B DUP7 DUP7 PUSH2 0x1176 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF85 DUP5 DUP5 DUP5 PUSH2 0x11F1 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xF9A DUP5 DUP5 DUP5 PUSH2 0xE04 JUMP JUMPDEST PUSH2 0xFA6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x12BB JUMP JUMPDEST PUSH2 0xA09 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17C0 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x1006 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x4BE JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x101E JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x100A JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1037 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 0x1062 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x10CB 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 0x1091 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 0x106E JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x720 DUP4 DUP4 PUSH2 0x144D JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x720 DUP4 DUP4 PUSH2 0x1465 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x720 DUP4 DUP4 PUSH2 0x152B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF85 DUP5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x1575 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x1154 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x179E 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 0x1163 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 0x11BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18CD 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 0x11CB 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 0x128C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x1251 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1239 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x127E 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 0x129F 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 0x12CF DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x160C JUMP JUMPDEST PUSH2 0x12DB JUMPI POP PUSH1 0x1 PUSH2 0xDFC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1413 PUSH4 0xA85BD01 PUSH1 0xE1 SHL PUSH2 0x12F0 PUSH2 0xCCB JUMP JUMPDEST DUP9 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1357 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x133F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1384 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 0x17C0 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 SWAP1 PUSH2 0x1612 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x142C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL 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 0x1521 JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x1498 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 0x14B5 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 0x14E5 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 0x723 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x723 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1537 DUP4 DUP4 PUSH2 0x144D JUMP JUMPDEST PUSH2 0x156D 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 0x723 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x723 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x15DA 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 0xF88 JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x15ED 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 0xF88 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xF85 DUP5 DUP5 PUSH1 0x0 DUP6 DUP6 PUSH2 0x1626 DUP6 PUSH2 0x160C JUMP JUMPDEST PUSH2 0x1677 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x16B5 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1696 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 0x1717 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 0x171C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x172C DUP3 DUP3 DUP7 PUSH2 0x1737 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1746 JUMPI POP DUP2 PUSH2 0xF88 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x1756 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL 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 0x1251 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1239 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 0xA264697066 PUSH20 0x58221220E7083971DC3A84E8510D82F6E57D96D5 EXTCODECOPY SWAP8 DUP15 LOG0 CALLDATALOAD EXTCODEHASH 0xC JUMPDEST DUP12 0x4C 0xEC DUP16 PUSH10 0x92334C64736F6C634300 SMOD MOD STOP CALLER ","sourceMap":"563:16527:168:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;948:148:162;;;;;;;;;;;;;;;;-1:-1:-1;948:148:162;-1:-1:-1;;;;;;948:148:162;;:::i;:::-;;;;;;;;;;;;;;;;;;4502:98:168;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7207:217;;;;;;;;;;;;;;;;-1:-1:-1;7207:217:168;;:::i;:::-;;;;-1:-1:-1;;;;;7207:217:168;;;;;;;;;;;;;;6751:395;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6751:395:168;;;;;;;;:::i;:::-;;6245:208;;;:::i;:::-;;;;;;;;;;;;;;;;8071:300;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8071:300:168;;;;;;;;;;;;;;;;;:::i;6014:160::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6014:160:168;;;;;;;;:::i;8437:149::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8437:149:168;;;;;;;;;;;;;;;;;:::i;6525:169::-;;;;;;;;;;;;;;;;-1:-1:-1;6525:169:168;;:::i;4265:175::-;;;;;;;;;;;;;;;;-1:-1:-1;4265:175:168;;:::i;5840:95::-;;;:::i;3990:218::-;;;;;;;;;;;;;;;;-1:-1:-1;3990:218:168;-1:-1:-1;;;;;3990:218:168;;:::i;4664:102::-;;;:::i;7491:290::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7491:290:168;;;;;;;;;;:::i;8652:282::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8652:282:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8652:282:168;;-1:-1:-1;8652:282:168;;-1:-1:-1;;;;;8652:282:168:i;4832:776::-;;;;;;;;;;;;;;;;-1:-1:-1;4832:776:168;;:::i;7847:162::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7847:162:168;;;;;;;;;;:::i;948:148:162:-;-1:-1:-1;;;;;;1056:33:162;;1033:4;1056:33;;;;;;;;;;;;;948:148;;;;:::o;4502:98:168:-;4588:5;4581:12;;;;;;;;-1:-1:-1;;4581:12:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;7302:73:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7393:24:168;;;;:15;:24;;;;;;-1:-1:-1;;;;;7393:24:168;;7207:217::o;6751:395::-;6831:13;6847:23;6862:7;6847:14;:23::i;:::-;6831:39;;6894:5;-1:-1:-1;;;;;6888:11:168;:2;-1:-1:-1;;;;;6888:11:168;;;6880:57;;;;-1:-1:-1;;;6880:57:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6972:5;-1:-1:-1;;;;;6956:21:168;:12;:10;:12::i;:::-;-1:-1:-1;;;;;6956:21:168;;:69;;;;6981:44;7005:5;7012:12;:10;:12::i;:::-;6981:23;:44::i;:::-;6948:159;;;;-1:-1:-1;;;6948:159:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;-1:-1:-1;;;8222:103:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8336:28;8346:4;8352:2;8356:7;8336:9;:28::i;6014:160::-;-1:-1:-1;;;;;6137:20:168;;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:168;6525:169;-1:-1:-1;;;6525:169:168:o;4265:175::-;4337:7;4363:70;4380:7;4363:70;;;;;;;;;;;;;;;;;:12;;:70;:16;:70::i;5840:95::-;5920:8;5913:15;;;;;;;;-1:-1:-1;;5913:15:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5888:13;;5913:15;;5920:8;;5913:15;;5920:8;5913:15;;;;;;;;;;;;;;;;;;;;;;;;3990:218;4062:7;-1:-1:-1;;;;;4089:19:168;;4081:74;;;;-1:-1:-1;;;4081:74:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4172:20:168;;;;;;:13;:20;;;;;:29;;:27;:29::i;4664:102::-;4752:7;4745:14;;;;;;;;-1:-1:-1;;4745:14:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4720:13;;4745:14;;4752:7;;4745:14;;4752:7;4745:14;;;;;;;;;;;;;;;;;;;;;;;;7491:290;7605:12;:10;:12::i;:::-;-1:-1:-1;;;;;7593:24:168;:8;-1:-1:-1;;;;;7593:24:168;;;7585:62;;;;;-1:-1:-1;;;7585:62:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;7703:8;7658:18;:32;7677:12;:10;:12::i;:::-;-1:-1:-1;;;;;7658:32:168;;;;;;;;;;;;;;;;;-1:-1:-1;7658:32:168;;;:42;;;;;;;;;;;;:53;;-1:-1:-1;;7658:53:168;;;;;;;;;;;7741:12;:10;:12::i;:::-;-1:-1:-1;;;;;7726:48:168;;7765:8;7726:48;;;;;;;;;;;;;;;;;;;;7491:290;;:::o;8652:282::-;8783:41;8802:12;:10;:12::i;:::-;8816:7;8783:18;:41::i;:::-;8775:103;;;;-1:-1:-1;;;8775:103:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;-1:-1:-1;;;4930:76:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5017:23;5043:19;;;:10;:19;;;;;;;;5017:45;;;;;;;;;;;-1:-1:-1;;5017:45:168;;;;;;;;;;;;;;;;;;;;;;;;;;;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:168;-1:-1:-1;5214:16:168;;5171:70;5343:23;;:27;5339:106;;5417:4;5423:9;5400:33;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5400:33:168;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5400:33:168;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5400:33:168;;;;;;;;;;;;;-1:-1:-1;;5400:33:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5386:48;;;;;;5339:106;5575:4;5581:18;:7;:16;:18::i;:::-;5558:42;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5558:42:168;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5558:42:168;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5558:42:168;;;;;;;;;;;;;-1:-1:-1;;5558:42:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5544:57;;;;4832:776;;;:::o;7847:162::-;-1:-1:-1;;;;;7967:25:168;;;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:174:-;685:10;598:104;:::o;16210:189:168:-;16284:24;;;;:15;:24;;;;;:29;;;;-1:-1:-1;;;;;16284:29:168;;;;;;;;:24;;16337:23;16284:24;16337:14;:23::i;:::-;-1:-1:-1;;;;;16328:46:168;;;;;;;;;;;16210:189;;:::o;7812:121:175:-;7881:7;7907:19;7915:3;7907:7;:19::i;10651:351:168:-;10744:4;10768:16;10776:7;10768;:16::i;:::-;10760:73;;;;-1:-1:-1;;;10760:73:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10843:13;10859:23;10874:7;10859:14;:23::i;:::-;10843:39;;10911:5;-1:-1:-1;;;;;10900:16:168;:7;-1:-1:-1;;;;;10900:16:168;;:51;;;;10944:7;-1:-1:-1;;;;;10920:31:168;:20;10932:7;10920:11;:20::i;:::-;-1:-1:-1;;;;;10920:31:168;;10900:51;:94;;;;10955:39;10979:5;10986:7;10955:23;:39::i;:::-;10892:103;10651:351;-1:-1:-1;;;;10651:351:168:o;13692:584::-;13816:4;-1:-1:-1;;;;;13789:31:168;:23;13804:7;13789:14;:23::i;:::-;-1:-1:-1;;;;;13789:31:168;;13781:85;;;;-1:-1:-1;;;13781:85:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13902:16:168;;13894:65;;;;-1:-1:-1;;;13894:65:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13970:39;13991:4;13997:2;14001:7;13970:20;:39::i;:::-;14071:29;14088:1;14092:7;14071:8;:29::i;:::-;-1:-1:-1;;;;;14111:19:168;;;;;;:13;:19;;;;;:35;;14138:7;14111:26;:35::i;:::-;-1:-1:-1;;;;;;14156:17:168;;;;;;:13;:17;;;;;:30;;14178:7;14156:21;:30::i;:::-;-1:-1:-1;14197:29:168;:12;14214:7;14223:2;14197:16;:29::i;:::-;;14261:7;14257:2;-1:-1:-1;;;;;14242:27:168;14251:4;-1:-1:-1;;;;;14242:27:168;;;;;;;;;;;13692:584;;;:::o;9242:135:176:-;9313:7;9347:22;9351:3;9363:5;9347:3;:22::i;8261:233:175:-;8341:7;;;;8400:22;8404:3;8416:5;8400:3;:22::i;:::-;8369:53;;;;-1:-1:-1;8261:233:175;-1:-1:-1;;;;;8261:233:175:o;9514:211::-;9621:7;9671:44;9676:3;9696;9702:12;9671:4;:44::i;:::-;9663:53;-1:-1:-1;9514:211:175;;;;;;:::o;9796:269:168:-;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;;;;-1:-1:-1;;;9947:111:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;202:725:177;258:13;475:10;471:51;;-1:-1:-1;501:10:177;;;;;;;;;;;;-1:-1:-1;;;501:10:177;;;;;;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:177;-1:-1:-1;761:5:177;;-1:-1:-1;669:39:177;-1:-1:-1;;;734:10:177;;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:177;869:10;;;;776:114;;;-1:-1:-1;913:6:177;202:725;-1:-1:-1;;;;202:725:177:o;7580:149:175:-;7664:4;7687:35;7697:3;7717;7687:9;:35::i;4483:108::-;4565:19;;4483:108::o;8357:135:176:-;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:175:-;7108:4;7131:64;7136:3;7156;-1:-1:-1;;;;;7170:23:175;;7131:4;:64::i;4444:201:176:-;4538:18;;4511:7;;4538:26;-1:-1:-1;4530:73:176;;;;-1:-1:-1;;;4530:73:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4620:3;:11;;4632:5;4620:18;;;;;;;;;;;;;;;;4613:25;;4444:201;;;;:::o;4934:274:175:-;5037:19;;5001:7;;;;5037:27;-1:-1:-1;5029:74:175;;;;-1:-1:-1;;;5029:74:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;-1:-1:-1;;;6554:36:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6643:3;:12;;6667:1;6656:8;:12;6643:26;;;;;;;;;;;;;;;;;;:33;;;6636:40;;;6395:315;;;;;:::o;15509:589:168:-;15629:4;15654:15;:2;-1:-1:-1;;;;;15654:13:168;;:15::i;:::-;15649:58;;-1:-1:-1;15692:4:168;15685:11;;15649:58;15716:23;15742:246;-1:-1:-1;;;15853:12:168;:10;:12::i;:::-;15879:4;15897:7;15918:5;15758:175;;;;;;-1:-1:-1;;;;;15758:175:168;;;;;;-1:-1:-1;;;;;15758:175:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15742:246;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15742:15:168;;;:246;:15;:246::i;:::-;15716:272;;15998:13;16025:10;16014:32;;;;;;;;;;;;;;;-1:-1:-1;16014:32:168;-1:-1:-1;;;;;;16064:26:168;-1:-1:-1;;;16064:26:168;;-1:-1:-1;;;15509:589:168;;;;;;:::o;4270:123:175:-;4341:4;4364:17;;;:12;;;;;:17;;;;;;:22;;;4270:123::o;2204:1512:176:-;2270:4;2407:19;;;:12;;;:19;;;;;;2441:15;;2437:1273;;2870:18;;-1:-1:-1;;2822:14:176;;;;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:176;;;;;;;;:11;:23;;;;;;;;;;;;;1933:18;;1911:19;;;:12;;;:19;;;;;;:40;;;;1965:11;;1711:319;-1:-1:-1;2014:5:176;2007:12;;1828:678:175;1904:4;2037:17;;;:12;;;:17;;;;;;2069:13;2065:435;;-1:-1:-1;;2153:38:175;;;;;;;;;;;;;;;;;;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:173;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;;;;;-1:-1:-1;;;4842:60:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;4973:12;4987:23;5014:6;-1:-1:-1;;;;;5014:11:173;5034:5;5042:4;5014:33;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5014:33:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4972:75;;;;5064:52;5082:7;5091:10;5103:12;5064:17;:52::i;:::-;5057:59;4600:523;-1:-1:-1;;;;;;;4600:523:173:o;7083:725::-;7198:12;7226:7;7222:580;;;-1:-1:-1;7256:10:173;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;;-1:-1:-1;;;7757:20:173;;;;;;;;;;;;;;;;;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-solc-0.7/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/introspection/ERC165.sol\":{\"keccak256\":\"0x234cdf2c3efd5f0dc17d32fe65d33c21674ca17de1e945eb60ac1076d7152d96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd196df6ec4549923b4581fcb4be3d05237b5221067410d0bc34cb76d4174441\",\"dweb:/ipfs/Qmf2vFVgbfpD4FvAhQXkprg9sKSX3TXKRdbQTSjJVEmzWj\"]},\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x93e4f65a89c3c888afbaa3ee18c3fa4f51c422419bbcd9cca47676a0f8e507ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a9c54b2935c810e14b17d6b5d7adeb0e1733d172823f02c30e1be8729715841\",\"dweb:/ipfs/QmZGveXLQpqJQRjfeNws7mGSjxKpnfZCnKaXyH4soxDSkR\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x05604ffcf69e416b8a42728bb0e4fd75170d8fac70bf1a284afeb4752a9bc52f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8a7fd1043372336ecccdbcbcf4962c6df8958dc9c7c7f8361fc2b3dd23570cc\",\"dweb:/ipfs/QmYHKgZxnanBfu7Q8ZicVhDDuB7XRGxuwvmCjfQQ1E5j39\"]},\"openzeppelin-contracts-solc-0.7/utils/Address.sol\":{\"keccak256\":\"0xf89f005a3d98f7768cdee2583707db0ac725cf567d455751af32ee68132f3db3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f963d438177764b5f43f637c02311c951c0f0025d12fe1ac7e62e295bf416c41\",\"dweb:/ipfs/QmcfVb9JsWrYeTwFUJsKVHpKB7EaWBKydAH9S4sKg2pzcK\"]},\"openzeppelin-contracts-solc-0.7/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"openzeppelin-contracts-solc-0.7/utils/EnumerableMap.sol\":{\"keccak256\":\"0x2114555153edb5f273008b3d34205f511db9af06b88f752e4c280dd612c4c549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8779df50f4f716c6adaa5f61880c572abb2b37197d690d6aad32e52a32d5f382\",\"dweb:/ipfs/QmVuZMGNFEo4gm1QB55gnCwCTc7XC5npkmgdfeJUgHbMiL\"]},\"openzeppelin-contracts-solc-0.7/utils/EnumerableSet.sol\":{\"keccak256\":\"0x9a2c1eebb65250f0e11882237038600f22a62376f0547db4acc0dfe0a3d8d34f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccafc1afbcbf54559beea9c029d0b7656c56a185813c5fa74c4ea3eb4b608419\",\"dweb:/ipfs/QmTKwdbenDfNwmwRVh8VKtA6mhFK2AyTFRoJF3BqLB81KM\"]},\"openzeppelin-contracts-solc-0.7/utils/Strings.sol\":{\"keccak256\":\"0x08e38e034333372aea8cb1b8846085b7fbab42c6b77a0af464d2c6827827c4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22746e9348187309fb4fbd3f79f6ad88787103eac10f24bd18f67257fafdd8ad\",\"dweb:/ipfs/QmSLXfXg8b27Xstq58DFGvCpqgtTqpfrGbLMq19PtEKQJS\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/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-solc-0.7/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/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-solc-0.7/token/ERC721/IERC721Enumerable.sol\":\"IERC721Enumerable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/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-solc-0.7/token/ERC721/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/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-solc-0.7/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x05604ffcf69e416b8a42728bb0e4fd75170d8fac70bf1a284afeb4752a9bc52f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8a7fd1043372336ecccdbcbcf4962c6df8958dc9c7c7f8361fc2b3dd23570cc\",\"dweb:/ipfs/QmYHKgZxnanBfu7Q8ZicVhDDuB7XRGxuwvmCjfQQ1E5j39\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/utils/Address.sol":{"Address":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220167e29f0d58161f43d65d7223e6f1b46b96bd0b82f09bf940ca4aed375a171ef64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND PUSH31 0x29F0D58161F43D65D7223E6F1B46B96BD0B82F09BF940CA4AED375A171EF64 PUSH20 0x6F6C634300070600330000000000000000000000 ","sourceMap":"126:7684:173:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220167e29f0d58161f43d65d7223e6f1b46b96bd0b82f09bf940ca4aed375a171ef64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND PUSH31 0x29F0D58161F43D65D7223E6F1B46B96BD0B82F09BF940CA4AED375A171EF64 PUSH20 0x6F6C634300070600330000000000000000000000 ","sourceMap":"126:7684:173:-: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-solc-0.7/utils/Address.sol\":\"Address\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/utils/Address.sol\":{\"keccak256\":\"0xf89f005a3d98f7768cdee2583707db0ac725cf567d455751af32ee68132f3db3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f963d438177764b5f43f637c02311c951c0f0025d12fe1ac7e62e295bf416c41\",\"dweb:/ipfs/QmcfVb9JsWrYeTwFUJsKVHpKB7EaWBKydAH9S4sKg2pzcK\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/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-solc-0.7/utils/Context.sol\":\"Context\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/utils/EnumerableMap.sol":{"EnumerableMap":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122072921cc1235244701f386c67b293d81c34b0a5ad1799afe443233e8495ff0a6a64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH19 0x921CC1235244701F386C67B293D81C34B0A5AD OR SWAP10 0xAF 0xE4 NUMBER 0x23 RETURNDATACOPY DUP5 SWAP6 SELFDESTRUCT EXP PUSH11 0x64736F6C63430007060033 ","sourceMap":"764:8963:175:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122072921cc1235244701f386c67b293d81c34b0a5ad1799afe443233e8495ff0a6a64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH19 0x921CC1235244701F386C67B293D81C34B0A5AD OR SWAP10 0xAF 0xE4 NUMBER 0x23 RETURNDATACOPY DUP5 SWAP6 SELFDESTRUCT EXP PUSH11 0x64736F6C63430007060033 ","sourceMap":"764:8963:175:-: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-solc-0.7/utils/EnumerableMap.sol\":\"EnumerableMap\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/utils/EnumerableMap.sol\":{\"keccak256\":\"0x2114555153edb5f273008b3d34205f511db9af06b88f752e4c280dd612c4c549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8779df50f4f716c6adaa5f61880c572abb2b37197d690d6aad32e52a32d5f382\",\"dweb:/ipfs/QmVuZMGNFEo4gm1QB55gnCwCTc7XC5npkmgdfeJUgHbMiL\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/utils/EnumerableSet.sol":{"EnumerableSet":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205fa53692db2384f3ecd0e2e452d67fe27c2c9f7af42b652531bcb81aea887f6f64736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5F 0xA5 CALLDATASIZE SWAP3 0xDB 0x23 DUP5 RETURN 0xEC 0xD0 0xE2 0xE4 MSTORE 0xD6 PUSH32 0xE27C2C9F7AF42B652531BCB81AEA887F6F64736F6C6343000706003300000000 ","sourceMap":"745:8634:176:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205fa53692db2384f3ecd0e2e452d67fe27c2c9f7af42b652531bcb81aea887f6f64736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5F 0xA5 CALLDATASIZE SWAP3 0xDB 0x23 DUP5 RETURN 0xEC 0xD0 0xE2 0xE4 MSTORE 0xD6 PUSH32 0xE27C2C9F7AF42B652531BCB81AEA887F6F64736F6C6343000706003300000000 ","sourceMap":"745:8634:176:-: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-solc-0.7/utils/EnumerableSet.sol\":\"EnumerableSet\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/utils/EnumerableSet.sol\":{\"keccak256\":\"0x9a2c1eebb65250f0e11882237038600f22a62376f0547db4acc0dfe0a3d8d34f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccafc1afbcbf54559beea9c029d0b7656c56a185813c5fa74c4ea3eb4b608419\",\"dweb:/ipfs/QmTKwdbenDfNwmwRVh8VKtA6mhFK2AyTFRoJF3BqLB81KM\"]}},\"version\":1}"}},"openzeppelin-contracts-solc-0.7/utils/Strings.sol":{"Strings":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207747a620bedc943082fba00e4f15d026e2dd7a320ccae2c7bc246a0e1698dba164736f6c63430007060033","opcodes":"PUSH1 0x56 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 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH24 0x47A620BEDC943082FBA00E4F15D026E2DD7A320CCAE2C7BC 0x24 PUSH11 0xE1698DBA164736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"93:836:177:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207747a620bedc943082fba00e4f15d026e2dd7a320ccae2c7bc246a0e1698dba164736f6c63430007060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH24 0x47A620BEDC943082FBA00E4F15D026E2DD7A320CCAE2C7BC 0x24 PUSH11 0xE1698DBA164736F6C6343 STOP SMOD MOD STOP CALLER ","sourceMap":"93:836:177:-: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-solc-0.7/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-solc-0.7/utils/Strings.sol\":{\"keccak256\":\"0x08e38e034333372aea8cb1b8846085b7fbab42c6b77a0af464d2c6827827c4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22746e9348187309fb4fbd3f79f6ad88787103eac10f24bd18f67257fafdd8ad\",\"dweb:/ipfs/QmSLXfXg8b27Xstq58DFGvCpqgtTqpfrGbLMq19PtEKQJS\"]}},\"version\":1}"}}}}}